最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP將session信息存儲到數(shù)據(jù)庫的類實例

 更新時間:2015年03月04日 16:27:28   作者:OSC首席鍵客  
這篇文章主要介紹了PHP將session信息存儲到數(shù)據(jù)庫的類,實例分析了php封裝的session信息存儲到數(shù)據(jù)庫的類,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了PHP將session信息存儲到數(shù)據(jù)庫的類。分享給大家供大家參考。具體分析如下:

SessionHandlerInterface接口是PHP內(nèi)置的接口,直接實現(xiàn)就行了
具體可以看php手冊關于session_set_save_handler函數(shù)的解釋!

PHP代碼如下:

復制代碼 代碼如下:

/**
* session信息存儲到數(shù)據(jù)庫的類
* 表結構:
* CREATE TABLE IF NOT EXISTS `sessioninfo` (
*  `sid` varchar(255) NOT NULL,
*  `value` text NOT NULL,
*  `expiration` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
*  PRIMARY KEY (`sid`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
*/
class MySessionHandler implements SessionHandlerInterface {
    /**
    * @access private
    * @var object 數(shù)據(jù)庫連接
    */
    private $_dbLink;
    /**
    * @access private
    * @var string 保存session的表名
    */
    Private $_sessionTable;
    /**
    * @access private
    * @var string session名
    */
    private $_sessionName;
    /**
    * @const 過期時間
    */
    const SESSION_EXPIRE = 10;
    public function __construct($dbLink, $sessionTable) {
        if(!is_object($dbLink)) {
            return false;
        }
        $this->_dbLink = $dbLink;
        $this->_sessionTable = $sessionTable;
    }
    /**
    * 打開
    * @access public
    * @param string $session_save_path 保存session的路徑
    * @param string $session_name session名
    * @return integer
    */
    public function open($session_save_path, $session_name) {
        $this->_sessionName = $session_name;
        return 0;
    }
    /**
    * 關閉
    * @access public
    * @return integer
    */
    public function close() {
        return 0;
    }
    /**
    * 關閉session
    * @access public
    * @param string $session_id session ID
    * @return string
    */
    public function read($session_id) {
        $query = "SELECT value FROM {$this->_sessionTable} WHERE sid = {$session_id} AND UNIX_TIMESTAMP(expiration) + " . self::SESSION_EXPIRE . " > UNIX_TIMESTAMP(NOW())";
        $result = $this->_dbLink->query($query);
        if(!isset($value) || empty($value)) {
            $value = "";
            return $value;
        }
        $this->_dbLink->query("UPDATE {$this->_sessionTable} SET expiration = CURRENT_TIMESTAMP() WHERE sid = {$session_id}");
        $value = $result->fetch_array();
        $result->free();
        return $value['value'];
    }
    /**
    * 寫入session
    * @access public
    * @param string $session_id session ID
    * @param string $session_data session data
    * @return integer
    */
    public function write($session_id, $session_data) {
        $query = "SELECT value FROM {$this->_sessionTable} WHERE sid = '{$session_id}' AND UNIX_TIMESTAMP(expiration) + " . self::SESSION_EXPIRE . " > UNIX_TIMESTAMP(NOW())";
        $result = $this->_dbLink->query($query);
        $result = $result->fetch_array();
        if(!empty($result)) {
            $result = $this->_dbLink->query("UPDATE {$this->_sessionTable} SET value = {$session_data} WHERE sid = {$session_id}");
        }
        else{
            $result = $this->_dbLink->query("INSERT INTO {$this->_sessionTable} (sid, value) VALUES ('{$session_id}', '{$session_data}')");
        }
        if($result){
            return 0;
        }
        else{
            return 1;
        }      
    }
    /**
    * 銷魂session
    * @access public
    * @param string $session_id session ID
    * @return integer
    */
    public function destroy($session_id) {
        $result = $this->_dbLink->query("DELETE FROM {$this->_sessionTable} WHERE sid = '{$session_id}'");
        if($result){
            return 0;
        }
        else{
            return 1;
        }
    }
    /**
    * 垃圾回收
    * @access public
    * @param string $maxlifetime session 最長生存時間
    * @return integer
    */
    public function gc($maxlifetime) {
        $result = $this->_dbLink->query("DELETE FROM {$this->_sessionTable} WHERE UNIX_TIMESTAMP(expiration) < UNIX_TIMESTAMP(NOW()) - " . self::SESSION_EXPIRE);
        if($result){
            return 0;
        }
        else{
            return 1;
        }
    }
}
$dbLink = new mysqli("localhost", "root", "root", "test");
$sessionTable = "sessioninfo";
$handler = new MySessionHandler($dbLink, $sessionTable);
session_set_save_handler($handler);
session_start();
$_SESSION['name'] = "test";
echo $_SESSION["name"];
//session_destroy();

