![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Parę trudnych (dla mnie
![]() 1) Można się jakoś dowiedzieć, czy sesja jest nowa (świeżo założona), prościej i lepiej niż coś mniej więcej takiego (fuj, co za potworek!):
2) Można jakoś skutecznie zniszczyć sesję? Nie usunąć wszystkie zmienne z sesji - session_unset(). Tylko rozwalić samą sesję. Znalazłem coś takiego:
Chociaż nie wiem, co tak naprawdę robi session_destroy(). Jeżeli nie usuwa pliku z sesją, to przy następnym żądaniu wystarczy podać SID w cookie lub w URLu i znowu mamy starą sesję (choć pewnie pustą). 3) Jak w sposób pewny i skuteczny wygenerować nowy SID dla istniejącej sesji. Co prawda jest funkcja session_regenerate_id(), która nawet wysyła nowe ciastko, ale... - co się dzieje ze starym plikiem sesji? bo zakładam że tworzony jest nowy - co się dzieje ze starym cookie? Znowu, oczekiwałbym, że bo wygenerowaniu nowego SIDa starej sesji w ogóle i nieodwracalnie nie ma. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 5.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
no jesli chodzi o usuwanie to wziete zywcem z php.net
Opis sesji -------------------- Pozdrawiam Bartosz
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
![]() Wbrew pozorom manual już dawno przeczytałem, tylko on w sumie nic nie daje. Co wg ciebie robi session_destroy() ? Co z tego że sesja już nie istnieje w tym skrypcie? Równie dobrze mogę sobie zrobić unset($_SESSION) i też nie ma już sesji. A jak ktoś ponownie wejdzie na stronę z tym samym cookie, to będzie to ta sama sesja, czy nie? To właśnie rozumiem przez zniszczenie sesji - jak nie ma, to nie ma i już. I jesteśmy znowu w punkcie wyjścia ![]() |
|
|
![]() ![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
Może to chamski sposób, ale możesz napisać własnego session handlera, i w ten sposób być pewnym tego co dzieje się z plikami tmp - no i wtedy możesz sprawdzać filemtime i inne fajne żeczy... AFAIK lepiej chyba zawsze pisać własnego handlera, jeśli w grę wchodzi bezpieczeństwo i stabilność sesji.
-------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 335 Pomógł: 0 Dołączył: 15.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat session_register(); // rejestrowanie session_unregister(); //wyrejestrowanie zmiennej session_is_registered() w warunku if sprawdzane zostaje czy zmiena jest zarejestrowana !session_is_registered() w warunku if sprawdzane zostaje czy zmiena nie jest zarejestrowana tu jest ładnie opisane : no to CHop Ten post edytował m5910 30.11.2004, 21:37:47 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli damy unset($SESSION .. to niszczymy dane zapisane na serwerze. Zrobiłem przed chwilą test i zauważyłem, że po akcji usunięcia sesjii plik nie jest usuwany, ale czyszczony. Czyli nic nie zawiera. Nawet jeżeli przez url wyślemy ponownie ten sam SID to i tak się nie zalogujemy bo musimy od nowa wprowadzić dane sesyjne, a robi to przecież nasz skrypt gdy wyślemy nasz login i hasło. Nie wiem co mają do tego cookie
![]() Acha, zauważyłem też, że jeżeli po wylogwaniu, a następnie ponownym zalogowaniu, zmienne sesyjne zapiszą się ponownie do pliku,w którym wcześniej były nasze dane. Ten post edytował sf 30.11.2004, 22:32:52 -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
@m5910: session_register() i tak nie powinno się używać z $_SESSION, a że $_SESSION jest zalecane, więc session_register() nie powinno się w ogóle używać. Podobnie reszta podanych funkcji.
@sf: no właśnie, plik zostaje. Trochę szkoda, bo przy następnym wejściu wszelkie znaki na niebie i ziemii będą wskazywać, że mamy do czynienia z kontynuacją sesji - bo mamy - chociaż tak naprawdę to chciałbym np. mieć już całkiem nową. Co do $_SESSION, to jest bardzo dziwny zwierz ![]() 1) przed session_start isset($_SESSION) == false 2) po session_start można zrobić unset($_SESSION) i... sesji nie ma, oczywiście, ale... 3) kawałek dalej można zrobić $_SESSION = array('foo'=>'bar') i sesja znowu jest, i... 4) co najśmieszniejsze, jak stworzę sobie nową zmienną o nazwie $_SESSION, to jest to znowu super-global, czyli - jak pisałem - sama nazwa jest magiczna. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.11.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Cytat(hawk @ 2004-11-29 20:57:29) Chociaż nie wiem, co tak naprawdę robi session_destroy(). Jeżeli nie usuwa pliku z sesją, to przy następnym żądaniu wystarczy podać SID w cookie lub w URLu i znowu mamy starą sesję (choć pewnie pustą). Poobserwuj jak sie zachowuja pliki w katalogu sessions przy wywolywaniu konkretnych funkcji. Ponizszy kod calkowicie usuwa plik sesji:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:58 |