[英]How do I get a value from PHP's defualt session when a custom session handler is in use?
我有一個非CMS頁面,其中使用PHP的默認會話處理程序存儲會話值。 即:
session_start();
$_SESSION['MyVar'] = true;
在CMS的另一頁上,我需要測試變量是否為true。 但是,CMS使用它自己的會話處理程序,因此當我嘗試讀取該變量時,它是未定義的,因為它是在CMS的會話存儲系統中尋找它的,而不是PHP的默認值。
如何切換一會兒並從默認會話存儲中讀取一個值,然后恢復CMS使其正確運行?
就像是:
$SessionHandler = session_get_current_handler(); // save the CMS session handler
session_use_default(); // Use PHP's default handler
$Value = $_SESSION['MyVar']; // Get the value I need
session_set_handler($SessionHandler); // Restore CMS handler
在某些時候,您將需要調用session_start()
來填充$_SESSION
超全局數組。 您可以“調用” session_write_close()
,更改處理程序,然后再次執行session_start()
。
試試看,它看起來像
$Sessionhandler = session_get_current_handler();
session_use_default();
session_start();
$value = $_SESSION['var'];
session_write_close();
session_set_handler($Sessionhandler);
session_start();
我幾乎懷疑它是否會起作用。 它“可能”工作的唯一原因是session_write_close()
因為如果您嘗試兩次調用session_start()
,PHP通常會拋出E_NOTICE
。
根據實現的不同,它可能會嘗試再次獲取數據。 但是很多人在文檔注釋中看到,即使在session_write_close()
之后,兩次調用session_start()
也會發生奇怪的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.