无法保存会话值

时间:2010-12-20 18:20:38

标签: php session apache2 session-variables

我已经为登录页面和用户页面编写了代码。当用户提供正确的用户名和密码时,我的代码会创建一个会话变量rid,然后将用户重定向到用户页面。

但是我面临一个奇怪的问题,会话变量仍保留在登录页面中,但是当代码重定向到用户页面时会显示Notice: Undefined variable: _SESSION in /var/www/Avatar/test1.php on line 6

只是为了检查会话是否正常工作我试图在两个页面上输出$_SESSION['rid'],它在登录页面上显示rid,但在用户页面上我得到了上述错误。

所以我创建了两个示例页面test.phptest1.php。我在test.php中创建会话变量,然后尝试在test1.php中显示。

test.php:

<?php
     $result=session_start();
     $_SESSION["Searock"]="Searock";
     echo $result;
     echo $_SESSION["Searock"];
?>
<html>
     <body>
          <a href="test1.php">next</a>
     </body>
</html>

输出

  

1 Searock next

test1.php:

<?php
    echo $_SESSION["Searock"];
?>

输出

  

注意:未定义的变量:_SESSION   在/var/www/Avatar/test1.php第2行

我不知道问题是在我的代码中还是在PHP环境变量中。

这是phpinfo的屏幕截图。 alt text

有人能指出我正确的方向吗?

感谢。

3 个答案:

答案 0 :(得分:1)

在test1.php文件中,您遗漏了session_start()

<?php
    session_start();
    echo $_SESSION["Searock"];
?>

您需要在使用会话相关功能的任何文件上放置session_start()

答案 1 :(得分:1)

您需要在每个页面上调用session_start()。这将开始新会话或恢复以前保存的会话。在尝试访问任何$ _SESSION变量之前执行此操作,您应该很高兴。

<强>更新

看起来我被打败了!

答案 2 :(得分:1)

除非启用session.auto_start,否则您需要在希望会话可用的每个页面上明确调用session_start

请在 test1.php 中调用session_start并在访问之前检查$_SESSION["Searock"]是否存在:

<?php
    session_start();
    if (isset($_SESSION["Searock"])) {
        echo $_SESSION["Searock"];
    }
?>