SESSION存放在数据库用法实例


Posted in PHP onAugust 08, 2015

本文实例讲述了SESSION存放在数据库用法。分享给大家供大家参考。具体如下:

<?php
/*
CREATE TABLE `ws_sessions` (
 `session_id` varchar(255) binary NOT NULL default '',
 `session_expires` int(10) unsigned NOT NULL default '0',
 `session_data` text,
 PRIMARY KEY (`session_id`)
) TYPE=InnoDB;
*/
class session {
 // session-lifetime
 var $lifeTime;
 // mysql-handle
 var $dbHandle;
 function open($savePath, $sessName) {
 // get session-lifetime
 $this->lifeTime = get_cfg_var("session.gc_maxlifetime");
 // open database-connection
 $dbHandle = @mysql_connect("localhost","root","");
 $dbSel = @mysql_select_db("test",$dbHandle);
 // return success
 if(!$dbHandle || !$dbSel)
  return false;
 $this->dbHandle = $dbHandle;
 return true;
 }
 function close() {
 $this->gc(ini_get('session.gc_maxlifetime'));
 // close database-connection
 return @mysql_close($this->dbHandle);
 }
 function read($sessID) {
 // fetch session-data
 $res = mysql_query("SELECT session_data AS d FROM ws_sessions
    WHERE session_id = '$sessID'
    AND session_expires > ".time(),$this->dbHandle);
 // return data or an empty string at failure
 if($row = mysql_fetch_assoc($res))
  return $row['d'];
 return "";
 }
 function write($sessID,$sessData) {
 // new session-expire-time
 $newExp = time() + $this->lifeTime;
 // is a session with this id in the database?
 $res = mysql_query("SELECT * FROM ws_sessions
    WHERE session_id = '$sessID'",$this->dbHandle);
 // if yes,
 if(mysql_num_rows($res)) {
  // ...update session-data
  mysql_query("UPDATE ws_sessions
    SET session_expires = '$newExp',
    session_data = '$sessData'
    WHERE session_id = '$sessID'",$this->dbHandle);
  // if something happened, return true
  if(mysql_affected_rows($this->dbHandle))
  return true;
 }
 // if no session-data was found,
 else {
  // create a new row
  mysql_query("INSERT INTO ws_sessions (
    session_id,
    session_expires,
    session_data)
    VALUES(
    '$sessID',
    '$newExp',
    '$sessData')",$this->dbHandle);
  // if row was created, return true
  if(mysql_affected_rows($this->dbHandle))
  return true;
 }
 // an unknown error occured
 return false;
 }
 function destroy($sessID) {
 // delete session-data
 mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'",$this->dbHandle);
 // if session was deleted, return true,
 if(mysql_affected_rows($this->dbHandle))
  return true;
 // ...else return false
 return false;
 }
 function gc($sessMaxLifeTime) {
 // delete old sessions
 mysql_query("DELETE FROM ws_sessions WHERE session_expires < ".time(),$this->dbHandle);
 // return affected rows
 return mysql_affected_rows($this->dbHandle);
 }
}
$session = new session();
session_set_save_handler(array(&$session,"open"),
    array(&$session,"close"),
    array(&$session,"read"),
    array(&$session,"write"),
    array(&$session,"destroy"),
    array(&$session,"gc"));
session_start();
// etc...
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP 高手之路(三)
Oct 09 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
php实现简单的上传进度条
Nov 17 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 #PHP
摘自织梦CMS中的图片处理类
Aug 08 #PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 #PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 #PHP
PHP模拟asp中response类实现方法
Aug 08 #PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 #PHP
PHP中使用curl伪造IP的简单方法
Aug 07 #PHP
You might like
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
淘宝搜索框效果实现分析
2011/03/05 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
探究Python中isalnum()方法的使用
2015/05/18 Python
Python栈类实例分析
2015/06/15 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
大学应届毕业生个人求职信
2013/09/23 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
法人代表授权委托书
2014/04/08 职场文书
二年级小学生评语
2014/04/21 职场文书
社区活动总结报告
2014/05/05 职场文书
敬老月活动总结
2014/08/28 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
高质量“欢迎词”
2019/04/03 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript