php自定义session示例分享


Posted in PHP onApril 22, 2014

下面为session类的代码

<?php
class session
{
 static function init()
 {
  session_set_save_handler(
    array("session","open"),
    array("session","close"),
    array("session","read"),
    array("session","write"),
    array("session","destroy"),
    array("session","gc")
  );
 } static function open($save_path,$session_name)
 {
  echo "session opening!<br>";
  /*global $db,$REMOTE_ADDR;
   $rs = $db->Execute("select * from Sessions where SessionID='".session_id()."'");
  $arry=$rs->FetchRow();
  if( $rs && $arry)
  {
  $db->Execute("update Sessions set SessionLast=NOW() where SessionID='".session_id()."'");
  }
  else
  {
  $query = "insert into Sessions set SessionID='".session_id()."',SessionName='$REMOTE_ADDR',SessionLast='NOW()'";
  //echo $query;
  $db->Execute($query);
  }*/
  return true;
 }
 static function close()
 {
  return(true);
 }
 static function read($id)
 {
  echo "session reading now!<br>";
  global $db;
  return true;
  $timenow = strftime("%Y-%m-%d %H:%M:%S", time());
  $query = "select SessionData from Sessions where SessionID='$id' and SessionLast > '$timenow'";
  $rs = $db->Execute($query);
  if(list($SessionData) = $rs->FetchRow())
  {
   //echo $SessionData;
   return $SessionData;
  }
  else
  {
   return false;
  }
 }
 static function write($id,$sess_data)
 {
  echo "session writing now!<br>";
  global $db;
  $rs = $db->Execute("select SessionID from Sessions where SessionID='$id'");
  $num = $rs->RecordCount();
  $unix_time = time()+MY_SESS_TIME;
  //echo MY_SESS_TIME;
  $dateleft = strftime("%Y-%m-%d %H:%M:%S", $unix_time);
  if($num <= 0)
  {
   $sql = "insert into Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft', SessionID='".session_id()."'";
  }
  else
  {
   $sql = "update Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft' where SessionID='$id'";
  }
  $db->Execute($sql);
 }
 static function destroy($id)
 {
  echo "session destroying now!<br>";
  global $db;
  $sql = "DELETE FROM Sessions WHERE `SessionID` = '$id'";
  $rs = $db->Execute($sql);
  return $rs;
  // $sess_file = "$sess_save_path/sess_$id";
  //return(@unlink($sess_file));
 }
 /*********************************************
  * WARNING - You will need to implement some *
 * sort of garbage collection routine here. *
 *********************************************/
 static function gc($maxlifetime)
 {
  echo "session maxlifetime now!<br>";
  global $db;
  $timenow = strftime("%Y-%m-%d %H:%M:%S", time());
  $sql = "DELETE FROM `$table_sessions` WHERE `SessionLast` < '$timenow'";
  return $sess_db->Execute($sql);
  //echo "now gc!<br>";
  return true;
 }
 // proceed to use sessions normally
}

使用方法

include("session.class.php"); 
session::init(); 
session_start(); 
define("MY_SESS_TIME", 3600); //SESSION 生存时长 
$_SESSION["test"] = "abcdef";
PHP 相关文章推荐
yii操作session实例简介
Jul 31 PHP
php生成随机颜色的方法
Nov 13 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
PHP 500报错的快速解决方法
Dec 14 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP区块查询实现方法分析
May 12 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
php cli换行示例
Apr 22 #PHP
php使用百度天气接口示例
Apr 22 #PHP
phpmailer中文乱码问题的解决方法
Apr 22 #PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 #PHP
自己写了一个php检测文件编码的函数
Apr 21 #PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 #PHP
PHP5中实现多态的两种方法实例分享
Apr 21 #PHP
You might like
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python random从集合中随机选择元素的方法
2019/01/23 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
python小白学习包管理器pip安装
2020/06/09 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
出国导师推荐信
2014/01/16 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
婚前协议书范本两则
2014/10/16 职场文书
2015年工会工作总结
2015/03/30 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript