我在模板中有一个表单,该表单发布到PHP脚本。此脚本在$ _SESSION数组中设置一些变量,然后使用标准重定向回同一页面:
header("Location: index.php?page=enquiry-form");
问题是每当重定向后加载页面时,会话只包含以下三个变量:
......我的全部都消失了。
用户无需登录即可使用该表单(实际上该站点根本不使用登录)。
任何人都可以提出任何我不做/做错的事吗?
谢谢, 富
答案 0 :(得分:2)
我遇到了同样的问题并在重定向后通过addin exit()修复了它以保存会话:
header("Location: index.php?page=enquiry-form");
exit();
答案 1 :(得分:1)
我遇到了类似的问题(虽然我想在另一个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,如果您使用其他版本,此解决方案可能无法使用。