【问题标题】:Can't hold session values无法保存会话值
【发布时间】:2010-12-20 18:20:37
【问题描述】:

我为登录页面和用户页面编写了代码。当用户提供正确的用户名和密码时,我的代码会创建一个会话变量 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 下一个

test1.php:

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

输出:

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

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

这是 phpinfo 的屏幕截图。

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

谢谢。

【问题讨论】:

    标签: php session apache2 session-variables


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      在您的 test1.php 文件中,您缺少 session_start()

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

      您需要在使用会话相关功能的任何文件的顶部添加session_start()

      【讨论】:

        【解决方案3】:

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

        更新

        看起来我被打败了!

        【讨论】:

          猜你喜欢
          • 2019-04-15
          • 2014-03-24
          • 1970-01-01
          • 1970-01-01
          • 2018-06-12
          • 2014-08-23
          • 2019-07-15
          • 1970-01-01
          • 2021-11-26
          相关资源
          最近更新 更多