php的session可以自定义处理机制哦

<?php if(!defined(‘Sys_root‘)) exit(‘NOT Pathinfo,无路径信息‘);
/*
*简单的session数据库类
*session自定义文件,主要用于用户登录
*/
class dbsession
{
public $dbsql;//数据库对象
public $config;//数据库配置文件
public function __construct($uid = ‘useid‘){
global $dbsql,$config;
$this->dbsql = & $dbsql;
$this->config = & $config;
session_set_save_handler(array($this,‘mysql_session_open‘),array($this,‘mysql_session_close‘),array($this,‘mysql_session_read‘),array($this,‘mysql_session_write‘),array($this,‘mysql_session_destory‘),array($this,‘mysql_session_des_all‘));
register_shutdown_function(‘session_write_close‘);
session_name($uid);
}
public function mysql_session_open($session_path = ‘‘,$session_name = ‘‘){
//global $dbsql,$config;
if(!$this->dbsql->get_is_link()){
$this->dbsql->open(false,$this->config);
}
}

public function mysql_session_close(){
//global $dbsql;
$this->dbsql->destory_result();
}

public function mysql_session_read($sid){
//global $dbsql;
$sid = session_id();
if(empty($sid)){
return false;
}else{
$data = ‘value‘;
$where = ‘sid=\‘‘.$sid.‘\‘‘;
$value = $this->dbsql->read($data,‘uselogin‘,$where);
}

return stripslashes($value[0][‘value‘]);
}

public function mysql_session_write($sid,$sess_data){

//global $dbsql;
$value = $sess_data;
$time = time();
$data = array(‘sid‘=>$sid,‘time‘=>$time,‘value‘=>$value);
$this->dbsql->in_data($data,‘uselogin‘,false,true);

}

public function mysql_session_destory($sid){
//global $dbsql;
$where = ‘sid=\‘‘.$sid.‘\‘‘;
unset($_SESSION[‘name‘]);//消除session变量
$cookiename = session_name();
setcookie($cookiename,‘‘,time()-86400,‘/‘);//消除客服端COOkie
return $this->dbsql->de_data(‘uselogin‘,$where);
}

public function mysql_session_des_all(){
//global $dbsql;
$maxlefttime = ini_get(‘session.gc_maxlifetime‘);
//$where = ‘time < \‘‘.time()+$maxlefttime.‘\‘‘;
$where = ‘time < 1388000000‘;
$v = $this->dbsql->de_data(‘uselogin‘,$where);
$this->dbsql->destory_result();
return $v;
}

}
//$dbsession =new dbsession;
?>

PHP手册上有很好的例子

时间: 2024-10-10 01:59:50

php的session可以自定义处理机制哦的相关文章

javaEE开发中使用session同步和token机制来防止并发重复提交

javaEE开发中使用session同步和token机制来防止并发重复提交 通常在普通的操作当中,我们不需要处理重复提交的,而且有很多方法来防止重复提交.比如在登陆过程中,通过使用redirect,可以让用户登陆之上重定向到后台首页界面,当用户刷新界面时就不会触发重复提交了.或者使用token,隐藏在表单中,当提交时进行token验证,验证失败也不让提交.这都是一般的做法. 我们这次碰到的问题是重复提交本身就是一个错误,重复提交会导致一些相关数据的逻辑不再正确.而这些重复提交并不是通过普通的刷新

微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异

微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异 前言:由于开发人员要靠工具吃饭,可能和开发工具.语言.环境呆的时间比和老婆孩子亲人在一起的时间还多,所以每个人或多或少对自己吃饭的工具在感性上带有宗教情结,在理性上又受屁股决定大脑利益左右,这种比较一般都容易遭人争议, 这些比较不带任何偏见和感情色彩,主要是自己工作中记录在有道云笔记的经验日记主要是给I自己学习备查用,写得多了就有参考价值分享出来给需要的人参考,如果有任何争议本人不作辩解.这只代表本人自己的理解

cookie&amp;session及自定义分页

cookie&session和自定义分页 cookie由何而来? 由于HTTP协议是无状态的,即每次请求都是独立的,如:人生只如初见. 状态可以理解为客户端和服务器在某次会话中产生的数据,无状态的就是这些数据不会被保留.但在实际中,会话中产生的数据又是我们需要保存的.因此Cookie就是在这样一个场景下诞生. 什么是Cookie? Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的

Cookie、Session和自定义分页

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态".因此cookie就是在这样一个场景

cookie和session以及自定义分页

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态".因此Cookie就是在这样一个场景

AppCan开发应用平台:自定义引擎机制说明

AppCan开发服务平台应用引擎已经开源了,iOS或者Android开发者可以得到AppCan开发服务平台应用引擎的全部代码,根据自己的需求开发出适合自己的应用引擎,本说明用来指导开发者将自己的应用引擎上传到AppCan平台,在AppCan开发服务平台上使用自己的修改后的应用引擎. 要重新修改应用引擎需要原生环境,即iOS应用引擎需要OSX系统和Xcode环境,Android应用引擎需要有Android开发环境. 自定义iOS应用引擎: 1.获取iOS应用引擎源码,在源码目录中有个AppCanE

iOS开发-自定义重用机制给ScrollerView添加子视图

其实这个问题我很早就想过,只是没有通过去敲代码实现,昨天有人提起,我就巧了一下 不知道大家打印郭tableview:cellforrow中cell初始的次数,也就是重用池中的cell个数,这个是固定的,比如屏幕最多可以显示4个cell那么重用池个数可能为5个6个或者7左右,我就想了如果scrollview去实现,子视图也应该是有一个个数的,那么如何去实现重用池呢?我想到了数组,可变数组,我在loadview中将scrollview的可滑动区域设置为10000,然后给scrollview每隔20个

自定义session过期时间

参考:http://www.jb51.net/article/52309.htm 在PHP中,设置php.ini,找到session.gc_maxlifetime = 1440 #(PHP5默认24分钟). 这里你可以随便设置一下过期时间.但是有人说设置以后,好象不起作用! 其实不是不起作用,而是因为系统默认: session.gc_probability = 1 session.gc_divisor = 1000 garbage collection 有个概率的,1/1000就是session

php中session的生成机制、回收机制和存储机制探究

1.php中session的生成机制 我们先来分析一下PHP中是怎么生成一个session的.设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态).我们现在有一个疑问,我们都知道session是保存在服务器的,既然它用于保持每一个用户的状态那它利用什么来区别用户的呢?这个时候就得借助cookie了.当我们在代码中调用session_start();时,PHP会同时往SESSION的存放目录(默认为/tmp/)和客户端的cookie目录各生成一个文件.sessio