# Formular abschicken und dann weiterleiten



## cameeel (14. Januar 2005)

Also bräucht mal wieder eure hilfe  :

Ich würd gerne wissen wie ich erreichen kann, das wenn jemand ein Formular (in test1.html) abschickt, nach test2.html weitergeleitet wird?

Das Formular wird dafür verwendet, Daten in eine SQL Datenbank zu schreiben, dürfte aber keine Rolle spielen...


----------



## znysk (15. Januar 2005)

Ich gehe mal davon aus, das du das Formular so:

```
<form action="eintrag.php" method="POST">
```
oder so ähnlich abschickst
dann schreibe doch einfach eine automatische Weiterleitung in die eintrag.php
wie:

```
<meta http-equiv="refresh" content="5; URL=http://test2.htm">
```
Als HTML Code natürlich.

Hinter content steht die Wartezeit in Sekunden, die setzt du auf 1 und dann trägt er ein, (was nicht länger als eine Sekunde dauern sollte) und leitet dann weiter.


----------



## Gumbo (15. Januar 2005)

Greife lieber auf das Senden eines HTTP-Header zurück, anstatt eine HTML-Äquivalenz zu benutzen.
PHP verfügt z. B. über eine Funktion namens header(), mit der es möglich ist einen HTTP-Header zu senden.


----------



## znysk (15. Januar 2005)

@Gumbo
Hey cool, letztens hatte ich genau das im PHP forum gefragt, und man meinte zu mir, das geht nicht. Gibt es noch die möglichkeit nen anderen Frame weiter zu leiten in PHP, oder geht dat wirklich nur mit JavaScript. Danke.

@cAm3eel
Is natürlich wesentlich eleganter, da geb ich Gumbo recht.


----------



## cameeel (15. Januar 2005)

znysk hat gesagt.:
			
		

> Ich gehe mal davon aus, das du das Formular so:
> 
> ```
> <form action="eintrag.php" method="POST">
> ...


 
  Mein Formular schickt das ganze so ab:
  <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

 Aber mit dem meta, da wird man doch nach 5 sekunden auf ne seite weitergeleitet, auch wenn man im Formular gar net auf senden gedrückt hat?


----------



## znysk (17. Januar 2005)

Also ich nutz immer echo, da hat mich das print gerade etwas irritiert, aber wozu gibts ja SelfPHP. Wo liegt der Unterschied zwischen echo und print, kann mir den jemand erklären, ansonsten auch egal.

@cAm3eel
Also ich gehe davon aus, das in 
	
	
	



```
$_SERVER['PHP_SELF'];
```
 ne Adresse zu ner seite steht. zum beispeil "print.php".
Und da trägst du jetzt einfach am ende des Scripst von "print.php", weil die wird ja nach dem abschicken des Formulars geöffnet, die Zeile:

```
header("Location: http://...test2.php");
```
ein.
Dat müsstes eigentlich sein.


----------



## cameeel (17. Januar 2005)

Achso jetzt check ichs, hab gedacht du willst den meta tag in die gleiche datei machen wie in die wo das Formular drin ist...
 Gute Idee würd bei mir aber nicht gehen weil bei mir die Eingaben im Formular in der gleichen Datei verarbeitet werden wie in der wo das Formular ist...

 egal, cya


----------



## znysk (18. Januar 2005)

na dann machs doch wiklich mit dem 
	
	
	



```
header("Location: http://...");
```
in PHP, weil den kannst du ja dann nach ner Bedingung ausführen, z.B.: Wenn du die Daten verarbeitet hast. der meta-tag geht nur im HTML-header. (glaube ich) aber pobiers mal.


----------



## cameeel (19. Januar 2005)

Habs mit 

```
header("Location: http://www.philipp-langer.net/de/mozilla-firefox/gb_read.php");
```
  probiert, das geht aber nicht, kommt nämlich folgende Fehlermeldung:

*Warning*: Cannot modify header information - headers already sent by (output started at /www/htdocs/v141100/de/mozilla-firefox/gb_form.php:13) in */www/htdocs/v141100/de/mozilla-firefox/gb_form.php* on line *362


*kann damit aber nix anfangen. Denn in Zeile 362 steht eben nur dieser eine php Befehl oder ist der etwa falsch?


----------



## znysk (19. Januar 2005)

?  
Keine Ahnung, vieleicht weiß ja jemand wanders weiter? 
Aber die Zeile scheint richtig zu sein. Bei mir 's. Vieleicht muss dat zu nem Zeitpunkt geschrieben werden, wo der header noch net gesendet wurde, also vor dem ganzen <HTML>... .


----------



## Skeleton (19. Januar 2005)

cAm3eel hat gesagt.:
			
		

> Habs mit
> 
> ```
> header("Location: http://www.philipp-langer.net/de/mozilla-firefox/gb_read.php");
> ...





> Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include(), require(), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei.



so viel zur Fehleranzeige !

Besuch doch mal diese Seite und lies mal ein bisschen.
php.net 

Skeleton


----------



## znysk (22. Januar 2005)

Soviel zu dem Thema! Merke ich mir für die nächsten Male. Desswegen hats bei mir auch gefunzt, weil ich das unbewusst immer vor jeder Ausgabe benutzt hatte.
Danke.


----------

