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 相关文章推荐
真正的ZIP文件操作类(php)
Jul 21 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
解析Extjs与php数据交互(增删查改)
Jun 25 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
php实现简单加入购物车功能
Mar 07 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
为你总结一些php系统类函数
2015/10/21 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
Python数据操作方法封装类实例
2017/06/23 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
关于环保的标语
2014/06/13 职场文书
单位婚育证明范本
2014/11/21 职场文书
入队仪式主持词
2015/07/04 职场文书
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS