Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> (nie)śmiertelne sesje
dragossani
post 21.06.2002, 15:20:14
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. 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. 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:


--------------------
cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 07:51