时间:2021-07-01 10:21:17 帮助过:2人阅读
- <!--?php
- class Session{
- private $savePath;//存储session的路径,必须是绝对路径
- private $time;//存储session的过期时间,单位是秒
- private $sessionName;//session的名字
- private $sessionValue;//session的值
- public function __construct($savePath)
- {
- //将session存入指定的目录
- $this--->savePath = $savePath;
- //注意:这个一定要写在session_start前面
- session_save_path($this->savePath);
- session_start();//开启session
- if(!is_dir($this->savePath))
- {
- //默认为最大的权限 0777
- mkdir($this->savePath) or die('系统错误!');
- }
- }
- //创建session 一共三个参数,
- // $name->session名字
- // $val->session值
- // $time->过期时间,默认为30分钟
- public function setSession($name,$val,$time=1800)
- {
- $this->sessionName = $name;
- $this->sessionValue = $val;
- $this->time = $time;
- if(!isset($_SESSION[$this->sessionName]))
- {
- if(is_array($this->sessionValue))
- {
- foreach($this->sessionValue as $key=>$val)
- {
- $_SESSION[$this->sessionName][$key] = $val;
- }
- }
- else
- {
- $_SESSION[$this->sessionName]['val'] = $this->sessionValue;
- }
- $_SESSION[$this->sessionName]["startTime"] = time();
- }
- //这时候说明session已经存在,那么我们判断他是否过期,如果过期,删除session
- else if(isset($_SESSION[$this->sessionName]["startTime"]) && time()-$_SESSION[$this->sessionName]['startTime']>=$this->time)
- {
- unset($_SESSION[$this->sessionName]);
- }
- }
- }
- ?>
通过这个类我们可以达到几个目的: 1.我们可以明确的控制session的过期时间. 2.对应上面的第二个问题,我之前做用户退出登陆的时候通常这样写 session_destroy();或者写成unset($_SESSION);殊不知这样就把所有的session都清除了,所以我们会遇到前面一个用户退出之后,我们自己的session也被删除了. 3.用户不会无缘无故的掉线了,因为对我们来说每个步骤现在都是透明的了.
http://www.bkjia.com/PHPjc/1074128.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1074128.htmlTechArticlephp 严格控制session的过期时间 工作过一段时间,相信大家一定也碰到过一个问题: 1.前台用户不知道怎么的就自动掉线了. 2.后台退出登陆之后...