Benutzer automatisc ausloggen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
befehl
bereich
code
dank
datenbank
dauer
ende
feld
funktion
lebensdauer
login
minute
null
nutzer
posten
sekunde
session
setzen
zahlreichen antworten
-
Hallo Leute,
Ich habe mal einen Login Bereich mit Sessions programmiert. Funktioniert auch alles bestens. Jetzt meine Frage:
Gibt es eine Möglichkeit den Nutzer automatisch nach x min auszuloggen?
So funktioniert das ja leider nicht:
session_start(); $_SESSION[\'login_time\'] = time(); include \'helpers.inc.php\'; if(time() > ($_SESSION[\'login_time\'] + 1200)) logout(); //ende der session
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo Leute,
Ich habe mal einen Login Bereich mit Sessions programmiert. Funktioniert auch alles bestens. Jetzt meine Frage:
Gibt es eine Möglichkeit den Nutzer automatisch nach x min auszuloggen?
Du kannst die Dauer der Session auf x Minuten setzen (bzw. x*60 Sekunden).
http://de.php.net/manual/de/function.session-set-cookie-params.php
[edit] die einzige andere Möglichkeit wäre IMHO Cronjobs. Geht aber bei lima afaik auch nicht echt...
Beitrag geändert: 26.6.2008 21:43:08 von merovius -
Du kontrollierst ja wahrscheinlich bei jedem Aufruf einer Seite, ob der Benutzer eingeloggt ist. Setze einfach eine Session-Variable, in die du jeweils die letzte Zugriffszeit speicherst. Bei jedem Aufruf der Seite kannst du dann prüfen, ob die Zeit überschritten wurde. Wenn du die Dauer der Session auf x min setzt, weiß ich nicht, ob du auch bei Aktivität nicht schon nach x min ausgeloggt bist.
-
Wenn du die Dauer der Session auf x min setzt, weiß ich nicht, ob du auch bei Aktivität nicht schon nach x min ausgeloggt bist.
Käme auf einen Versuch an, aber ich glaube nicht. Denn:
Man muss bei jedem Aufruf einer PHP-Seite die Session-Lebenszeit neu einstellen, d.h. es muss vor jedem Aufruf von session_start() auch einmal session_set_cookie_params() aufgerufen werden.
Ich schließe daraus, dass jedes mal ein neues Cookie gesetzt wird, mit der passenden Zeit.
Also, mein Variante ist afaik die übliche und erscheint mir einfacher ;) -
Hallo,
mir ist etwas unklar was du machen möchtest...
1. Den Nutzer nach X Minuten ausloggen (egal ob dieser Aktiv ist oder nicht)
2. Den Nutzer zum erneuten Login zwingen (durch Logout), wenn er X Min Inaktiv war.
Welche Variante hättens denn gern?
Grüßle -
Erstmal danke für eure zahlreichen Antworten. Das hilft mir schon viel weiter.
Mein Ziel war es den Nutzer bei inaktivität von x min auszuloggen, wenn er aber aktiv ist, d.h. wenn er die geschützten Seiten wechselt, nicht auszuloggen.
Wenn ich das mit den session_set_cookie_params() richtig verstanden habe, dann muss ich es einfach so schreiben:
session_set_cookie_params(1200); // 1200s = 20min session_start();
Viele Grüße,
prog -
session_start(); $_SESSION[\\\'login_time\\\'] = time(); //NUR beim Login setzten!!! include \\\'helpers.inc.php\\\'; if(time() > ($_SESSION[\\\'login_time\\\'] + 1200)) logout(); //ende der session
wenn du DIESEN code jedesmalo aufführst ist es ja klar.
Du musst bei der loginseite EINMALIG die Login_time setzen und danach machste jedesmal die abfrage.
Aber was steht bitteschön in der Funktion logout? würdest das, wenn mein lösungsvorschlag nicht zieht, bitte mal hier posten?! -
Erstmal danke für eure zahlreichen Antworten. Das hilft mir schon viel weiter.
Mein Ziel war es den Nutzer bei inaktivität von x min auszuloggen, wenn er aber aktiv ist, d.h. wenn er die geschützten Seiten wechselt, nicht auszuloggen.
Wenn ich das mit den session_set_cookie_params() richtig verstanden habe, dann muss ich es einfach so schreiben:
Genau so würde ich es auch probieren, dass dann noch bei jeder Seite, wo er eingeloggt ist.
Probier dann doch einmal mal aus, setz die Lebensdauer mal Testweise überall auf 20 Sekunden oder so und klick dann wie wild durch diene Page. Wenn du trotz deiner Aktivität nach 20 sek ausgeloggt wirst, musst du dir was anderes überlegen, wenn du ne Minute oder so durchälst, ohne gekickt zu werden, dann funktioniert wohl alles ;)
-
Aber was steht bitteschön in der Funktion logout? würdest das, wenn mein lösungsvorschlag nicht zieht, bitte mal hier posten?!
Ich habe das mit einer Datenbank gemacht, in der u.A. ein Feld UseSession ist. Dieses Feld ist, wenn der Nutzer ausgeloggt ist, Null.
Wenn der Nutzer sich einloggt wird in dieses Feld die Session ID geschrieben. Die Funktion logout() setzt dieses Feld auf Null. Wenn der Nutzer auf Logout klickt, wird diese Funktion aufgerufen.
Viele Grüße,
prog -
Ich habe das mit einer Datenbank gemacht, in der u.A. ein Feld UseSession ist. Dieses Feld ist, wenn der Nutzer ausgeloggt ist, Null.
Wenn der Nutzer sich einloggt wird in dieses Feld die Session ID geschrieben. Die Funktion logout() setzt dieses Feld auf Null. Wenn der Nutzer auf Logout klickt, wird diese Funktion aufgerufen.
Das mit der Datenbank ist recht unnütz. Mehr Sinn macht es IMHO, wenn in der Session Username und Passwort gesetzt werden und dann bei jedem Aufruf einer Seite das Passwort überprüft würde und der logout einfach nur dadurch geschieht, dass die Session abläuft. Das einzige, was du dazu noch tun musst, ist, dafür zu sorgen, dass die Session_ID ordentlich mitgesendet wird, also an jeden link falls keine Cookies gesetzt sind die ID ranhängen (was du aber eh machen musst, wenn du mit Sessions arbeitest). Dann musst du nicht mit dieser ID oder null in der Datenbank (wo ich mir eh nicht ganz sicher bin, was die da soll?) rumpfriemeln und es geschieht eigentlich alles automatisch. -
merovius schrieb:
Ich habe das mit einer Datenbank gemacht, in der u.A. ein Feld UseSession ist. Dieses Feld ist, wenn der Nutzer ausgeloggt ist, Null.
Wenn der Nutzer sich einloggt wird in dieses Feld die Session ID geschrieben. Die Funktion logout() setzt dieses Feld auf Null. Wenn der Nutzer auf Logout klickt, wird diese Funktion aufgerufen.
Das mit der Datenbank ist recht unnütz. Mehr Sinn macht es IMHO, wenn in der Session Username und Passwort gesetzt werden und dann bei jedem Aufruf einer Seite das Passwort überprüft würde und der logout einfach nur dadurch geschieht, dass die Session abläuft. Das einzige, was du dazu noch tun musst, ist, dafür zu sorgen, dass die Session_ID ordentlich mitgesendet wird, also an jeden link falls keine Cookies gesetzt sind die ID ranhängen (was du aber eh machen musst, wenn du mit Sessions arbeitest). Dann musst du nicht mit dieser ID oder null in der Datenbank (wo ich mir eh nicht ganz sicher bin, was die da soll?) rumpfriemeln und es geschieht eigentlich alles automatisch.
Seh ich auchso
UInd für die Session zu beenden gibt es session_destroy(). -
eine noch einfachere und bessere Lösung währe, dass der User ausgeloggt wird, wenn er lange auf einer Seite bleibt. Du machst einfach auf deine Seite mit Javascript den Befehl, dass deine Seite nach einer bestimmten Zeit automatisch zu einer anderen Seite wechselt. Du nimmst entweder die ausloggenseite, oder machst per GET auf die Seite und indludest die ausloggen-Seite. Das geht nach meiner Meinung am einfachsten.
-
Habt ihr auch schon daran gedacht, dass Sessions automatisch beendet werden. Das ist zwar abhängig von den Servereinstellungen, passiert aber meist nach 20 min. Also warum der ganze Aufwand?
-
eine noch einfachere und bessere Lösung währe, dass der User ausgeloggt wird, wenn er lange auf einer Seite bleibt. Du machst einfach auf deine Seite mit Javascript den Befehl, dass deine Seite nach einer bestimmten Zeit automatisch zu einer anderen Seite wechselt. Du nimmst entweder die ausloggenseite, oder machst per GET auf die Seite und indludest die ausloggen-Seite. Das geht nach meiner Meinung am einfachsten.
Bringt aber nur was, wenn das Browserfenster offen bleibt. Sobald es zu ist, geht das nicht mehr. Und es verlangt ausserdem aktiviertes Javascript.
Ich mein, ich bin immer noch der Ansicht, meine Lösung ist die einfachste, aber kann niemanden zwingen ;) -
Das mit der Datenbank habe ich aus einem Tutorial. Aber ihr habt mich überzeugt, dass das ohne das SessionID Feld in der Datenbank ja auch geht / viel besser ist. Dann muss ich zum Ausloggen für das Session Cookie auch nur die Lebensdauer angeben.
Danke für eure zahlreichen Antworten. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage