2015-11-03 28 views
-2

假設我有一個包含多個圖像的目錄,我想將所有IP記錄在一個包含IP,日期,時間和文件名(圖像)的大文件中。我將如何做到這一點?這裏有一些我已經用來在特定頁面上記錄IP的代碼,所以如果你可以修改它,並且我可以保留這種格式,我將不勝感激。IP記錄目錄中的所有圖像

<?php 
$ip = $_SERVER["HTTP_CF_CONNECTING_IP"]; 
$file = "visitors.log"; 
$logfile = fopen($file, "a"); 
$line = $ip . " | " . date("m.d.Y | H:i:s"); 
fwrite($logfile, $line . "\n"); 
fclose($logfile); 
?> 

注:我必須使用HTTP_CF_CONNECTING_IP而不是REMOTE_ADDR,因爲我在Cloudflare上。

+1

含糊不清的問題。記錄什麼IP?上傳者?觀衆?這段代碼在哪裏加載?任何框架? + 100其他問題 –

+0

提供的PHP代碼只是簡單的代碼,我在某些網頁(如我的網站的主頁)上運行,可以將所有訪問者記錄在.log文件中,格式如下:127.0.0.1 | 11.03.2015 | 17時53分58秒。我也有一個目錄充滿了圖像(屏幕截圖),我想修改我目前不得不以某種方式記錄來自每個圖像的訪問者信息的代碼,但都在一個.log文件中。像這樣:(127.0.0.1 | 11.03.2015 | 17:53:58 | filename.png) – liam727

+0

然後,您需要將所有圖像請求重定向到一個PHP文件,該文件記錄該呼叫,然後提供請求的圖像。這需要一些.htacccess破解(如果你使用的是Apache)或者一些vhost-hacks(如果你在nginx上)......請求我們給你所有的代碼,雖然 –

回答

1

htaccess的捕獲所有請求圖片:

RewriteEngine On 
RewriteBase/
RewriteRule (.*)\.(gif|jpg|png)$ image.php?image=$1.$2 [R,L] 

這是假設你的image.php在根文件夾中。

爲了得到所要求的文件在您image.php文件:

$image = isset($_GET['image'])? $_GET['image'] : null; 

現在你可以用請求的文件名添加記錄和真實的文件返回給訪問者。

+0

無論如何,我可以做到這一點,而不會影響網址?我希望它是domain.com/image.png不是domain.com/image.php?image=image.png – liam727

+0

它是一個非透明的重寫,而不是重定向。用戶只能看到'domain.com/whatever.png'。執行請求由服務器處理,而不是由瀏覽器處理。 –

+0

你能告訴我如何合併$ image = isset($ _ GET ['image'])? $ _GET ['image']:null; 到我之前提供的PHP代碼中? – liam727