2011-11-04 83 views
1

我正在制作一个Facebook应用程序,你可以浏览你和你的朋友喜欢在显示大量有趣图片的网页上。问题是,当我链接到这些图片时,它们看起来完全是另一回事。像占位符或什么的。它显示正确,如果它被缓存(我认为)。显示来自其他网站的图片显示奇怪的图片

看看这个jsfiddle:http://jsfiddle.net/jVBSk/。如果你右击图像,你会得到另一个文件名,而不是源文件中的文件名。

如何避免这种情况,使页面显示正确的图像?

+0

这是否显示正确的图像? http://windowsnaarlinux.nl/test.php只是一个实验。我可以看到它显示的是另一张图片,而不是Jsfiddle上显示的图片,但我不知道这是否是它应该显示的图片。 – RobinJ

+0

是的。介意将脚本发布到pastebin或其他东西? – OptimusCrime

回答

0

它似乎有某种热连接保护它。这个制作不太好,所以很容易绕过。

<?php 
$file = file_get_contents($_GET['image']); 
header("Content-Type: image/jpeg"); 
$image = imagecreatefromstring($file); 
imagejpeg($image); 
imagedestroy($image); 
?> 

然后调用脚本是这样的:script.php?image=http%3A%2F%2Fgif.artige.no%2Fstore%2F10%2F10002.jpg
图像URL必须被编码。这可以在PHP中使用urlencode()来完成,或者这里是一个在线工具来做到这一点:http://meyerweb.com/eric/tools/dencoder/

所以HTML中会是这样的:<img src="script.php?image=http%3A%2F%2Fgif.artige.no%2Fstore%2F10%2F10002.jpg" alt="[Image]" />

+0

我试图避免这种情况,但它看起来像一个简单的解决方案。非常感谢你的代码,我会用ajax来包装它,以避免网页超时。 – OptimusCrime

+0

就像通知我最终为此使用了类似的卷曲函数。按预期工作。 – OptimusCrime

-1

该网站正在检查引荐来源,看看它是否是他们的域名,或不。如果不是,它会返回这个“不要偷这个”的图像。 (如果任何人都可以翻译,我肯定这就是它的意思)。

参见http://en.wikipedia.org/wiki/HTTP_referrerhttp://en.wikipedia.org/wiki/Referrer_spoofing

+0

它说Artige.no非常喜欢你在挪威:P有没有什么办法可以避免这种情况?我不是在窃取图像,我只是想链接到它们,而不是必须将它们的每一个都下载到本地服务器。 – OptimusCrime

+0

编辑:我必须使用卷曲加载图像,修改标题,然后将内容放在页面上?没有办法简单地使用img-tag? – OptimusCrime

-1

你叫hot-linking,是由许多网站所有者皱起了眉头,在什么..

的问题是,你到底偷了他们的带宽,作为一个解决方案,他们提供不同的图像,而不是要求一个时请求页面不是来自它们自己的域..