2015-07-21 106 views
-1

我有一小段代碼我只是測試出來,基本上重定向用戶,如果他們的IP不符合預定義的IP,並且它不匹配寫入IP成文本文件。php從文本文件中讀取併合並重復條目

$file = fopen("ips.txt", "w"); 

if ($ip == "iphere") { 
    echo "Welcome"; 
    fclose($file); 
} else { 
    header('Location: http://www.google.com'); 
    fwrite($file, "\n" . $ip); 
    if ($file) { 
     $array = explode("\n", fread($file, filesize("ips.txt"))); 
    } 

    $result = print_r($array, TRUE); 

    fclose($file); 
} 

我想要做的是採取我寫的文本文件中的IP地址,把他們都到一個數組找到重複的,請記下重複的,過濾出來,然後把它們寫回到那個文件或另一個txt文件,但我卡住了,不知道從哪裏走。

+0

爲什麼不先檢查重複項,然後寫入它,如果它不在文件中? strpos或stripos可以用這個工作。但也有其他方式/功能。 –

+0

如果您更改了處理IP地址的方式,則不必擔心重複。 –

+0

所以你只是想確保你不會在文件中寫入兩次IP? – Rizier123

回答

0

我可以建議你使用serialize或json_encode將ip存儲在文件中,這樣你可以添加更多信息(IP訪問次數,上次訪問次數等)。

我會告訴你一個簡單的例子。

1:創建一些虛擬ips進行測試。

$IPs = array(
'192.168.0.1' => array(
    'visits' => 23, 
    'last' => '2015-07-20' 
), 
'192.168.0.2' => array(
    'visits' => 32, 
    'last' => '2015-06-23' 
) 
); 

所以我們在這裏創建了一個帶有2個IP addreses的關聯數組,它也包含訪問次數和最後一次訪問。

使用php serialize函數或json_encode保存文件(我更喜歡json格式,因爲它可以被其他語言使用)。現在

$for_save = json_encode($IPs); // OR serialize($IPs) 
file_put_contents("FILE_NAME",$for_save); //Save the file with the IP's 

它的時間來讀取文件

$file = fopen("FILE_NAME", "w"); 
$file = json_decode($file) // or unserialize($file); 

,現在我們有數組,我們希望使用我們可以發現IP的使用PHP陣列功能,並offcourse修改有關IPS的信息:

if(array_key_exists("YOUR_IP_HERE",$file)){ 
//What to do if we have found the ip in the file, for example : 
    $file['YOUR_IP']['visits']++; //we add +1 visit for that ip 
} 

現在我們可以再次保存文件

$file = json_encode($file); 
file_put_contents("IP_FILE_NAME",$file); 
+0

這是非常好的謝謝! –

+0

這是一個非常好的解釋良好的答案。 –

0

這種方法存在一些問題,圍繞線程和性能。如果兩個人同時訪問網頁並寫入同一文件,會發生什麼情況?此外,這個文件可以增長到一個無限大小?這會很慢。你不需要手動檢查所有的ip,只有那個存在。

對此使用數據庫表可能會更好。否則,您還需要處理文件鎖定。

的功能check_ips僞代碼:

SELECT * FROM IPS其中ip =?檢查用戶號碼

如果沒有結果,請插入ip。它是未知的。 (也可在需要時您可以添加約束表,以防止重複IP的)

否則,IP被稱爲

您可以在表中記錄數量,日期,最後一次訪問,或其他統計數據爲計算的概要。

0

你可以做伊斯利閱讀與IP在文件中的數組,從數組中得到unique值這樣

$ipList = file(ips.txt); 

$ipUnique = array_unique($ipList); 

然後喲可以保存或解析$ ipUnique您porpose。

相關問題