header() und dann echo
sceiler
- php
0 Matthias Apsel1 suit0 sceiler0 suit0 Matthias Apsel0 ChrisB
Hallo,
ich habe eine if-Bedingung und falls diese nicht zutrifft, soll im man auf die vorherige Seite zurückgeleitet werden und es soll per echo eine Fehlermeldung ausgegeben werden.
if(check()
{
bla bla
}
else
{
header(Location: http://127.0.0.1/index.php");
echo 'ERROR TRY AGAIN';
}
Das weiterleiteiten per header() macht er aber das echo wird nicht ausgeführt.
Wieso?
Om nah hoo pez nyeetz, sceiler!
Das weiterleiteiten per header() macht er aber das echo wird nicht ausgeführt.
Wieso?
Weil nach dem Weiterleiten ein neues Dokument vom Server geholt wird, was von deinem echo nichts wissen kann.
Matthias
Weil nach dem Weiterleiten ein neues Dokument vom Server geholt wird, was von deinem echo nichts wissen kann.
Das ist natürlich ungünstig. Gibt es dennoch eine Möglichkeit das er die "Fehlermeldung" anzeigt?
Gibt es dennoch eine Möglichkeit das er die "Fehlermeldung" anzeigt?
Unter Opera:
Einstellungen -> Erweitert -> Netzwerk -> Automatische Weiterleitung zulassen
Das sagte ich bereits, aber du hast serverseitig _keine_ Möglichkeit, dass im Falle einer Weiterleitung der message body angezeigt wird.
Du wirst nicht umhinkommen, dein Konzept den technischen Gegebenheiten anzupassen.
Das weiterleiteiten per header() macht er
Wenn du mit "er" deinen Browser meinst: ja, das wird er vermutlich.
aber das echo wird nicht ausgeführt.
Doch, da bin ich mir ziemlich sicher.
Wieso?
header() fügt dinge im HTTP-Header ein
echo wird als message body übergeben - es steht da ziemlich sicher drin.
Schritte zur Reproduktion:
Nutze ein Entwicklungswerkzeug wie Dragonfly, Firebug oder ähnliches und analysiere den HTTP-Verkehr.
Du wirst feststellen, dass du einen Response mit 301 als Status erhältst, im message body aber "ERROR TRY AGAIN" steht, welches dein Browser aber nur dann anzeigt, wenn er die Weiterleitung nicht ausführt (z.B. im Falle einer Endlosschleife oder wenn du Weiterleitungen unterdrückst).
---
Deiner Frage nach zu urteilen willst du vermutlich ein Affenformular bauen - dafür ist eine Umleitung im Fehlerfall ("nochmal") per HTTP-Header aber der völlig falsche weg - eine Umleitung auf eine Ziel-Seite (wie im Wikipedia-Artikel) ist vertretbar, aber eigentlich auch nicht notwendig.
Nutze ein Entwicklungswerkzeug wie Dragonfly, Firebug oder ähnliches und analysiere den HTTP-Verkehr.
Das mache ich wie genau?
Deiner Frage nach zu urteilen willst du vermutlich ein Affenformular bauen - dafür ist eine Umleitung im Fehlerfall ("nochmal") per HTTP-Header aber der völlig falsche weg - eine Umleitung auf eine Ziel-Seite (wie im Wikipedia-Artikel) ist vertretbar, aber eigentlich auch nicht notwendig.
Die Informationen werden an eine .php Seite weitergeleitet ohne HTML Elemente. Die php Seite dient nur zum überprüfen und zum eintragen in die DB. Im Fehlerfall soll der User halt zurückgeleitet werden, mit der Nachricht was falsch in seiner Eingabe war.
Kannst du mir eine Alternative zu meiner Lösung sagen?
Nutze ein Entwicklungswerkzeug wie Dragonfly, Firebug oder ähnliches und analysiere den HTTP-Verkehr.
Das mache ich wie genau?
Unter Dragonfly z.B. im Reiter "Netzwerk" einfach den HTTP-Response ansehen. Aber eigentlich brauchst du da nicht reinschaun, meine Vermutung stimmt _ziemlich_ sicher :)
Die Informationen werden an eine .php Seite weitergeleitet ohne HTML Elemente. Die php Seite dient nur zum überprüfen und zum eintragen in die DB. Im Fehlerfall soll der User halt zurückgeleitet werden, mit der Nachricht was falsch in seiner Eingabe war.
Warum liefert das PHP-Script nicht gleich die Fehlermeldung aus?
Kannst du mir eine Alternative zu meiner Lösung sagen?
Wenn das nicht funktioniert, brauchst du für jede mögliche Fehlermeldung ein HTML-Dokument auf das du umleitest.
Effizient ist das nicht - wie schon gesagt: Affenformular.
Om nah hoo pez nyeetz, sceiler!
Kannst du mir eine Alternative zu meiner Lösung sagen?
Du könntest mit php im Fehlerfall ein Javascript-Alert erzeugen, welches nach Klick auf die gewünschte Seite weiterleitet.
Matthias
Hi,
Kannst du mir eine Alternative zu meiner Lösung sagen?
MfG ChrisB