Advertisement
Guest User

Untitled

a guest
Jan 17th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. <?php
  2. class User
  3. {
  4. private $uid; // identyfikator użytkownika
  5. private $fields; // inne pola rekordu
  6.  
  7. // inicjalizacja obiektu User
  8. public function __construct()
  9. {
  10. $this->uid = null;
  11. $this->fields = array('username' => '',
  12. 'password' => '',
  13. 'emailAddr' => '',
  14. 'isActive' => false);
  15. }
  16.  
  17. // nadpisanie metody odczytującej właściwości
  18. public function __get($field)
  19. {
  20. if ($field == 'userId')
  21. {
  22. return $this->uid;
  23. }
  24. else
  25. {
  26. return $this->fields[$field];
  27. }
  28. }
  29.  
  30. // nadpisanie metody ustawiającej właściwości
  31. public function __set($field, $value)
  32. {
  33. if (array_key_exists($field, $this->fields))
  34. {
  35. $this->fields[$field] = $value;
  36. }
  37. }
  38.  
  39. // sprawdzenie, czy nazwa użytkownika ma właściwy format
  40. public static function validateUsername($username)
  41. {
  42. return preg_match('/^[A-Z0-9]{2,20}$/i', $username);
  43. }
  44.  
  45. // sprawdzenie, czy adres email ma właściwy format
  46. public static function validateEmailAddr($email)
  47. {
  48. return filter_var($email, FILTER_VALIDATE_EMAIL);
  49. }
  50.  
  51. // zwrócenie obiektu wypełnionego na podstawie identyfikatora użytkownika
  52. public static function getById($uid)
  53. {
  54. $u = new User();
  55.  
  56. $query = sprintf('SELECT USERNAME, PASSWORD, EMAIL_ADDR, IS_ACTIVE ' .
  57. 'FROM %sUSER WHERE USER_ID = %d',
  58. DB_TBL_PREFIX,
  59. $uid);
  60. $result = mysql_query($query, $GLOBALS['DB']);
  61.  
  62. if (mysql_num_rows($result))
  63. {
  64. $row = mysql_fetch_assoc($result);
  65. $u->username = $row['USERNAME'];
  66. $u->password = $row['PASSWORD'];
  67. $u->emailAddr = $row['EMAIL_ADDR'];
  68. $u->isActive = $row['IS_ACTIVE'];
  69. $u->uid = $uid;
  70. }
  71. mysql_free_result($result);
  72.  
  73. return $u;
  74. }
  75.  
  76. // zwrócenie obiektu wypełnionego na podstawie nazwy użytkownika
  77. public static function getByUsername($username)
  78. {
  79. $u = new User();
  80.  
  81. $query = sprintf('SELECT USER_ID, PASSWORD, EMAIL_ADDR, IS_ACTIVE ' .
  82. 'FROM %sUSER WHERE USERNAME = "%s"',
  83. DB_TBL_PREFIX,
  84. mysql_real_escape_string($username, $GLOBALS['DB']));
  85. $result = mysql_query($query, $GLOBALS['DB']);
  86.  
  87. if (mysql_num_rows($result))
  88. {
  89. $row = mysql_fetch_assoc($result);
  90. $u->username = $username;
  91. $u->password = $row['PASSWORD'];
  92. $u->emailAddr = $row['EMAIL_ADDR'];
  93. $u->isActive = $row['IS_ACTIVE'];
  94. $u->uid = $row['USER_ID'];
  95. }
  96.  
  97. mysql_free_result($result);
  98. return $u;
  99. }
  100.  
  101. // zapisanie rekordu w bazie danych
  102. public function save()
  103. {
  104. if ($this->uid)
  105. {
  106. $query = sprintf('UPDATE %sUSER SET USERNAME = "%s", ' .
  107. 'PASSWORD = "%s", EMAIL_ADDR = "%s", IS_ACTIVE = %d ' .
  108. 'WHERE USER_ID = %d',
  109. DB_TBL_PREFIX,
  110. mysql_real_escape_string($this->username, $GLOBALS['DB']),
  111. mysql_real_escape_string($this->password, $GLOBALS['DB']),
  112. mysql_real_escape_string($this->emailAddr, $GLOBALS['DB']),
  113. $this->isActive,
  114. $this->userId);
  115. mysql_query($query, $GLOBALS['DB']);
  116. }
  117. else
  118. {
  119. $query = sprintf('INSERT INTO %sUSER (USERNAME, PASSWORD, ' .
  120. 'EMAIL_ADDR, IS_ACTIVE) VALUES ("%s", "%s", "%s", %d)',
  121. DB_TBL_PREFIX,
  122. mysql_real_escape_string($this->username, $GLOBALS['DB']),
  123. mysql_real_escape_string($this->password, $GLOBALS['DB']),
  124. mysql_real_escape_string($this->emailAddr, $GLOBALS['DB']),
  125. $this->isActive);
  126. mysql_query($query, $GLOBALS['DB']);
  127.  
  128. $this->uid = mysql_insert_id($GLOBALS['DB']);
  129. }
  130. }
  131.  
  132. // oznaczenie rekordu jako nieaktywnego i zwrócenie znacznika aktywacji
  133. public function setInactive()
  134. {
  135. $this->isActive = false;
  136. $this->save(); // zapewnienie, że rekord jest zapisany
  137.  
  138. $token = random_text(5);
  139. $query = sprintf('INSERT INTO %sPENDING (USER_ID, TOKEN) ' .
  140. 'VALUES (%d, "%s")',
  141. DB_TBL_PREFIX,
  142. $this->uid,
  143. $token);
  144. mysql_query($query, $GLOBALS['DB']);
  145.  
  146. return $token;
  147. }
  148.  
  149. // wyczyszczenie tymczasowego statusu użytkownika i oznaczenie rekordu jako aktywnego
  150. public function setActive($token)
  151. {
  152. $query = sprintf('SELECT TOKEN FROM %sPENDING WHERE USER_ID = %d ' .
  153. 'AND TOKEN = "%s"',
  154. DB_TBL_PREFIX,
  155. $this->uid,
  156. mysql_real_escape_string($token, $GLOBALS['DB']));
  157. $result = mysql_query($query, $GLOBALS['DB']);
  158.  
  159. if (!mysql_num_rows($result))
  160. {
  161. mysql_free_result($result);
  162. return false;
  163. }
  164. else
  165. {
  166. mysql_free_result($result);
  167. $query = sprintf('DELETE FROM %sPENDING WHERE USER_ID = %d ' .
  168. 'AND TOKEN = "%s"', DB_TBL_PREFIX,
  169. $this->uid,
  170. mysql_real_escape_string($token, $GLOBALS['DB']));
  171. mysql_query($query, $GLOBALS['DB']);
  172.  
  173. $this->isActive = true;
  174. $this->save();
  175. return true;
  176. }
  177. }
  178. }
  179. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement