Guest User

Untitled

a guest
Oct 7th, 2018
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. < ?php
  2. class User
  3. {
  4. private $uid; // user id
  5. private $fields; // other record fields
  6. // initialize a User object
  7. public function __construct()
  8. {
  9. $this- > uid = null;
  10. $this- > fields = array(‘username’ = > ‘’,
  11. ‘password’ = > ‘’,
  12. ‘emailAddr’ = > ‘’,
  13. ‘isActive’ = > false);
  14. }
  15. // override magic method to retrieve properties
  16. public function __get($field)
  17. {
  18. if ($field == ‘userId’)
  19. {
  20. return $this- > uid;
  21. }
  22. else
  23. {
  24. return $this- > fields[$field];
  25. }
  26. }
  27. // override magic method to set properties
  28. public function __set($field, $value)
  29. {
  30. if (array_key_exists($field, $this- > fields))
  31. {
  32. $this- > fields[$field] = $value;
  33. }
  34. }
  35. // return if username is valid format
  36. public static function validateUsername($username)
  37. {
  38. return preg_match(‘/^[A-Z0-9]{2,20}$/i’, $username);
  39. }
  40. // return if email address is valid format
  41. public static function validateEmailAddr($email)
  42. {
  43. return filter_var($email, FILTER_VALIDATE_EMAIL);
  44. }
  45. // return an object populated based on the record’s user id
  46. public static function getById($user_id)
  47. {
  48. $user = new User();
  49. $query = sprintf(‘SELECT USERNAME, PASSWORD, EMAIL_ADDR, IS_ACTIVE ‘ .
  50. ‘FROM %sUSER WHERE USER_ID = %d’, DB_TBL_PREFIX, $user_id);
  51. $result = mysql_query($query, $GLOBALS[‘DB’]);
  52. if (mysql_num_rows($result))
  53. {
  54. $row = mysql_fetch_assoc($result);
  55. $user- > username = $row[‘USERNAME’];
  56. $user- > password = $row[‘PASSWORD’];
  57. $user- > emailAddr = $row[‘EMAIL_ADDR’];
  58. $user- > isActive = $row[‘IS_ACTIVE’];
  59. $user- > uid = $user_id;
  60. }
  61. mysql_free_result($result);
  62. return $user;
  63. }
  64. // return an object populated based on the record’s username
  65. public static function getByUsername($username)
  66. {
  67. $user = new User();
  68. $query = sprintf(‘SELECT USER_ID, PASSWORD, EMAIL_ADDR, IS_ACTIVE ‘ .
  69. ‘FROM %sUSER WHERE USERNAME = “%s”’, DB_TBL_PREFIX,
  70. mysql_real_escape_string($username, $GLOBALS[‘DB’]));
  71. $result = mysql_query($query, $GLOBALS[‘DB’]);
  72. if (mysql_num_rows($result))
  73. {
  74. $row = mysql_fetch_assoc($result);
  75. $user- > username = $username;
  76. $user- > password = $row[‘PASSWORD’];
  77. $user- > emailAddr = $row[‘EMAIL_ADDR’];
  78. $user- > isActive = $row[‘IS_ACTIVE’];
  79. $user- > uid = $row[‘USER_ID’];
  80. }
  81. mysql_free_result($result);
  82. return $user;
  83. }
  84. // save the record to the database
  85. public function save()
  86. {
  87. if ($this- > uid)
  88. {
  89. $query = sprintf(‘UPDATE %sUSER SET USERNAME = “%s”, ‘ .
  90. ‘PASSWORD = “%s”, EMAIL_ADDR = “%s”, IS_ACTIVE = %d ‘ .
  91. ‘WHERE USER_ID = %d’, DB_TBL_PREFIX,
  92. mysql_real_escape_string($this- > username, $GLOBALS[‘DB’]),
  93. mysql_real_escape_string($this- > password, $GLOBALS[‘DB’]),
  94. mysql_real_escape_string($this- > emailAddr, $GLOBALS[‘DB’]),
  95. $this- > isActive, $this- > userId);
  96. return mysql_query($query, $GLOBALS[‘DB’]);
  97. }
  98. else
  99. {
  100. $query = sprintf(‘INSERT INTO %sUSER (USERNAME, PASSWORD, ‘ .
  101. ‘EMAIL_ADDR, IS_ACTIVE) VALUES (“%s”, “%s”, “%s”, %d)’,
  102. DB_TBL_PREFIX,
  103. mysql_real_escape_string($this- > username, $GLOBALS[‘DB’]),
  104. mysql_real_escape_string($this- > password, $GLOBALS[‘DB’]),
  105. mysql_real_escape_string($this- > emailAddr, $GLOBALS[‘DB’]),
  106. $this- > isActive);
  107. if (mysql_query($query, $GLOBALS[‘DB’]))
  108. {
  109. $this- > uid = mysql_insert_id($GLOBALS[‘DB’]);
  110. return true;
  111. }
  112. else
  113. {
  114. return false;
  115. }
  116. }
  117. }
  118. // set the record as inactive and return an activation token
  119. public function setInactive()
  120. {
  121. $this- > isActive = false;
  122. $this- > save(); // make sure the record is saved
  123. $token = random_text(5);
  124. $query = sprintf(‘INSERT INTO %sPENDING (USER_ID, TOKEN) ‘ .
  125. ‘VALUES (%d, “%s”)’, DB_TBL_PREFIX, $this- > uid, $token);
  126. return (mysql_query($query, $GLOBALS[‘DB’])) ? $token : false;
  127. }
  128. // clear the user’s pending status and set the record as active
  129. public function setActive($token)
  130. {
  131. $query = sprintf(‘SELECT TOKEN FROM %sPENDING WHERE USER_ID = %d ‘ .
  132. ‘AND TOKEN = “%s”’, DB_TBL_PREFIX, $this- > uid,
  133. mysql_real_escape_string($token, $GLOBALS[‘DB’]));
  134. $result = mysql_query($query, $GLOBALS[‘DB’]);
  135. if (!mysql_num_rows($result))
  136. {
  137. mysql_free_result($result);
  138. return false;
  139. }
  140. else
  141. {
  142. mysql_free_result($result);
  143. $query = sprintf(‘DELETE FROM %sPENDING WHERE USER_ID = %d ‘ .
  144. ‘AND TOKEN = “%s”’, DB_TBL_PREFIX, $this- > uid,
  145. mysql_real_escape_string($token, $GLOBALS[‘DB’]));
  146. if (!mysql_query($query, $GLOBALS[‘DB’]))
  147. {
  148. return false;
  149. }
  150. else
  151. {
  152. $this- > isActive = true;
  153. return $this- > save();
  154. }
  155. }
  156. }
  157. }
  158. ? >
Add Comment
Please, Sign In to add comment