2011-11-04 117 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,是由許多網站所有者皺起了眉頭,在什麼..

的問題是,你到底偷了他們的帶寬,作爲一個解決方案,他們提供不同的圖像,而不是要求一個時請求頁面不是來自它們自己的域..