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中通过curl smtp发送邮件
Jun 05 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
php cookie工作原理与实例详解
Jul 18 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 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
杏林同学录(一)
2006/10/09 PHP
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
javascript this用法小结
2008/12/19 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
python安装twisted的问题解析
2018/08/21 Python
python实现排序算法解析
2018/09/08 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
Java面试题汇总
2015/12/06 面试题
酒店副总经理岗位职责范本
2014/02/04 职场文书
实习生求职自荐信
2014/02/07 职场文书
《石榴》教学反思
2014/03/02 职场文书
中学校庆方案
2014/03/17 职场文书
反邪教警示教育方案
2014/05/13 职场文书
2014年法务工作总结
2014/12/11 职场文书
实习单位指导教师评语
2014/12/30 职场文书
实习介绍信模板
2015/01/30 职场文书
团员个人总结
2015/02/26 职场文书
2015教师年度考核评语
2015/03/25 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript