Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. class SessionDBHandler implements SessionHandlerInterface {
  3. private $db;
  4. private $config;
  5. function __construct() {
  6. global $config;
  7. $this->config = $config;
  8. }
  9. function open($savePath, $sessionName) {
  10. $this->db = MysqliDb::getInstance();
  11. return true;
  12. }
  13. function close() {
  14. return true;
  15. }
  16. function read($id) {
  17. $session_data = '';
  18. $result = $this->db->rawQuery('SELECT session_data FROM sessions WHERE session_id = ? AND session_expires > ?', [$id, date('Y-m-d H:i:s')]);
  19. $session_data = isset($result[0]['session_data']) && !empty($result[0]['session_data']) ? $result[0]['session_data'] : '';
  20. if (!is_string($session_data)) $session_data = '';
  21. return $session_data;
  22. }
  23. function write($id, $data) {
  24. $dateTime = date('Y-m-d H:i:s');
  25. $expireTime = $this->config['settings']['session-expires'];
  26. $newDateTime = date('Y-m-d H:i:s', strtotime($dateTime.' '.$expireTime));
  27. $this->db->rawQuery("INSERT INTO sessions (session_id, user_ip, session_expires, session_updated_at, session_data) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE session_id=?, user_ip=?, session_expires=?, session_updated_at=?, session_data=?", [$id, $_SERVER['REMOTE_ADDR'], $newDateTime, $dateTime, $data, $id, $_SERVER['REMOTE_ADDR'], $newDateTime, $dateTime, $data]);
  28. return $this->db->getLastErrno() === 0 ? true : false;
  29. }
  30. function destroy($id) {
  31. if ($this->db->where('session_id', $id)->delete('sessions')) {
  32. return true;
  33. } else {
  34. return false;
  35. }
  36. }
  37. function gc($maxlifetime) {
  38. $this->db->rawQuery("DELETE FROM sessions WHERE ((UNIX_TIMESTAMP(session_expires) + ?) < ?)", [$maxlifetime, $maxlifetime]);
  39. return $this->db->getLastErrno() === 0 ? true : false;
  40. }
  41. }