Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do autoryzacji użytkowników, prośba o opinię poprawności kodu "zaawansowanego programisty"
Jarod
post
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:

  1. <?php
  2. (..)
  3. (..)
  4. (..)
  5.  
  6. $session = new WidgetSession (array ('phptype' => "pgsql",
  7.  'hostspec' => "localhost",
  8.  'database' => "artykulandia",
  9.  'username' => "wuser",
  10.  'password' => "foobar"));
  11.  
  12. $session->Impress();
  13. (...)
  14.  
  15. if ($_REQUEST["action" == "login") {
  16.  $session->login($_REQUEST["login_name"].$_REQUEST["login_pass"]);
  17.  if ($session->isLoggedIn()) {
  18.  $smarty->assign_by_ref("user",$session->getUserObject());
  19.  $smarty_>display("main.tpl");
  20.  exit;
  21.  }
  22.  else {
  23.  $smarty->assign('error', "Nieudane logowanie...");
  24.  $smarty_>display("login.tpl");
  25.  exit;
  26.  }
  27. } else {
  28. if ($session->isLoggedIn() == true) {
  29.  $smarty->assign_by_ref("user",$session->getUserObject());
  30.  $smarty_>display("main.tpl");
  31.  exit;
  32. } 
  33. }
  34. ?>


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Turgon
post
Post #2





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


J4r0d: Muszę powiedzieć, że tłumacze są beznadziejni. Piszą takie bzdury. Źle tłumaczą etc. W orginalne podobno lepsza.
dr_bonzo: No tak wygodniej gotowce jednak niektórzy jak ja muszą swoje cuś napisać, ja tylko to piszę ze względu na to, że Zend nie jest gotowy.
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: 8.10.2025 - 20:25