Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 30.10.2010 Ostrzeżenie: (0%)
|
Witam, czemu po czasie który wyznaczyłem nie usuwaja mi sie rekordy sesji z session handlera?
Nawet gdy oznacze sess_duration na 2 sekundy to mi sie nie usuwa.? NIe za bardzo rozumiem czemu to nie działa ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
$old = (time() - $this->sess_duration);
Tutaj to ma się nijak do $sess_maxlifetime. Dlatego? Jeżeli to nie pomoże: Sprawdź też wynik zapytania. Zdumpuj zapytanie, co zwraca string, spróbuj wykonać go np. w phpMyAdmin. Przelicz timestampy. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 30.10.2010 Ostrzeżenie: (0%)
|
A kiedy odpala ta metoda za kazdym razem gdy wywolujemy klase new Session ? w kontruktorze klasy mam:
session_set_save_handler |
|
|
|
Post
#4
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Kolega sobie chyba kpiny urządza.
Manual: session_set_save_handler Parametr $gc typu callback. Nawet przykład jak tego użyć jest na tacy. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 3 Dołączył: 30.10.2010 Ostrzeżenie: (0%)
|
Może jestem głupi ale tego przykładu naprawde nie potrafie znaleźć
|
|
|
|
Post
#6
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Kolego, przekleję Ci:
Funkcja gc() jest w session_set_save_handler jako ostatni argument. Pamiętaj, że jest to typ callback, czyli w Twoim przypadku będzie to nie string, a array($instancja_obiektu_sesji, "gc") |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%)
|
Nie chcę zakładać nowego tematu.Chciałbym się dowiedzieć czym, się różni Session handler od zwykłej SESSION ,druga rzecz jaki jest czas życia takiej sesji-czy również,trwa do zamknięcia przeglądarki???Czytałem na temat tej sesji:
Cytat Procedura obsługi "zapisz" nie będzie wywołana dopóki strumień wyjściowy jest otwarty. W związku z tym, wyjście instrukcji debugowania zawartych w procedurze "zapisz" nigdy nie będzie widoczne w oknie przeglądarki. Jeśli konieczne jest wyjście debugowania, sugerowane jest zapisanie tego wyjścia do pliku. O jaki strumień tutaj chodzi???Zaproponowano mi użycie Session handler jako zabezpieczenia typu:jeden użytkownik na jednym koncie-nie chciałbym aby ,w tym samym czasie użytkowało więcej niż jedna osoba.
|
|
|
|
Post
#8
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Session handler służy do napisania własnych mechanizmów przetrzymywania sesji. W takim mechaniźmie możesz właśnie uwzględnić swoje warunki początkowe, które napisałeś.
Session handler NICZYM nie różni się od "zwykłej" SESSION, gdyż jest to tylko mechanizm składowania sesji. Domyślny, zaproponowany przez PHP to składownaie plików w odpowiewniej lokalizacji. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%)
|
Dziękuję ,myśle że warto będzie się szerzej zainteresować tą funkcją.Chciałbym się także dowiedzieć ,co to za strumień o który ,piszą w manualu.Jaka jest szansa przechwycenia takiej sesji?(IMG:style_emoticons/default/questionmark.gif) ?Używam sesji do podtrzymywania loginu na innych ,podstronach,czy ma sens zabezpieczać sesje przed przechwyceniem inną sesją(IMG:style_emoticons/default/questionmark.gif) ?
|
|
|
|
Post
#10
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Szansa przechwycenia jest identyczna, jak w przypadku normalnego rozwiązania. Pamiętaj, że session_handler to tylko system składowania danych sesji, a nie system całej sesji. Otrzymuje on standardowe dane na temat utworzenia, próby zapisu etc.
Strumień natomiast, to nic innego, jak output. save() wykonuje się po tym, jak pehap wyśle do przeglądarki dane. On nie działa w momencie $_SESSION['klucz'] = 'wartosc'; tylko w momencie, kiedy całość się wykona, wypluje do przeglądarki, a przed tym, jak obiekty otrzymują call na destruktory __destruct(), zmienne są niszczone, etc, etc. Chodzi o to, że jak dasz sobie var_dump() na tablicę sesji w save(), nie zostanie ona wyświetlona, bo nie ma gdzie - output już wyslano, jest zamknięty ; ) Zauważ, że jak w dowolnym momencie skryptu dasz sobie echo, var_dump i inne, od razu otrzymasz wynik (przy nie manipulowaniu buforem). Znaczy to, że strumień jest otwarty. |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%)
|
Dziękuję za szczegółowe wyjaśnienie,z tego co Pan napisał wnioskuję ,że nie ma sensu zabezpieczać sesje poprzez Session handler jak niektórzy mi doradzali.
|
|
|
|
Post
#12
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Odnośnie zabezpieczania sesji:
http://phpsec.org/projects/guide/4.html |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%)
|
Jest Pan "wielki".Właśnie takiego czegoś szukałem:)Dziękuje bardzo ale to bardzo (IMG:style_emoticons/default/snitch.gif)
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 22:00 |