为什么PHP会话不保存页面之间的变量?

时间:2019-06-17 03:03:00

标签: php session

我正在为网站设置管理面板,并且在我的本地(MAMP)服务器上一切正常。我将网站上传到服务器,并且用户身份验证不再起作用。我可以从服务器获得成功,但是当我进入页面时,PHP找不到所需的会话变量,因此将用户重定向回登录页面。

我已经尝试过PHP 5和7。 我尝试在验证时回显会话变量。 我试图简单地将变量存储在一个页面上,然后在同一文件夹的另一页面上读取它,但效果不佳。

page1.php

<?php
session_start();
$_SESSION["userid"] = 1;
?>
<a href="page2.php">To Page2</a>

page2.php

<?php
session_start();
if (!isset($_SESSION["userid"])) {
    header("Location: page1.php");
    die();
}

echo $_SESSION["userid"];

单击page1.php中的链接后,page2.php再次将我重定向到page1.php,没有任何错误。

1 个答案:

答案 0 :(得分:0)

您的网站是否使用了一些负载均衡器?

默认情况下,PHP在服务器内存上创建会话。因此,如果您的网站针对每个请求使用不同的服务器,则$ _SESSION设置值将丢失。在这种情况下,一个好的解决方案是将会话存储在服务器外部,可能是在Redis或Memcached中。