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+JS无限级可伸缩菜单详解(简单易懂)
Jan 02 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
解析argc argv在php中的应用
Jun 24 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
php一个解析字符串排列数组的方法
May 12 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 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
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
Javascript中的数学函数
2007/04/04 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
js封装成插件的步骤方法
2017/09/11 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
微信小程序时间戳转日期的详解
2019/04/30 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
在python中使用with打开多个文件的方法
2019/01/07 Python
超简单使用Python换脸实例
2019/03/27 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
全球性的女装店:storets
2019/06/12 全球购物
会计自我鉴定
2014/02/04 职场文书
旅游市场营销方案
2014/03/09 职场文书
移风易俗倡议书
2014/04/15 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
家长会开场白和结束语
2015/05/29 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang