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 define函数的使用说明
Aug 27 PHP
支持数组的ADDSLASHES的php函数
Feb 16 PHP
PHP 编写大型网站问题集
May 07 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP常用数组函数介绍
Jul 28 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
Jul 29 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
Oct 16 PHP
微信接口生成带参数的二维码
Jul 31 PHP
Laravel-admin之修改操作日志的方法
Sep 30 PHP
php 多继承的几种常见实现方法示例
Nov 18 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在线打包下载功能示例
2016/10/15 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
python获取各操作系统硬件信息的方法
2015/06/03 Python
python发送邮件实例分享
2017/07/28 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
初中同学聚会邀请函
2014/02/03 职场文书
新年爱情寄语
2014/04/08 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
2016高考寄语集锦
2015/12/04 职场文书