<?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. 20165215 2017-2018-2 《Java程序设计》第5周学习总结

    20165215 2017-2018-2 <Java程序设计>第5周学习总结 教材学习内容总结 chapter7 Java支持在一个类中声明另外一个类,这样的类称作内部类,而包含内部类的类 ...

  2. PHP 取302跳转后真实 URL 的两种方法

    1 . 第一种,CURL形式[感觉处理略慢,代码偏多] $url = '将跳转的URL'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url) ...

  3. poj1185 [NOI2001炮兵阵地]

    题目链接 状压DP 本来如果考虑所有情况应该开hh[n][2^10][2^10]表示i行在i-1的状态为j,i-2的状态为k的最大个数 但是由于每行中的人互相限制所以在m=10时只有60种情况 空间就 ...

  4. [转载]表单校验之datatype

    凡要验证格式的元素均需绑定datatype属性,datatype可选值内置有10类,用来指定不同的验证格式. 如果还不能满足您的验证需求,可以传入自定义datatype,自定义datatype是一个非 ...

  5. kivy __init__() got an unexpected keyword argument '__no_builder' Kivy

    from kivy.lang.builder import Builder from kivy.app import App, runTouchApp from kivy.uix.boxlayout ...

  6. Jenkins实现SVN+Maven+Java项目的持续集成

    Jenkins 2.46.1 Centos 7.3 JDK 7 安装jdk/maven/svn 在Jenkins所在的Linux机器安装jdk和maven,步骤就不说了,下面是环境变量: export ...

  7. 【题解】Luogu CF343D Water Tree

    原题传送门:CF343D Water Tree 这道题要用树链剖分,我博客里有对树链剖分的详细介绍 这明显是弱智题 树剖套珂朵莉树多简单啊 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自 ...

  8. Java Web-----JSP与Servlet(一)

    JSP (java服务器页面) JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡 ...

  9. 01:adminLTE2基本使用

    1.1 adminLTE介绍 1.adminLTE 介绍 1.基于Bootstrap3高度可定制的响应式管理模板,免去前端架构师大量的js和css的编写 2.adminLTE除了可以使用bootstr ...

  10. 批处理no.bat

    在公司每次我启动电脑, 网络连接需要一段时间, 而我想在这段小时间里面, 一旦网络连接成功就帮我启动微信和qq, 如果还没有连接成功就继续监测直到有网络了才会成功才会打开两个程序, 当打开程序后脚本自 ...