Zurück zur vorherigen Seite mit Kopfzeile ("Ort:"); in PHP
124
Der Titel dieser Frage erklärt meine Frage. Wie leite ich den PHP-Seitenbesucher mit dem auf die vorherige Seite zurück?header( "Location: URL of previous page" );
Beachten Sie, dass dies möglicherweise nicht mit sicheren Seiten (HTTPS) funktioniert und insgesamt eine ziemlich schlechte Idee ist, da der Header entführt werden kann und der Benutzer an ein anderes Ziel gesendet wird. Der Header wird möglicherweise nicht einmal vom Browser gesendet.
Idealerweise möchten Sie entweder:
Hängen Sie die Absenderadresse als Abfragevariable an die Anforderung an (z. B.? Back = / list).
Definieren Sie eine Rückgabeseite in Ihrem Code (dh alle erfolgreichen Formularübermittlungen werden auf die Listenseite umgeleitet).
Geben Sie dem Benutzer die Option, wohin er als Nächstes gehen möchte (z. B. Speichern und weiter bearbeiten oder einfach speichern).
@Col, damit Sie ein praktisches Problem damit beweisen können?
Pekka
1
Die Verwendung des Referers in einem definierten Kontext von Seite zu Seite kann nach vorherigem Testen, ob er festgelegt und gültig ist, durchaus akzeptabel sein - die überwiegende Mehrheit der Browser sendet einen ordnungsgemäßen HTTP_REFERER mit.
Pekka
1
@Col Ich habe dies in der Produktion verwendet, als ich etwas für eine Demo erledigen musste. Wie Sie meiner Antwort entnehmen können, biete ich anstelle der auf HTTP_REFERER basierenden Umleitung drei weitere Lösungen an, an die ich mich wenden würde.
Dimitry
2
@Madmartigan, das klingt nach wirklich seltsamem Verhalten. Der einzige Hinweis, den ich im Internet sehen kann, der es verursacht, sind einige Umleitungsprobleme. Wie auch immer, ich stimme zu, dass die Verwendung des Referers nicht der richtige Weg ist, wenn Sie 100% ige Sicherheit benötigen
Das klang wirklich klug, aber in FF10 verstehe ich "Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."Das ist also im Grunde unbrauchbar.
Wesley Murch
Wesley Murch, es funktioniert gut für mich in fast allen wichtigen Browsern, einschließlich dem, den Sie erwähnt haben. Es funktioniert nur für Sie, wenn Sie auf die Seite gekommen sind, die etwas in der Geschichte hat.
Hammad
5
Dies kann dazu führen, dass die vorherige Seite aus dem Browser-Cache bereitgestellt wird.
Aksu
14
Sie müssen diesen Ort irgendwie speichern.
Angenommen, es handelt sich um ein POST-Formular. Geben Sie einfach den aktuellen Speicherort in ein ausgeblendetes Feld ein und verwenden Sie ihn dann im Speicherort header().
Nur eine kleine Ergänzung: Ich glaube, es ist eine übliche und bekannte Sache, exit;nach der Header-Funktion hinzuzufügen, falls wir nicht möchten, dass der Rest des Codes geladen oder ausgeführt wird ...
Das Speichern der vorherigen URL in einer Sitzungsvariablen ist fehlerhaft, da der Benutzer möglicherweise mit der rechten Maustaste auf mehrere Seiten klickt und dann zurückkommt und speichert.
es sei denn, Sie speichern die vorherige URL in der Sitzungsvariablen in einem ausgeblendeten Feld im Formular und nach dem Speichern des Headers ("Speicherort: URL der aufrufenden Seite speichern");
Antworten:
Versuchen:
Beachten Sie, dass dies möglicherweise nicht mit sicheren Seiten (HTTPS) funktioniert und insgesamt eine ziemlich schlechte Idee ist, da der Header entführt werden kann und der Benutzer an ein anderes Ziel gesendet wird. Der Header wird möglicherweise nicht einmal vom Browser gesendet.
Idealerweise möchten Sie entweder:
quelle
Es ist so einfach, benutze dies einfach
Es funktioniert gut für mich
quelle
"Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."
Das ist also im Grunde unbrauchbar.Sie müssen diesen Ort irgendwie speichern.
Angenommen, es handelt sich um ein POST-Formular. Geben Sie einfach den aktuellen Speicherort in ein ausgeblendetes Feld ein und verwenden Sie ihn dann im Speicherort
header()
.quelle
Nur eine kleine Ergänzung: Ich glaube, es ist eine übliche und bekannte Sache,
exit;
nach der Header-Funktion hinzuzufügen, falls wir nicht möchten, dass der Rest des Codes geladen oder ausgeführt wird ...quelle
Versuchen Sie dies einfach in Javascript:
Oder Sie können es in PHP versuchen:
quelle
Das Speichern der vorherigen URL in einer Sitzungsvariablen ist fehlerhaft, da der Benutzer möglicherweise mit der rechten Maustaste auf mehrere Seiten klickt und dann zurückkommt und speichert.
es sei denn, Sie speichern die vorherige URL in der Sitzungsvariablen in einem ausgeblendeten Feld im Formular und nach dem Speichern des Headers ("Speicherort: URL der aufrufenden Seite speichern");
quelle