2012-06-21 50 views
4

在我的服務器中有一張名爲/images/pic.jpg的圖片。我想跟蹤通過url lik www.domain.com/images/pic.jpg直接訪問該圖片的用戶的IP地址。我如何使用php跟蹤熱鏈接器ip地址

<?php $ipAddress = $_SERVER['REMOTE_ADDR']; ?> 
+1

您將需要通過PHP腳本處理'.jpg',或者爲像'image.php?name = pic.jpg'等所有圖像創建一個自定義處理程序,並直接鏈接到不允許的圖像(即, '/ images /'文件夾中的'.htaccess'鎖定) – mellamokb

+0

判斷某人是通過熱鏈接還是直接加載它的唯一方法是通過HTTP referer,這很容易僞造,不可靠等等。 –

回答

5

您可以創建一個攔截PHP腳本這將是負責處理其存儲在特定的文件夾圖像的所有請求。假設您的所有圖片都位於images/文件夾內。您只需創建一個重寫規則,該規則將該文件夾內的所有文件請求重定向到PHP腳本。

RewriteRule images/(.+)\.(jpg|gif|png) images.php?image=$1.$2 

這樣,您仍然可以保留在標記中使用圖像的能力。

<img src="images/logo.png" /> 

不要考慮,這種做法可能對您的系統性能,因爲對圖像資源的所有請求,現在正在打造的處理開銷大的衝擊由於PHP是調用每次。

+0

妥協可能會要添加規則條件'RewriteCond%{HTTP_REFERER}!^ http:// yoursite.com /',以便只有您的頁面引用的請求*不被*重定向才能進行分析。是的,這個標頭可能被欺騙,但通過標準瀏覽器訪問的熱鏈接圖像不會這樣做。 – TerryE

+0

感謝holodoc它的工作完美。 –

4

如果他們正在訪問的圖像直接你不能做什麼用PHP來跟蹤它們的其他然後解析您的access_logs,看看誰是請求文件:我可以跟蹤用戶手動的IP地址。

你最好的選擇是使用PHP來提供圖像本身。這樣你可以通過PHP跟蹤誰在請求它。

例子:

<img src="image.php?imagename.jpg">