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%)
-----


Przepraszam, ale trochę namieszałeś. Z tego, co ja rozumiem, to kiedy robię tak:

To automatycznie jest wysyłane do przeglądarki ciasteczko - jego nazwa to "PHPSESSID", zawartość to session_id (czyli przykładowo c7b33b24c2d13ef2b13167f467bfd9f1), a ważność to 20 sekund (czyli przykładowo "Wygasa" 18 sierpnia 2009 15:39:12).

Tylko że problem jest w tym, że nie jest ono odnawiane przy odświeżeniu strony. Natomiast jeśli chcę wysłać ciasteczko (już po wywołaniu session_start();) za pomocą:
  1. setcookie("PHPSESSID", $session_id(), time()+20);

To dostaję błąd Fatal error: Function name must be a string in [path] on line [x]


Poprawka, usunąłem nawiasy, żeby uniknąć błędu. Wygląda to tak:
  1. setcookie("PHPSESSID", $session_id, time()+20);

Tak przynajmniej zrozumiałem, że należy to zrobić. Ale problemu nie rozwiązałem w ten sposób - nadal przy odświeżaniu strony czas życia ciasteczka nie jest przedłużany o kolejne 20 sekund, tylko wygasa... I potem ustawiana jest nowa sesja.


Zgodnie z tym, co napisał erix powinno być dobrze... Dlaczego więc tak nie jest i czas ważności ciasteczka przy odświeżaniu danej strony nie jest aktualizowany?

Ten post edytował radabus 18.08.2009, 14:56:56
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 - 15:21