Php - header() не работает, когда он должен перенаправлять на страницу из более чем 2 вложенных папок

У меня есть файл .php, который вызывается при отправке формы. Используя isset($_POST["submit"]) {} else { Header() } в этом файле, я пытаюсь запретить пользователям вводить прямой URL-адрес этого файла из браузера. Это хорошо работает, когда у меня есть такая ситуация:

Расположение файла .php для отправки формы

root_folder/folder_level_1/folder_level_2/form_submitting.php

Расположение индексной страницы, на которую перенаправляет header()

root_folder/folder_level_1/index.php

И .php-код form_submitting.php:

<?php 
session_start();

    if (isset($_POST["submit"])) {
        // some code
    } else {
        header("Location: ../index.php");
        exit();
?>

Но это не работает в этой ситуации:

Расположение файла .php для отправки формы

root_folder/folder_level_1/folder_level_2/folder_level_3/form_submitting.php

Расположение индексной страницы, на которую перенаправляет header()

root_folder/folder_level_one/index.php

И .php-код form_submitting.php:

<?php 
session_start();

    if (isset($_POST["submit"])) {
        // some code
    } else {
        header("Location: .../index.php");
        exit();
?>

Я также попытался изменить параметры header() на это:

header("Location: ...index.php");
header("Location: .././index.php");
header("Location: ./../index.php");
header("Location: ../.index.php");
header("Location: ./..index.php");
header("Location: ".$_SERVER["DOCUMENT_ROOT"]."/folder_level_1/index.php");

И все же это не работает. Вместо этого он показывает мне Доступ запрещен! на веб-странице, чтобы перенаправить меня на index.php.

Как это решить? Помощь была бы очень признательна.

header("Location: .../index.php"); ...? Слишком много точек, чувак...
CD001 29.07.2019 15:55

Одна точка — текущий каталог. Две точки — это один каталог вверх. Каждый уровень должен быть разделен разделителем каталогов. Но последняя строка, вероятно, должна привести вас туда, куда вы хотите, или отправить ее в корень.

aynber 29.07.2019 15:57

Хорошо, одна точка ./ - та же папка, две точки ../ - одна папка вверх, а как именно написать две папки вверх?

Boris J. 29.07.2019 16:02

@ user3120612 ../../index.php

Sayed Mohd Ali 29.07.2019 16:04

@Сайед Мохд Али Это решило мою проблему. Большое спасибо!

Boris J. 29.07.2019 16:07
Стоит ли изучать 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 и хотите разрабатывать...
1
5
198
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы забыли написать, если. должно быть if (isset($_POST['submit']...

       if ( isset($_POST["submit"])) {
            // some code
        } else {
            header("Location: ../../index.php");
            exit();
    ?>

вы забываете закрывающие кавычки, а также ../index.php, если хотите перейти на один каталог вверх.

попробуйте, если хотите перейти на 2 папки вверх.

header("Location: ../../index.php");

Забудьте поставить их в пример. У меня есть это в моем реальном сценарии. Я исправил текст своего вопроса.

Boris J. 29.07.2019 15:58

@user3120612 user3120612 вы также забываете закрывающие кавычки в функции заголовка. вы должны использовать double ../ для перехода на один каталог вверх, если ваш index.php находится на одну папку выше.

Sayed Mohd Ali 29.07.2019 16:01

@ user3120612 также проверьте разрешение, которое вы дали файлу index.php.

Sayed Mohd Ali 29.07.2019 16:03

Опять опечатка. Я и это исправил. Мне жаль, что я грязный.

Boris J. 29.07.2019 16:04

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