【问题标题】:How to fix "redirected you too many times."如何修复“重定向你太多次”。
【发布时间】:2019-02-15 00:55:25
【问题描述】:

我创建了简单的登录和注册系统,但遇到了一些问题。但不确定是 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 时,错误已修复,但用户必须再次登录,当再次执行相同步骤时,我再次遇到相同的错误。

【问题讨论】:

  • 好吧,如果他们没有登录,您将他们发送到同一个页面,该页面会检查并将他们无限期地发送到同一个页面。你在这里期待什么?
  • 如果您使用的是 wordpress,请尝试阅读本文及其解决方案。 kinsta.com/blog/err_too_many_redirects
  • 我没有使用 Wordpress @Roshan
  • 而且每次出现错误时我都无法删除cookie,我需要修复此错误。每个登录并执行此操作的用户都会收到与我相同的错误。 @Roshan
  • 如果他们没有登录,索引页面应该将他们重定向到登录页面。登录页面不应包含索引页面,因为索引页面应仅在您登录后可见。

标签: php cookies


【解决方案1】:

你应该把它分成三个脚本,逻辑如下:

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

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

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

【讨论】:

  • 我不确定我现在是否正确编写代码...我现在没有收到重定向错误,但登录表单显示在登录页面上的登录用户登录时
  • 我不知道你做错了什么。逻辑很简单。
【解决方案2】:

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

旧代码

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
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多