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 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.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 00:57