Weiterleiten nach Prüfung

hcb

Grünschnabel
Hi Leute,

habe ein Problem, an dem ich schon lange rumkaue.
Ein Formular soll überprüft werden und erst weitergeleitet, wenn die erforderlichen Daten eingegeben worden sind.
Das klappt auch ganz gut.
Das Problem:
(hier der Code)

else{
(!empty($_POST["senden"]) && empty($fehlt))
echo "<form action=\"empfang.php\" method=\"post\">\n";
}

Wenn es vollständig ist, kommt das Formular nach Drücken des SubmitButtons nochmal und dann erst wird weitergleitet auf erneutes Drücken. Das ist doof!!

Habe bereits alle möglichen Lösungen in Scripts, Büchern usw, versucht. Leider ohne Erfolg.
Erfolgversprechend einfach wäre es mit einer Header-Weiterleitung.

header("Location:empfang.php");

Dann kommt aber der berühmte Fehler: Header already usw....!!???

Ich möchte einfach, dass nach erfolgreicher Prüfung auf Vollständigkeit ohne weitere Aktion des Benutzers weitergeleitet wird..

Danke schon mal für euer Gehirnschmalzanwärmen..

hcb
 
der header() befehl geht nur wenn vorher noch kein code ausgegeb nwurde
sonst arbeite halt mit echo "<script>self.location.href=\"seite.html\"";
 
danke für die prompte Meldung

Die Doppelung des Buttondrückens ist jetzt auch weg, aber leider kommen die Werte nicht mit.
Es öffnet sich die neue Datei "empfang.php" völlig jungfräulich ohne Werte??!!

if (!empty($_POST["senden"]) && empty($fehlt)){
echo "<script language = \"JavaScript\">self.location.href=\"empfang.php\"</script>";

}

Die Werte werden dort von mir über die globale Variable $_POST abgefragt.
Was kann ich nun tun?
Am liebste wäre mir auch eine Weiterleitungslösung nur mit PHP, ohne JavaScript.

Danke schon mal..
 
also ich mach meine formularüberprüfungen immer so:

PHP:
if($var1 == "" OR $var2 == "" usw) {

     include("error.inc.php");   

} elseif($var1 != "" AND $var2 != "") {

     include("confirm.inc.php");
}

versuchs mal so !
 
Danke chino!
es klappt!

Nur ein kleiner Schönheitsfehler: das Formular taucht natürlich auch am Ende auch wieder auf, aber das will ich eigentlich nicht.
Ich stoppe die Ausgabe mit einem break; am Ende der Ausgabedatei, die ich mit include einlese.
Geht das eleganter??

Ansonsten vielen Dank, das geht endlich so wie ich will.
 
np :)

zum problem, dass das formular wieder angefügt wird:

der code, der das formular überprüft, liegt der in der selben datei wie das formular oder liegt der in einer seperaten datei ?

bei mir isses so, dass das formular eine "normale" html seite is, und der ganze code, der das formular überprüft, in einer weitereren php-datei liegt. und wenn ich hier einen include befehl verwende, wird auch nur der inhalt der include datei ausgegeben. vor allem finde ich das persönlich so übersichtlicher, da du den code sauber in einer seperaten datei stehen hast :)

cyas,
chino
 
merci chino,
das klappt jetzt wunderbar!
Eigentlich ganz einfach, wenn man richtigrum denkt!

Danke nochmals,
bis zum nächsten bug
 
Zurück