Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak zmienić ID Sesji?
Forum PHP.pl > Forum > Przedszkole
ZaqU
Problem banalny. Muszę zmienić ID sesji na wartość zapisaną w ciasteczku.

  1. echo 'Przed: '.session_id();
  2.  
  3. if( isset($_COOKIE['sessionID']) && $_COOKIE['sessionID'] != session_id() ) {
  4. session_id($_COOKIE['sessionID']);
  5. }
  6.  
  7. echo 'Po: '.session_id();


Do tego momentu wszystko jest super i działa. Przed przypisaniem identyfikator jest inny, po przypisaniu przyjmuje wartość z cookie. Problem pojawia się po odświeżeniu strony, gdyż ta zmiana nie jest trwała i session_id() powraca do swej domyślnej wartości.

Co zrobić, aby identyfikator sesji zmieniał się na stałe?
ssstrz
Nie jestem przekonany czy nie ma lepszego sposobu więc fajnie aby ktoś zwerfikował. Spróbuj tak:
  1. $przed=session_id();
  2.  
  3. if( isset($_COOKIE['sessionID']) && $_COOKIE['sessionID'] != session_id() ) {
  4. session_id($_COOKIE['sessionID']);
  5. $_COOKIE['PHPSESSID']=session_id();
  6. setcookie('PHPSESSID',$_COOKIE['PHPSESSID']);
  7. }
  8. echo 'Przed: '.$przed;
  9. echo 'Po: '.session_id();
  10.  
Michael2318
http://stackoverflow.com/questions/1780852...d-and-keep-data
Tam ktoś dał rozwiązanie przypisywania na sztywno id sesji. Ja bym jednak użył session_regenerate_id i wtedy zmieniał wartość ciasteczka, jeśli Ci to tak bardzo potrzebne.
Weź też pod uwagę kwestie bezpieczeństwa... wink.gif
ZaqU
Dzięki za odpowiedzi!

W sumie podoba mi się sposób ssstrz'a, bo jest prosty i to tylko dwie linijki więcej w moim kodzie.

Michael2318, hmm.. czy ja wiem? Za dużo roboty miałbym ze zmienianiem id sesji na nowe. Nowe ciastko, aktualizacja w bazie danych... A bezpieczeństwo chyba na tym nie utraci, bo i tak sprawdzam z każdym odświeżeniem strony czy IP i przeglądarka klienta zgadza się z tym co jest zapisane w $_SESSION['IPKlienta'] oraz $_SESSION['AgentKlienta'] (wszystko za pierwszym razem pobierane z bazy). Jeśli nie, to sesja jest niszczona, a odpowiedni rekord z bazy kasowany i trzeba się na nowo logować. smile.gif
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.