我想在用户登录网站时为会话变量赋值。我读到我必须在页面顶部明确启动会话才能执行此操作。所以我插入了:
if (!isset($_SESSION)){
session_start();
echo "started";
}
我注意到的第一件事是每次重新加载页面时都会显示“已启动”。这是预期的行为吗?我假设我第二次加载页面,会话应该已经存在,因此“启动”将不会显示。
在我的页面中,我有:
$_SESSION['id']=2;
echo "<p>Your session ID is: " . $_SESSION['id'] . "</p>";
在“echo”语句中正确显示ID。因此,即使在为会话变量赋值后,当我重新加载页面时,它也会将“已启动”放在顶部。
我做错了吗?谢谢!
答案 0 :(得分:2)
这是预期的行为,您需要在每次加载页面时将任何输出发送到浏览器之前调用session_start()
,这就是您每次都发生回声的原因。如果在这种情况下声明有点不必要,你应该只是在没有if。
session_start();
例如,除非您致电$_SESSION
,否则永远无法访问session_start()
变量,尽管浏览器会话中 存在。调用session_start()
只允许您访问该超全局数组。
答案 1 :(得分:-1)
您需要将session_start()
放在文件的顶部。
否则,您将无法使用$_SESSION
数组。