Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Session Handler - powrót do domyślnego
Walian
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


Ustawiłem własny Handler do sesji - wszystko zapisuje się do bazy danych.
Niestety w pewnej sytuacji potrzebuję ustawić dane sesji do bazy danych, a potem powrócić do domyślnej obsługi i zapisać dane do pliku. Niestety nie wiem jak przywrócić domyślny Session Handler.
Czyli schemat działania:

1.) Zmiana Handlera na nowy.
2.) Zapis danych sesji (do bazy danych).
3.) Odczyt (weryfikacja).
4.) Zakończenie pracy.
5.) Powrót do domyślnej obsługi (domyślny Handler).
6.) Zapis danych sesji.
7.) Odczyt (weryfikacja).
4.) Automatyczne zakończenie pracy.

Do tej pory robiłem coś takiego:

  1. // Tutaj praca z sesją przy z nowym Handlerem (Baza danych).
  2. session_write_close(); // Myślałem, że to wystarczy by PHP powróciło do domyślnej obsługi
  3. // Tutaj praca z domyślnym Handlerem (Pliki).


ale wstawia dane do bazy danych zamiast do plików.

Czy mi się dobrze wydaje - ustawienie nowego Handlera działa na stałe - nie do zakoczenia sesji/skryptu?

Ten post edytował Walian 23.08.2009, 21:38:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Walian
post
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


Czyli Tobie chodzi o to, bym mojego handlera przerobił tak, by zapisywał/odczytywał dane zarówno z bazy danych jak i z plików, w zależności co wybiorę w danym momencie. Ale moim zdaniem to jest właśnie "wyjazd z armaty" (IMG:style_emoticons/default/tongue.gif) Bo wychodzi na to, że musiałbym przerobić nieco klasę w której mam handlera, ale to więcej roboty niż przywrócenie na chwilę domyślnego handlera (o ile to możliwe).

Tak poza tym to - sesje mi są potrzebne tylko do logowania, natomiast zapis do pliku tylko przy rejestracji konta - po to, by używając przycisku "< Popraw dane" (pisałem o tym tu) usera przeniosło spowrotem na formularz, który wypełniał i aby został on (formularz (IMG:style_emoticons/default/tongue.gif) ) wypełniony. Niestety jeśli również i te dane miałyby być zapisywane do bazy to pole z wartościami dodatkowymi (te, które są serializowane) musiałoby mieć jeszcze dłuższą wartość - a po cholerę?

Tak więc da się powrócić do domyślnego handlera czy nie?

## Dodane 24.08.2009 21:00:

Dobra pokombinowałem trochę, ale nic to nie dało. Napisałem sobie osobną klasę do obslugi sesji poprzez pliki (czy zmieniam handlera 2x - raz dla bazy, raz dla plików), ale nadal sesja plikowa się sypie jeśli "przed nią" użyję sesji bazodanowej - dublują się pliki, klasa (metodą destroy) próbuje usunąć nieistniejący plik, nie zapisują się dane czasami, nie odczytują nigdy itd.

robię to tak:

  1. /* Includowanie pliku, który z kolei includuje klasę-handlera (baza danych), i ustawia tę klasę.
  2.   Sesja automatycznie zostaje wystartowana poprzez plik includujący klasę-handlera, w sposób:
  3.   (fragment ilustrujący jak to wygląda):
  4.  
  5. session_set_save_handler // ustawianie
  6. session_name // sesja plikowa i bazodanowa mają inne nazwy
  7. session_start();
  8. session_regenerate_id(true);
  9.  
  10. */
  11. // "Zabawa" z sesją bazodanową.
  12. // session_write_close(); - to nie załatwia sprawy do końca :/
  13. /* Includowanie pliku, który z kolei includuje klasę-handlera (pliki), i ustawia tę klasę.
  14.   Sesja automatycznie zostaje wystartowana poprzez plik includujący klasę-handlera, w sposób:
  15.   (fragment ilustrujący jak to wygląda):
  16.  
  17. session_set_save_handler // ustawianie
  18. session_name // nazwa sesji plikowej
  19. session_start();
  20. session_regenerate_id(true);
  21.  
  22. */
  23. // "Zabawa" z sesją plikową.
  24.  
  25. // I tutaj sesja plikowa nie działa jak należy, natomiast jeśli wywalę wszystko co jest przed session_write_close(); włącznie to "gra gitara".


Nie wierzę, że nikt nie wie jak poradzić sobie z tym problemem...

Ten post edytował Walian 24.08.2009, 20:01:53
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 16:55