Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] klasa logowania
Forum PHP.pl > Forum > PHP
slimboj
Witam,
Właśnie piszę klasę odpowiadającą za logowanie. Staram się to zrobić zgodnie z modelem MVC.
Model pobiera informacje z bazy i zwraca 0 jeśli się nie udało pobrać danych i 1 jeśli się udało. Wygląda to mniej więcej tak:
  1. <?
  2.  
  3. class MdlLogin
  4. {
  5. public function login($tb_prefix, $db_logon)
  6. {
  7.  $select = mysql_query("SELECT * FROM ".$tb_prefix."users WHERE user_login = ".$_POST['login']." AND user_password = ".md5($_POST['password'])."");
  8.  if(!$do_select = mysql_fetch_array($select))
  9.  {
  10.   $db_logon = 0;
  11.  }
  12.  else
  13.  {
  14.   $db_logon = 1;
  15.   $_SESSION['user'] = $do_select['user_login'];  
  16.  }
  17. }
  18. }
  19.  
  20. ?>

I teraz moje pytanie, a właściwie kilka.

1. Czy przekazywanie wyniku zapytania przez parametr $db_logon jest poprawne, a jeśli nie to jak inaczej to zrobić?
2. Czy sprawdzenie wyniku funkcji login zrobić w kontrolerze czy w modelu?
3. Czy funkcja session_destroy() w przypadku niepowodzenia i przypisanie wartoście do $_SESSION['user'] mają być wywoływane w modelu czy w widoku?

Pozdrawiam,
Max
Leliw
Cytat(slimboj @ 13.05.2009, 13:28:09 ) *
1. Czy przekazywanie wyniku zapytania przez parametr $db_logon jest poprawne, a jeśli nie to jak inaczej to zrobić?
2. Czy sprawdzenie wyniku funkcji login zrobić w kontrolerze czy w modelu?
3. Czy funkcja session_destroy() w przypadku niepowodzenia i przypisanie wartoście do $_SESSION['user'] mają być wywoływane w modelu czy w widoku?


IMHO
1. Chyba raczej nie za działa, w definicji metody parametr zwracany powinien być poprzedzony znakiem & (public function login($tb_prefix, &$db_logon)). Możesz tak, ale chyba lepiej zwrócić rezultat przez return i zdecydowanie lepiej użyć wartości true i false.
2. Zależy po co sprawdzasz. Jeśli po to, aby wyświetlić komunikat "logowanie nieudane" - w kontrolerze, jeśli np. zalogowani użytkownicy mają dostęp większej ilości danych - w modelu, tam gdzie dane są udostępniane widokom.
3. Najlepiej tam gdzie używasz session_start().
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.