-1

我使用下面的代码将页面内容包含在index.php文件(模板)中。PHP包括不能使用IE 7,8和9

if(isset($_GET['page'])) 
{ 
include($_GET['page'].'.php'); 
} 

if(isset($_GET['special'])) 
{ 
include($_GET['special'].'.php3'); 
} 

的URL可能看起来像这样:http://www.example.com/?page= {} PageToShow

这为Chrome,Firefox和Safari浏览器工作正常,但内容没有在IE 7,8 & 9.任何想法,为什么显示?

回答

1

服务器端PHP脚本不会受到用于查看页面的浏览器的影响,因此这看起来像一个呈现问题 - 检查包含的代码是否生成有效的HTML,并且您没有得到<html>标签包含在其他<html>标签中。

您可能需要重新考虑包含页面内容的方式 - 通过GET变量执行此操作可能不安全:首先,它不会将文件限制为网站文档根目录中的文件。

至少我会建议对输入文件进行一些理智检查(即它们是否在webroot中?),但更现代的方法是使用.htaccess重写将所有请求发送到index.php,在那里你然后可以根据请求选择要包含哪些文件(有关更多信息,请参阅this post)。

0

上面提到的服务器端脚本应该会在所有浏览器中返回相同的结果。尝试使用$_SERVER["REQUEST_URI"]进行调试,看看是否得到相同的结果。

此外,我建议不要使用这种类型的包括出于安全原因。

+0

“另外,为了安全起见,我建议不要使用这类内容。” – Hromes 2012-03-01 10:18:15

+0

如果您保留这样的代码,请将http://www.example.com/?page=../../something/page_that_should_not_be_included链接包含未包含的内容。 – 2012-03-01 14:47:28