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

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

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

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

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

PHP代碼如下:

復(fù)制代碼 代碼如下:

/**
* session信息存儲(chǔ)到數(shù)據(jù)庫(kù)的類
* 表結(jié)構(gòu):
* 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ù)庫(kù)連接
    */
    private $_dbLink;
    /**
    * @access private
    * @var string 保存session的表名
    */
    Private $_sessionTable;
    /**
    * @access private
    * @var string session名
    */
    private $_sessionName;
    /**
    * @const 過期時(shí)間
    */
    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;
    }
    /**
    * 關(guān)閉
    * @access public
    * @return integer
    */
    public function close() {
        return 0;
    }
    /**
    * 關(guān)閉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 最長(zhǎng)生存時(shí)間
    * @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();

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

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

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

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

    PHP連接Nginx服務(wù)器并解析Nginx日志的方法

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

    簡(jiǎn)介WordPress中用于獲取首頁(yè)和站點(diǎn)鏈接的PHP函數(shù)

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

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

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

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

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

    php中文字符截取防亂碼

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

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

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

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

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

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

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

    PHP基于反射機(jī)制實(shí)現(xiàn)插件的可插拔設(shè)計(jì)詳解

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

最新評(píng)論

阿勒泰市| 耿马| 濉溪县| 郸城县| 洱源县| 辽阳县| 静乐县| 图木舒克市| 临湘市| 兰溪市| 宜黄县| 牙克石市| 甘肃省| 兰溪市| 格尔木市| 桃源县| 湟源县| 三江| 衡东县| 玉溪市| 原阳县| 册亨县| 夏河县| 肇州县| 五河县| 鹤壁市| 如皋市| 双峰县| 双牌县| 海宁市| 肥西县| 磐石市| 潮安县| 锡林浩特市| 阿拉尔市| 昂仁县| 海兴县| 辽中县| 金塔县| 盐亭县| 阿城市|