【问题标题】:Session not being stored会话未存储
【发布时间】:2011-10-03 02:42:02
【问题描述】:

我知道这是 2/3 其他问题的重复,但我尝试了提出的解决方案,但它们对我不起作用。我怀疑问题出在 PHP.ini 文件中,或者与服务器文件夹权限有关。

登录页面:

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

//EDIT: forgot to copy paste this, but it is in my code
session_start();

if (isset($_POST['username']) && isset($_POST['password'])) {
    //login function basically checks the posted username and password, then sets some
    //session variables accordingly
    login($_POST['username'], $_POST['password']);
}

if (isset($_SESSION['valid']) && $_SESSION['valid'] === true) {
    header("Location: /HomePage/Home.php");
    exit;
}

...

?>

主页:

<?php

//EDIT: forgot to copy paste this, but it is in my code
session_start();

ini_set('display_errors', 1);
error_reporting(E_ALL);

if (!isset($_SESSION['valid']) || $_SESSION['valid'] !== true) {
    header("Location: /index.php");
    exit;
}

...

?>

现在这是奇怪的部分。根据萤火虫的说法,当我输入有效的用户名和密码时,我会被重定向到主页(如预期的那样)然后我会被重定向回登录页面。我在主页上做了一个 var_dump 的 session 来检查,session 是空的。

编辑2:当我用

替换标题时
echo "Session is " . session_id() . "<br />";

在登录页面上,session_id 为空白。那是问题吗?我该如何解决?

编辑:PHP ini 文件有问题,感谢您的帮助。

【问题讨论】:

    标签: php session


    【解决方案1】:

    我在任何一个 PHP 脚本中都没有看到任何 session_start() 调用。在调用该函数之前,您不会有会话(并且必须在每个使用会话的页面上调用它)。

    【讨论】:

    • 无。我检查了这个。我知道我没有在任何地方清除/覆盖会话。我知道我在页面开头有 session_start,在任何输出之前。
    【解决方案2】:

    您必须调用session_start(); 或在您的php.ini 中配置session.auto_start

    【讨论】:

    • 抱歉,没有正确复制粘贴。
    • 刷新页面后尝试检查 session_id()。应该是一样的。如果不是 - 您的会话机制有问题。修改配置参数。
    猜你喜欢
    • 2013-09-11
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    相关资源
    最近更新 更多