Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [weryfikacja] admin & user
Forum PHP.pl > Forum > PHP
FdEf
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. ?>
nospor
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
marast78
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
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.