Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykonywanie zadania przy niszczeniu sesji
Forum PHP.pl > Forum > PHP
qarles
Witam. Mam taki problem:
Zrobilem sobie panel logowania, ale nie jest on oparty o sesje. Natomiast mam ustawione cos takiego ze przy kazdym poprawnym zalogowaniu robi uzytkownikowi dany token ktory jest niszczony po wylogowaniu wiec nie mozna na ten sam token ponownie zalogowac. Dziala to tak jak id sesji. Jednak klopot w tym, że jezeli user nie kliknie wyloguj to token nie zostanie usuniety przez co mozna pozniej bez logowania wejsc na strone na admina znajac ten token. Jest jakas mozliwosc zeby ustawic tak zeby np. po 5 minutach bezczynnosci token sie usuwal i automatycznie wylogowywalo usera?? (Mysle ze tu chodzi o to zeby poprostu dorobic sesje i po bezczynnosci wraz z poleceniem session_destroy() usuwal sie token, tylko nie wiem jak to wykonac)

Z góry dziękuję za pomoc.
IceManSpy
A gdzie trzymasz ten token? Jak w bazie, to możesz dołożyć kolumnę z czasem i sprawdzać, czy minęło X czasu od ostatniego włączenia strony. Jak przekroczyło, to kasuj rekord z bazy, jak nie to może dalej chodzić jako zalogowany.
qarles
Tak, token trzymam w bazie:) To jak to mozna zrobic zeby z tym czasem odliczal?

Aha no i wlasnie. Bo to bedzie mi tylko niszczyl przy wlaczonym kompie i przegladarce, a ja chcialbym zeby tak jak sie wylaczy kompa czy przegladarke to niszylo sesje wraz z tokenem...
IceManSpy
No ale jak trzymasz ten token u kogoś na kompie, aby go identyfikować? W sesji (napisałeś, że nie opiera się o sesję)? W ciastku? Za pomocą IP?

Możesz puścić skrypt sprawdzający te czasy w CRONie.
Rid
Można wywołać skrypt,poprzez homonogram zadań.
qarles
Cytat(IceManSpy @ 10.04.2011, 00:36:27 ) *
No ale jak trzymasz ten token u kogoś na kompie, aby go identyfikować? W sesji (napisałeś, że nie opiera się o sesję)? W ciastku? Za pomocą IP?

Możesz puścić skrypt sprawdzający te czasy w CRONie.


Napisalem ze token trzymam w bazie. A po kliknieciu wyloguj token jest usuwany z bazy aktualne_logowania a zostaje w bazie prawidlowe_logowania. Chodzi o to zeby tak zostawal w prawidlowych a z aktualnych byl usuwany i tak tez sie dzieje, ale zeby tez sie usuwal tak jak id sesji albo bo bezruchu albo po wylaczeniu kompa np. z pradu

Próbowalem tak, ale pokazywalo blad Notice: Undefined index: admin. Notice to usunalem wyswietlanie i niby w sumie wszystko dzialalo pieknie bo po tym czasie jak sie odswiezylo to to wyrzucal tak jak po wylogowaniu do login.php ale z bazy nie usuwalo mi to tokena...

  1. if($_SESSION['admin'] and $_SESSION['admin'] + 300 < time())
  2. {
  3. $_SESSION = array();
  4. header("Location: wyloguj.php?a='.rekorda[1].'"); //rekorda[1]<<to jest wlasnie token pobierany z bazy
  5. }
  6. else
  7. {
  8. $_SESSION['admin'] = time();
  9. }
skowron-line
http://pl.php.net/manual/en/function.sessi...ave-handler.php

albo jeżeli chcesz żeby Ci token "wygasa" to przy każdym przejściu na stronę odświeżaj datę w ciachu, ale najpierw sprawdź czy poprzednia data nie jest wyższa od 5min czy jak tam chcesz.
qarles
Cytat(skowron-line @ 10.04.2011, 12:25:27 ) *
http://pl.php.net/manual/en/function.sessi...ave-handler.php

albo jeżeli chcesz żeby Ci token "wygasa" to przy każdym przejściu na stronę odświeżaj datę w ciachu, ale najpierw sprawdź czy poprzednia data nie jest wyższa od 5min czy jak tam chcesz.


Dzięki wielkie za podsuniety pomysl z data i jej odswiezaniu. Juz wiem jak sobie z tym poradzic. Temat do zamknięcia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.