Почему этот файл .php выдает ошибку «err_too_many_redirects»?

у меня есть php-код, но когда я запускаю его на локальном хосте xampp, возникают ошибки err_too_many_redirects. вот коды:

login.php, когда пользователь приходит:

<?php
session_start();

<The php codes that checks from mysql...>

if (!isset($_SESSION['ip_allowed'])) {
    if ($count === 1) {
        $_SESSION['ip_allowed'] = true;
        header('Location: index.php');
        exit;
    } else {
        header('Location: access_denied.html');
        exit;
    }
} else {
    header('Location: index.php');
    exit;
}
?>

access_denied.html не является важным файлом, потому что это обычный html-файл без php-кодов.

и индекс .php

<?php
session_start();
include 'login.php';

if (!isset($_SESSION['ip_allowed'])) {
    header('Location: access_denied.html');
    exit;
}
?>
<!DOCTYPE html>
<html lang = "en">
<head>
    <meta charset = "UTF-8">
    <meta name = "viewport" content = "width=device-width, initial-scale=1.0">
    <title>Welcome!</title>
</head>
<body>
    <h1>
        Your IP Is Allowed!✅
    </h1>
    <a href = "login.php">
        Back To Login
    </a>
</body>
</html>

но когда, если я login.php и он разрешает мой IP-адрес, он перенаправляет меня на index.php, а в index.php я закодировал код, который проверяет, есть ли у него такие требования, как $_SERVER['ip_allowed'], если нет, он перенаправляется на access_denied .html

Я надеюсь, что кто-то может мне помочь!. Спасибо!

я попытался изменить строку session_start() и добавить exit(); или умереть(); после заголовков, но ничего не получилось

Login.php перенаправляет на index.php при успешном входе в систему, который, в свою очередь, включает в себя login.php, который затем навсегда перенаправляет на index.php. Перенаправление в вашем последнем предложении else, вероятно, не нужно.

droopsnoot 27.06.2023 20:01

Большое спасибо!!! наконец-то сработало!!

ail torpak 27.06.2023 20:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку вы включили login.php в index.php, он навсегда перенаправит вас на ваш индекс.

Попробуй это:

<?php
session_start();

$page = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);  

<The php codes that checks from mysql...>

if (!isset($_SESSION['ip_allowed'])) {
    if ($count === 1 && $page !== "index.php") {
        $_SESSION['ip_allowed'] = true;
        header('Location: index.php');
        exit;
    } else {
        header('Location: access_denied.html');
        exit;
    }
} else {
    header('Location: index.php');
    exit;
}
?>

я удалил команду включения, и это сработало

Другие вопросы по теме