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 危险函数解释 分析
Apr 22 PHP
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
PHP可变函数的使用详解
Jun 14 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
PHP Static延迟静态绑定用法分析
Mar 16 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
YII框架中使用memcache的方法详解
Aug 02 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 断点续传实例详解
2017/11/11 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
jQuery 位置插件
2008/12/25 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
Python字符遍历的艺术
2008/09/06 Python
Python中文字符串截取问题
2015/06/15 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
python实现多线程端口扫描
2019/08/31 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
人力资源专员岗位职责
2014/01/30 职场文书
师恩难忘教学反思
2014/04/27 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
写景作文评语集锦
2014/12/25 职场文书
合同纠纷调解书
2015/05/20 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
HTML基础详解(下)
2021/10/16 HTML / CSS
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
python多线程方法详解
2022/01/18 Python