![]() |
![]() |
![]()
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: |
|
|
![]() |
![]()
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 :?: |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 19:24 |