将源文件中的变量传递给PHP中的包含文件

时间:2010-06-18 11:57:16

标签: php variables include

对于我的网站,我想将网站的一般格式存储在单个位置的单个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 个答案:

答案 0 :(得分:6)

如果您要使用include()使用include()而非readfile()用于输出文件的实际内容... readfile()将无法解析PHP代码所有,所以没有办法将变量传递给它。

您看到PHP代码被执行的原因是您的Web服务器实际上正在发出第二个HTTP请求(对自己?),并运行第二个进程来执行您的PHP。第二个流程不会有相同的会话,也不会访问任何cookie或第一个流程中的其他变量。

您可以使用GET参数传递一些变量,但如果要包含的文件位于同一服务器上,则应使用include()。如果您要包含的文件位于另一台服务器上,您应该停下来思考您正在做什么,因为您要求麻烦

答案 1 :(得分:-6)

您需要明确传递参数。

<?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()和来自外部的参数(如上所示)。 这是一个巨大的安全漏洞。