我正在尝试通过AJAX
调用来检索网页内容。我在页面包装器中有一系列链接。当我单击链接时,它会加载一个JavaScript函数,该函数从php
脚本中检索页面内容。在这种情况下,我正在我的localhost
上进行开发,但在生产中,脚本将与执行AJAX
调用的文件位于同一个根文件夹和域中。我使用响应作为div
的内容。内容不仅仅是PHP
,我的意思是,它是由php生成的,它有HTML
个元素,如div
和spans。它基本上是开始和结束身体标签之间的东西。因此,我不确定我是否可以使用json_encode
。
而不是div
中的内容加载,我收到以下错误:
警告:require_once()[function.require-once]:http:// wrapper is 通过allow_url_include = 0
在服务器配置中禁用
在阅读allow_url_include
后,似乎默认情况下通常会禁用此功能。我假设此功能允许一些严重的站点攻击。是这样的吗?如果是这样,我如何从其他文件中检索内容?
我尝试使用JQuery
加载函数:
$('#content').load('pages/test_page.php');
但结果完全相同。
这让我疯了! TIA。
编辑:我想我可能已经发现了问题; php
正在检索内容的AJAX
文件正在使用require_once
。它需要的文件位于同一个根文件夹中的同一台服务器上,但它是一个目录。但是,这会产生一个新问题:我正在获取内容,但并不完全。例如,在文件中我有:
Title: <?php echo $details['title']; ?>
我只收到第一个字母,这适用于我php
的其他echo
内容。
答案 0 :(得分:9)
allow_url_include
仅影响include()
和require()
,您仍然可以使用PEAR HTTP_Request2
模块或curl
函数来获取网页。
将include()
用于远程网页被视为“不良做法”,可能会带来安全风险。例如,如果您使用include($var);
并且某些攻击者设法将$ var替换为http://hacksite.tld
他/她可以“注入”代码......
答案 1 :(得分:1)
不用担心,只需使用file_get_contents()
然后使用您检索到的内容在文档中写入新文件,然后include
文件中的文件。您现在包含的文件已准备好进行所需的任何更改,使用css
,javascript
等。这基本上就是包装器所做的。
答案 2 :(得分:-1)
这是因为您使用的是完整网址。 请尝试以下方法:
$('#content').load('test_page.php');