Проблемы с определением переменной в PHP? - PullRequest
0 голосов
/ 19 марта 2011

Хорошо, поэтому страница содержимого использует это:

$tab = "Friends";
$title = "User Profile"; 
include '(the header file, with nav)';

И на странице заголовка есть код:

if ($tab == "Friends") { 
echo '<li id="current">'; 
} else { 
echo '<li>'; 
}

Проблема в том, что условие if $tab == Friends никогда не выполняетсяактивирован, и никакие другие переменные не переносятся со страницы содержимого на страницу заголовка.

Кто-нибудь знает, что я делаю неправильно?

Обновление: Хорошо, проблема, казалось, исчезла, когда я использовал ../scripts/filename.php, и возникала только тогда, когда я использовал полный URL?

Есть идеи, почему?

Ответы [ 3 ]

2 голосов
/ 19 марта 2011

Когда вы include заполняете полный URL, вы не включаете скрипт PHP - вы включаете генерируемый им HTML. Это как если бы вы пошли на http://wherever.your.url.goes, но это делается сервером, а не браузером. Сценарий выполняется в отдельном процессе, вызванном отдельным запросом от сервера к себе, и ни один из $variable не используется совместно.

Короткая версия: если вы включите http://wherever.your.url.goes, $tab всегда будет пустым. Если вы укажете фактическое имя файла, переменная будет опубликована.

1 голос
/ 19 марта 2011
  1. Теперь вы понимаете, почему ужасно практиковать публиковать заглушки и скетчы вместо реального кода

  2. Попробуй подумать, твой вопрос не ракетостроение. Включить - это как копировать-вставлять код вместо оператора включения. Перейдите в свой браузер с включенным URL-адресом, скопируйте полученный код, вставьте его в первый файл и посмотрите.

1 голос
/ 19 марта 2011

Ваш код, как опубликовано, должен работать Как вы на самом деле включаете этот файл? Это происходит внутри функции? Затем вам нужно использовать оператор global, чтобы он работал. Пример:

Файл 1:

function my_include($file) {
    global $tab; // <-- add this
    include '/some/path/' . $file;
}

$tab = 'Friends';
my_inlcude('file_2.php');

Файл 2:

if ($tab == 'Friends') { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...