国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

重寫session的保存機制!

ybak / 1864人閱讀

摘要:當我們所做的系統相對來說比較大的時候,可能會用到的共享機制如呵實現的共享,有很多的方法,但是,在中,個人認為首先要實現對的重寫,才能進一步往下談的共享如果實現的重寫機制呢為我們提供了重寫的函數,我們只需要應用即可操作數據庫的對象構造函數,連

當我們所做的系統相對來說比較大的時候,可能會用到session的共享機制!如呵實現session的共享,有很多的方法,但是,在php中,個人認為首先要實現對session的重寫,才能進一步往下談session的共享!

如果實現session的重寫機制呢?php為我們提供了重寫的函數,session_set_save_handle()我們只需要應用即可!

_db = new Core_DB($config);
        }

        /**
         *  開始session機制時自動調用,即調用session_start()后馬上回調該函數
         *
         *  @param string $sessionSavePath session文件的存儲路徑
         *  @param string $sessionName 默認為PHPSESSID
         *  @return boolan
         *  @access public
         */
        public function open($sessionSavePath, $sessionName)
        {
            /* 我們也可以在這里連接數據庫 */
            return true;
        }

        /**
         *  在腳本執行完畢后,在write回調之后,進行調用
         *
         *  @access public
         *  @return boolean
         */
        public function close()
        {
            mysql_close($this->_db->_connectid);
            return true;
        }

        /**
         *  開啟session機制后自動調用,在open回調之后馬上調用
         *
         *  @param string $sessionID
         *  @return String
         *  @access public
         */
        public function read($sessionID)
        {
            $returnData = "";
            $sessionID = trim($sessionID);
            $sql = " select * from session where session_id="$sessionID" ";
            $sessionRecord = $this->_db->getToArray($sql);
            if(is_array($sessionRecord)) {
                $returnData = $sessionRecord["sessiondata"];
            }
            return $returnData;
        }

        /**
         *  當腳本執行完畢后,回調該函數
         *
         *  @param $sessionID string
         *  @param string $sessionData 要保存的session數據
         *  @return mixed
         *  @access public
         */
        public function write($sessionID, $sessionData) 
        {
            $result = false;
            $sessionID = trim($sessionID);
            $sessionData = trim($sessionData);
            if(!empty($sessionData)) {
                $addTime = date("Y-m-d H:i:s");
                $sql = " select * from session where session_id = "$sessionID" ";
                $sessionRecord = $this->_db->query($sql);//boolean
                if(count($sessionRecord)) {//存在更新
                    $sql = " update session set sessionData = "$sessionData", addtime = "$addTime" where session_id = "$sessionID" ";
                } else {//不存在,插入
                    $sql = " inset into session values ("$sessionID", "$sessionData", "$addTime") ";
                }
                $this->_db->query($sql);
            }
            return $result;
        }

        /**
         *  當調用session_destory()函數的時候,對該函數進行回調
         *
         *  @param string $sessioinID
         *  @return boolean
         *  @access public
         */
        public function destory($sessionID)
        {
            $result = false;
            $sql = " delete from session where session_id = "$sessionID" ";
            $result = $this->_db->query($sql);
            return $result;
        }

        /**
         *  session的垃圾回收機制,當session數據超過了靜默時間,按照概率刪除 默認概率:1/1000
         *
         *  @param $maxliefttime 靜默時間,默認為1440秒
         *  @access public
         *  @return boolean
         */
        public function gc($maxlifetime)
        {
            $result = false;
            $expireTime = time()-$maxlifetime;
            $sql = " delete from session where addtime < $expireTime ";
            $result = $this->_db->query($sql);
            return $result;
        }
    }
    $session = new Session();
    session_set_save_handler(
                                array($session, "open"),
                                array($session, "close"),
                                array($session, "read"),
                                array($session, "write"),
                                array($session, "destory"),
                                array($session, "gc")
                            );
    session_start();
?


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20800.html

相關文章

  • Cookie與Session區別

    摘要:的作用就是為了解決協議無狀態的缺陷所作的努力。路徑與域一起構成的作用范圍。這種生命期為瀏覽器會話期的被稱為會話。而機制采用的是一種在服務器端保持狀態的解決方案。跨域名如今被普遍用在網絡中,例如等。僅在他所在的域名內有效。 前言 本文分別對Cookie與Session做一個介紹和總結,并分別對兩個知識點進行對比分析,讓大家對Cookie和Session有一個更深入的了解,并對自己的開發工...

    kumfo 評論0 收藏0
  • Cookie/Session機制詳解

    摘要:要跟蹤該會話,必須引入一種機制。服務器檢查該,以此來辨認用戶狀態。提示中保存中文只能編碼。不推薦使用等中文編碼,因為瀏覽器不一定支持,而且也不支持編碼。這是由的隱私安全機制決定的。隱私安全機制能夠禁止網站非法獲取其他網站的。會話(Session)跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。Cookie通過在客戶端記錄信息確定用戶身份...

    番茄西紅柿 評論0 收藏0
  • 理解HTTP session原理及應用

    摘要:理解原理及應用一術語在我的經驗里,這個詞被濫用的程度大概僅次于,更加有趣的是與在某些語境下的含義是相同的。其中的作用就是為了解決協議無狀態的缺陷所作出的努力。 理解HTTP session原理及應用 一、術語session 在我的經驗里,session這個詞被濫用的程度大概僅次于transaction,更加有趣的是transaction與session在某些語境下的含義是相同的。 ...

    dreamGong 評論0 收藏0
  • session和cookie

    摘要:的作用就是為了解決協議無狀態的缺陷所作的努力。的內容主要包括名字,值,過期時間,路徑和域。這種生命期為瀏覽器會話期的被稱為會話。而機制采用的是一種在服務器端保持狀態的解決方案。中的有效期默認分鐘,也就是說,客戶端超過分鐘,當前就會失效。 會話控制是什么? cookie和session都是跟蹤整個會話過程的技術手段。而會話,就是用戶通過瀏覽器和服務器的一次通話。 為什么要有會話控制? 因...

    ruicbAndroid 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<