![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Moje pytanie skierowane jest głównie do osób, które czytały książkę "PHP5 zaawansowane programowanie",
ponieważ problem dotyczy przykładu tam przedstawionego. W rozdziale 15 autor przedstawił klasę do obsługi własnych sesji a w rozdziale 22 wdraża ją do użytku. Na stronie 457 przedstawiony jest sposób logowania, który moim zdaniem jest całkowicie bez sensu. Przytoczę tutaj główny kod:
Mniej więcej tak to wygląda. Nie będę podawał kodu klasy bo za dużo pisania. Zresztą nie chodzi mi o sposób napisania klasy. Wywoływany jest skrypt index.php, który sprawdza czy przesłano parametr action=login. Jeżeli tak to znaczy, że dokonano próby logowania (wypełniono formularz i go wysłano), metoda sprawdza dane w bazie - jeżeli się zgadzają ustawia właściwość prywatną klasy logged_in na true. Następnie metoda isLoggedIn() sprawdza czy wartość właściwości logged_in ma wartość true - jeśli tak uznaje, że użytkownik się zalogował i ma dostęp do super tajnych danych (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wszyscy wiemy, że protokół HTTP jest bezstanowy. Więc możemy sobie w jednym skrypcie utworzyć 100 obiektów, ale jak przejdziemy do drugiego skrytpu (czyli zacznie być wykonywany inny skrypt) to te nasze 100 obiektów poszło się jeb**. Wiecie do czego zmierzam? Do tego, że stosując metodę autora po oddaniu sterownia do drugiego skryptu będziemy musieli utworzyć od nowa obiekt, który będzie miał właściwość logged_in=false (bezstanowość protokołu - zgubiliśmy dane, że użytkownik jest zalogowany) co wymusza przekierowanie na stronę logowania.. Nie odpalałem całego kodu bo nie chce mi się klepać z książki.. Ale uważam, że jeśli dodamy sprawdzanie w każdym skrypcie czy użytkownik jest zalogowany to ten sposób nie zadziała. A trzeba sprawdzać czy użytkownik jest zalogowany, że sprytny user zamiast wpisać www.testowa.pl nie wpisał www.testowa.pl/tajnedane.php i w ten sposób pominął ekran logowania. Co o tym myślicie? Bo ja czasem czytająć tą książke miałem wrażenie, że autorzy nie wiedzą co piszą albo piszą kod od niechcenia. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Otóż tutaj klasa pobiera native_session_id z bazy jako id porządkowe normalne, a nie id sesji. Po za tym ta klasa to już po prostu UserSession.
Nigdy tej klasy nie używałem, tylko na jej podstawie zbudowałem to co chciałem tzn. SessionHandler dla mojego Frameworka... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 16:23 |