0

我想我错过了一些明显的东西。我在页面的最顶部开始了一个会话。在此之下,我有以下代码。当从请求的页面显示var 转储输出"one"时。刷新 var 转储后 puts NULL。为什么这没有得到保存?

if($_REQUEST["page"] == 1) {
    $_SESSION["one"] = true;
}

var_dump($_SESSION["one"]);
4

2 回答 2

0

首先,您需要确保在尝试使用之前启动会话。其次,建议您指定 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 中验证您自己的会话处理程序,并确保会话处理程序正常工作。此外,如果您正在重定向、设置新位置或以不寻常的方式退出,请确保正确关闭会话。

于 2013-08-14T15:52:39.987 回答
0

如果您session_start()声称在页面顶部有,那么您的代码应如下所示:

session_start();

if($_REQUEST["page"] == 1) {
    $_SESSION["one"] = true;
}

var_dump($_SESSION["one"]);

毫无疑问,这应该 100% 有效。还有其他一些东西阻止它在您未提供的代码中工作。我的第一个猜测是某种会话破坏。

于 2013-08-14T17:27:03.717 回答