PHP代码的重定向循环问题

时间:2014-02-22 12:18:43

标签: php google-chrome loops redirect

我是新来的论坛,如果我忘记包含可能有帮助的信息,请道歉。

我已成功为我的测试网站构建了一个登录页面,并且一直在尝试实现重定向功能,如果用户的会话已存在,则会将用户重定向到主页。

这是我的代码:

<?php


if (empty($_SESSION['username'])) {
        header('Location: home');
        die();
}else{
        header('Location: index.php');
        die();
}
?>
<head>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<title>Login</title>
</head>

<body>
<!--HTML form stuff goes here-->

我正在使用Chrome,但每次重新加载时,始终会收到“此网页有重定向循环”消息。我确定它与else {}语句有关,因为当它被排除并且会话存在时它可以正常工作。

非常感谢一些帮助。

2 个答案:

答案 0 :(得分:1)

该文件永远无法在浏览器中查看,因为它始终会重定向到homeindex.php。如果您粘贴的代码来自homeindex.php,那么它就是重定向循环。如果是这种情况,则没有理由重定向,因为您已经在该页面上。

答案 1 :(得分:0)

理想情况下,您必须提供所有文件的数据

我假设您的所有文件都具有与上面指定的登录会话验证相同的代码段

然后我可以说这可能发生了你的登录页面重定向到index.php,它再次进行相同的检查并再次重定向到自己,这是index.php等等......你的浏览器卡在重定向循环中。< / p>

为了解决这个问题你可以这样做你的login.php代码检查用户是否登录的情况并适当重定向

<强>的login.php

if (empty($_SESSION['username'])) {
// not logged in redirect
        header('Location: home');
        die();
}else{
//logged in redirect
        header('Location: index.php');
        die();
}

并在index.php中检查用户是否未登录,如果他没有登录则返回login.php否则留在这里

<强>的index.php

if (empty($_SESSION['username'])) {
// not logged in redirect
        header('Location: login.php');
        die();
}else{
//logged in 
//do nothing
}

类似地,你可以在home / index.php文件中检查是否已登录并适当地执行。虽然我建议的解决方案效率不高,但我希望它能为您提供关于为什么要进行重定向循环的中心思想。