![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chcialbym abyscie podpowiedzieli mi czy ma cos takiego sens i sie oplaca robic, mianowicie:
Poniewaz i tak bede pisal klase user ktrora bedzie trzymac dane i zarzadzac userem pomyslalem sobie ze "moze" fajnie bedzie trzymac w sesji caly ten obiekt zamiast zwyklego np $_SESSION['id_user']. Czy to jest dobry pomysl? Bo w sumie pozniej napisze sobie tylko metody jak getIdUser ktore beda zwracac mi dane tak samo sesje chcialbym tworzyc przez setIdUser (te nazwy funckje teraz tak wymyslam tylko ) pozniej tylko caly obiekt wlozylbym do sesji oczywiscie wczesniej stworzyl bym przeznacza na to przestrzen dla sesji np $_SESSION['session'] = new User(); |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 13 Dołączył: 15.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
i na co Tobie cały obiekt w sesji?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Pomysł jest dobry, tylko musisz się zastanowić nad synchronizacją danych z obiektu User z tymi z bazy danych. Np. gdy administrator zmieni użytkownikowi login, albo wstawi mu bana, to ma to mieć wpływ na użytkownika zaraz po odświeżeniu przez niego strony, a nie dopiero po ponownym zalogowaniu się.
Jeśli zrobisz to dobrze, to masz bardzie obiektowe podejście do pisania w PHP + jedno zapytanie mniej podczas wyświetlania strony. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Np. gdy administrator zmieni użytkownikowi login, albo wstawi mu bana, to ma to mieć wpływ na użytkownika zaraz po odświeżeniu przez niego strony, a nie dopiero po ponownym zalogowaniu się. No wlasnie tez nad tym myslalem i jeszcze nie wiem jak to zrobic (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wstaw sobie do tabelki z użytkownikami dodatkową kolumnę, w której będziesz przechowywał ich ostatnie ID sesji. Dodatkowo potrzebujesz sposobu na odczytanie danych sesyjnych na podstawie tego ID. Sposoby są dwa:
1. Własny "session save_handler" i zapisywanie danych sesji w bazie (lub innym łatwo dostępnym miejscu) + odczyt zserializowanych danych sesyjnych użytkownika + unserialize/serialize 2. I moim zdaniem bardziej hardkorowe: Tymczasowa zmiana sesji administratora na sesję użytkownika, modyfikacja zmiennych, powrót do sesji administratora (session_id, session_write_close i inne) I teraz administrator, gdy chce zbanować użytkownika to: - zapisuje w bazie danych w tabeli z użytkownikami, że jest zbanowany oraz: - odczytuje sessionID użytkownika - uzyskuje dostęp do jego sesji - usuwa informację o "zalogowaniu użytkownika" z sesji Zalogowany zbanowany użytkownik, gdy odświeży stronę nie będzie już zalogowany (bo admin usunął ta informację z jego sesji), a po próbie zalogowania się na stronie dostanie info, że dostał bana. Oczywiście jest to trochę ciężkie do napisania. O wiele prościej przy każdym wyświetleniu strony robić
i na tej podstawie sprawdzać, czy jest zbanowany itp., ale wtedy nie potrzebujesz obiektu klasy User trzymać w sesji - wystarczy samo ID użytkownika. Ten post edytował Noidea 6.09.2010, 12:48:11 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 34 Dołączył: 22.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
nie napisalem w poscie ale wlasnie mam juz handlera napisanego.
Twoj opisany sposob jest dobry tyle mozna to zrobic na normalnej tablicy sesyjnej bylo by dobrze gdyby mozna bylo zrobic tak
ale to kompletna glupota raczej (IMG:style_emoticons/default/biggrin.gif) Ten post edytował wiiir 6.09.2010, 13:01:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 11:29 |