2013-03-27 73 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

我的思考方式,你要存储的数据将帮助您查找更快。将数据保存到排序后的格式中,然后尝试执行二进制搜索,可以帮助您更快地搜索。我只是建议理论部分:)