我正在主页(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 ?>
答案 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>
问题可能在破坏会话的过程中。