/class/Session.class.php
PHP | 55 lines | 49 code | 6 blank | 0 comment | 2 complexity | 40e0d455b43e3bd1a4a083e08fae43e7 MD5 | raw file
Possible License(s): LGPL-3.0
- <?php
- class Session {
- private $db;
- const TIMEOUT = 7200;
- function __construct($db){
- $this->db = $db;
- $this->config = include DIR_CONF.'config.conf.php';
- }
- function generate_sid(){
- global $key;
- $str = '';
- while(mb_strlen($str) < 32){
- $str .= mt_rand(0, mt_getrandmax());
- }
- $sid = empty($_COOKIE['sccookie']) ? '' : authcode($_COOKIE['sccookie'], 'DECODE', $key);
- if(!empty($sid)){
- return $sid;
- }else {
- $sql = 'DELETE FROM `session` WHERE `last_time` < '.($_SERVER['REQUEST_TIME'] - self::TIMEOUT);
- $this->db->query($sql);
- $sid = md5($str.uniqid(true));
- $cookie_sid = authcode($sid, 'ENCODE', $key, self::TIMEOUT);
- if(setcookie('sccookie', $cookie_sid, $_SERVER['REQUEST_TIME'] + self::TIMEOUT, $this->config['cookie_path'], $this->config['cookie_domain'])){
- return $sid;
- }else {
- return null;
- }
- }
- }
- function set_session($sid, $paras){
- $paras = serialize($paras);
- $arr = array(
- 'session_id' => $sid,
- 'last_time' => $_SERVER['REQUEST_TIME'],
- 'content' => $paras
- );
- $this->db->replace_into('session', $arr);
- return true;
- }
- function del_session($sid){
- $sql = 'DELETE FROM `session` WHERE `session_id` = \''.$sid.'\'';
- return $this->db->query($sql);
- }
- function get_session($sid){
- $sql = 'SELECT `content` FROM `session` WHERE `session_id` = \''.$sid.'\'';
- $content = $this->db->fetchFirst($sql);
- return unserialize($content['content']);
- }
- }