文档章节

object- and mysql-based session-handler

NILYANG
 NILYANG
发布于 2014/09/18 18:03
字数 309
阅读 34
收藏 1

object- and mysql-based session-handler, requires the following table: 

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; 

<?php 
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("server","user","password"); 
       
$dbSel = @mysql_select_db("database",$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(); 

本文转载自:http://php.net/manual/en/function.session-write-close.php

NILYANG
粉丝 14
博文 100
码字总数 19038
作品 0
杭州
高级程序员
私信 提问
memcached session in symfony

方法1: If you use the full stack Symfony framework, than configuring memcached as a session handler is as simple as specifying it in your php.ini: Make sure that the is set to......

jims
2016/11/13
8
0
mina例子 中文+英文+源码下载

例子下载地址:http://blog.csdn.net/hujunil/article/details/9923381。 英文: This tutorial will walk you through the process of building a MINA based program. This tutorial will......

k_k_anna
2015/01/26
255
0
A Note on Spring Boot - 3

Download spring-boot-example.zip - 7.5 KB Introduction This is a note on Spring Boot and Hibernate. Background This is a note on Spring Boot and Hibernate. The attached Maven pr......

Dr. Song Li
2017/12/18
0
0
Spring security

Spring security is based on URL pattern, each URL pattern has an associated chain of interceptors that handles various aspect of security Eg. no security control......

zhanjia
2015/04/08
0
0
php将session中的数据保存到mysql

php的session默认是以文件方式保存在服务器端,并且在客户端使用cookie保存变量,这就会出现一个问题,当一个用户由于某种安全原因关闭了 浏览器的cookie,程序中的session相关操作将无法执行...

逸舟
2011/03/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EasyExcel

<!-- alibaba EasyExcel escel导入导出 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.0.0-RELEASE</version> </dependency>......

少年已不再年少
34分钟前
2
0
解决:warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

代码 static int CheckOneReg(uint8_t busNo, char *title, int32_t addr, uint32_t *val, BOOL isPrintfNL, ErrMsg_t const *pMsg)res |= CheckOneReg(busNo,"fwVer:", HALREG_FW_VER, ......

SamXIAO
34分钟前
1
0
jenkins搭建全流程

安装环境   操作系统:linux   软件:jdk 8   软件:tomcat(apache-tomcat-7.0.90) 软件:jenkins 软件:maven 软件:git 1.1安装步骤 1.1.1安装jdk 由于Jenkins是基于Java开发的,安...

shzwork
41分钟前
1
0
Java的战争

本文来自微信公众号: 金捷幡(ID:jin-jiefan) ,作者:金捷幡,封面:拉里·埃里森(东方IC) 2019年5月,彻底撕破脸的特朗普掀起对华为的战争,谷歌被迫吊销了华为的Android授权。开源软...

Java领航员
今天
9
0
超详细的LM3414MRX/NOPB规格参数介绍就在这里

超详细的LM3414MRX/NOPB规格参数介绍就在这里 描述 LM3414和LM3414MRX/NOPB是具有1-A 60 W(1)共阳极功能的恒流降压LED驱动器。它们适用于驱动单串3-W HBLED,效率高达96%。它们可接受4.5...

不能吃肉的仙女
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部