Advertisement
Guest User

Untitled

a guest
Jun 7th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.06 KB | None | 0 0
  1. <?php
  2.  
  3. class user {
  4. var $row = false;
  5. var $session = 'forum_user_id';
  6. var $cookie_lifetime = 2678400;
  7. var $ranks = false;
  8. var $ranks_cache = array();
  9. var $session_started = false;
  10.  
  11. function user()
  12. {
  13. global $db;
  14.  
  15. if (!empty($_REQUEST[session_name()]))
  16. {
  17. $this->session_started = true;
  18. session_start();
  19. }
  20.  
  21. if (empty($_SESSION[$this->session]))
  22. {
  23. if (isset($_COOKIE['username']) && isset($_COOKIE['password']))
  24. {
  25. $this->login($_COOKIE['username'], $_COOKIE['password']);
  26. }
  27. }
  28. else
  29. {
  30. $this->update_vars();
  31.  
  32. $db->query('
  33.  
  34. UPDATE ' . USERS_TABLE . '
  35. SET user_lastvisit = ' . time() . '
  36. WHERE user_id = ' . (int)$this->row['user_id']
  37. );
  38.  
  39. if ($this->row['user_ban'])
  40. {
  41. $this->check_ban();
  42. }
  43. }
  44.  
  45. $this->online_global();
  46.  
  47. $db->query('
  48.  
  49. DELETE
  50. FROM ' . ONLINE_TABLE . '
  51. WHERE online_lastvisit < ' . (time() - 300)
  52. );
  53. }
  54.  
  55. function login($username, $password, $handy, $autologin = false, $redirect = '')
  56. {
  57. global $db;
  58.  
  59. $res = $db->query('
  60.  
  61. SELECT *
  62. FROM ' . USERS_TABLE . "
  63. WHERE username = '" . $db->chars($username) . "'
  64. AND user_password = '" . $db->chars($password) . "'
  65. ");
  66.  
  67. $row = $db->fetch_array($res);
  68. $db->free_result($res);
  69.  
  70. if (!$row)
  71. {
  72. return false;
  73. }
  74.  
  75. if ($row['user_unlock'])
  76. {
  77. message_box('Du hast Deine E-Mail noch nicht best&auml;tigt', '/', 'zur&uuml;ck zur Startseite');
  78. }
  79.  
  80. if (!$this->session_started)
  81. {
  82. session_start();
  83. $this->session_started = true;
  84. }
  85.  
  86. $_SESSION[$this->session] = $row['user_id'];
  87. $this->row = $row;
  88.  
  89. if ($row['user_ban'])
  90. {
  91. $this->check_ban();
  92. }
  93.  
  94. if ($handy) {
  95. mysql_query("update ".USERS_TABLE." set handy_login='1' where user_id='".$row[user_id]."'");
  96. } else {
  97. mysql_query("update ".USERS_TABLE." set handy_login='0' where user_id='".$row[user_id]."'");
  98. }
  99. $db->query('
  100.  
  101. UPDATE ' . USERS_TABLE . '
  102. SET user_login = ' . time() . ",
  103. user_ip = '" . $_SERVER['REMOTE_ADDR'] . "',
  104. user_lastvisit = " . time() . '
  105. WHERE user_id = ' . $row['user_id']
  106. );
  107.  
  108. if ($autologin)
  109. {
  110. setCookie('username', $row['username'], time() + $this->cookie_lifetime, '/');
  111. setCookie('password', $row['user_password'], time() + $this->cookie_lifetime, '/');
  112. }
  113.  
  114. $db->query('
  115.  
  116. DELETE FROM ' . ONLINE_TABLE . "
  117. WHERE online_ip = '" . $_SERVER['REMOTE_ADDR'] . "'
  118. AND user_id = " . $row['user_id']
  119. );
  120.  
  121. $db->query('
  122.  
  123. UPDATE ' . ONLINE_TABLE . '
  124. SET user_id = ' . $row['user_id'] . "
  125. WHERE online_ip = '" . $_SERVER['REMOTE_ADDR'] . "'
  126. AND user_id = 0
  127. ");
  128.  
  129. $this->online_global();
  130.  
  131. setCookie('is_user', $this->row['username'], time() + 3600*24*30, '/');
  132.  
  133. if ($redirect)
  134. {
  135. header('Location: ' . $redirect);
  136. }
  137.  
  138. return true;
  139. }
  140.  
  141. function logout()
  142. {
  143. global $db;
  144.  
  145. if (empty($_SESSION[$this->session]))
  146. {
  147. return false;
  148. }
  149.  
  150. $db->query('
  151.  
  152. UPDATE ' . ONLINE_TABLE . '
  153. SET user_id = 0
  154. WHERE user_id = ' . $this->row['user_id']
  155. );
  156.  
  157. $db->query('
  158.  
  159. UPDATE ' . USERS_TABLE . '
  160. SET user_lastvisit = 0
  161. WHERE user_id = ' . $this->row['user_id']
  162. );
  163.  
  164. $this->row = false;
  165. session_destroy();
  166. unset($_SESSION[$this->session]);
  167.  
  168. setCookie('username', '', -3600, '/');
  169. setCookie('password', '', -3600, '/');
  170. setCookie(session_name(), '', -3600, '/');
  171.  
  172. $this->online_global();
  173.  
  174. return true;
  175. }
  176.  
  177. function online_global()
  178. {
  179. global $db;
  180.  
  181. $user_id = (int)$this->row['user_id'];
  182. $ip = $_SERVER['REMOTE_ADDR'];
  183. $agent = $db->chars(trim(substr($_SERVER['HTTP_USER_AGENT'], 0, 149)));
  184.  
  185. if ($user_id)
  186. {
  187. $res = $db->query('
  188.  
  189. SELECT user_id
  190. FROM ' . ONLINE_TABLE . '
  191. WHERE user_id = ' . $user_id
  192. );
  193. $row = $db->fetch_array($res);
  194. $db->free_result($res);
  195.  
  196. if ($row)
  197. {
  198. $db->query('
  199.  
  200. UPDATE ' . ONLINE_TABLE . '
  201. SET online_lastvisit = ' . time() . ",
  202. online_agent = '" . $agent . "'
  203. WHERE user_id = " . $user_id
  204. );
  205.  
  206.  
  207. return;
  208. }
  209. }
  210.  
  211. $res = $db->query('
  212.  
  213. SELECT user_id
  214. FROM ' . ONLINE_TABLE . "
  215. WHERE online_ip = '" . $ip . "'
  216. AND user_id = 0
  217. ");
  218. $row = $db->fetch_array($res);
  219. $db->free_result($res);
  220.  
  221. if ($row)
  222. {
  223. $db->query('
  224.  
  225. UPDATE ' . ONLINE_TABLE . '
  226. SET user_id = ' . $user_id . ',
  227. online_lastvisit = ' . time() . ",
  228. online_agent = '" . $agent . "'
  229. WHERE online_ip = '" . $ip . "'
  230. AND user_id = 0
  231. ");
  232.  
  233. }
  234. else
  235. {
  236. $db->query('
  237.  
  238. INSERT INTO ' . ONLINE_TABLE . '
  239. (user_id, online_lastvisit, online_ip, online_agent) VALUES
  240. (' . $user_id . ', ' . time() . ", '" . $ip . "', '" . $agent . "')
  241. ");
  242.  
  243. }
  244. }
  245.  
  246. function update_vars()
  247. {
  248. global $db;
  249.  
  250. if (!isset($_SESSION[$this->session]))
  251. {
  252. return false;
  253. }
  254.  
  255. $res = $db->query('
  256.  
  257. SELECT *
  258. FROM ' . USERS_TABLE . '
  259. WHERE user_id = ' . (int)$_SESSION[$this->session]
  260. );
  261.  
  262. $this->row = $db->fetch_array($res);
  263. $db->free_result($res);
  264. }
  265.  
  266. function check_ban()
  267. {
  268. global $db;
  269.  
  270. $res = $db->query('
  271.  
  272. SELECT ban_id, ban_time, ban_reason
  273. FROM ' . BANLIST_TABLE . '
  274. WHERE user_id = ' . $this->row['user_id']
  275. );
  276.  
  277. $row = $db->fetch_array($res);
  278. $db->free_result($res);
  279.  
  280. if ($row && $row['ban_time'] > time())
  281. {
  282. $this->logout();
  283.  
  284. message_box('Du wurdest gesperrt bis: ' . date('d.m.Y H:i', $row['ban_time']) . ' Uhr<br />Grund: <i>' . htmlspecialchars($row['ban_reason']) . '</i>', '/', 'zur&uuml;ck zur Startseite');
  285. }
  286.  
  287. $db->query('
  288.  
  289. UPDATE ' . USERS_TABLE . '
  290. SET user_ban = 0
  291. WHERE user_id = ' . $this->row['user_id']
  292. );
  293.  
  294. $this->row['user_ban'] = 0;
  295. }
  296.  
  297. function legend($level)
  298. {
  299. switch ($level)
  300. {
  301. case USER: return '';
  302. case MOD: return 'mod';
  303. case ADMIN: return 'admin';
  304. case PREM: return 'prem';
  305. }
  306. }
  307.  
  308. function set_rank($user_id, $rank_id, $posts)
  309. {
  310. if (!$this->ranks)
  311. {
  312. global $cache;
  313.  
  314. $this->ranks = $cache->get('ranks');
  315. }
  316.  
  317. if ($rank_id)
  318. {
  319. $this->ranks_cache[$user_id] = array($this->ranks[$rank_id]['rank_title'], $this->ranks[$rank_id]['rank_image']);
  320. }
  321. else
  322. {
  323. foreach ($this->ranks[0] as $p => $rank)
  324. {
  325. if ($posts >= $p)
  326. {
  327. $this->ranks_cache[$user_id] = array($rank['rank_title'], $rank['rank_image']);
  328. return;
  329. }
  330. }
  331. }
  332.  
  333. $this->ranks[$user_id] = array('', '');
  334. }
  335.  
  336. function rank($user_id, $rank_id, $posts)
  337. {
  338. if (!isset($this->ranks_cache[$user_id]))
  339. {
  340. $this->set_rank($user_id, $rank_id, $posts);
  341. }
  342.  
  343. return $this->ranks_cache[$user_id][0];
  344. }
  345.  
  346. function rank_icon($user_id, $rank_id, $posts)
  347. {
  348. if (!isset($this->ranks_cache[$user_id]))
  349. {
  350. $this->set_rank($user_id, $rank_id, $posts);
  351. }
  352.  
  353. return $this->ranks_cache[$user_id][1];
  354. }
  355.  
  356. function online()
  357. {
  358. global $db;
  359.  
  360. $res = $db->query('
  361.  
  362. SELECT COUNT(*)
  363. FROM ' . ONLINE_TABLE
  364. );
  365.  
  366. $row = $db->result($res, 0);
  367. $db->free_result($res);
  368.  
  369. return $row;
  370. }
  371. }
  372.  
  373. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement