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 相关文章推荐
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
php中的一些数组排序方法分享
Jul 20 PHP
php 生成短网址原理及代码
Jan 23 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
linux中cd命令使用详解
Jan 08 PHP
PHP实现C#山寨ArrayList的方法
Jul 16 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
python不带重复的全排列代码
2013/08/13 Python
Python 探针的实现原理
2016/04/23 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
python创建n行m列数组示例
2019/12/02 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Python如何用filter函数筛选数据
2020/03/05 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
物业管理求职自荐信
2013/09/25 职场文书
中学生家长评语大全
2014/04/16 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
党课主持词大全
2015/06/30 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
浅谈MySQL user权限表
2021/06/18 MySQL
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL