Postanowiłem sprawdzić działanie moich sesji, bo odniosłem wrażenie, że PHP nie odświeża czasu "życia" sesji gdy ktoś wędruje po stronie.

Czas życia moich sesji: 15 min (później zwiększę bo to trochę mało wg mnie).
Wartość tę przechowuje stała: USER_SESSION_MAX_INACTIVE_LIFETIME.

Sprawdziłem ciasteczka i zdziwiło mnie kilka faktów:

1. Istnienie PHPSESSID, skoro używam ciastka o nazwie USER_SESSION.
2. PHPSESSID po zalogowaniu zostaje utworzone i nie jest nigdy więcej aktualizowane.
3. PHPSESSID ma czas wygaśnięcia równy + 15 min od zalogowania (nie od odświeżenia strony!).
4. USER_SESSION ma prawidłowy czas wygaśnięcia równy + 15 min od odświeżenia strony.

Poprzez "odświeżenie strony" mam na myśli również wędrowanie po innych, które używają sesji.
Bo przecież z każdą aktywnością użytkownika powinno się ustawiać czas sesji ponownie do przodu smile.gif

Funkcje:
  1. session_set_cookie_params(USER_SESSION_MAX_INACTIVE_LIFETIME + 600, '/');
  2. ini_set("session.cookie_lifetime", USER_SESSION_MAX_INACTIVE_LIFETIME + 600);


Nie mają wpływu na PHPSESSID - jedynie na USER_SESSION.
Konkretnie - w tym wypadku PHPSESSID będzie miało czas życia:
USER_SESSION_MAX_INACTIVE_LIFETIME
a nie:
USER_SESSION_MAX_INACTIVE_LIFETIME + 600.
Jeśli ciastko PHPSESSID wygaśnie - sesja również - a przecież powinno brać pod uwagę tylko ciastko USER_SESSION.

Jeśli ustawię czas życia ciastka na 0 poprzez session.cookie_lifetime to działa to tylko na ciastko USER_SESSION!

Jeśli natomiast zrezygnowałem z własnego ciastka poprzez:
  1. session_name('USER_SESSION');

Czyli zakomentowałem tę linię, to "everything is fine"...

Ustawienia:
  1. ini_set("session.gc_maxlifetime", USER_SESSION_MAX_INACTIVE_LIFETIME);
  2. ini_set("session.auto_start", 0);
  3. ini_set("session.use_cookies", 1);
  4. ini_set("session.use_only_cookies", 1);
  5. ini_set("session.use_trans_sid", 0);
  6. ini_set("session.cookie_httponly", 1);


Z początku nie używałem session_set_cookie_params() ale teraz próbowałem jakoś wpłynąć na to PHPSESSID, ale coś się nie udaje...