1

我需要包含一个我只能通过完整的 HTTP 地址访问的 PHP 文件。我对这个话题感到困惑,我听说这是一种不好的做法。我该如何解决?

4

3 回答 3

2

来自手册: http: //php.net/manual/en/function.include.php

另请阅读附加的安全警告

如果在 PHP 中启用了“ URL fopen 包装器”(它们在默认配置中),您可以使用 URL 指定要包含的文件(通过 HTTP 或其他支持的包装器 - 请参阅支持的协议/包装器列表以获取协议)而不是本地路径名。如果目标服务器将目标文件解释为 PHP 代码,则可以使用与 HTTP GET 一起使用的 URL 请求字符串将变量传递给包含的文件。严格来说,这与包含文件并使其继承父文件的变量范围不同。该脚本实际上正在远程服务器上运行,然后将结果包含到本地脚本中。

于 2010-08-23T15:57:44.860 回答
1

是的,不建议通过 HTTP 包含,除非您确实确定源。如果您只想获取它的内容,而不执行 PHP 代码,您可以使用:

为此,必须打开 PHP 设置 allow_url_fopen。使用 cURL 的另一个选项(无耻地取自 PHP 手册):

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>

如有必要,您应该通过 htmlentities() 传递它。

如果您在同一台服务器上,则可以使用:

<?php
readfile('footer.html');
?>
于 2010-08-23T15:53:49.093 回答
0

这是非常糟糕的做法。与其包含它,不如包含该文件的本地副本并使用 SSH 将其与远程服务器上的副本同步。

于 2010-08-23T15:54:38.447 回答