大家好!我最近在 PHP 和 file_get_contents 中编码时遇到了问题。我的问题是当我加载这样的网站时:
<? echo file_get_contents($_GET['url']); ?>
我加载的网站图片不显示。例如,当我去谷歌时,没有显示图片。这适用于我访问的每个网站。我怎样才能解决这个问题?
大家好!我最近在 PHP 和 file_get_contents 中编码时遇到了问题。我的问题是当我加载这样的网站时:
<? echo file_get_contents($_GET['url']); ?>
我加载的网站图片不显示。例如,当我去谷歌时,没有显示图片。这适用于我访问的每个网站。我怎样才能解决这个问题?
您正在显示的 HTML 页面假定您也有可用的图像,而您没有这些图像,因为它们位于原始页面的服务器(例如 Google.com)上。
确保加载 HTML 页面上的所有内容的最快方法是添加<base href="http://www.google.com/" />
. 这告诉浏览器返回到其余内容的原始路径,包括图像、CSS、脚本等。
您需要在<head></head>
所显示的 HTML 页面之间注入它。您可以使用正则表达式或简单的 HTML DOM。
希望有帮助
不要这样做。您正在窃取其他网站的内容。正如您所注意到的,它也不能很好地工作,因为所有相对 URL 都已损坏。
你可以用 iframe 代替吗?如:
<iframe src="<?php echo htmlspecialchars($_GET['url']) ?>"></iframe>
这更好,因为您没有向最终用户隐藏您代理的网站。
我认为这是因为图像 url 是相对的<img src="/img/foo.png">
意思,它会在您的服务器上查找图像,而不是说 googles。解决这个问题需要查看源中的所有 url 并将它们从相对更改为绝对。
file_get_contents() 执行它所说的,获取作为参数提供的文件或 URL 的内容。HTML 页面内部没有图像,它们不是页面的内容,HTML 页面只有对外部文件的引用,这些文件有自己的内容。