Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [weryfikacja] admin & user
FdEf
post 8.11.2006, 01:41:22
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 26.07.2006

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


Mam problem z weryfikacja uzytkownika, mianowicie robie system logowan po zalogowaniu kazdy uzytkownik tj. root user są przekierowani do dwóch róznych szablonów nie wiem ale nie chce mi to chodzić:
  1. <?php
  2. //Klasa błędu dla klasy User
  3. class AuthError extends Error {}
  4.  
  5. //Klasa User odpowiada za obsługę operacji zwišzanych
  6. //z użytkownikami aplikacji
  7. class User {
  8. //Identyfikator użytkownika 
  9. private $_Id;
  10. //Adres E-mail użytkownika
  11. private $_Email;
  12.  
  13. // Konstruktor klasy
  14. public function __construct($userdata = NULL){
  15. foreach ($userdata as $key => $value) { 
  16. switch (strtolower($key)) {
  17. case 'usr_id':
  18. $this->setId($value);
  19. break;
  20. case 'uinfo_email':
  21. $this->setEmail($value);
  22. break;
  23. }
  24. }
  25. }
  26.  
  27. // Metody ustawiajšce wartoœci właœciwoœci klasy
  28. public function setId($id){$this->_Id = $id; }
  29. public function setEmail($email){$this->_Email = $email;}
  30.  
  31. // Metody zwracajšce wartoœci właœciwoœci klasy
  32. public function getId() {return $this->_Id;}
  33. public function getEmail() {return $this->_Email;}
  34.  
  35. // Metoda autoryzujšca użytkownika
  36. public static function authorize_user ($userLogin, $userPassword) {
  37. // SprawdŸ, czy istnieje konto użytkownika
  38. $sqlquery = 'SELECT * FROM Users WHERE Users.USER = "'.htmlspecialchars($userLogin).'"';
  39. $result = DBManager::Query($sqlquery);
  40. // Pobranie wyników zapytania
  41.  if ($user = &$result->fetchRow(DB_FETCHMODE_ASSOC)) {
  42. if ($user['PASSWORD'] == md5($userPassword)) return new User($user);
  43. if ($user['ID'] == 1) echo'user';
  44.  //{$insertGoTo="templates/root/root.template.php";  
  45.  //echo "<script language="JavaScript">";
  46. // echo "window.location = '$insertGoTo' ";
  47. // echo "</script>";}
  48.  if ($user['ID'] == 2) echo'admin';
  49.  
  50. }
  51.  
  52.  
  53.  
  54.  
  55. //Błšd autoryzacji
  56. throw new AuthError('Błšd autoryzacji - Użytkownik lub/i hasło niepoprawne!');
  57. }
  58. }
  59. ?>
Go to the top of the page
+Quote Post
nospor
post 8.11.2006, 08:36:36
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A gdzie tu masz przekierowanie? Pomine juz fakt, ze ten kod:
  1. <?php
  2. if ($user['PASSWORD'] == md5($userPassword)) return new User($user);
  3. if ($user['ID'] == 1) echo'user';
  4.  if ($user['ID'] == 2) echo'admin';
  5. ?>

Przy poprawnej weryfikacji usera nigdy nie dojdzie do tych echo user i admin, bo masz return, ktory konczy wykonywanie funkcji. No, ale moze to efekt zamierzony smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
marast78
post 8.11.2006, 14:33:11
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 30.11.2004

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


według mnie najlepiej zastosować wzorzec fabrykę poza tym zastosować strukturę taką

abstract class Person{}

class User extends Person{}
class Admin extends Person{}


I użycie wyjątka w twoim kodzie jest niewłaściwie...inaczej mówiąc nadmiarowe, przy tak błachym błędzie stosuj klasyczne if-else

Poza tym lepiej od razu w zapytaniu sql sprawdzić hasło i login(ustaw go na unique, bo co się staie, gdy będzie dwóch użytkoników o takich samych loginach i hasłach?, chyba, że przy zakładaniu konta już tego pilnujesz), poza tym w konstruktorze używasz switcha, kontruktor raczej używa się do inicjalizacji zmiennych, metod, obiektów naprzykład przy kompozycji, a nie używasz właściwie jako metody klasycznej

to takie moje uwagi, poprostu chce ci pomóc a nie krytykować, sam często tu się radzę i dobrych rad słucham winksmiley.jpg

Ten post edytował marast78 8.11.2006, 14:36:10


--------------------
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 17:12