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+Html+缓存
Dec 20 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
php绘制一条直线的方法
Jan 24 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
laravel请求参数校验方法
Oct 10 PHP
TP5框架实现签到功能的方法分析
Apr 05 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 网页过期时间的控制代码
2009/06/29 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
js实现微信聊天效果
2020/08/09 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Python如何急速下载第三方库详解
2020/11/02 Python
员工培训邀请函
2014/01/11 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
合作协议书范文
2014/08/20 职场文书
2014年终工作总结范本
2014/12/15 职场文书
员工辞职信怎么写
2015/02/27 职场文书
酒店温馨提示语
2015/07/14 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
用golang如何替换某个文件中的字符串
2021/04/25 Golang
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技