PHP中SESSION自定义会话管理器
<?php
class CustomSession implements SessionHandlerInterface{
private $link;
private $lifetime;
public function open($savePath,$session_name){
$this->lifetime=get_cfg_var('session.gc_maxlifetime');
$this->link=mysqli_connect('localhost','root','root','session_test');
mysqli_query($this->link,"SET names UTF8");
if($this->link){
return true;
}
return false;
}
public function close(){
mysqli_close($this->link);
return true;
}
public function read($session_id){
$sql="SELECT *from sessions where session_id='{$session_id}'
and session_expires >".time();
$result=mysqli_query($this->link,$sql);
if(mysqli_num_rows($result)){
return mysqli_fetch_array($result)['session_data'];
}
return "";
}
public function write($session_id,$session_data){
$newExp=time()+$this->lifetime;
//首先查询是否存在指定的session_id,如果存在相当于更新数据,否则是第一次,则写入数据
$sql="SELECT * from sessions where session_id={'$session_id'}";
$result=mysqli_query($this->link,$sql);
if(mysqli_num_rows($result)==1){
$sql="UPDATE sessions set session_expires='{$newExp}',session_data='{$session_data}'
where session_id='{$session_id}' ";
}else{
$sql="INSERT into sessions values('{$session_id}','$session_data','{$newExp}')";
}
mysqli_query($this->link,$sql);
return mysqli_affected_rows($this->link)==1; }
public function destroy($session_id){
$sql="DELETE from sessions where session_id='{$session_id}'";
mysqli_query($this->link,$sql);
return mysqli_affected_rows($this->link)==1;
}
public function gc($maxlifetime){
$sql="DELETE from sessions where session_expires<".time();
mysqli_query($this->link,$sql);
if(mysqli_affected_rows($this->link)>0){
return true;
}
return false;
}
}
<?php
header("Content-type:text/html;charset=utf-8");
require_once 'customSession.php';
$customSession=new CustomSession();
ini_set('session.save_handler', 'user');
session_set_save_handler($customSession,true);
session_start();
$_SESSION['name']='admin';
$_SESSION['pwd']='123456';
//销毁会话,从数据库中删除
<?php
require_once 'customSession.php';
$customSession=new CustomSession();
ini_set('session.save_handler', 'user');
session_set_save_handler($customSession,true);
session_start();
session_destroy();
PHP中SESSION自定义会话管理器的更多相关文章
- win2008以上的系统,在vmware esxi5.5里怎么使用自定义规范管理器?sysprep
经过测试,原来08以上的系统自带了sysprep.exe,所以vcenter对08以上的系统直接使用自定义规范管理器即可,跟linux一样了.注意不要跟03一样写入了sn即可. vCenter可使用s ...
- Django中自定义模型管理器(Manager)及方法
1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager.每个Django模型至少有一个ma ...
- tomcat会话之持久化会话管理器
前面提到的标准会话管理器已经提供了基础的会话管理功能,但在持久化方面做得还是不够,或者说在某些情景下无法满足要求,例如把会话以文件或数据库形式存储到存储介质中,这些都是标准会话管理器无法做到的,于是另 ...
- 集群增量会话管理器——DeltaManager
DeltaManager会话管理器是tomcat默认的集群会话管理器,它主要用于集群中各个节点之间会话状态的同步维护,由于相关内容涉及到集群,可能会需要一些集群通信相关知识,如果有疑问可结合集群相关章 ...
- 标准会话管理器——StandardManager
用于保存状态的会话对象已经有了,现在就需要一个管理器来管理所有会话,例如会话id生成.根据会话id找出对应的会话.对于过期的会话进行销毁等等操作.用一句话描述标准会话管理器:提供一个专门管理某个web ...
- xshell 会话管理器快捷键
有没有发现xshell6关闭左边的会话管理器以后,打开就比较麻烦 那么可以自定义一个快捷键来打开: 然后输入一个快捷键 类型选择 菜单-->然后找会话管理器 完事儿 也可以自定义其他快捷键.自己 ...
- Django 自定义模型管理器(Manager)及方法
转载自:https://www.cnblogs.com/sui776265233/p/11571418.html 1.自定义管理器(Manager) 在语句Book.objects.all()中,ob ...
- VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战(原创)
VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战 1.给指定项目安装Newtonsoft.Json ,Version 4.5.11 PM> Install-Package Ne ...
- asp.net微信开发第三篇----自定义会话管理
和微信用户的沟通少不了,总觉得看起来微信官网后台管理中的会话回复消息有点呆板,所以我这里就自定义了一个会话管理功能,最终效果图如下: 因为我试使用富文本文件CKEDITOR来进行编写,你看到稳中可能会 ...
随机推荐
- 深入理解Node.js基于事件驱动的回调
回调和异步调用的关系 首先明确一点,回调并非是异步调用,回调是一种解决异步函数执行结果的处理方法.在异步调用,如果我们希望将执行的结果返回并且处理时,可以通过回调的方法解决.为了能够更好的区分回调和异 ...
- 算法提高 11-1实现strcmp函数
问题描述 自己实现一个比较字符串大小的函数,也即实现strcmp函数.函数:int myStrcmp(char *s1,char *s2) 按照ASCII顺序比较字符串s1与s2.若s1与s2相等返回 ...
- 容器学习笔记之CentOS7安装Docker(安装指定版本的Docker,加速,卸载)
0x00 概述 Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过 ...
- JavaScript 条件判断算法综合实战
在赌场21点游戏中,玩家可以通过计算牌桌上已经发放的卡牌的高低值来让自己在游戏中保持优势,这就叫21点算法. 根据下面的表格,每张卡牌都分配了一个值.如果卡牌的值大于0,那么玩家应该追加赌注.反之,追 ...
- win7改装 CentOS7,装完后开机,没有引导
本来系统是win7,安装centos是用U盘启动安装方式安装成功后,发现win7的系统引导不见了.之前用的是centos6.4安装后依然保留win7引导的,到centos7就不行了 解决方法1.使用r ...
- Markdown语法学习(Github/git.oschina.net上README.md书写规范)(转)
晚上在更新git.oschina.net项目时,突然想知道README.md后缀的来源,于是搜了下,发现README.md使用了一种小标记语言Markdown的语法,于是简单的看了一个,特转载如下,为 ...
- 01:CENTOS使用VIRTUALENV搭建独立的PYTHON环境-PYTHON虚拟环境
1.1 安装virtualenv环境 https://www.cnblogs.com/liuyansheng/p/6141197.html 1.安装virtualenv yum install pyt ...
- python简说(二)list
一.list # 1.list 列表 数组a = ['A', 'B', 'C', 'D']# 0 1 2# 2.空list# a = []# a = list()# 3.下标 角标 索引# print ...
- 神经网络优化算法如何选择Adam,SGD
之前在tensorflow上和caffe上都折腾过CNN用来做视频处理,在学习tensorflow例子的时候代码里面给的优化方案默认很多情况下都是直接用的AdamOptimizer优化算法,如下: o ...
- QML获取随机颜色
rect.color =);//random返回0~1的随机数