Как исправить вечный процесс перенаправления? - PullRequest
1 голос
/ 20 июля 2011

У меня маленькая проблема. Вот мой пример:

file1.php:

<?php include("file2.php"); ?>

file2.php:

<?php header("Location: file1.php"); ?>

Поскольку file2.php включен, процесс перенаправления никогда не закончится. Но я все еще хочу, чтобы file2.php перенаправлял на file1.php, и мне также нужно включить file2.php в file1.php.

Это может показаться немного сложным, но я думаю, что это можно решить.

Любая помощь приветствуется.

Заранее спасибо.

С наилучшими пожеланиями,

Акос

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Обернуть оператор перенаправления в оператор if следующим образом:

// file2.php
<?php
if ($_SERVER['PHP_SELF'] == "file2.php") {
    header("Location: file1.php");
}
?>

Вы также можете обнаружить, включив что-то вроде этого:

if (realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME']) {
    // Not Included
} else {
    // Included
}
2 голосов
/ 20 июля 2011

Перенаправление только в file2.php, если вы еще не в file1.php:

if ($_SERVER["REQUEST_URI"] != "/file1.php") { header("Location: /file1.php"); }

Другое возможное решение - использовать флаг, сигнализирующий о том, что file2 должен быть включен только:

  • В file1.php: define('INCLUDE_MODE', true);
  • Inf file2.php: if (!INCLUDE_MODE) {header("Location: /file1.php"); exit;}
...