加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

SESSION存放在数据库用法实例

发布时间:2020-12-13 02:49:15 所属栏目:PHP教程 来源:网络整理
导读:《:SESSION存放在数据库用法实例》要点: 本文介绍了:SESSION存放在数据库用法实例,希望对您有用。如果有疑问,可以联系我们。 PHP应用 本篇章节讲解SESSION存放在数据库用法.供大家参考研究.具体如下: ?php/*CREATE TABLE `ws_sessions` ( `ses

《: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存放在数据库用法实例》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读