Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy return false moze dzialac w metodzie __set ?
marekc12
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 1.08.2008

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


  1.  
  2. class Uzytkownik
  3. {
  4. public $dane = array();
  5.  
  6. function __set($parametr, $wartosc)
  7. {
  8. switch ($parametr)
  9. {
  10. case 'id':
  11. if(!sprawdzCzyliczbaNaturalna($wartosc)) throw new Exception();
  12. break;
  13. case 'mail':
  14. if(!(filtrMail($wartosc))) return false;
  15. break;
  16. case 'haslo':
  17. if( !( strlen($wartosc) >= 8 && strlen($wartosc) <= 32 ) )return false;
  18. $wartosc = $this->szyfrujHaslo($wartosc);
  19. break;
  20. default:
  21. throw new Exception();
  22. }
  23.  
  24. $this->dane[$parametr] = $wartosc;
  25. }
  26.  
  27. function zapisz()
  28. {
  29. if(isset($this->dane[id]))
  30. {
  31. wyslijZapytanie("UPDATE users SET ".pobierzListeDanych($this->dane)." WHERE id=$this->dane[id]");
  32. }
  33. else
  34. {
  35. $this->dane[data] = date("m.d.y");
  36.   wyslijZapytanie("INSERT INTO users (id,mail,haslo,data) VALUES ('','0','".$this->dane[mail]."','".$this->dane[haslo]."','".$this->dane[data]."')");
  37. }
  38. }
  39.  
  40. function usun()
  41. {
  42. wyslijZapytanie("DELETE FROM users WHERE id=$this->dane[id])");
  43. }
  44.  
  45. function wczytaj()
  46. {
  47. if(count($this->dane))
  48.   $wynik = wyslijZapytanieSelect("SELECT id,mail,haslo,data FROM users WHERE ".pobierzListeDanych($this->dane));
  49. else
  50.   $wynik = wyslijZapytanieSelect("SELECT id,mail,haslo,data FROM users");
  51.  
  52.   return $wynik;
  53. }
  54.  
  55. function szyfrujHaslo($haslo)
  56. {
  57. if( !( strlen($haslo) >= 8 && strlen($haslo) <= 32 ) )
  58. die('Dostalem haslo z bledna iloscia znakow!');
  59.  
  60. $haslo = sha1( $haslo.'yk[d' );
  61.  
  62. return $haslo;
  63. }
  64. }
  65.  
  66.  
  67.  


  1.  
  2. if (count($_POST))
  3. {
  4. $bledy = array();
  5.  
  6.  $Mail = filtrZmienna($_POST['Mail']);
  7.  $Haslo = filtrZmienna($_POST['Haslo']);
  8.  
  9. $uzytkownikSprawdz = new Uzytkownik;
  10. if( $uzytkownikSprawdz->mail=$Mail )
  11. {
  12. if( count( $uzytkownikSprawdz->wczytaj() ) !== 0 )
  13.   $bledy[]='Mail';
  14. }
  15. else
  16.   $bledy[]='Mail';
  17.  
  18. if(empty($bledy))
  19. {
  20. $uzytkownikNowy = new Uzytkownik;
  21. if( ($uzytkownikNowy->mail = $Mail) && ($uzytkownikNowy->haslo=$Haslo) )
  22. $uzytkownikNowy->zapisz();
  23.   else $wyswietlFormularz = true;
  24. }
  25. else
  26. $wyswietlFormularz = true;
  27. }
  28. else
  29. $wyswietlFormularz = true;
  30.  
  31.  





Witam,

powyzej zamiscilem kod ktory pisalem sobie na wlasne potrzeby do tworzenia,usuwania,edytkowania uzytkownikow w bazie danych. Nie jestem bardzo doswiadczony w rozwiazaniach obiektowych. 

Kombinowałem sobie w taki sposob zeby w klasie Uzytkownik poprzez funckcje __set sprawdzac wszystkie wprowadzane dane i ona przy wprowadzaniu jakiejs danej zwracalaby true lub false w zaleznosci od tego czy dana byla poprawna: 

if( !($uzytkownikNowy->mail = $Mail) echo "Wprowadzono niepoprawny adres e-mail";

Niestety nie działa sad.gif Myslalem ze moge tak zrobic i z tego "($uzytkownikNowy->mail = $Mail)" wyjdzie false... niestety mimo polecenia "return false;" w metodzie __set nie zwraca ona false.




Da sie jakos to zrobic zeby ($uzytkownikNowy->mail = $Mail) zwrocilo false lub true , jezeli wiecie o co mi chodzi?? Czy musze sobie zrobic inna metode odpowiedzialna za wprowadzanie wartosci do klasy?

Ten post edytował marekc12 19.10.2009, 18:13:59
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: 21.08.2025 - 15:02