Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] czas sesji
dopelganger
post
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" (IMG:style_emoticons/default/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" (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.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
Post #2





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

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


Ale nic nie wyciąnąłeś z tego co Ci napisałem. Po pierwsze wywal to wszystko:

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


session_start() podczas załadowania całej aplikacji ma zawsze występować tylko raz i ma to być druga linia pliku, zaraz po <?php.
Dalej, zaraz pod session_start, wrzuć session_regenerate_id(true);. Następnie do sesji masz przypisać tablicę z danymi, czyli oprócz Twojego test (zakładam, że to jest nick usera obecnie zalogowanego), masz zapisać czas ostatniej aktywności:

  1. $_SESSION['tester'] = array(
  2. 'nick' => 'test',
  3. 'ip' => $_SERVER['REMOTE_ADDR'],
  4. 'user_agent' => $_SERVER['HTTP_USER_AGENT'],
  5. 'last_active' => time());


I teraz masz sprawdzać to w ten sposób:

  1. $session_time = 10; // czas trwania sesji w minutach
  2. $session_time = $session_time * 60;
  3.  
  4. if ( isset($_SESSION['tester']) ) // jeśli sesja została przypisana...
  5. {
  6. $ip = $_SERVER['REMOTE_ADDR'];
  7. $uagent = $_SERVER['HTTP_USER_AGENT'];
  8.  
  9. if ( $uagent !== $_SESSION['tester']['user_agent'] || $ip !== $_SESSION['tester']['ip'] ) // jeśli ip lub user agent nie zgadza się z tym przypisanym podczas sesji...
  10. {
  11. session_destroy(); // niszczymy sesje
  12. header("location: index.php"); // oraz przekierowujemy na główną stronę, żeby dane się przeładowały oraz żeby usera nie zostawić np. w edycji profilu...
  13. }
  14.  
  15. if ( ($_SESSION['tester']['last_active'] + $session_time) < time() ) // jeśli przekroczono długość sesji...
  16. {
  17. session_destroy(); // niszczymy sesje
  18. header("location: index.php"); // oraz przekierowujemy na główną stronę, żeby dane się przeładowały oraz żeby usera nie zostawić np. w edycji profilu...
  19. }
  20. }


Tylko jeszcze pamiętaj, żeby po tym całym sprawdzaniu dodać aktualizacje czasu ostatniej aktywności sesji na obecny czas bo inaczej to zawsze po przekroczeniu tego 10min będzie wylogowywać.

  1. if ( isset($_SESSION['tester']) )
  2. {
  3. $_SESSION['tester']['last_active'] = time();
  4. }


napisałem Ci praktycznie gotowca.
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: 28.12.2025 - 12:45