Передайте переменную из исходного файла во включенный файл в PHP - PullRequest
1 голос
/ 18 июня 2010

Для моего сайта я хочу сохранить общий формат сайта в одном файле PHP в одном месте, а содержимое каждой из разных страниц - в локальном месте страницы.Затем я хочу передать заголовок и адрес содержимого во включенный файл через переменную.

Однако я не могу получить включенный файл формата для чтения переменных, хранящих заголовок и данные содержимого.

AKA, файл для отдельной страницы будет вызываться:

<?php
$title = 'Some Title';
$source_file = 'content.php';
readfile('http:...../format.php');
?>

Файл формата будет:

<html> ...
<title>
<?php
echo $title;
?>
</title>
...
<?php
include($source_file);
?>
...

Я вспоминаю, что где-то читал, мне нужно что-то включить, чтобы получить переменныев начале файла формата, однако я не могу вспомнить, что это такое, или найти, где я нашел эту информацию.

Ответы [ 2 ]

6 голосов
/ 18 июня 2010

Если вы хотите использовать include(), используйте include(), а не readfile(), который предназначен для вывода фактического содержимого файла ... readfile() не будетразбирать PHP-код вообще, поэтому невозможно передать ему переменные.

Причина, по которой вы видите выполнение PHP-кода, заключается в том, что ваш веб-сервер фактически делает второй HTTP-запрос (самому себе?),и запустить второй процесс для выполнения вашего PHP.Этот второй процесс не будет иметь тот же сеанс, и при этом он не будет иметь доступа ни к каким cookie-файлам, ни к другим переменным из первого процесса.

Вы можете передавать некоторые переменные, используя параметры GET, но если вам нужен файлчтобы включить находится на том же сервере, вы должны просто использовать include().Если файл, который вы хотите включить, находится на другом сервере, вам следует остановиться и подумать о том, что вы делаете, потому что вы просите о проблеме .

0 голосов
/ 18 июня 2010

Вам необходимо явно передать параметры.

<?php
$title = 'Some Title';
$source_file = 'content.php';
readfile('http:...../format.php?title='.urlencode($title).'&source_file='.urlencode($source_file));
?>

.

<html> ...
<title>
<?php
echo $_GET['title'];
?>
</title>
...
<?php
include($_GET['source_file']); // Don't do that! 
                               // Never use include with argument that came from outside
?>
...

Пожалуйста, НЕ используйте include () с параметром, который пришел извне (как показано выше). Это зияющая дыра в безопасности.

...