PageRenderTime 362ms CodeModel.GetById 18ms RepoModel.GetById 3ms app.codeStats 0ms

/class/Session.class.php

https://github.com/ywl890227/longphp
PHP | 55 lines | 49 code | 6 blank | 0 comment | 2 complexity | 40e0d455b43e3bd1a4a083e08fae43e7 MD5 | raw file
Possible License(s): LGPL-3.0
  1. <?php
  2. class Session {
  3. private $db;
  4. const TIMEOUT = 7200;
  5. function __construct($db){
  6. $this->db = $db;
  7. $this->config = include DIR_CONF.'config.conf.php';
  8. }
  9. function generate_sid(){
  10. global $key;
  11. $str = '';
  12. while(mb_strlen($str) < 32){
  13. $str .= mt_rand(0, mt_getrandmax());
  14. }
  15. $sid = empty($_COOKIE['sccookie']) ? '' : authcode($_COOKIE['sccookie'], 'DECODE', $key);
  16. if(!empty($sid)){
  17. return $sid;
  18. }else {
  19. $sql = 'DELETE FROM `session` WHERE `last_time` < '.($_SERVER['REQUEST_TIME'] - self::TIMEOUT);
  20. $this->db->query($sql);
  21. $sid = md5($str.uniqid(true));
  22. $cookie_sid = authcode($sid, 'ENCODE', $key, self::TIMEOUT);
  23. if(setcookie('sccookie', $cookie_sid, $_SERVER['REQUEST_TIME'] + self::TIMEOUT, $this->config['cookie_path'], $this->config['cookie_domain'])){
  24. return $sid;
  25. }else {
  26. return null;
  27. }
  28. }
  29. }
  30. function set_session($sid, $paras){
  31. $paras = serialize($paras);
  32. $arr = array(
  33. 'session_id' => $sid,
  34. 'last_time' => $_SERVER['REQUEST_TIME'],
  35. 'content' => $paras
  36. );
  37. $this->db->replace_into('session', $arr);
  38. return true;
  39. }
  40. function del_session($sid){
  41. $sql = 'DELETE FROM `session` WHERE `session_id` = \''.$sid.'\'';
  42. return $this->db->query($sql);
  43. }
  44. function get_session($sid){
  45. $sql = 'SELECT `content` FROM `session` WHERE `session_id` = \''.$sid.'\'';
  46. $content = $this->db->fetchFirst($sql);
  47. return unserialize($content['content']);
  48. }
  49. }