2013-03-27 115 views
0

比較用戶IP我有一個包含約100.000 IP的(黑名單),我想檢查當前用戶的IP是存在於.txt文件,如果是執行腳本應該停止.txt文件。與.txt文件內容

什麼是做到這一點,而無需使用.htaccess中的最有效的方式。

+2

請發佈您已經嘗試過的代碼。 [從文本文件中使用的htaccess潘基IP地址]的 – j08691 2013-03-27 18:50:28

+1

可能重複(http://stackoverflow.com/questions/13008242/ban-ips-from-text-file-using-htaccess)的[如何阻止 – mario 2013-03-27 18:50:28

+0

可能重複100,000+個人IP地址](http://stackoverflow.com/q/15579620) – mario 2013-03-27 18:51:00

回答

1
$file = file_get_contents("your_text_file.txt"); 
if(preg_match("/$ip/", $file)) { 
    // block 
} 

如果你打算使用的preg_match阻止你可能希望將新行添加到搜索字符串,逃離一段字符,因爲否則他們將匹配任何單個字符(但不太可能,這可能會阻止用戶正常) 。 Htaccess更適合這個甚至是數據庫查詢。

+0

這也將匹配接近相同的IP或?我的意思是,如果我在禁止列表中有127.0.0.12,並且我的IP是127.0.0.1,它也會阻止? – 2013-03-27 19:05:21

+0

顯然它確實如此,我將如何解決這個問題? – 2013-03-27 19:26:52

+0

如果每個IP地址是一個新行添加\ n至例如搜索字符串的結尾「/127\.0\.0\.12\n/」您可以使用str_replace函數換出「」 「\」的字符。 – Adam 2013-03-27 19:55:09

0

我的思考方式,你要存儲的數據將幫助您查找更快。將數據保存到排序後的格式中,然後嘗試執行二進制搜索,可以幫助您更快地搜索。我只是建議理論部分:)