Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> (nie)śmiertelne sesje
dragossani
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 398
Pomógł: 0
Dołączył: --
Skąd: Poznań

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


Mam przeczucie, że zostanę zlinczowany za tego post'a bo temat SESJE został już na forum przewałkowany wiele razy ale sytuacja zmusza mnie do podniesienia go ponownie. :?

Jest tak: albo ja nie umiem czytać manuala, albo pies jest pogrzebany gdzie indziej. (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif)

To jest kod otwierający sesję po podaniu prawidłowego hasła i loginu:
Kod
session_name("SID");

session_start();

$sid=session_id();

$query ="INSERT INTO rejestr_logowan (session_key, active_session, login, ip, czas_zalog, ) VALUES ('$sid','1','$login',$REMOTE_ADDR',now())";

$result = mysql_query($add) or die("nie został wygenerowany nowy unikatowy numer sesji więc baza staje okoniem");

Zapytanko do MySQL ma mi dodać rekord do bazy przy każdym logowaniu. Dodam, że pole session_key w tabeli rejestr_logowan jest indeksowane jako unique więc nie ma mowy o dopisaniu rekordu jeśli identyfikator sesji nie jest nowy.

A traz mamy kod zamykający sesję przy wylogowywaniu:
Kod
session_name("SID");

session_start();

$sid=session_id();

$query="UPDATE rejestr_logowan SET active_session='0',czas_wylog=now() WHERE session_key='$sid'";

$result=mysql_query ($query) or die (mysql_error());

session_destroy();

setcookie("SID");

Rozumiem, że ta ostatnia linijka jest konieczna gdyż jak mówi manual ciacho nie jest usuwane po wydaniu komendy session_destroy();, a mi zależy na definitywnym, natychmiastowym usunięciu sesji nawet bez zamykania okna przeglądarki.

I teraz powstaje problem: to po prostu nie działa. (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Sesja się tworzy, ale jak się chce ją potem zamknąć to chyba niezbyt się udaje bo przy ponownym logowaniu MySql się burzy - bo nie dostaje unikatowego identyfikatora sesji. Nie pomaga zamknięcie okna przeglądarki. A co najciekawsze (tu już jestem w ciężkim szoku) nie pomaga nawet ręczne wykasowanie na serwerze pliku w którym przechowywane są dane sesji. :!: (Mandrake 8.2 i php 4.1.2) Pomaga dopiero przestartowanie komputera użytkownika.
Nie będę nawet wspominał, że sesja nie znika gdy użytkownik zamknie okno przeglądarki bez wylogowania - to oczywiste. Nie wspomnę, że zamknięcie okienka potomnego przeglądarki wywołanego za pomocą JavaScript nie usuwa ciacha z pamięci bo jest otwarte okno pierwotne - IE ma gdzieś to, że cookie powstało w oknie potomnym i jak się je zamyka to cookie powinno zniknąć (z tego co wiem to błąd IE). To wszystko jeszcze bym jakoś zdzierżył. Ale dlaczego nie daje się najnormalniej w świecie zniszczyć sesji - tego nie wiem.

Za wszelkie uwagi i wyrozumiałość z góry dziękuję.

A tak BTW - jest na forum mój post pod tytułem bodajże SSL, PDFLib a sprawa POST-a albo coś w ten deseń i na rozwiązanie problemu który jest w nim postawiony jakoś od dłuższego czasu nie ma odważnych... :wink:
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dragossani
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 398
Pomógł: 0
Dołączył: --
Skąd: Poznań

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


Sorki. Z niewiadomych przyczyn, po dwóch dniach walki, ni z tego ni z owego sesja zaczęła się prawidłowo usuwać. :oops:

Ale pozostaje aktualny problem o którym wspomniałem w wyżej. Cookie sesyjne nie usuwa się z pamięci przeglądarki (IE6) jeśli sesja została zainicjowana w nowym, wywołanym JavaScriptem okienku. Zamknięcie go nic nie daje. Dopiero zamknięcie głównego okna usuwa cookie. Ma ktoś jakąś metodę na to :?:
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: 18.09.2025 - 19:24