我遇到了类似的问题(尽管我想在另一个 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,如果您使用其他版本,此解决方案可能无法正常工作。