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 相关文章推荐
ThinkPHP php 框架学习笔记
Oct 30 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
zend framework中使用memcache的方法
Mar 04 PHP
php实现图片按比例截取的方法
Feb 06 PHP
php使用GD2绘制几何图形示例
Feb 15 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
PHP+MySql实现一个简单的留言板
Jul 19 PHP
PHP实现计算器小功能
Aug 28 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
php cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
python实现的Iou与Giou代码
2020/01/18 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
JPA的特点
2014/10/25 面试题
团工委书记自荐书范文
2013/12/17 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
终止劳动合同协议书
2014/10/05 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers