Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Czas trwania sesji
radabus
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 17.08.2009

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


Witam

Szukałem na forum dość intensywnie, ale nie znalazłem takiego zagadnienia. Próbuję ustawić czas trwania sesji w taki sposób:

  1. ini_set('session.cookie_lifetime', XXXX);

Problem objawia się w ten sposób, że cookie jest ustawiane z danym czasem, a przy odświeżaniu strony czy też przechodzeniu na inne strony ten czas nie jest aktualizowany. Przykładowo ustawiam sobie na 20 sekund. Wywołuję stronę i kontroluję sesję za pomocą wyświetlenia session_id();

Przy pierwszym wywołaniu - pojawia się session_id danej sesji. Przy próbie odświeżania - zmienia się po 20 sekundach. Przy próbie przejścia na inną stronę po 10 sekundach, nie ustawia nowego czasu trwania sesji, tylko nadal leci "stary" licznik i po kolejnych 10 sekundach sesja wygasa, tworzony jest nowy identyfikator sesji.

W jaki sposób temu zapobiec? Jak ustawić, żeby przy każdym odświeżeniu strony czy przejściu na inną czas ważności sesji/cookie z session_id był ustawiany ponownie na ustaloną wartość?

Hm, jeśli mógłbym prosić o pomoc, odesłanie chociaż w przybliżeniu do konkretnej części manuala... Byłoby super, bo niestety sam nie potrafię sobie poradzić z tym problemem.

Przestawienie session.gc_maxlifetime = 1440 na inną wartość (w php.ini na 20 sekund przykładowo) i podmiana session.gc_probability = 100 - nic nie daje, sesja trwa i dłużej niż 20 sekund.

Prosiłbym bardzo o wskazówki, jak wykonać to, żeby sesja trwała określony czas, a za każdym odświeżeniem/wywołaniem strony ten czas był wydłużany. Przy założeniu, że korzystam z cookies do przetrzymywania session_id.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
radabus
post
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 17.08.2009

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


Dzięki erix za nakierowanie, nie przyszło mi do głowy, żeby czytać te komentarze. Zawsze zostaje nauczka na przyszłość (IMG:style_emoticons/default/winksmiley.jpg)
W każdym razie, trochę sobie zmodyfikowałem przykład i działa:

  1. function sessionStart($time, $ses) {
  2. session_name($ses);
  3. if (isset($_COOKIE[$ses]))
  4. setcookie($ses, $_COOKIE[$ses], time() + $time, "/");
  5. }
  6. sessionStart(20, nazwasesji);

Jak rozumiem, można by go po prostu okroić do:

  1. setcookie(session_name(), session_id(), time() + 20, "/");

i też będzie działać. Przynajmniej mi działa i odświeża czas ważności ciasteczka przy każdym przeładowaniu strony. Trochę nie rozumiem zatem, dlaczego autor komentarza wstawia tam warunek:

  1. if (isset($_COOKIE[$ses]))

Skoro "krótszy" przykład działa niezależnie od tego, czy cookie jest ustawione, czy nie - po prostu je nadpisuje, aktualizując czas ważności ciasteczka.

Ten post edytował radabus 18.08.2009, 16:50:03
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: 27.12.2025 - 04:11