Aufruf einer php-Seite. Wie mache ich's am besten?

Tim Comanns hat gesagt.:
...per HTML Metarefresh nach 0 Sekunden zurück aufs Gästebuch...
Hier würde ich die Weiterleitung mit der PHP-Funktion [phpf]header[/phpf] machen. Dann sieht der User auch kein weißes Browserfenster aufblitzen.
Bei der Weiterleitung kannst dann einen GET-Parameter anhängen, damit Du im Gästebuch auch weißt, dass der User soeben etwas eingetragen hat und Du Deinen Hinweis, Dein Dankeschön, Deine Alert-Box oder sonst irgendetwas ausgeben kannst.
Mit der Weiterleitung ist ohne komplizierte IP-Sperren sichergestellt, dass beim Drücken auf F5 nicht nochmal etwas eingetragen wird.

Gruß hpvw
 
Wenn mit [phpf]header[/phpf] eine "Location" übergeben wird, sorgt PHP selbst dafür, dass 302 gesendet wird oder hättest Du lieber 303?
Note: Many pre-HTTP/1.1 user agents do not understand the 303
status. When interoperability with such clients is a concern, the
302 status code may be used instead, since most user agents react
to a 302 response as described here for 303.
Gruß hpvw
 
Tiburon hat gesagt.:
(wer Javascript deaktiviert und kein Flash-Plugin installiert hat, ist meiner Seite eh' nicht wert:-))
Naja, ich bin ja immer noch der Meinung, dass man so gut wie moeglich auf clientseitige Voraussetzungen verzichten sollte.
Soll heissen, dass man eine Website auch ohne Cookies, Flash und JavaScript nutzen kann.
Zum Thema Erkennung ob Cookies und JavaScript aktiviert sind hab ich uebrigens in diesem Thread zwei kleine Scripts gepostet die ich in dem Zusammenhang einfach nochmal erwaehnen will.
 
Wenn du header() verwendest müsstest du diesen aber hinter die mysql_ Befehle packen. Packst du ihn davor, werden die Befehle nicht ausgeführt, packst du ihn dahinter schlägt es fehl, wenn bei den mysql_ Aktionen irgendwas fehlschlägt, wegen "Headers already sent".

Nutzt du einen HTML Meta refresh werden die PHP Aktionen auf jedenfal ausgeführt und egal wie diese enden, wird weitergeleitet. Da der HTML Code erst komplett an den Browser geschickt wird, wenn PHP durchgelaufen ist.
 
Tim Comanns hat gesagt.:
Wenn du header() verwendest müsstest du diesen aber hinter die mysql_ Befehle packen. Packst du ihn davor, werden die Befehle nicht ausgeführt, packst du ihn dahinter schlägt es fehl, wenn bei den mysql_ Aktionen irgendwas fehlschlägt, wegen "Headers already sent".
Um das zu verhindern, gibt es mehrere Möglichkeiten, z.B. die Funktionen zur Ausgabesteuerung oder Fehlermeldungen unterdrücken (@) oder Fehler mit [phpf]set_error_handler[/phpf] abfangen. Mit dem letzten lassen sich auf der Seite dann auch "elegante" Fehlermeldungen anzeigen und man kann im Fehlerfall auf [phpf]header[/phpf] verzichten und den User informieren, was passiert ist.

Gruß hpvw
 
Ja wirklich prima. Dann hast du einen Fehler, verzichtest auf header() und der User hängt irgendwo in der Landschaft auf einer Fehlerseite fest. Irgendwie scheine ich da eine andere Auffassung zu haben, was man dem User zeigen muss/sollte und was eher nicht ... naja egal :rolleyes:
 
Ich schließe mich hqvws Argumentation an: PHP bietet genügend Kniffe, die eine Vorgehensweise mit HTTP-Header ermöglichen.
 
Ich halte mich da eher an die Meinung, die im Tip of the Day des w3c vetreten wird.
Ob du dem User den Fehler mitteilst oder ihn einfach trotz Fehler weiterleiten willst, liegt ja in Deiner Hand. Mir geht es vor allem um die Technik der Weiterleitung (HTTP- vs. META-Refresh). Welche Informationen man dem User geben sollte ist sicher von Fall zu Fall verschieden.

Gruß hpvw
 
Zurück