Advertisement
Guest User

Untitled

a guest
Aug 11th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.71 KB | None | 0 0
  1. <?php
  2.  
  3. class UserException extends Exception { }
  4.  
  5. class User {
  6.  
  7. private $sessionID;
  8. public $sessionData;
  9. public $data;
  10. public $loggedIn;
  11.  
  12. /**
  13. * Constructor - forms session and loads session data.
  14. * @global $db
  15. * @global $core
  16. */
  17. public function __construct() {
  18.  
  19. global $db, $core;
  20.  
  21. $this->clearUpSessions();
  22.  
  23. $this->sessionID = $core->encrypt( session_id() );
  24.  
  25. $this->createSession();
  26.  
  27. $query = $db->query( "SELECT * FROM sessions WHERE session_id = '{$this->sessionID}'" );
  28. $this->sessionData = $db->assoc( $query );
  29.  
  30. if( $this->sessionData['user_id'] ) {
  31.  
  32. $this->loggedIn = true;
  33.  
  34. $query = $db->query( "SELECT * FROM users WHERE id = '{$this->sessionData['user_id']}'" );
  35. $this->data = $db->assoc( $query );
  36.  
  37. $this->data['uGroupArray'] = explode( ",", $this->data['usergroups'] );
  38.  
  39. $this->data['sGroupArray'] = explode( ",", $this->data['staffgroups'] );
  40.  
  41. $query = $db->query("SELECT * FROM usergroups WHERE id = '{$this->data['displaygroup']}'");
  42. $array = $db->assoc($query);
  43.  
  44. $this->data['usergroup'] = $array;
  45.  
  46. $this->data['fullUsername'] = "<span style=\"color: #{$array['colour']}\">" . $this->data['username'] . "</span>";
  47.  
  48. }
  49.  
  50. }
  51.  
  52. private function createSession() {
  53.  
  54. global $db, $core;
  55.  
  56. $query = $db->query( "SELECT * FROM sessions WHERE session_id = '{$this->sessionID}'" );
  57. $num = $db->num( $query );
  58. $result = $db->assoc( $query );
  59.  
  60. $oldID = $this->sessionID;
  61. $time = time();
  62.  
  63. if( $num == 0 ) {
  64.  
  65. $time = time();
  66.  
  67. $query2 = $db->query( "SELECT id FROM users WHERE `id` = '{$result['user_id']}'" );
  68. $num2 = $db->num( $query2 );
  69.  
  70. if( $num2 == 0 ) {
  71.  
  72. $db->query( "INSERT INTO sessions VALUES ( NULL, '{$this->sessionID}', '0', '{$time}' );" );
  73.  
  74. }
  75. else {
  76.  
  77. session_regenerate_id();
  78. $newID = $core->encrypt( session_id() );
  79.  
  80. $db->query( "UPDATE sessions SET session_id = '{$newID}', stamp = '{$time}' WHERE user_id = '{$result['user_id']}'" );
  81.  
  82. $this->sessionID = $newID;
  83.  
  84. }
  85.  
  86. }
  87. else {
  88.  
  89. session_regenerate_id();
  90. $newID = $core->encrypt( session_id() );
  91.  
  92. $db->query( "UPDATE sessions SET session_id = '{$newID}', stamp = '{$time}' WHERE session_id = '{$oldID}'" );
  93.  
  94. $this->sessionID = $newID;
  95.  
  96. }
  97.  
  98. }
  99.  
  100. public function hasGroup( $id ) {
  101.  
  102. if( in_array( $id, $this->data['uGroupArray'] ) ) {
  103. return true;
  104. }
  105. else {
  106. return false;
  107. }
  108.  
  109. }
  110.  
  111. private function clearUpSessions() {
  112.  
  113. global $params, $db;
  114.  
  115. $time = strtotime( "{$params['user']['timeout']} ago" );
  116.  
  117. $db->query( "DELETE FROM sessions WHERE stamp < '{$time}'" );
  118.  
  119. }
  120.  
  121. public function destroySession() {
  122.  
  123. global $db;
  124.  
  125. $db->query( "DELETE FROM sessions WHERE session_id = '{$this->sessionID}'" );
  126.  
  127. }
  128.  
  129. private function assignUser( $id ) {
  130.  
  131. global $db;
  132.  
  133. $db->query( "UPDATE sessions SET user_id = '{$id}' WHERE session_id = '{$this->sessionID}'" );
  134.  
  135. }
  136.  
  137. public function login( $username, $password ) {
  138.  
  139. global $core, $db;
  140.  
  141. $username = $core->clean( $username );
  142. $password = $core->clean( $password );
  143. $password_enc = $core->encrypt( $password );
  144.  
  145. $query = $db->query("SELECT * FROM users WHERE username = '{$username}' AND password = '{$password_enc}'");
  146. $array = $db->assoc($query);
  147. $num = $db->num($query);
  148. $date = date("r");
  149.  
  150. if( !$username or !$password ) {
  151.  
  152. throw new UserException( 'All fields are required.' );
  153.  
  154. }
  155. elseif( $num != 1 ) {
  156.  
  157.  
  158. throw new UserException( 'Invalid username/password.' );
  159.  
  160. }
  161. else if ($array['banned'] == "1") {
  162.  
  163. throw new UserException( 'You have been banned. Please contact a member of the staff team.' );
  164. }
  165. else {
  166.  
  167.  
  168. $tehday = date('d/m/Y h:i A');
  169.  
  170. $this->assignUser( $array['id'] );
  171. return true;
  172.  
  173. }
  174.  
  175. }
  176.  
  177. }
  178.  
  179. $user = new User();
  180.  
  181. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement