我想我错过了一些明显的东西。我在页面的最顶部开始了一个会话。在此之下,我有以下代码。当从请求的页面显示var 转储输出"one"
时。刷新 var 转储后 puts NULL
。为什么这没有得到保存?
if($_REQUEST["page"] == 1) {
$_SESSION["one"] = true;
}
var_dump($_SESSION["one"]);
我想我错过了一些明显的东西。我在页面的最顶部开始了一个会话。在此之下,我有以下代码。当从请求的页面显示var 转储输出"one"
时。刷新 var 转储后 puts NULL
。为什么这没有得到保存?
if($_REQUEST["page"] == 1) {
$_SESSION["one"] = true;
}
var_dump($_SESSION["one"]);
首先,您需要确保在尝试使用之前启动会话。其次,建议您指定 POST 或 GET,而不是通常使用 REQUEST。如果你想支持 GET 或 POST,你可以这样做:
// Begin Session Management
session_start();
// Check both GET and POST for the parameter
if($_GET['page'] == 1 || $_POST['page'] ) {
// Modify the session
$_SESSION["one"] = true;
}
// See what we ended up with in the session.
var_dump($_SESSION["one"]);
这对我有用,但我使用 memcache 作为我的会话会话处理程序。在 php.ini 中验证您自己的会话处理程序,并确保会话处理程序正常工作。此外,如果您正在重定向、设置新位置或以不寻常的方式退出,请确保正确关闭会话。
如果您session_start()
声称在页面顶部有,那么您的代码应如下所示:
session_start();
if($_REQUEST["page"] == 1) {
$_SESSION["one"] = true;
}
var_dump($_SESSION["one"]);
毫无疑问,这应该 100% 有效。还有其他一些东西阻止它在您未提供的代码中工作。我的第一个猜测是某种会话破坏。