Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generacja identyfikatora sesji
Forum PHP.pl > Forum > PHP
Cliassi
Witam, mam problem z funkcją session_regenerate_id(true). gdy niej korzystam system odrazu gubi "wylogowuje". Moje pytanie jest nastepujące do czego sluzy kod
  1. $_SESSION['costam']=true;
? widziałem w internecie taki kod
  1. if (!isset($_SESSION['inicjuj']))
  2. {
  3. $_SESSION['inicjuj'] = true;
  4. }
ale nie wiem jak on działa. bo po co generować nowe id jesli sesji nie ma ? i zamiast "inicjuj" wpisuje np "user_id" tak ?

oraz jak regenerować ID sesji co np 3 minuty a nie za każdym wywołaniem strony ?
kajtek2008
  1. $session=session_id();
mrWodoo
session_start = tworzenie sesji
session_regenerate_id 'przeniesie' dane sesji o ID x do nowej sesji o id Y

Robi się to po to, żeby zapobieć atakom kradzieży sesji np poprzez masowe sprawdzanie identyfikatorów.
Cliassi
wiem do czego sluzy session_regenerate_id(); tylko jak tego używam to mnie wylogowuje.tzn id sesji sie zmienia ale dane uciekają

i jak zmienić szyfrowanie ID sesji ? bo domyslnie jest md5? chciałbym np na sha256 lub 512
pamil
Manual.
Cliassi
ale dlaczego gdy zmieniam ID sesji to gubi dane ?
modern-web
W nawiasie dałeś parametr "true" -> kasujesz stary plik sesji i tworzysz nowy, w ten sposób nie zaśmiecasz serwera starymi sesjami, które dopiero po X czasie są automatycznie usuwane.
Wystarczy, że zrobisz session_regenerate_id() a powinno zadziałać smile.gif
Kolejność wykonywania tych operacji jest pod znakiem zapytania, czasem zdarza się że stary plik sesji zostanie usunięty zanim utworzy się nowy - dlatego Cię wylogowuje, bo to tak jakbyś użył session_destroy()

Pozdrawiam!
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.