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 相关文章推荐
非常不错的MySQL优化的8条经验
Mar 24 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 17 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
Python装饰器语法糖
2019/01/02 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
python 导入数据及作图的实现
2019/12/03 Python
Python中if有多个条件处理方法
2020/02/26 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
管理站站长岗位职责
2013/11/27 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
大学生志愿者感言
2014/01/15 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
初中生物教学随笔
2015/08/15 职场文书
如何书写授权委托书?
2019/06/25 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
React自定义hook的方法
2022/06/25 Javascript
mysql全面解析json/数组
2022/07/07 MySQL