Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Znikanie zmiennej sesyjnej
jwaldek
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 24.12.2007

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


Mam pewien problem ze zmienną sesyjną - chodzi o token który trzymam sobie w sesji
Bywa, że znika w zupełnie przypadkowy sposób, po prostu nagle zmienna sesyjna znika mimo, że nigdzie w kodzie nie ma funkcji która by cokolwiek usuwała z sesji

Skrypt wygląda mniej więcej tak jak poniżej, teoretycznie raz wygenerowana zmienna o nazwie "token" nie powinna znikać przez cały czas działania skryptu a jednka znika (i zostaje jej przypisana nowa losowa wartośc co powoduje błędy) i to w sposób przypadkowy (1 raz na 20-50 przeładowań skryptu co kilka-kilkanaście minut). Co może być przyczyną tego problemu?

  1.  
  2. //tak ustawiam sobie konfigurację sesji
  3. ini_set("session.gc_divisor",100);
  4. ini_set("session.gc_probability",1);
  5. ini_set("session.cookie_path","/");
  6. ini_set("session.cookie_lifetime",10800);
  7. ini_set("session.gc_maxlifetime",10800);
  8. ini_set("session.cookie_httponly",1);
  9. ini_set("session.use_only_cookies",1);
  10. ini_set('session.use_trans_sid',0);
  11.  
  12. if(!isset($_SESSION)){
  13. }
  14.  
  15. //generuje unikalny token, powinien byc niezmienny podczas całej sesji użytkownika
  16. if(!empty($_SESSION['token'])){
  17. $token=$_SESSION['token'];
  18. } else {
  19. $token="wartość losowa";
  20. }
  21.  
  22. //zapisuje token w sesji
  23. $_SESSION['token']=$token;
  24.  
  25. //dalej znajduje się pewien warunek który sprawdza, czy token w sesji jest niezmieniony od pierwszego uruchomienia skryptu
  26.  


Ten post edytował jwaldek 12.12.2012, 10:55:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jeremiash
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 5
Dołączył: 6.11.2012

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


przecież ma na początku (tak myślę) , tylko niech wywali
  1. if(!isset($_SESSION)){ }


Mortus, to nie kwastia nagłówków.

ini_set("session.cookie_lifetime",10800);
ini_set("session.gc_maxlifetime",10800);

no to dokładnie zobacz do czego są te inicjalizacje (IMG:style_emoticons/default/smile.gif)

Zawsze możesz zrobić to ręcznie, he he (IMG:style_emoticons/default/biggrin.gif)

  1. if(isset($_SESSION['Akcja'])){
  2. $AktualnyTime= time();
  3. if((int)$_SESSION['Akcja']+ 1440 < $AktualnyTime ){
  4. $numer=$_SESSION['numer'];
  5. // session_destroy();
  6. unlink( ini_get('session.save_path') . 'sess_' . $numer );
  7. $numer=null;
  8. header('Location: xxx');
  9. die();
  10. }else{
  11. $_SESSION['Akcja']= $AktualnyTime;
  12.  
  13. $AktualnyTime=null;
  14. }


tylko utwórz S_SESSION['Akcja'] przy tworzeniu sesji (IMG:style_emoticons/default/smile.gif)

Ten post edytował jeremiash 12.12.2012, 12:02:54
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 16:37