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