错误:“ ERR_TOO_MANY_REDIRECTS本地主机将您重定向了太多次”

时间:2019-08-30 08:52:49

标签: php validation popup logout

我正在主页(home.php)中弹出式登录。它可以首先登录,但是在我单击注销按钮后,整个页面空白,显示“ localhost重定向了您太多次”,现在除非删除php代码,否则无法访问home.php。登录和注销都在同一页面上(home.php)。谁能向我解释怎么了?我还是php新手。

代码如下: 外部html

<?php 
  session_start(); 

  if (!isset($_SESSION['username'])) {
    $_SESSION['msg'] = "You must log in first";
    header("location: home.php");
  }
  if (isset($_GET['logout'])) {

    unset($_SESSION['username']);
    header("location: home.php");
  }
?>
<!DOCTYPE html>

体内

<?php if (isset($_SESSION['success'])) : ?>
      <div class="error success" >
        <h3>
          <?php 
            echo $_SESSION['success']; 
            unset($_SESSION['success']);
          ?>
        </h3>
      </div>
    <?php endif ?>

    <!-- logged in user information -->
    <?php  if (isset($_SESSION['username'])) : ?>
        <p>Welcome <strong><?php echo $_SESSION['username']; ?></strong></p>
        <p> <a href="home.php?logout='1'" style="color: red;">logout</a> </p>
    <?php endif ?>

2 个答案:

答案 0 :(得分:0)

当浏览器陷入重定向循环时,会发生此错误。因为此代码:

  if (!isset($_SESSION['username'])) {
    $_SESSION['msg'] = "You must log in first";
    header("location: home.php");
  }

如果用户未登录,该用户将重定向到home.php,则该页面将再次运行,并且由于未登录而导致的浏览器必须再次重定向到同一页面。

您可以使用许多解决方案来解决此问题,但我认为最好的解决方案是使用另一个php文件进行登录操作。

答案 1 :(得分:0)

请尝试以下代码:

<?php 
  session_start(); 

  if (empty($_SESSION['username'])) 
  {
    $_SESSION['msg'] = "You must log in first";
    header("location: home.php");
  }
  if (isset($_GET['logout'])) 
  {

    unset($_SESSION);
    session_destroy();
    header("location: home.php");
  }
?>
<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
<?php 
if(!empty($_SESSION['username']))
{
  //Print Some session values
}
else
{
  //Login page code
}
?>
</body>
</html>

问题可能在破坏会话的过程中。