Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP进行IP黑名单查找_Php - Fatal编程技术网

用PHP进行IP黑名单查找

用PHP进行IP黑名单查找,php,Php,我试图计算一个IP在数组函数“dnsblookup”中出现的命中数。如果IP出现三次,则应回显“3 | 10”,其中10是数组中黑名单数据库的总数。我的代码为每个IP返回“1 | 10”,即使它在数组中的黑名单数据库中出现多次。我不知道我在哪里犯的错误。我需要帮助来完成这个项目。非常感谢。我将多个星号(*)放在我遇到问题的确切代码之前 <?php function dnsbllookup($ip) { $dnsbl_lo

我试图计算一个IP在数组函数“dnsblookup”中出现的命中数。如果IP出现三次,则应回显“3 | 10”,其中10是数组中黑名单数据库的总数。我的代码为每个IP返回“1 | 10”,即使它在数组中的黑名单数据库中出现多次。我不知道我在哪里犯的错误。我需要帮助来完成这个项目。非常感谢。我将多个星号(*)放在我遇到问题的确切代码之前

    <?php

        function dnsbllookup($ip)
         {

            $dnsbl_lookup = array (
             "dnsbl-1.uceprotect.net","all.s5h.net","wormrbl.imp.ch",
             "dnsbl-2.uceprotect.net","blacklist.woody.ch",
             "dnsbl-3.uceprotect.net","combined.abuse.ch","dnsbl.spfbl.net",
             "dnsbl.dronebl.org","http.dnsbl.sorbs.net");

           $list = "";

           if ($ip) {
            $reverse_ip = implode(".", array_reverse(explode(".", $ip)));
            foreach ($dnsbl_lookup as $host) {
          if (checkdnsrr($reverse_ip . "." . $host . ".", "A")) {
            $list .= implode(".", array_reverse(explode(".",$reverse_ip)))   . ' <font color="red"> 
            <strong>is Listed in </strong></font>'. $host . '<br />';

            }
          }
       }

     if (empty($list)) {
      echo 'No record was not found in the IP blacklist database for:  '.$ip;
      echo  $list;
      echo "<br>";
      echo "0";
      echo "|";
      echo count($dnsbl_lookup);

      ********************
       } else {
       $list1 = explode(" ", $list);
       echo ($list);
       echo "<br>";
       echo "Blacklisted: ".count($list1);
       echo "|";
       echo count($dnsbl_lookup);
        }
      }

您应该降低复杂性,并使用字符串插值以便于阅读和调试

function dnsbllookup($ip)
{
  $dnsbl_lookup =
    [
      'dnsbl-1.uceprotect.net', 'all.s5h.net', 'wormrbl.imp.ch',
      'dnsbl-2.uceprotect.net', 'blacklist.woody.ch',
      'dnsbl-3.uceprotect.net', 'combined.abuse.ch', 'dnsbl.spfbl.net',
      'dnsbl.dronebl.org', 'http.dnsbl.sorbs.net'
    ];

  $dns_count = count($dnsbl_lookup);

  $list = [];

  if ($ip)
  {
    $reverse_ip = implode(".", array_reverse(explode(".", $ip)));

    foreach ($dnsbl_lookup as $host)
      if (checkdnsrr("$reverse_ip.$host.", "A"))
        $list[] = "$ip <font color=\"red\"><strong>is Listed in </strong></font> $host<br />\n";
  }

  $list_count = count($list);

  if (0 === $list_count)
    echo "No record was not found in the IP blacklist database for:  $ip<br>\n";
  else
  {
    $list_str = implode(" ", $list);
    echo "$list_str<br>\nBlacklisted: $list_count<br>\n";
  }
  echo "$list_count|$dns_count\n";
}

dnsbllookup('54.201.153.20'); // 3 entries
dnsbllookup('185.12.225.17'); // 1 entry
函数dnsbllookup($ip)
{
$dnsbl_查找=
[
“dnsbl-1.uceprotect.net”、“all.s5h.net”、“wormrbl.imp.ch”,
'dnsbl-2.net'、'blacklist.woody.ch',
'dnsbl-3.net'、'combined.Park.ch'、'dnsbl.spfbl.net',
“dnsbl.dronebl.org”,“http.dnsbl.sorbs.net”
];
$dns\u count=count($dnsbl\u查找);
$list=[];
若有($ip)
{
$reverse_ip=内爆(“.”,数组_reverse(explode(“.”,$ip));
foreach($dnsbl_查找为$host)
如果(选中DNSRR(“$reverse\u ip.$host.”,“$A”))
$list[]=“$ip列在$host
\n”中; } $list\U count=计数($list); 如果(0==$list\U计数) echo“在IP黑名单数据库中找不到任何记录:$IP
\n”; 其他的 { $list_str=内爆(“,$list”); 回显“$list\U str
\n不清晰:$list\U count
\n”; } 回显“$list_count |$dns_count\n”; } dnsbllookup('54.201.153.20');//3项 dnsbllookup('185.12.225.17');//1项
请提供您给定列表中多个提供商的一些IP黑名单。感谢您的回复。你可以使用这个IP;“185.12.225.17”,但请将“spam.dnsbl.sorbs.net”和“dyna.spamrats.com”添加到黑名单数据库以增加发生率@卡西莫多克隆