kostenloser Webspace werbefrei: lima-city


Benutzer automatisc ausloggen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    prog

    Kostenloser Webspace von prog

    prog hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m******s


    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
  4. o**s

    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.
  5. m******s

    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 ;)
  6. 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
  7. Autor dieses Themas

    prog

    Kostenloser Webspace von prog

    prog hat kostenlosen Webspace.

    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
  8. 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?!
  9. m******s


    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 ;)
  10. Autor dieses Themas

    prog

    Kostenloser Webspace von prog

    prog hat kostenlosen Webspace.


    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
  11. m******s


    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.
  12. 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().
  13. live-with-gangsters

    Kostenloser Webspace von live-with-gangsters, auf Homepage erstellen warten

    live-with-gangsters hat kostenlosen Webspace.

    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.
  14. 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?
  15. m******s


    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 ;)
  16. Autor dieses Themas

    prog

    Kostenloser Webspace von prog

    prog hat kostenlosen Webspace.

    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:thumb:.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!