Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesje w bazie i cookie
Forum PHP.pl > Forum > PHP
Emet
Witam

Napisalem wlasny session handler oparty na bazie (mysql), wszystko dziala ok, mam tylko jedna watpliwosc, mianowicie czy to jest normalne ze jesli wylacze pliki cookie poprzez session.use_cookies to w takim przypadku po kazdym odswiezeniu strony, tworzony jest calkiem nowy identyfikator sesji? Moze zle rozumialem ale wydawalo mi sie ze jesli mam obsluge sesji w bazie pliki cookie mozna wylaczyc calkowicie? jak to jest? zaznacze ze jesli pliki cookie sa uruchomione wszystko dziala poprawnie i sesja przy przejsciu na poszczegolne podstrony czy tez podczas odswiezania jest ta sama.

pozdr.
Emet
cartman_ms
Klient musi jakoś dostać identyfikator sesji. Jeśli wyłączyłeś ciasteczka, to powinieneś doklejać do każdego odnośnika zmienną z identyfikatorem sesji. session_set_save_handler" title="Zobacz w manualu PHP" target="_manual ustawia funkcje dla przechowywania sesji na serwerze, klient dalej musi jakoś przekazywać identyfikator do kolejnych podstron.
Emet
Wlasnie domyslalem sie ze tak wlasnie jest, ale musialem to potwierdzic, czyli wszystko dziala ok, mysle ze ciasteczka beda lepszym rozwiazaniem do przekazywania identyfikatora niz url ? Tylko problem jest gdy ktos ma wylaczona obsluge ciastek ? moze wtedy dopiero przekazywac identyfikator w url. Dzieki za odpowiedz.

Jest jeszcze jeden problem ktory napotkalem, jak napialem powyzej uzywam cookie do przekazania identyfikatora sesji, ustawiam wartosc session.cookie_lifetime na 300, bo chce aby po 5 minutach bezczynnosci sesja wygasla, i tak sie dzieje, dziala ok, problem powstaje wtedy kiedy uzytkownik wylaczy przeglarke przed uplywem tych 5 minut i jesli teraz po chwili znow przejdzie na ta strone to nadal jest zalogowany!

I tu pytanie, co zrobic aby po wylaczeniu przegladarki przed uplywem czasu sesji i po ponownym wejsciu na strony uzytkownik i tak musial sie zalogowac ponownie ?

Wiem ze mozna ustawic session.cookie_lifetime na 0 wtedy cookie jest kasowane po zamknieciu przegladarki - ale wtedy nie mozna ustawic znow tych 5 minut sesji, jak to polaczyc ?
speedfire
w skrocie w kazdym odnosciku wstaw cos takiego a href=ble.php<?=SID?>

lub przez echo czy print echo("<a href=ble.php".SID);

to powinno wystarczyc aby sesje dzialaly
cartman_ms
Cytat(Emet @ 2004-11-03 22:00:38)
I tu pytanie, co zrobic aby po wylaczeniu przegladarki przed uplywem czasu sesji i po ponownym wejsciu na strony uzytkownik i tak musial sie zalogowac ponownie ?

Wiem ze mozna ustawic session.cookie_lifetime na 0 wtedy cookie jest kasowane po zamknieciu przegladarki - ale wtedy nie mozna ustawic znow tych 5 minut sesji, jak to polaczyc ?

Proponowałbym ustawić session.cookie_lifetime na 0, tak aby po zamknięciu przeglądarki sesja była kasowana i przy starcie sesji zarejestrować zmienną sesyjną z wartością aktualnego znacznika czasu systemu Unix (tzw. timestamp).
Na każdej podstronie możnaby sprawdzać, czy aktualny znacznik jest większy niż suma znacznika zarejestrowanego w zmiennych sesyjnych i tych 5 minut. Jeżeli byłby większy, to można by tworzyć nową sesję poprzez session_write_close" title="Zobacz w manualu PHP" target="_manual i session_start" title="Zobacz w manualu PHP" target="_manual. W ten sposób zarówno po upływie 5 minut, jak i po wyłączeniu przeglądarki sesja byłaby tworzona na nowo.

Jeśli sesja ma być kasowana tylko po upływie 5 minut bezczynności, to zainteresuj się funkcją session_cache_expire" title="Zobacz w manualu PHP" target="_manual.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.