Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sesje, unset?
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


Hey. Chciałem zrobić aby wylogowywało po okreslonym czasie. Znalazlem takie cos:

  1. <?php
  2. if(!isset($_SESSION['last_trace']))
  3. {
  4.    $_SESSION['last_trace'] = $now;
  5. }
  6. elseif ((int)$_SESSION['last_trace'] + $expiryTime < $now)
  7. {
  8.    $sessionName = session_name("Sesja");    
  9.    $_SESSION = array();
  10.    if (isset($_COOKIE[$sessionName]))
  11.    {
  12.        setcookie($sessionName, '', $now-40, '/');
  13.    }
  14.        
  15.    $online_off = mysql_query("UPDATE `konta` SET `online`='0' WHERE `username`='".$uzytkownik."'") or die(mysql_error());
  16.    session_destroy();      
  17.    echo '<script language="JavaScript">window.location="index.php?opcja=logowanie";</script>';
  18. }
  19. ?>


I owszem zawsze wylogowuje po tych 40 sek...ale... nawet gdy user jest aktywny ;/ Nie chcielibyscie aby was wylogowalo podczas pisania postu lub przegladania tematów prawda?
Dodałem kod, ktory powinien po kazdym refreshu liczyc czas od nowa. Jednak zalogowany jestem nawet po przekroczeniu tego czasu

  1. <?php
  2. $now = time();
  3. $expiryTime = 20;
  4.  
  5. if(isset($_SESSION['last_trace']))
  6. {
  7. unset($_SESSION['last_trace']);
  8.  
  9. }
  10.  
  11. if(!isset($_SESSION['last_trace']))
  12. {
  13.    $_SESSION['last_trace'] = $now;
  14. }
  15. elseif ((int)$_SESSION['last_trace'] + $expiryTime < $now)
  16. {
  17.    $sessionName = session_name("Sesja");    
  18.    $_SESSION = array();
  19.    if (isset($_COOKIE[$sessionName]))
  20.    {
  21.        setcookie($sessionName, '', $now-40, '/');
  22.    }
  23.        
  24.    $online_off = mysql_query("UPDATE `konta` SET `online`='0' WHERE `username`='".$uzytkownik."'") or die(mysql_error());
  25.    session_destroy();      
  26.    echo '<script language="JavaScript">window.location="index.php?opcja=logowanie";</script>';
  27. }
  28. ?>


pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
no i jak ustawic to session.gc_maxlifetime?
Albo bezpośrednio w pliku php.ini, albo pośrednio poprzez .htaccess (php_value/php_flag) lub najławiej poprzez ini_set" title="Zobacz w manualu PHP" target="_manual.
Cytat
co to daje w praktyce?
Yyy... to po co ja się staram, linkuję Ci do źródeł ( http://pl2.php.net/manual/en/session.confi....gc-maxlifetime ) skoro nawet nie przeczytasz? Definuje żywotność sesji.
Cytat
To przewidzialem (ten 2 punkt) dlatego chce aby po 5 min ich wylogowywalo automatycznie bo sesja sie skonczy (tu te 40 sek, potem dam 5 min)
Jak nikt nie będzie korzystał ze strony to ich nie wyloguje chyba że przez jakiegoś crona wrzucisz skrypt, który będzie sprawdzał wszystkie sesje - ale to zły pomysł.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 15:47