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 mysql索引问题
Jun 07 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
php 使用array函数实现分页
Feb 13 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
php之static静态属性与静态方法实例分析
Jul 30 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
PHP通过curl获取接口URL的数据方法
May 31 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 $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
浅谈php提交form表单
2015/07/01 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
Node 代理访问的实现
2019/09/19 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
Python 中的with关键字使用详解
2016/09/11 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
俄语专业职业生涯规划
2014/02/26 职场文书
书香校园活动方案
2014/02/28 职场文书
日语专业求职信
2014/07/04 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
anaconda python3.8安装后降级
2021/06/11 Python