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编程语言开发动态WAP页面
Oct 09 PHP
PHP用户指南-cookies部分
Oct 09 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
实现获取http内容的php函数分享
Feb 16 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
PHP构造二叉树算法示例
Jun 21 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
PHP addcslashes()函数讲解
Feb 03 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下载远程文件类(支持断点续传)
2008/11/14 PHP
php继承的一个应用
2011/09/06 PHP
php中stream(流)的用法
2014/03/25 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
详解PHP归并排序的实现
2016/10/18 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
中考冲刺决心书
2014/03/11 职场文书
小学一年级评语大全
2014/04/22 职场文书
道德演讲稿
2014/05/21 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
投资合作意向书范本
2015/05/08 职场文书
孔子观后感
2015/06/08 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python