Sven Rautenberg: Zum Thema Seesion ID

Beitrag lesen

Moin!

Deswegen ja mein Vorschlag: Schau in den _Sessiondaten_ nach, ob der Benutzer sich schon mal eingeloggt hat. Wenn nein: Redirect zum Login.
Ach ja: Es wäre nicht schlecht, wenn du in die Session-Daten auch noch das aktuelle Datum und Uhrzeit reinschreibst, wenn der Zugriff erlaubt war (also angemeldeter Benutzer etc.). Dann kannst du nämlich am Anfang nicht nur prüfen, ob der Benutzer eingeloggt war, sondern auch, ob er nicht schon zu lange keine Anfrage mehr gestartet hat. Vergessenes Logout ist nämlich auch nicht gut.

Jups, und genau hier weiß ich nicht, wie. Ich werde mal im Netz stöbern gehen, ansonsten wäre weitere Hilfe nochmal nett.

Die Sache ist simpel:

session_start();

if (isset($_SESSION['logstatus']) && ($_SESSION['logstatus']=='eingeloggt') && $_SESSION['accesstime'] > time()-30*60)
{
  //User ist eingeloggt, und der Zeitstempel des letzten Zugriffs ist noch nicht älter als 30 Minuten (= 30*60 Sekunden)

// Gleich Zeitstempel aktualisieren, damit die Session weitergehen kann.
 $_SESSION['accesstime'] = time();

...
}
else
{
  // zum Login gehen
}

Es ist schlauerweise vielleicht ganz gut, wenn du die IF-Logik umdrehst und die Bedingung verneinst, den "Zum Login"-Teil damit in den IF-Bereich packst, ihn mit exit(), beendest und auf den else-Teil dann verzichtest. Dahin kommt man dann nur, wenn man eingeloggt und nicht zu lange inaktiv war - und du vermeidest so ewig lange if-Blöcke. Sie sind nämlich auch recht unübersichtlich.

Zweiter Tipp: Im Prinzip könnte man sich auf jeder Seite einloggen. Dazu müßtest du nur bei abgelaufenen Logins (oder bei nichtvorhandenen) einfach eine Login-Seite ausgeben, die sich an sich selbst schickt.

Als Prüfung auf jeder Seite checkst du zuerst mal, ob Logindaten geschickt wurden. Wenn das der Fall ist, prüfst du die in deiner Datenbank. Wenn diese Daten gültig sind, setzt du den Login-Status und den Zeitstempel. Dann kommt die Abfrage von oben, ob jemand eingeloggt ist...

Die Session mußt du dafür ganz am Beginn des Skriptes starten, damit du zum passenden Zeitpunkt nach der Authentifizierung die Session-Daten schon befüllen kannst.

Weil das Login-Formular sich an sich selbst schickt, also zu exakt der Seite, die angezeigt werden soll, kommt man ohne weitere Navigation nach erfolgtem Login dort an, wo man hinwollte. Man kann also problemlos auf schon besuchte Seiten ein Bookmark setzen und wird ggf. dann eben direkt nach einem Passwort gefragt und kommt nach dessen Eingabe direkt zur gewünschten Seite.

- Sven Rautenberg

--
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)