使用PHP会话变量来保持用户登录网站

时间:2014-02-24 19:47:40

标签: php

我想在用户登录网站时为会话变量赋值。我读到我必须在页面顶部明确启动会话才能执行此操作。所以我插入了:

if (!isset($_SESSION)){
    session_start();
    echo "started";
}

我注意到的第一件事是每次重新加载页面时都会显示“已启动”。这是预期的行为吗?我假设我第二次加载页面,会话应该已经存在,因此“启动”将不会显示。

在我的页面中,我有:

$_SESSION['id']=2;
echo "<p>Your session ID is: " . $_SESSION['id'] . "</p>";

在“echo”语句中正确显示ID。因此,即使在为会话变量赋值后,当我重新加载页面时,它也会将“已启动”放在顶部。

我做错了吗?谢谢!

2 个答案:

答案 0 :(得分:2)

这是预期的行为,您需要在每次加载页面时将任何输出发送到浏览器之前调用session_start(),这就是您每次都发生回声的原因。如果在这种情况下声明有点不必要,你应该只是在没有if。

的情况下调用它
session_start();

例如,除非您致电$_SESSION,否则永远无法访问session_start()变量,尽管浏览器会话中 存在。调用session_start()只允许您访问该超全局数组。

答案 1 :(得分:-1)

您需要将session_start()放在文件的顶部。 否则,您将无法使用$_SESSION数组。