PHP: как создать перенаправление для нескольких файлов (требуется, заголовок)?

У меня есть файл (config.php), который содержит заголовок типа перенаправления (местоположение:..)

Код config.php:

  if ($config_is_ok !== true) {
    exit(header('location: install'));
  }

Структура папок

-localhost
--config.php
--index.php
--install
---index.php
--admin
---index.php

В index.php и в admin -> index.php есть такой код:

require_once('../config.php');
... irelevante code ...

Как я могу отредактировать config.php, чтобы перенаправить меня правильно? (Я пробовал несколько таких методов, но это не сработало..)

  $website_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]/install";
  if ($config_is_ok !== true) {
    exit(header('location: ' . $website_link));
  }

Я хочу использовать этот config.php в нескольких файлах с помощью метода «require», но я не могу сделать этот заголовок функциональным.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
0
180
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

С вашей текущей файловой структурой вы перенаправляете на несуществующий файл и, вероятно, неправильно используете функцию выхода. Я бы посоветовал

  if ($config_is_ok !== true) {
    header('location: /install/index.php');
    die;
  }

Несколько других замечаний для рассмотрения:

  • Ваша структура каталогов нуждается в доработке. Такие вещи, как config и install, не должны быть доступны из корня документа.

  • install/index.php использует конфигурацию? Остерегайтесь рекурсивной ссылки!

  • Небольшая вещь: мне потребовалось несколько попыток, чтобы правильно понять if ($config_is_ok !== true). Вы на самом деле тестируете, чтобы увидеть, плохая ли конфигурация или отсутствует; if ($missing_config) { // redirect } может быть легче следовать.

но я заинтересован в том, чтобы не повторяться в коде. Именно поэтому я хочу, чтобы тот код, который вы написали в ответ, импортировать с помощью require_once в файле admin/index.php (Если я это сделаю, то ссылка в шапке.. будет неправильной и будет работать только в основной папке' локальный хост')

andrei_bancos 19.12.2020 21:59

пожалуйста, уточните, что такое корень документа

Tim Morton 19.12.2020 23:12

корень документа - локальный

andrei_bancos 19.12.2020 23:52

Заголовок будет работать везде, где он вызывается. Начальная косая черта означает относительно корня документа. Или я упускаю суть, и вы спрашиваете, как это сделать с более безопасной структурой каталогов?

Tim Morton 19.12.2020 23:57

но расположение файла меняется с одного «require_once» на другое. в заголовке localhost/index.php('location: localhost/install') и в заголовке localhost/admin/index.php('location: ../install'). как я могу заставить это место в заголовке работать в обоих случаях?

andrei_bancos 20.12.2020 00:14

обратитесь к моему предыдущему комментарию. require относится к файловой системе; заголовок относится к URL. Начиная с косой черты, означает start st localhost

Tim Morton 20.12.2020 03:28

Я забыл косую черту в начале "/", спасибо.

andrei_bancos 20.12.2020 09:36

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