$ _SESSION在第二次登录后工作

时间:2017-01-19 02:03:42

标签: php session

你好我有一个奇怪的问题,我有一个登录页面index.php:我在哪个登录页面设置:

$_SESSION['user'] = $row['username'];

已成功登录的用户。 然后在登录页面上,我检查用户是否已登录,如果没有重定向到登录页面:

if(!$session->is_loggedin()) {
    // session no set redirects to login page
    $session->redirect('index.php');
}

在课程文件中:

public function is_loggedin() {
    if(isset($_SESSION['user'])) {
        return true;
    }
}

所以我面临的问题只出现在本地主机上的互联网服务器上xampp一切正常。问题是我是否登录该站点。然后,如果注销并输入登录URL,我将被重定向到home.php,我正在创建一个print_r($ _ SESSION),它表明会话中的会话仍然存在。但是当我点击菜单上的任何链接时,我会在没有会话的情况下发回登录页面。

并且必须登录。

index.php页面上的

代码,用于检查会话是否存在:

if($login->is_loggedin()!="") {
    $login->redirect('home.php');
} 

因此,在这种情况下,每次用户访问该页面时,它都会显示为已登录但不是,然后他可以看到应该受到保护的home.php。一旦用户点击任何菜单链接,它就会被重定向到登录页面。

我想这可能是一些php配置,因为在localhost上XAMPP正在运行。知道我要去哪儿吗?

编辑:我在索引页面上进行了以下检查:

if(isset($_SESSION['user']) && !empty($_SESSION['user'])) {
   echo 'Set and not empty, and no undefined index error!';
}

检查是否有会话,因此每次打开URL时都会显示TRUE。当我打开/home.php时,它会打开主页,点击重定向到主页的任何链接,它不会回显任何内容。感觉就像服务器每次打开时都会缓存带有会话的第一页。或者浏览器自动将此信息发送到服务器。

或者有时会遇到的另一种情况。我正在打开网站并记录它。点击任何按钮我在第二次登录后重定向到登录页面尝试一切正常。

发生的另一件事是,当建立假会话时,所有Bootstrap Glyphicon都显示正方形而不是实际图标

我看到php info session.use_only_cookies设置为ON可能这是问题所在。

1 个答案:

答案 0 :(得分:2)

对于初学者,您的登录检查,

if($login->is_loggedin()!="")
{
 $login->redirect('home.php');
} 

为什么这不是if($login->is_loggedin()!== true)

这会在if检查上取消任何奇怪的回报,

目前,如果它看到任何不是"",它将不会重定向到主页,即。如果你的函数返回false。

这是我最突出的主要因素,(我可能会离开这里)