Heute wollte ich folgendes Problem lösen: Beim Aufruf einer Seite wird man auf eine Login Seite geführt und meldet sich mit seinen Daten an. Die Session wurde erfolgreich hergestellt und jetzt soll man zurück zum Start. Bisher hatte ich fix die Startseite der Homepage aufrufen lassen. Pfiffiger wäre es aber doch, wenn man auf die Unterseite kommt die der User aufgerufen hat (vor allem dann wenn der User vorher durch ein TimeOut ausgeloggt wurde).
Die URL von der ich komme, das ist der sogenannte Referer. Diesen kann ich aus der Superglobal $_Server auslesen.
$ref = $_SERVER[HTTP_REFERER];
Und die Weiterleitung erfolgt nach erfolgreichem Login ganz einfach über einen Meta-Refresh
<meta http-equiv="refresh" content="2; url=index.php">
Ich dachte dann, ich könnte ja einfach hier bei url die Variable $ref einsetzen. Aber Pustekuchen, denn der Refresh kommt erst zum tragen wenn der Login erfolgt ist, also das Formular abgesandt wurde und dann ist der Referer die Login-Seite (login.php).
Entsprechend musste ich mir was ausdenken um den Referer des ersten Aufrufs der login.php zu merken. Dieses Problem löste ich, in dem ich ein verstecktes Formularfeld im Login Bereich einrichtet und diesem als Value (also als Formulareingabe) die Variable $ref gab, also die URL des ersten Aufrufs.
echo'<input type="hidden" name="refer" value="'.$ref.'">';
Nach dem Absenden des Login-Formulars wird dann mit
$refer = $_POST[refer];
Der übergebene Wert einer neuen Variable zugewiesen und dieser im Refresh ausgeführt
echo '<meta http-equiv="refresh" content="2; url='. $refer .'">';
Eigentlich einfach, oder…