簡體   English   中英

使用 PHP 查找 IP 黑名單

[英]IP Blacklist lookup with PHP

我正在嘗試計算 IP 在數組函數“dnsblookup”中出現的點擊次數。 如果IP出現3次,則應echo "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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM