0

大家好!我最近在 PHP 和 file_get_contents 中编码时遇到了问题。我的问题是当我加载这样的网站时:

<? echo file_get_contents($_GET['url']); ?>

我加载的网站图片不显示。例如,当我去谷歌时,没有显示图片。这适用于我访问的每个网站。我怎样才能解决这个问题?

4

4 回答 4

10

您正在显示的 HTML 页面假定您也有可用的图像,而您没有这些图像,因为它们位于原始页面的服务器(例如 Google.com)上。

确保加载 HTML 页面上的所有内容的最快方法是添加<base href="http://www.google.com/" />. 这告诉浏览器返回到其余内容的原始路径,包括图像、CSS、脚本等。

您需要在<head></head>所显示的 HTML 页面之间注入它。您可以使用正则表达式或简单的 HTML DOM。

希望有帮助

于 2009-08-07T15:39:53.120 回答
2

不要这样做。您正在窃取其他网站的内容。正如您所注意到的,它也不能很好地工作,因为所有相对 URL 都已损坏。

你可以用 iframe 代替吗?如:

<iframe src="<?php echo htmlspecialchars($_GET['url']) ?>"></iframe>

这更好,因为您没有向最终用户隐藏您代理的网站。

于 2009-08-07T15:41:07.783 回答
1

我认为这是因为图像 url 是相对的<img src="/img/foo.png">意思,它会在您的服务器上查找图像,而不是说 googles。解决这个问题需要查看源中的所有 url 并将它们从相对更改为绝对。

于 2009-08-07T15:45:32.797 回答
1

file_get_contents() 执行它所说的,获取作为参数提供的文件或 URL 的内容。HTML 页面内部没有图像,它们不是页面的内容,HTML 页面只有对外部文件的引用,这些文件有自己的内容。

于 2009-08-07T15:54:40.047 回答