我已经为登录页面和用户页面编写了代码。当用户提供正确的用户名和密码时,我的代码会创建一个会话变量rid,然后将用户重定向到用户页面。
但是我面临一个奇怪的问题,会话变量仍保留在登录页面中,但是当代码重定向到用户页面时会显示Notice: Undefined variable: _SESSION in /var/www/Avatar/test1.php on line 6
。
只是为了检查会话是否正常工作我试图在两个页面上输出$_SESSION['rid']
,它在登录页面上显示rid,但在用户页面上我得到了上述错误。
所以我创建了两个示例页面test.php
和test1.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的屏幕截图。
有人能指出我正确的方向吗?
感谢。
答案 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"];
}
?>