0

我正在尝试用 PHP 制作一个登录系统。我已经让所有数据库工作正常,但试图保存和加载会话,所以用户在浏览我的网站时登录是不工作的。我这样设置会话信息:

session_start();
...database code
if($count==1){
//log in info correct, save to session and redirect back.
$_SESSION['username'] =$username;
$_SESSION['loggedin'] = "true";

header("location:../index.php");
}

然后,回到索引页面。

  <?php
  session_start();
  if(!isset($_SESSION['loggedin'])){
  echo "You must be logged in!";    
  }else{
  echo "You are logged in"; 
  }
?>

这段代码都发生在页面顶部,在任何 html 之前。即使在登录后,它也会显示“您必须登录”任何帮助都会很棒:) 谢谢

4

3 回答 3

0

如果您正在检查会话,请使用 empty() 而不是 isset()。如果创建了数组,则 isset() 返回 true,而不是如果键匹配。

if(!empty($_SESSION['loggedin'])){
  //do the checks to verify the person

} else {
  //they aren't logged in

}
于 2013-03-28T19:16:18.007 回答
0

我试过这个,似乎工作找到。只需在 if($count ... 之前声明变量并将 isset 更改为空。

        $_SESSION['loggedin'] = "";

        if($count == 1)
        {
            /*same thing */
        }


        if(!empty($_SESSION['loggedin']))
        {
            echo "You are logged in";  
        }else
        {
            echo "You must be logged in!";   
        }

另外imo,我认为将标题放在回声所在的位置会更好。

于 2013-03-28T18:58:36.807 回答
-2

你的cookies被禁用了吗?如果是,请启用并检查。

你的代码看起来很好,如果$count真的等于 1,SESSION 应该会轻而易举地工作。

如果不是这种情况,请检查您的 phpinfo,它应该如下所示:

                 session
Session Support                 enabled
Registered save handlers            files user mm sqlite
Registered serializer handlers  php php_binary wddx 
于 2013-03-28T19:04:32.383 回答