【问题标题】:Comparing User IP with .txt file content将用户 IP 与 .txt 文件内容进行比较
【发布时间】:2013-03-18 00:24:06
【问题描述】:

我有一个 .txt 文件,其中包含大约 100.000 个 IP(列入黑名单),我想检查该 .txt 文件中是否存在当前用户 IP,如果是,则脚本执行应该停止。

不使用 .htaccess 的最有效方法是什么。

【问题讨论】:

标签: php


【解决方案1】:
$file = file_get_contents( "your_text_file.txt" );
if( preg_match( "/$ip/", $file ) ) {
  // block
}

如果您要使用 preg_match 进行阻止,您可能需要在搜索字符串中添加换行符并转义句点字符,否则它们将匹配任何单个字符(尽管不太可能,这可能会阻止普通用户)。 Htaccess 更适合这个甚至是数据库查询。

【讨论】:

  • 这也将匹配几乎相同的 IP 或?我的意思是,如果我在禁止列表中有 127.0.0.12,而我的 IP 是 127.0.0.1,它也会阻止?
  • 如果每个 IP 地址都在一个新行上,请将 \n 添加到搜索字符串的末尾,例如“/127\.0\.0\.12\n/”,您可以使用 str_replace 来换掉“。” “\”的字符。
  • 谢谢,同时我发现了这个:if( preg_match( "#\b{$ip}\b#", $file )
【解决方案2】:

我认为您存储数据的方式将帮助您更快地查找。将数据保持为排序格式,然后尝试进行二进制搜索之类的事情,可以帮助您更快地搜索事情。我只是建议理论部分:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多