对于我的网站,我想将网站的一般格式存储在单个位置的单个PHP文件中,并且每个不同的页面内容都位于页面的本地位置。然后我想通过变量将标题和内容地址传递给包含的文件。
但是我无法获取包含的格式文件来读取存储标题和内容数据的变量。
AKA,单个页面的被调用文件将是:
<?php
$title = 'Some Title';
$source_file = 'content.php';
readfile('http:...../format.php');
?>
格式文件为:
<html> ...
<title>
<?php
echo $title;
?>
</title>
...
<?php
include($source_file);
?>
...
我记得在某处我需要包含一些东西来获取格式文件开头的变量,但是我不记得它是什么或找到我发现这些信息的位置。
答案 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()和来自外部的参数(如上所示)。 这是一个巨大的安全漏洞。