Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%)
|
Witam,
W PHP5 zaawansowane programowanie autorzy przedstawili mechanizm obslugi sesji, ktory trzymal zmienne w osobnej tabeli. Dzieki tezmu wydajnosc miala nieco wzrosnac. Takie rozwiazanie jednak ma pewna wade - zmienne pobierane za z sesji poprzez metody __get i __set, nie zaś $_SESSION['zmienna']; W chwili obecnie przysparza mi to więcej problemów niż mogłem to sobie wyobrazić. Jak Wy organizujecie session handlera? Jest sens dzielenia sesji na zmienne i info o sesji? Pozdrawiam, Adrian. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%)
|
@Prph:
1) Sesja, tak jak pisze Ociu, powinna być jednak oddzielona od uwierzytelniania. Bo jedno i drugie ma mało wspólnego. Można mieć przecież otwartą sesję nie będąc uwierzytelnionym (zalogowanym). Łącząc to bardzo się ograniczasz: - tworzysz obiekt User, mimo że klasa sesji nie ma co z tym obiektem zrobić i w efekcie zwraca puste nie-wiadomo-co - nie możesz wybierać źródła danych o użytkownikach (DB, pliki passwd, SMB i inne, LDAP, ...) - nie możesz rozbudować uwierzytelniania chociażby o przypisanie użytkownika do grup, bo wszystko jest hard-coded w klasie sesji 2) Bug: wcale nie jest powiedziane, że session_name() == 'PHPSESSID', a twój kod to zakłada. Poza tym, nie jest powiedziane, że sesje przekazywane są przez cookies, chociaż to akurat założenie ma chyba wiele kilka zalet. 3) Sprawdzanie poprawności sesji (tutaj: user agent) nie powinno odbywać się w klasie sesji. Takie rozwiązanie powoduje, że: - nie można tej funkcjonalności wyłączyć, gdy nie jest potrzebna - nie można jej rozszerzyć, gdy nie jest wystarczająca A przecież można zaprojektować to obiektowo, i dodawać do obiektu sesji obiekty "walidatorów", które sprawdzałyby poprawność i ew. zapisywały sobie user agent, referrer, IP lub inne dane potrzebne później do walidacji. Prosto, łatwo, obiektowo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . 4) Bardzo mi się za to podoba usuwanie niepotrzebnego cookie oraz przede wszystkim wywalanie sesji, gdy w cookie przyszedł session id nie istniejący w bazie. Domyślnie php (na plikach) tworzy wtedy nową sesję z podanym ID i dziura w bezpieczeństwie gotowa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) 5) Nie podoba mi się natomiast wywoływanie metody _checkForActiveSession() z konstruktora. To zdecydowanie za wcześnie. Po pierwsze, nie wiadomo, czy sesja na pewno będzie na tej stronie potrzebna (może obiekt był utworzony na zapas, a session_start() nigdy nie będzie wywołane?). Po drugie, nie wiadomo, jaka będzie nazwa sesji. Weźmy taki kod:
Powyższy kod zakończy się pewnie katastrofą. 6) W metodzie _readSession, po stworzeniu nowej sesji nie ma sensu odczytywać jej z bazy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Prph Session handler 22.03.2006, 11:08:03
aleksander poszukaj na tym forum o phiendzie2, sciagnij kod (... 22.03.2006, 15:22:32
splatch Mi się podoba idea scope'ów. Polega ona na tym... 22.03.2006, 18:11:40
Prph Jasne, mow mi wiecej 22.03.2006, 21:14:12
matid Cytat(Prph @ 2006-03-22 21:14:12)Jasne, mow m... 23.03.2006, 17:28:35
Prph Doskonale Cię rozumiem, ale ja ostatnio non stop s... 25.03.2006, 10:20:40
Ociu Ja podzieliłem sesje na: User Sessions, czyli sesj... 25.03.2006, 10:41:00
Prph A dlaczego?
Takie rozwiązanie jest wygodne. Jeżeli... 25.03.2006, 11:11:11
Vomit Po co pisac wlasna obsluge sesji? te wbudowane w p... 25.03.2006, 14:33:53
Prph Cytat(Vomit @ 2006-03-25 13:33:53)Po co pisac... 25.03.2006, 14:51:08
sf A mi sie wydaje, ze trzymanie sesji w bazie jest p... 25.03.2006, 14:57:40
Prph No zgodze sie
Ale wlasna obsluga sesji wydaje sie... 25.03.2006, 15:12:05
Prph No i to są bardzo dobre wskazówki - Hawk - dziękuj... 26.03.2006, 11:25:19
hawk @Prph: Teraz sprawa się komplikuje, bo dochodzi je... 28.03.2006, 15:08:13
Prph Widze, ze Hawk chcialbys napisac narzedzie idealne... 30.03.2006, 19:02:20 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 20:12 |