我也曾有過類似的問題(儘管我想在另一個php文件中使用來自CMS Made Simple會話的數據)。對我而言,原因如下(如我對該問題的評論所述):
CMS Made Simple(CMS從現在開始)的確會生成自己的會話名稱。這意味着當你在一個單獨的php文件中運行session_start()時,它不會有相同的會話名稱。因此,php文件將無法訪問CMS的會話數據,CMS將無法訪問php文件的會話數據。
該解決方案邏輯上遵循原因,您需要它們都使用相同的會話名稱。 CMS將其會話名稱設置爲include.php
,該名稱應位於應用的根文件夾中。
$dirname = dirname(__FILE__);
...
$session_key = substr(md5($dirname), 0, 8);
#Setup session with different id and start it
@session_name('CMSSESSID' . $session_key);
所以,在你的PHP文件,您需要(前調用session_start();
)執行以下操作:
//Substitute the string $dirname for the result of __FILE__ in **include.php**!!!
$dirname = '/data/web/somefolder/someotherfolder/'
$session_key = substr(md5($dirname), 0, 8);
@session_name('CMSSESSID' . $session_key);
//Now you can call session_start();
這樣做可以讓你的PHP文件訪問CMS的會話。如果你使用任何在會話中放入重要數據的插件,你應該小心不要擦除任何數據。
注意:我使用CMS版本1.8.2,如果您使用不同的版本,此解決方案可能無法正常工作。
我曾經有過類似的問題(我現在再次遇到過),我相信這個問題是由CMS Made Simple造成的,不會與您的常規PHP共享會話。 – Joep