Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] czas sesji
dopelganger
post 3.07.2014, 07:26:59
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


cześć
mam banalne pytanie, i może śmieszne i głupie zarazem więc prosze o wyrozumiałość dla "skrępowanego umysłu" smile.gif

ale zgłupiałem , więc pytam:
czy jeżeli ustawię sesje na x czasu , np: 10 minut to czy ona wygaśnie po tym czasie mimo tego że będzie działanie na stronie, czy "nie wygaśnie" questionmark.gifquestionmark.gif

  1. ini_set( 'session.gc_maxlifetime', $minut);
  2. ini_set( 'session.cookie_lifetime', $minut);


dzięki

Ten post edytował dopelganger 3.07.2014, 08:11:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Michael2318
post 3.07.2014, 08:42:17
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Pojęcie 'długość trwania sesji' oznacza, że jeśli user zalogował się na stronę - jest zalogowanym użytkownikiem - ale pozostał on na jakiejś stronie u Ciebie i nie wykonuje żadnych operacji (nie odświeża strony, nie przechodzi między podstronami - po prostu jest nieaktywny) to jeśli wreszcie powiedzmy po pół godziny się zjawi i zrobi jakikolwiek ruch na stronie to skrypt z automatu go wyloguje bo długość sesji była ustawiona powiedzmy na 10 minut.

Ja u siebie robię to tak:

Pod session_start(), dorzucam session_regenerate_id w celu zabezpieczenia się przed session hijacking i co odświeżenie strony taki kod:

  1. private function user_authorisation()
  2. {
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $agent = $_SERVER['HTTP_USER_AGENT'];
  5.  
  6. if ( !isset($_SESSION['login']) )
  7. {
  8. return FALSE;
  9. }
  10.  
  11.  
  12. if ( $_SESSION['login']['user_agent'] !== $agent )
  13. {
  14. $this->logout();
  15.  
  16. return FALSE;
  17. }
  18.  
  19. if ( $_SESSION['login']['IP'] == $ip )
  20. {
  21. if ( (intval($_SESSION['login']['last_active']) + $this->config['session_timeout']) >= time() )
  22. {
  23. $_SESSION['login']['last_active'] = time();
  24.  
  25. return TRUE;
  26. }
  27. else
  28. {
  29. $this->logout();
  30.  
  31. return FALSE;
  32. }
  33. }
  34. else
  35. {
  36. $this->logout();
  37.  
  38. return FALSE;
  39. }
  40. }


tylko, że to jest w OOP, ale to nie ważne. Teraz sam sobie sprawdzasz ile trwała sesja usera, sprawdzasz czy user_agent się zgadza oraz czy adres IP pasuje.
Po pierwsze w miare zabezpieczone po drugie masz długość sesji i wylogowanie po przekroczeniu tego czasu.

Ten post edytował Michael2318 3.07.2014, 08:47:48
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 21:38