如何解决“您重定向次数过多。”

时间:2019-02-15 00:55:25

标签: php cookies

我被创建为简单的登录和注册系统,并遇到了一些问题。但不确定是使用cookie还是cookie和php。我的代码是下一个:

在index.php上(登录页面我的标头中包含此代码):

<?php
include('includes/config.php');
if(!$user->is_logged_in()){
header('Location: index.php');
exit;
}
if(isset($_POST['submit'])){

$username = $_POST['username'];
$password = $_POST['password'];

if($user->login($username,$password)){ 
    $_SESSION['username'] = $username;
    header('Location: home.php');
    exit;

} else {
    $error[] = 'Wrong username or password or your account has not been activated.';
}
}
?>

用户成功登录后,在主页上:

<?php include('includes/config.php'); 
if(!$user->is_logged_in()){
header('Location: index.php');
exit;
}
?>

配置文件:

<?php
ob_start();
session_start();

date_default_timezone_set('Europe/London');

define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','pass');
define('DBNAME','db_name');

define('DIR','http://example.com/');
define('SITEEMAIL','noreply@domain.com');

try {
$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
echo '<p class="bg-danger">'.$e->getMessage().'</p>';
exit;
}
include('classes/user.php');
include('classes/phpmailer/mail.php');
$user = new User($db);
?>

下一个问题是,当用户成功登录并重定向到主页时,当用户注销时一切都很好,但是当用户登录但未注销时,返回索引页面(登录页面),则出现此错误:

此页面无法正常运行website.com将您重定向了太多次。尝试清除您的cookie。 ERR_TOO_MANY_REDIRECTS

当我从Google chrome浏览器中清除cookie时,错误已修复,但用户必须再次登录,并且当同一步骤再次执行时,我再次遇到相同的错误。

2 个答案:

答案 0 :(得分:0)

您应该按照以下逻辑将其分解为三个脚本:

主页(和所有其他内容页面):如果未登录,它将重定向到登录页面。

登录页面:如果已经登录,则重定向到主页。

密码检查器:这是登录页面上登录表单的操作。它检查用户名和密码。如果它们是正确的,它将设置表示用户已登录的会话变量,然后重定向到主页。如果它们不正确,它将重定向回登录页面。

答案 1 :(得分:0)

问题出在索引页(登录页)上:

旧代码

if( $user->is_logged_in()){ 
    header('Location: index.php'); --> THIS IS WHERE PROBLEM IS
} 

新代码

if( $user->is_logged_in()){ 
    header('Location: home.php'); // Work correctly
}