Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak zmienić ID Sesji?
ZaqU
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 21.01.2013

Ostrzeżenie: (0%)
-----


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?

Ten post edytował ZaqU 1.04.2013, 01:04:43
Go to the top of the page
+Quote Post
ssstrz
post
Post #2





Grupa: Zarejestrowani
Postów: 103
Pomógł: 17
Dołączył: 15.12.2012

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post
Michael2318
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
ZaqU
post
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 21.01.2013

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 10:58