微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SESSION存放在数据库用法实例

《:SESSION存放在数据库用法实例》要点:
本文介绍了: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存放在数据库用法实例》相关教程,学精学透。编程之家 jb51.cc为您提供精彩教程。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