PHP标题(位置:' index.php')和javascript没有被执行

时间:2017-04-19 19:53:12

标签: javascript php header location

我的问题是,当用户注销时。正在调用登录页面并显示索引页面但是网址正在显示

  https://mysite/logout.php

而不是

   https://mysite/index.php 

这意味着我的javascript文件包含在index.php中,因此无法再次登录而无需手动刷新页面。

在home.php中链接登录后到达的页面

 <p class="mc-top-margin-1-5"><a href="logout.php">Logout</a></p>

我有以下注销页面(logout.php)

   <?php

     session_start();
     require_once 'php/class/class.user.php';
     $user = new USER();

     if(!$user->is_logged_in())
       {
          $user->redirect('index.php');
          exit;
       }

     if($user->is_logged_in()!="")
       {
         $user->logout();
         $user->redirect('index.php');
         exit;
       }
    ?>

我的用户功能如下(class.user.php)

    public function is_logged_in()
{
    if(isset($_SESSION['userSession']))
    {

        return true;
    }
}

public function redirect($url)
{
    header("Location: $url");


}

public function logout()
{
    session_destroy();


}
我错过了什么?

2 个答案:

答案 0 :(得分:0)

您的函数is_logged_in()返回一个布尔值TRUE,但您正在检查返回值:

 if($user->is_logged_in()!="")

即检查它是否为空字符串。

此外,更重要的是,如果用户未登录,is_logged_in()不会返回任何内容。该功能应该是这样的:

    public function is_logged_in()
{
    if(isset($_SESSION['userSession']))
    {
        return true;
    }
    else { return false; }

}

检查应该是这样的:

 if(!$user->is_logged_in())

答案 1 :(得分:0)

所以我最终找到了一个不太好的解决方案:

我更改了home.php中的链接

    `<p class="mc-top-margin-1-5"><a href="logout.php">Logout</a></p>  `  

到按钮

    <button id="btn-logout">Logout</button>

并在jquery函数中添加了它的功能

   $(function(){

   $("#btn-logout").bind('click', function () {

    window.location.href = "http://example.com/logout.php";
      })
   });

我的logout.php最终看起来像

  <?php
    session_start();
    unset($_SESSION['user_session']);
    session_destroy();
  ?>
 <html>
 <head>
 <script>
    window.location.href = "https://example.com/index.php";
</script>
</head>
<body>
</body>
</html>

所以从使用标题的php中的刷新页面开始。我最终得到了js和jquery。它不是一个很好的解决方案,但它的工作原理!