Как исправить "перенаправил вас слишком много раз." - PullRequest
0 голосов
/ 15 февраля 2019

Я создал простой логин и систему регистрации, и у меня возникли проблемы.Но не уверен, что это с 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 перенаправлял вас слишком много раз.Попробуйте очистить ваши куки.ERR_TOO_MANY_REDIRECTS

И когда я очищаю свой cookie из браузера Google Chrome, ошибка исправляется, но пользователь должен снова войти в систему, и когда тот же шаг сделать снова, я снова получаю ту же ошибку.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Проблема была на странице индекса (страница входа):

СТАРЫЙ код

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
} 
0 голосов
/ 15 февраля 2019

Вы должны разбить это на три сценария со следующей логикой:

Домашняя страница (и все другие страницы содержимого): если они не вошли в систему, он перенаправляется на страницу входа.

Страница входа: если они уже вошли в систему, перенаправьте на домашнюю страницу.

Проверка пароля: это действие формы входа на странице входа.Проверяет имя пользователя и пароль.Если они верны, он устанавливает переменную сеанса, которая сообщает, что пользователь вошел в систему, и перенаправляет на домашнюю страницу.Если они не верны, он перенаправляет обратно на страницу входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...