<?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自定义会话管理器的更多相关文章

  1. win2008以上的系统,在vmware esxi5.5里怎么使用自定义规范管理器?sysprep

    经过测试,原来08以上的系统自带了sysprep.exe,所以vcenter对08以上的系统直接使用自定义规范管理器即可,跟linux一样了.注意不要跟03一样写入了sn即可. vCenter可使用s ...

  2. Django中自定义模型管理器(Manager)及方法

    1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager.每个Django模型至少有一个ma ...

  3. tomcat会话之持久化会话管理器

    前面提到的标准会话管理器已经提供了基础的会话管理功能,但在持久化方面做得还是不够,或者说在某些情景下无法满足要求,例如把会话以文件或数据库形式存储到存储介质中,这些都是标准会话管理器无法做到的,于是另 ...

  4. 集群增量会话管理器——DeltaManager

    DeltaManager会话管理器是tomcat默认的集群会话管理器,它主要用于集群中各个节点之间会话状态的同步维护,由于相关内容涉及到集群,可能会需要一些集群通信相关知识,如果有疑问可结合集群相关章 ...

  5. 标准会话管理器——StandardManager

    用于保存状态的会话对象已经有了,现在就需要一个管理器来管理所有会话,例如会话id生成.根据会话id找出对应的会话.对于过期的会话进行销毁等等操作.用一句话描述标准会话管理器:提供一个专门管理某个web ...

  6. xshell 会话管理器快捷键

    有没有发现xshell6关闭左边的会话管理器以后,打开就比较麻烦 那么可以自定义一个快捷键来打开: 然后输入一个快捷键 类型选择 菜单-->然后找会话管理器 完事儿 也可以自定义其他快捷键.自己 ...

  7. Django 自定义模型管理器(Manager)及方法

    转载自:https://www.cnblogs.com/sui776265233/p/11571418.html 1.自定义管理器(Manager) 在语句Book.objects.all()中,ob ...

  8. VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战(原创)

    VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战 1.给指定项目安装Newtonsoft.Json ,Version 4.5.11 PM> Install-Package Ne ...

  9. asp.net微信开发第三篇----自定义会话管理

    和微信用户的沟通少不了,总觉得看起来微信官网后台管理中的会话回复消息有点呆板,所以我这里就自定义了一个会话管理功能,最终效果图如下: 因为我试使用富文本文件CKEDITOR来进行编写,你看到稳中可能会 ...

随机推荐

  1. flask渲染模板时报错TypeError: 'UnboundField' object is not callable

    渲染模板时,访问页面提示TypeError: 'UnboundField' object is not callable 检查代码,发现实例化表单类是,没有加括号:form = NewNoteForm ...

  2. HDU 2064 汉诺塔III (递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2064 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到 ...

  3. AtCoder Beginner Contest 044 C - 高橋君とカード / Tak and Cards

    题目链接:http://abc044.contest.atcoder.jp/tasks/arc060_a Time limit : 2sec / Memory limit : 256MB Score ...

  4. Jquery部分小结

    window.onload 必须等待网页中所有的内容加载完毕后(包括图片)才能执行,如果多个,只会执行最后一个;$(document).ready() 网页中所有DOM结构绘制完毕后就执行,可能DOM ...

  5. JS笔记—01

    1.JS的代码一般在头部写2.当页面载入时,会执行位于body部分的JavaScript当被调用时,位于head部分的JavaScript被执行.3.要对外部的JS文件的一个变量操作,代码是写在内部J ...

  6. ACM总结——2017湖南省省赛总结

    2017省赛已经结束了2天了,今天终于有时间,也有勇气来写下这一篇总结.的确,这是我第一次正式的ACM线下赛,我本以为再不济,也可以拿个三等奖,没想到,实力打铁.确实对我打击比较大,以前的确是知道自己 ...

  7. 解决webgl使用canvas.toDataURL()没有内容的问题

    转的,记录一下,我还没有验证. 这个问题很好解决,就是在获取webgl对象的时候,多传入一个{preserveDrawingBuffer: true},然后在使用canvas.toDataURL()获 ...

  8. 使用ccache大幅度加速gcc编译速度至少1倍以上(不需要修改任何编译选项)

    因为我们整个项目都是使用c++开发的,生成的so足有50M,原来编译一遍要三五分钟,一个针对oracle,一个针对mysql,整个轮回下来这部分就要10来分钟,加上代码上传.翻译,一轮配管打包下来二三 ...

  9. 闭包引起的onclick不起作用

    问题描述:在html页面绑定onclick="cli()" 方法,定义在$(function( function cli(){} ))不起作用 $(function(){ func ...

  10. py4CV例子2汽车检测和svm算法

    1.什么是汽车检测数据集: ) pos, neg = , ) matcher = cv2.FlannBasedMatcher(flann_params, {}) bow_kmeans_trainer ...