SESSION存放在数据库用法实例
发布时间:2020-12-13 02:49:15 所属栏目:PHP教程 来源:网络整理
导读:《:SESSION存放在数据库用法实例》要点: 本文介绍了:SESSION存放在数据库用法实例,希望对您有用。如果有疑问,可以联系我们。 PHP应用 本篇章节讲解SESSION存放在数据库用法.供大家参考研究.具体如下: ?php/*CREATE TABLE `ws_sessions` ( `ses
《:SESSION存放在数据库用法实例》要点: PHP应用本篇章节讲解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"),"read"),"write"),"destroy"),"gc")); session_start(); // etc... ?> 希望本文所述对大家的php程序设计有所赞助. 《:SESSION存放在数据库用法实例》是否对您有启发,欢迎查看更多与《:SESSION存放在数据库用法实例》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |