【问题标题】:Error:" ERR_TOO_MANY_REDIRECTS localhost redirected you too many times"错误:“ERR_TOO_MANY_REDIRECTS localhost 将您重定向了太多次”
【发布时间】:2020-01-03 12:28:18
【问题描述】:

我正在主页 (home.php) 中进行弹出式登录。它一开始可以登录,但在我点击注销按钮后,整个页面变为空白,显示“localhost 重定向你太多次”,现在home.php 无法访问,除非删除 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 ?>

【问题讨论】:

  • 错误信息很明显,你有一个重定向循环。可以发home.php 代码吗?
  • 这是home.php。你的意思是整个代码?

标签: php validation popup logout


【解决方案1】:

当浏览器卡在重定向循环中时会发生此错误。这是因为这段代码:

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

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

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

【讨论】:

  • 这是否意味着我必须创建一个 login.php 文件并将所有这些保存在该 php 文件中,然后将标题位置更改为“login.php”?
  • 是的,它会让你的代码更干净、更有条理,并且会解决你的问题。
  • 会不会像home.php写的那样影响弹出登录表单?
  • 大部分没有。但如果发生任何事情,它可以很容易地解决。
  • 但它是如何工作的?因为如果我创建另一个 php 文件,这意味着它将重定向到另一个页面,对吗?但我正在做一个弹出式登录表单,这意味着当我点击登录按钮时,它会弹出一个登录表单供用户登录。 ://
【解决方案2】:

请尝试以下代码:

<?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>

问题可能在销毁会话时出现。

【讨论】:

  • 这是用来登录的吗?
猜你喜欢
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 2020-06-01
相关资源
最近更新 更多