Я думаю, что у вас, вероятно, есть логическая ошибка где-то, где содержимое переменных стирается, или, как @Kev указал, что поток выполнения неверен. Вот некоторый тестовый код:
Файл: test.php
<?php
$test = "Hi!";
require_once 'test2.php';
require_once 'test3.php';
?>
Файл: test2.php
<?php
echo("Test 2: " . $test . "<br/>");
?>
Файл: test3.php
<?php
echo("Test 3: " . $test . "<br/>");
?>
Это приводит к выводу:
Test 2: Hi!
Test 3: Hi!
Что доказывает, что переменная $test
имеет глобальную область видимости и должна быть доступна любому сценарию после ее определения.
PS- Не полагайтесь на пользователей SO, чтобы предоставить ваш справочный материал. Идите прямо к источнику: Область переменных - Руководство по PHP Первый абзац на этой странице гласит:
Область действия переменной - это контекст
в пределах которого это определено. Для
большая часть всех переменных PHP имеет только
единая сфера. Эта единственная сфера
включенные пробы и необходимые файлы как
хорошо.
Редактировать
Попробуйте это в header.php
и посмотрите, что произойдет:
<?php
include 'navigation.php';
echo($previous . " ; " . $next . "<br/>");
include 'backnext.php';
echo($previous . " ; " . $next . "<br/>");
?>
Если вы не получаете один и тот же вывод оба раза, то в backnext.php
есть проблема, когда переменные стираются. Если он выдает тот же результат, переместите эхо-сигналы внутрь backnext.php
в самом верху и в самом низу. Логически это не на самом деле их перемещение, но вы можете продолжать перемещать их все ближе и ближе друг к другу, пока не найдете причину проблемы.