[英]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.