簡體   English   中英

使用自定義會話處理程序時,如何從PHP的defualt會話中獲取值?

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

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