Ungewolltes ausloggen
Steffi
- php
Hallo Leute,
ich versuche derzeit das Loginsystem Profi von PHPBuddy auf mein derzeitiges Loginsystem zu übertragen. Es klappt zunächst alles prima. Bei einem erfolgreichem Login wird bei mir eine .php-Adminseite per include eingebunden, wobei diese Seite Links enthält zur Verwaltung von Inhalten der Homepage etc. Die Links/Unterseiten werden durch ein GET Parameter übertragen, sodass Links mit index.php?seite=inhaltverwalten oder index.php?seite=userverwalten vorkommen. Die Seiten inhaltverwalten.php bzw. userverwalten.php werden dann per include eingebunden, sobald man draufklickt. Also sobald ich diese Unterseiten aufrufe, werde ich ausgeloggt und komme erneut auf das Login Formular, der wird eigentlich nur angezeigt wird, wenn if ($_SESSION['angemeldet'] == false && isset($_SESSION['angemeldet'])
. Zusätzlich habe ich print_r( $_SESSION );
benutzt, und bekomme folgendes raus (vor Login):
Array ( [server_SID] => 1 [angemeldet] => )
nach erfolgreichem Login:
Array ( [server_SID] => 1 [angemeldet] => 1 [rights] => 3 [benutzername] => Steffi [anmeldung] => 9dac863a0efced8ab6946145e920d6fe )
und schließlich, wenn ich auf eine Unterseite klicke:
Array ( [server_SID] => 1 [angemeldet] => [rights] => 3 [benutzername] => Steffi [anmeldung] => 9dac863a0efced8ab6946145e920d6fe )
Die Session [angemeldet] geht irgendwie verloren und ich habe leider keine Ahnung, warum. Habe schon es versucht selber zu lösen, allerdings erfolglos...
Eventuell könnt ihr mir ja helfen. Wenn ihr weitere Informationen benötigt, dann reiche ich diese nach!
Vielen Dank.
Liebe Grüße
Steffi
Hallo,
Die Session [angemeldet] geht irgendwie verloren und ich habe leider keine Ahnung, warum. Habe schon es versucht selber zu lösen, allerdings erfolglos...
du hast zu schnell aufgegeben. Kennst du die Funktion debug_backtrace()?
Lass dir anzeigen, welchen Weg der Request durch den PHP-Code nimmt und suche nach Erklärungen.
Grüße
Tach!
Zusätzlich habe ich
print_r( $_SESSION );
benutzt, und bekomme folgendes raus (vor Login):
Schon sehr gut, aber mit var_dump() geht es noch besser, dann siehst du die echten Werte. print_r() gibt dir nur die Stringdarstellung der einfachen (skalaren) Typen aus, was etwas ungenauer ist.
Array ( [server_SID] => 1 [angemeldet] => [rights] => 3 [benutzername] => Steffi [anmeldung] => 9dac863a0efced8ab6946145e920d6fe )
Was steht wirklich in "angemeldet"?
Die Session [angemeldet] geht irgendwie verloren und ich habe leider keine Ahnung, warum.
Verfolge den Weg des Wertes. Lass ihn dir an jeder Ecke ausgeben. Die erste Kontrollausgabe hat ja gezeigt, dass er noch da ist. Er geht nicht einfach so verloren, das macht dein Code. Irgendwo wird er ungewollt geändert. Vielleicht bei einer Zuweisung, die eigentlich ein Vergleich werden sollte. (debug_backtrace() brauchst du nur, wenn du viel mit Funktionen arbeitest, um herauszufinden in welcher Reihenfolge sie bis zur betroffenen Stelle aufgerufen wurden und welche Parameter sie dabei erhielten.)
dedlfix.
Array ( [server_SID] => 1 [angemeldet] => [rights] => 3 [benutzername] => Steffi [anmeldung] => 9dac863a0efced8ab6946145e920d6fe )
Was steht wirklich in "angemeldet"?
Hmm, irgendwie finde ich den Fehler immer noch nicht. Hab's mal var_dump benutzt und bekomme folgendes raus, wenn ich auf eine Unterseite klicke:
array(5) { ["server_SID"]=> bool(true) ["angemeldet"]=> bool(false) ["rights"]=> string(1) "3" ["benutzername"]=> string(6) "Steffi" ["anmeldung"]=> string(32) "de160b468d82d24b918d780a8ac0405a" }
Session wird also automatisch auf false geändert...
Tach!
Hmm, irgendwie finde ich den Fehler immer noch nicht.
Da hilft nur weitersuchen.
Session wird also automatisch auf false geändert...
Wohl kaum. "Automatisch" gibt es beim Programmieren nicht und PHP verändert keine Session-Daten. Kontrollausgaben sollten dich an die Ursache heranführen, wenn du sie nicht im Code erkennst.
dedlfix.