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 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
Oct 31 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
php获取apk包信息的方法
Aug 15 PHP
浅析php原型模式
Nov 25 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
php json相关函数用法示例
Mar 28 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 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分页函数
2016/07/20 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
关于this和self的使用说明
2010/08/01 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
PyQt5每天必学之关闭窗口
2018/04/19 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
给校长的建议书100字
2014/05/16 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2016新年感言
2015/08/03 职场文书
热爱劳动主题班会
2015/08/14 职场文书
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
Redis数据同步之redis shake的实现方法
2022/04/21 Redis