希望本文所述對大家的php程序設計有所幫助。

相關文章

  • PHP Socket網(wǎng)絡操作類定義與用法示例

    PHP Socket網(wǎng)絡操作類定義與用法示例

    這篇文章主要介紹了PHP Socket網(wǎng)絡操作類定義與用法,結合實例形式分析了php socket網(wǎng)絡操作類的定義及結合ajax發(fā)送查詢請求等相關使用技巧,需要的朋友可以參考下
    2017-08-08
  • PHP連接Nginx服務器并解析Nginx日志的方法

    PHP連接Nginx服務器并解析Nginx日志的方法

    這篇文章主要介紹了PHP連接Nginx服務器并解析Nginx日志的方法,PHP+Nginx也是目前一種相當流行的服務器搭建方案,需要的朋友可以參考下
    2015-08-08
  • 簡介WordPress中用于獲取首頁和站點鏈接的PHP函數(shù)

    簡介WordPress中用于獲取首頁和站點鏈接的PHP函數(shù)

    這篇文章主要介紹了WordPress中用于獲取首頁和站點鏈接的PHP函數(shù),分別是home_url()和site_url()需要的朋友可以參考下
    2015-12-12
  • PHP封裝的page分頁類定義與用法完整示例

    PHP封裝的page分頁類定義與用法完整示例

    這篇文章主要介紹了PHP封裝的page分頁類定義與用法,結合完整實例形式分析了php封裝的page分頁類具體定義、數(shù)據(jù)庫連接、查詢、樣式及調(diào)用等相關操作技巧,需要的朋友可以參考下
    2018-12-12
  • PHP隱形一句話后門,和ThinkPHP框架加密碼程序(base64_decode)

    PHP隱形一句話后門,和ThinkPHP框架加密碼程序(base64_decode)

    今天一個客戶的服務器頻繁被寫入一句話后門,刪除了還有,原來在程序中加入了如下代碼,大家可以注意下base64_decode函數(shù)的參數(shù)。
    2011-11-11
  • php中文字符截取防亂碼

    php中文字符截取防亂碼

    當漢字被截斷時,根據(jù)編碼規(guī)則他總是要把后邊的其他字符拉過來一起作為漢字解釋,這就是出現(xiàn)亂碼的原因。而值為0x81到0xff與0x00組合始終都顯示為“空” 根據(jù)這一特點,在substr的結果后面補上一個chr(0),就可以防止出現(xiàn)亂碼了
    2008-03-03
  • PHP4和PHP5版本下解析XML文檔的操作方法實例分析

    PHP4和PHP5版本下解析XML文檔的操作方法實例分析

    這篇文章主要介紹了PHP4和PHP5版本下解析XML文檔的操作方法,結合實例形式分析了php4與php5環(huán)境下解析xml文檔的相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2017-05-05
  • PHP使用curl函數(shù)發(fā)送Post請求的注意事項

    PHP使用curl函數(shù)發(fā)送Post請求的注意事項

    這篇文章主要給大家介紹的是PHP使用curl函數(shù)發(fā)送Post請求的一些注意事項,文中通過示例代碼與解釋介紹的很詳細,對大家學習或則使用PHP具有一定的參考借鑒價值,有需要的朋友們可以跟著小編一起來學習學習吧。
    2016-11-11
  • PHP格式化MYSQL返回float類型的方法

    PHP格式化MYSQL返回float類型的方法

    這篇文章主要介紹了PHP格式化MYSQL返回float類型的方法,涉及PHP針對字符串與數(shù)組的相關操作技巧,需要的朋友可以參考下
    2016-03-03
  • PHP基于反射機制實現(xiàn)插件的可插拔設計詳解

    PHP基于反射機制實現(xiàn)插件的可插拔設計詳解

    這篇文章主要介紹了PHP基于反射機制實現(xiàn)插件的可插拔設計,結合實例形式較為詳細的分析了插件的功能、反射機制原理與實現(xiàn)可插拔設計的操作步驟,需要的朋友可以參考下
    2016-11-11

最新評論

仁布县| 阿瓦提县| 兴和县| 德清县| 郓城县| 嘉定区| 临西县| 四会市| 丰原市| 泰顺县| 文山县| 依兰县| 东乡族自治县| 安岳县| 涟水县| 湟源县| 肃宁县| 谷城县| 库尔勒市| 安新县| 宁海县| 垫江县| 乌拉特后旗| 西安市| 长阳| 漠河县| 阿拉善右旗| 鸡东县| 门头沟区| 滨州市| 卢氏县| 云霄县| 云南省| 沾化县| 揭西县| 额敏县| 观塘区| 靖宇县| 铜川市| 建阳市| 满洲里市|