Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Niszczenie sessji
Forum PHP.pl > Forum > Przedszkole
borpaw
Witam

Czy w każdym pliku php danego projektu trzeba otwierać sesje?

Jak niszcze istniejącą sesje to mam taki komunikat, co jest powodem?

  1.  
  2.  
  3. $_SESSION = array();
  4.  
  5. if(isset($_COOKIE[session_name()])){ unset($_COOKIE[session_name()]); };
  6.  
  7. if(!session_destroy())throw new Exception("Nie powiodło się niszczenie sesji");
  8.  


Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in C:\usr\www\register_user\add.php on line 166
glh
Jeżeli chcesz mieć dostęp do danych sesji to tak.
Funkcja session_start() rozpoczyna sesję lub odtwarza jej stan.
Pierwsze wywołanie rozpoczyna sesję, a pozostałe odtwarzają jej stan.
borpaw
Po zniszczeniu funcją session_destroy() id_session(); się nie zmienia mam cały czas to samo id
glh
Odpal sobie to:
  1. echo "id sesji : ".session_id()."<br/>";
  2. echo "id sesji po session_destroy(): ".session_id()." (typ danych-<b>".gettype(session_id)."</b>)";


Za manualem:
session_id() zwraca identyfikator bieżącej sesji lub pusty ciąg ("") jeśli nie ma bieżącej sesji (nie istnieje bieżący identyfikator sesji).

Jeżeli masz session_id() po wywołaniu session_destroy() znaczy, że nie zniszczyło sesji.
Komunikat na polski brzmi mniej więcej tak:
Ostrzeżenie: ble ble, Próba zniszczenia niezainicjowanej sesji w..., linia ...

A tak na marginesie - co chciałeś osiągnąć pisząc
  1. $_SESSION = array()<
?
borpaw
id sesji : 83bace6f65eb16015b939812cbe669a1
id sesji po session_destroy(): (typ danych-string)

Taki jest wynik, czyli niby ok ale za każdym razem dostaje po wystartowaniu sesji ten sam ID
wyłaczam przeglądarke nic nie dało, zrestartowałem serwer też to samo
glh
To może masz ciasteczko z długą ważnością.
Wyczyść ciasteczka i poszukaj w katalogu, w którym masz zainstalowany serwer www, katalogu tmp, po czym skasuj jego zawartość.
Może pomoże.
zelu
Problem jest w tej linii:

  1. if(isset($_COOKIE[session_name()])){ unset($_COOKIE[session_name()]); };


Najpierw usuwasz z ciacha id sesji (dzięki któremu sesja wie ze to wlasnie id nalezy do Ciebie), a później chcesz się do tej sesji odnieść (poprzez session_destroy()). Skąd wtedy sesja ma wiedzieć, którą usunąć, skoro nie ma o tym informacji w ciachu (bo je wcześniej usunąłeś)? smile.gif
borpaw
Zrobiłem tak

  1. if(!session_destroy())throw new Exception("Nie powiodło się niszczenie sesji");
  2.  
  3. if(isset($_COOKIE[session_name()])){ unset($_COOKIE[session_name()]); };


Nic sie nie zmienia

Zrobiłem też tak:

  1.  
  2. if(!session_destroy())throw new Exception("Nie powiodło się niszczenie sesji");
  3.  
  4. if( isset($_COOKIE[session_name()])) {
  5. setcookie(session_name(), '', time()-42000, '/');
  6. };


Chyba wszystkie kombinacje, co mi sie udało na internecie znaleźć i nic
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.