Ich habe da gerade ein kleines Problem mit Sessions bei PHP und bin mir sicher, dass mir hier jemand behilflich sein kann.
Also ich habe eine kleine Seite (es handelt sich um einen Adminbereich), wenn diese aufgerufen wird, dann wird überprüft ob eine Session registriert wurde, dies mache ich so:
if($_SESSION[adminrecht]) { header("location: ?action=einstellen"); } if(!$_SESSION[adminrecht]) { header("location: ?action=login"); }
Das funktioniert auch alles, ich könnte auch anstatt "$_SESSION[adminrecht]" einfach "session_is_registered("adminrecht")" schreiben.
So dann geht es weiter.
Falls keine Sessions vorhanden sind, kommt ein Login-Formular, in das ein Passwort eingegeben werden muss.
Dieses Login-Formular überprüft dann weiter...:
$pass = mysql_real_escape_string($_POST[passwort]); if($pass == $adminpw) { session_register("adminrecht"); $adminrecht = yes; header("location: ?action=einstellen"); } if($pass != $adminpw or $pass == "") { echo '<b>Fehler!</b><br>Das eingegebene Passwort ist nicht richtig.<br><br> <a href="?action=login">Zurück zum Login</a>'; }
Ich habe das Passwort nur mal so als Test in eine externe Datei in einer Variable gespeichert, diese wird weiter oben noch included.
Nun falls das Passwort richtig ist, wird es mit "session_register("adminrecht")" registriert.
Ich habe in einem anderen Thread hier von tobiasndw gelesen, dass man eine Session immer mit "$_SESSION["adminrecht"];" registrieren soll. Wenn ich dies aber mache, dann funktioniert es später nicht.
Nun geht es weiter, falls also das Passwort richtig ist, wird zur Admin-Seite (action=einstellen) weitergeleitet, hier wird folgendermaßen überprüft:
if($action == "einstellen" and $_SESSION[adminrecht])
Diese Abfrage funktioniert auch, aber nur wenn ich oben "session_register("adminrecht")" benutze. Wenn ich die Session mit "$_SESSION["adminrecht"];" registriere, klappt es nicht (es kommt eine leere Seite).
Das Problem liegt also an der registrierten Session oder an der Abfrage bei action=einstellen.
Ich habe es auch schon mit isset($_SESSION[adminrecht]) probiert, klappt aber nicht.
Wenn ich das "and $_SESSION[adminrecht]" wegmache, dann geht es logischerweise. Also liegt das Problem an den Sessions.
Natürlich habe ich ganz oben auf der Seite "session_register();" und wenn action=logout kommt "session_destroy();".
Kann mir jemand sagen, wo mein Problem liegt und was ich bei Sessions sowieso besser/anders machen kann?
Ich kenne mich mit Sessions noch nicht richtig aus, habe hier eigentlich das erste Mal richtig damit gearbeitet.
Danke schon mal im Voraus für eure Hilfe!
Grüße.