Mueller: header(Location: ...) mit unerwartetem Ergebnis

Beitrag lesen

Hi,

ich habe ein Problem mit einem Login-Skript, bei dem sich ein Nutzer mit Name und Passwort anmelden kann. Hierzu wird in einer DB u.a. die Session-ID gespeichert. Zusätzlich wird die Nutzer-ID in einer $_SESSION Variable abgelegt. Ist die Anmeldung erfolgreich, soll der Nutzer direkt per header(Location: ...) auf eine Zielseite weitergeleitet werden.

Das Problem: kommt er auf dieser Seite an, erscheint es als wäre er nicht angemeldet. Erst wenn die Seite refreshed wird, erkennt das Skript den Nutzer.

Beim Seitenaufruf prüfe ich lediglich, ob die Nutzer ID aus der $_SESSION Variable in Verbindung mit der Session-ID in der Datenbank abgelegt wurde.

Setze ich vor dem header()-Aufruf den Befehl sleep(1) ein, dann funktioniert die Weiterleitung richtig und der Nutzer wird auf der Zielseite als solcher erkannt. Es scheint also ein Art Zeitverzögerung vorzuliegen.

Dies ist sehr merkwürdig, da das PHP Skript ja erst weiterläuft, wenn die Session-ID tatsächlich in die DB geschrieben wurde bzw. die User-ID tatsächlich in die $_SESSION Variable geschrieben wurde.

Hat jemand vielleicht eine Idee, wie es zu diesem Verhalten kommen könnte? Ursprünglich hat das Anmeldeskript schon mal funktioniert, seit ich jedoch auf PDO umgestellt habe nicht mehr. Kann aber auch nur Zufall sein!

Vielen Dank vorab für jede Antwort!