Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Niszczenie sessji
borpaw
post 25.07.2010, 12:29:06
Post #1





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


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

Ten post edytował borpaw 25.07.2010, 12:29:40
Go to the top of the page
+Quote Post
glh
post 25.07.2010, 12:59:56
Post #2





Grupa: Zarejestrowani
Postów: 97
Pomógł: 20
Dołączył: 18.12.2007
Skąd: Poznań

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


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.


--------------------
Go to the top of the page
+Quote Post
borpaw
post 25.07.2010, 13:02:19
Post #3





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


Po zniszczeniu funcją session_destroy() id_session(); się nie zmienia mam cały czas to samo id
Go to the top of the page
+Quote Post
glh
post 25.07.2010, 13:18:33
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 20
Dołączył: 18.12.2007
Skąd: Poznań

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


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()<
?


--------------------
Go to the top of the page
+Quote Post
borpaw
post 25.07.2010, 13:31:24
Post #5





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


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
Go to the top of the page
+Quote Post
glh
post 25.07.2010, 13:44:27
Post #6





Grupa: Zarejestrowani
Postów: 97
Pomógł: 20
Dołączył: 18.12.2007
Skąd: Poznań

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


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.


--------------------
Go to the top of the page
+Quote Post
zelu
post 25.07.2010, 13:49:21
Post #7





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


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

Ten post edytował zelu 25.07.2010, 13:49:55
Go to the top of the page
+Quote Post
borpaw
post 25.07.2010, 14:00:21
Post #8





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


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
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 Wersja Lo-Fi Aktualny czas: 7.07.2025 - 21:22