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%)
-----


Cytat
(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) dwa dni waklczyles a drugi post wyslales 26min po pierwszym (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)  
dobry jestes  :wink:


Dwa dni walczyłem aż w końcu wysłałem pierwszego post'a. Potem zadziałało i wysłałem drugiego. Zwykle nie wypisuje nic na forum zanim sam z tym trochę nie powalcze. :wink:

Cytat
a i daj linki do tych nierozwiazanych postow :wink:

Proszę bardzo: http://forum.php.pl/viewtopic.php?t=433

Nie wiem czy jest to takie logiczne, że dane z jednego okna same przenoszą się do innego. :? Według mnie tam gdzie wywołujesz sesję tam też powinieneś móc ją zamknąć. Mogli co najwyżej dodać komendę choćby JavaScript'ową która przenosi ciastko sesyjne do okna macierzystego. Takie rozwiązanie jak bierzące jest mało elastyczne. A jeśli ktoś chce wyrzucić 2 okna i w każdym z nich inną sesję - a potem pozamykać te sesje (i okna) i wrócić do głównego? Nie do zrobienia. Wiem, że może to zbyt wielkie wymagania, ale nie mogę się doczekać czasów gdy przeglądarka będzie tak elastyczna jak środowisko systemu operacyjnego. Ale dzięki za info.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
3 Użytkowników czyta ten temat (3 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 10:19