SESSION存放在数据库用法实例

本文实例讲述了SESSION存放在数据库用法分享给大家供大家参考。具体如下:

rush:PHP;"> 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"),"read"),"write"),"destroy"),"gc")); session_start(); // etc... ?>

希望本文所述对大家的PHP程序设计有所帮助。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...