Guest User

Untitled

a guest
Mar 6th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 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. $query = $db->query("SELECT * FROM usergroups WHERE id = '{$this->data['displaygroup']}'");
  40. $array = $db->assoc($query);
  41.  
  42. $this->data['usergroup'] = $array;
  43.  
  44. $this->data['fullUsername'] = "<span style=\"color: #{$array['colour']}\">" . $this->data['username'] . "</span>";
  45.  
  46. }
  47.  
  48. }
  49.  
  50. private function createSession() {
  51.  
  52. global $db, $core;
  53.  
  54. $query = $db->query( "SELECT * FROM sessions WHERE session_id = '{$this->sessionID}'" );
  55. $num = $db->num( $query );
  56.  
  57. if( $num == 0 ) {
  58.  
  59. $time = time();
  60.  
  61. $db->query( "INSERT INTO sessions VALUES ( NULL, '{$this->sessionID}', '0', '{$time}' );" );
  62.  
  63. }
  64. else {
  65.  
  66. $oldID = $this->sessionID;
  67.  
  68. session_regenerate_id();
  69.  
  70. $newID = $core->encrypt( session_id() );
  71.  
  72. $time = time();
  73.  
  74. $db->query( "UPDATE sessions SET session_id = '{$newID}', stamp = '{$time}' WHERE session_id = '{$oldID}'" );
  75.  
  76. $this->sessionID = $newID;
  77.  
  78. }
  79.  
  80. }
  81.  
  82. public function hasGroup( $id ) {
  83.  
  84. if( in_array( $id, $this->data['uGroupArray'] ) ) {
  85. return true;
  86. }
  87. else {
  88. return false;
  89. }
  90.  
  91. }
  92.  
  93. private function clearUpSessions() {
  94.  
  95. global $params, $db;
  96.  
  97. $time = strtotime( "{$params['user']['timeout']} ago" );
  98.  
  99. $db->query( "DELETE FROM sessions WHERE stamp < '{$time}'" );
  100.  
  101. }
  102.  
  103. public function destroySession() {
  104.  
  105. global $db;
  106.  
  107. $db->query( "DELETE FROM sessions WHERE session_id = '{$this->sessionID}'" );
  108.  
  109. }
  110.  
  111. private function assignUser( $id ) {
  112.  
  113. global $db;
  114.  
  115. $db->query( "UPDATE sessions SET user_id = '{$id}' WHERE session_id = '{$this->sessionID}'" );
  116.  
  117. }
  118.  
  119. public function login( $username, $password ) {
  120.  
  121. global $core, $db;
  122.  
  123. $username = $core->clean( $username );
  124. $password = $core->clean( $password );
  125. $password_enc = $core->encrypt( $password );
  126.  
  127. $query = $db->query("SELECT * FROM users WHERE username = '{$username}' AND password = '{$password_enc}'");
  128. $array = $db->assoc($query);
  129. $num = $db->num($query);
  130.  
  131. if( !$username or !$password ) {
  132.  
  133. throw new UserException( 'All fields are required.' );
  134.  
  135. }
  136. elseif( $num != 1 ) {
  137.  
  138. $db->query( "INSERT INTO login_logs VALUES (NULL, '{$username}', '{$_SERVER['REMOTE_ADDR']}', 'fail')" );
  139.  
  140. throw new UserException( 'Invalid username/password.' );
  141.  
  142.  
  143. }
  144. else if ($array['banned'] == "1") {
  145.  
  146. $db->query( "INSERT INTO login_logs VALUES (NULL, '{$username}', '{$_SERVER['REMOTE_ADDR']}', 'banned')" );
  147.  
  148. throw new UserException( 'You have been banned. Please contact a member of management.' );
  149.  
  150. }
  151. else {
  152.  
  153. $db->query( "INSERT INTO login_logs VALUES (NULL, '{$username}', '{$_SERVER['REMOTE_ADDR']}', 'success')" );
  154.  
  155.  
  156. $this->assignUser( $array['id'] );
  157. return true;
  158.  
  159. }
  160.  
  161.  
  162. }
  163.  
  164. }
  165.  
  166. $user = new User();
  167.  
  168. ?>
Add Comment
Please, Sign In to add comment