Mit begrenztem Wissen über Computer, Software und 42

schreibt Andre

PHP Umleitung per Header und seltsame Phänomene

02.04.12 (Allgemein, PHP)

Nun programmiere ich schon etliche Jahre mit PHP und habe dabei schon etliche Umleitungen via Header eingesetzt, doch gestern wollte dies überhaupt nicht den gewünschten Erfolg bringen. Die Aufgabe war ganz einfach ein Logout:

  • Userdaten auf „ausgeloggt“ setzen
  • In die Session eine Meldung schreiben ($_SESSION[‚meldung‘] = ‚Sie sind ausgeloggt‘)
  • Umleiten auf die Startseite (header(‚Location:startseite.php‘);)
  • Auf der Startseite die Meldung aus der Session ausgeben und anschließend löschen
    (echo $_SESSION[‚meldung‘] ;
    unset($_SESSION[‚meldung‘]); )

Also das Ganze schnell programmiert und getestet: Das Resultat war (nach einigen Suchen was schief läuft), dass die Meldung in der Session gesetzt und sofort wieder gelöscht  wurde, so dass sie auf der Startseite nicht mehr zur Verfügung stand. Was nun?

Wie ich nach einigen probieren herausfand, wurde die Meldung in der Session noch in dem Script gelöscht, dass die Umleitung auslöste. Das war des Rätsels Lösung!

Beim Umleitungen mit PHP per Header immer das Script mit exit beenden

In allen Umleitungen vorher hatte ich automatisch nach der Umleitung exit eingesetzt, da ich dies in einem schlauen Buch einmal gelesen hatte. Dies habe ich diesmal vergessen und das prompt in einer Umgebung, in der das Script weiter ausgeführt wird, da ein Output-Buffer (zur Komprimierung) verwendet wurde.

Also, nach

header('Location:ziel.php');

folgt immer

exit;

Dies war mal wieder ein Artikel, der mir helfen soll, diesen Fehler mir ins Gedächtnis zu brennen, damit der Fehler sich nicht wieder einschleichen kann.