Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Klasa rejestracji
Forum PHP.pl > Forum > Przedszkole
Loped
Witam. Napisałem moją pierwszą klase smile.gif. Chciałbym abyście ją ocenili, w miare możliwości doradzili co robię źle(OOP zawsze mi nie wychodziło). Nie jestem pewien czy z sensem ją napisałem, ale jak już wspominałem.. to pierwsza klasa smile.gif.

  1. <?php
  2. $title = "Rejestracja";
  3. require_once('./includes/head.php');
  4.  
  5.  
  6. class register
  7. {
  8. var $login;
  9. var $password;
  10. var $email;
  11. var $captcha;
  12.  
  13. function __construct($varlog, $varpass, $varemail, $varcapt)
  14. {
  15. $this->login = $varlog;
  16. $this->password = $varpass;
  17. $this->email = $varemail;
  18. $this->captcha = $varcapt;
  19. }
  20.  
  21. function ValidNick()
  22. {
  23. if(preg_match('@^[A-Z][A-Za-z0-9]{3,15}$@', $this->login))
  24. return true;
  25. else
  26. return false;
  27.  
  28. }
  29.  
  30. function ValidPass()
  31. {
  32. if(preg_match('@^[A-Za-z0-9_ ]{6,15}$@', $this->password))
  33. return true;
  34. else
  35. return false;
  36.  
  37. }
  38.  
  39. function ValidEmail()
  40. {
  41. if(filter_var($this->email, FILTER_VALIDATE_EMAIL))
  42. return true;
  43. else
  44. return false;
  45. }
  46.  
  47. function cap($x, $y)
  48. {
  49. if($x+$y==$this->captcha)
  50. return true;
  51. else
  52. error("Nieprawidłowy wynik działania!");
  53. }
  54.  
  55. function check_number($field)
  56. {
  57. global $pdo;
  58. $db = $pdo->prepare('SELECT `id` FROM `uzytkownicy` WHERE '.$field.'=?');
  59. $db->execute(array($this->login));
  60.  
  61. if($db->rowCount()>0)
  62. {
  63. return false;
  64. }
  65. else { return true; }
  66.  
  67. $db-> closeCursor();
  68. }
  69.  
  70. function register_now($soil)
  71. {
  72. global $pdo;
  73. $db = $pdo->prepare('INSERT INTO `uzytkownicy` (id, login, haslo, ranga, email, soil) VALUES(?, ?, ?, ?, ?, ?)');
  74. $db->execute(array(NULL, $this->login, sha1($this->password.$soil), 0, $this->email, $soil));
  75.  
  76. if(!$db)
  77. {
  78. error("Nie udało się połączyć z bazą");
  79. }
  80. else
  81. {
  82. echo"Zostałeś poprawnie zarejestrowany.";
  83. }
  84. }
  85. }
  86.  
  87. if (!isset($_POST['action']))
  88. {
  89. //For Captcha
  90. $_SESSION['num1'] = mt_rand(1,9);
  91. $_SESSION['num2'] = mt_rand(1,9);
  92. $liczby=array
  93. (
  94. 1=>'jeden',
  95. 2=>'dwa',
  96. 3=>'trzy',
  97. 4=>'cztery',
  98. 5=>'pięć',
  99. 6=>'sześć',
  100. 7=>'siedem',
  101. 8=>'osiem',
  102. 9=>'dziewięć'
  103. );
  104. }
  105.  
  106. if(isset($_POST['action']) && $_POST['action']=="ok")
  107. {
  108. /**
  109. * Declaration of variables
  110. */
  111. $captcha = intval($_POST['captcha']);
  112. $login = htmlspecialchars(strip_tags(trim($_POST['login'])));
  113. $password = htmlspecialchars(strip_tags($_POST['password']));
  114. $email = htmlspecialchars(strip_tags(trim($_POST['email'])));
  115.  
  116. $obj = new register($login, $password, $email, $captcha);
  117.  
  118. if(!$obj->ValidNick())
  119. {
  120. error("Niepoprawny nick!");
  121. }
  122.  
  123. if(!$obj->ValidPass())
  124. {
  125. error("Niepoprawne hasło");
  126. }
  127.  
  128. if(!$obj->ValidEmail())
  129. {
  130. error("Niepoprawny adres email");
  131. }
  132.  
  133. if(!$obj->check_number('login'))
  134. {
  135. error("Nick jest zajęty!");
  136. }
  137.  
  138. if(!$obj->check_number('email'))
  139. {
  140. error("Email jest zajęty!");
  141. }
  142.  
  143. $obj->cap($_SESSION['num1'], $_SESSION['num2']);
  144. unset($_SESSION['num1'],$_SESSION['num2']);
  145.  
  146. /**
  147. * Soil for user
  148. */
  149. $soil='';
  150. for($i=0;$i<=5;$i++)
  151. {
  152. switch(mt_rand(1,3))
  153. {
  154. case 1: $soil.=chr(rand(48,57)); break;
  155. case 2: $soil.=chr(rand(65,90)); break;
  156. case 3: $soil.=chr(rand(97,122)); break;
  157. }
  158.  
  159. }
  160. $obj->register_now($soil);
  161. }
  162.  
  163. /**
  164. * Assign variables and display page
  165. */
  166. $smarty->assign(array("Num1"=>$liczby[$_SESSION['num1']],
  167. "Num2"=>$liczby[$_SESSION['num2']],
  168. "Action"=>$_POST['action']));
  169. $smarty->display('cap.tpl');
  170. require_once("./includes/footer.php");
  171. ?>
crafter
Na pierwszy rzut oka to uzywaj do inicjalizowania zmiennych modyfikatorow dostepu tj: public private protected zamisst var. Pozatym Jak na pierwszą klasę to ok, ale z OOP wiele tu nie ma poza opakowaniem kilku funkcji w klase.
Leihto
Nie sprawdze już tego dokładnie, bo mi się spać chcę, ale returny mogłeś jeszcze krócej zapisać wink.gif
  1. if($cos) ? true : false;
Loped
Dzięki za odpowiedź. Modyfikatory dodane. wink.gif Spróbuje może rodzielić ta klase na dwie: klase rejestracyjną w której użytkownik zostanie zarejestrowany, oraz klase walidacyjną, która odziedziczy potrzebne parametry z pierwszej klasy wink.gif.
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.