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

#php #url #redirect

#php #url #перенаправление

Вопрос:

У меня есть файл (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 и в админ -> 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’, но я не могу сделать этот заголовок функциональным.

Ответ №1:

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

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

 

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

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

Комментарии:

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

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

3. корень документа — localhost

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

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