簡體   English   中英

為什么session_set_save_handler無法正常工作PHP 5.2

[英]why would session_set_save_handler not be working PHP 5.2

這是代碼,我正在做一個有根據的猜測,即在分配會話var時會調用ess_read 它正在分配值。 有辦法測試嗎?

 function sess_open($sess_path, $sess_name) {


        return true;
    }

    function sess_close() {
        return true;
    }

    function sess_read($sess_id) {

        echo "TEST";
        $result = mysql_query("SELECT Data FROM sessions WHERE SessionID = '$sess_id';");
        if (!mysql_num_rows($result)) {
            $CurrentTime = time();
            mysql_query("INSERT INTO sessions (SessionID, lastseen) VALUES ('$sess_id', $CurrentTime);") or die(mysql_error());

            return '';
        } else {
            extract(mysql_fetch_array($result), EXTR_PREFIX_ALL, 'sess');
            mysql_query("UPDATE sessions SET lastseen = $CurrentTime WHERE SessionID = '$sess_id';");
            return $sess_Data;
        }
    }

    function sess_write($sess_id, $data) {


        $CurrentTime = time();
        mysql_query("UPDATE sessions SET Data = '$data', lastseen = $CurrentTime WHERE SessionID = '$sess_id';");
        return true;
    }

    function sess_destroy($sess_id) {
        mysql_query("DELETE FROM sessions WHERE SessionID = '$sess_id';");
        return true;
    }

    function sess_gc($sess_maxlifetime) {
        $CurrentTime = time();
        mysql_query("DELETE FROM sessions WHERE lastseen + $sess_maxlifetime < $CurrentTime;");
        return true;
    }

    session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
    session_start();
    ini_set('session.gc-maxlifetime', 60);
    $_SESSION['foo'] = "bar";
    $_SESSION['baz'] = "wombat";

回聲$ _SESSION ['baz'];

// ^^^^這會返回袋熊,但為什么不調用sess_read呢?

編輯

OK通過首先檢查session_get_save_handler是否正在使用or die()來解決它

然后在調用它之前設置session_destroy() -這樣就解決了問題。 該會話已在其他位置的包含中開始

如果查看sess_read函數,您會發現它沒有返回您要的$ _SESSION數組中某個鍵的值,它將讀取整個會話內容。

腳本啟動時調用一次讀取功能,腳本結束時調用一次寫入功能

這兩個調用之間的$ _SESSION類似於存儲數據的常規數組,但它是一個超全局變量 (可以從任何作用域訪問它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM