Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak skutecznie zakonczyc sesje...
Forum PHP.pl > Forum > PHP
backinblack
napisalem klase do obslugi sesji, korzystam z niej w przypadku logowania userow. skrypt moj wyraza koniecznosc winksmiley.jpg niszczenia sesji pod obecnym sid i tworzenia nowej, ale... no wlasnie. sesja o nowym sid jest tworzona na jedno odswiezenie strony... jak skutecznie zakonczyc sesje tak aby nastepna wznowila sie z innym sid?!

ponizej moj kod, moze pomoze w wyjasnieniu mi tego tematu:
  1. <?php
  2. // Klasa do obslugi sesji
  3. class cSession {
  4. var $sid;
  5. var $name;
  6. var $params;
  7.  
  8. function cSession($name='') {
  9. session_name($name);
  10.  
  11. $this->name=$name;
  12.  
  13. foreach($_SESSION as $key => $value)
  14. {
  15. $this->params[$key]=$value;
  16. }
  17.  
  18. $this->sid=session_id();
  19. }
  20.  
  21. function GetParam($key) {
  22. if(isset($this->params[$key]))
  23. return $this->params[$key];
  24. else
  25. return NULL;
  26. }
  27.  
  28. function SetParam($key, $value) {
  29. $this->params[$key]=$value;
  30. $_SESSION[$key]=$value;
  31. }
  32.  
  33. function ClearParam($key)
  34. {
  35. unset($this->params[$key]);
  36. unset($_SESSION[$key]);
  37. }
  38.  
  39. function Close() {
  40. }
  41.  
  42. function Kill() {
  43. $this->params=array();
  44. $_SESSION=array();
  45. }
  46.  
  47. }
  48. ?>


kazda pod strona wywoluje konstruktor, a przed skonczeniem wykonywania skryptu wywolywana jest funkcja close. w miedzyczasie jesli flaga wskazuje na wylogowanie wywolywany jest kill... dlaczego to nie dziala tak jak chce?!:D
Alkagar
http://php.net.pl/manual/en/function.session-destroy.php

Zobacz tam, najbardziej w tych komentarzach pod tekstem, sa tam sposoby pełnego niszczenia sesji.

P.S. Nie wiem czy session_regenerate nie musi miec aktywnej sesji żeby działac
Athlan
przed zniszczeniem sesji można wyczyścić jej tablicę (a nuż się nie uda jej zniszczyć tongue.gif)

  1. <?php
  2. $_SESSION = array();
  3. ?>


--EDIT--

są jakieś przypadki kiedy nie zadziała session_destroy()?
backinblack
no wlasnie mam wrazenie ze nie dziala snitch.gif... hmmm... ktos cos jeszcze poradzi??biggrin.gif
Alkagar
A próbowałeś dać :
  1. <?php
  2. unset($_SESSION);
  3. ?>

questionmark.gif

Może potem(po session_destroy() ) spróbuj wyświetlić zmienną z sesji i zobaczysz czy będziesz jakaś wartość w niej, wtedy będziemy mieli pewność że to problem w sesji.

P.S.

zreszta wydaje mi sie że problem leży w tej cześci kodu:
  1. <?php
  2. ?>


spróbuj dać tak (od razu mówie że nie wiem czy pomoże ale można spróbować :-P)

  1. <?php
  2. ?>


Wydaje mi sie że nie możesz dać regenerate_id jeżeli już nie masz sesji bo ją linie wyżej niszczysz. W tym według mnie tkwi problem.
backinblack
zadna z podanych w linku porad nic nie daje ;/...
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.