Esempio n. 1
0
 /**
  * ホストがBBQに焼かれているか?
  *
  * @link  http://bbq.uso800.net/code.html
  * @return  boolean  焼かれていたらtrueを返す
  * @access  public
  * @static
  */
 function isAddrBurned($addr = null)
 {
     if (is_null($addr)) {
         $addr = $_SERVER['REMOTE_ADDR'];
     }
     $ip_regex = '/^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/';
     $errmsg = "\n<br><b>NOTICE: Wrong IP Address given.</b> ({$addr})<br>\n";
     // IPアドレスを検証
     if (!preg_match($ip_regex, $addr, $ipv4)) {
         trigger_error($errmsg, E_USER_NOTICE);
         return false;
         // IPアドレスの書式に合致しない
     }
     // 問い合わせるホスト名を設定
     $query_host = 'niku.2ch.net';
     for ($i = 1; $i <= 4; $i++) {
         $octet = $ipv4[$i];
         if ($octet > 255) {
             trigger_error($errmsg, E_USER_NOTICE);
             return false;
             // IPアドレスの書式に合致しない
         }
         $query_host = $octet . '.' . $query_host;
     }
     // 問い合わせを実行
     $result_addr = HostCheck::cachedGetHostByName($query_host);
     if ($result_addr == '127.0.0.2') {
         return true;
         // BBQに焼かれている
     }
     return false;
     // BBQに焼かれていない or チェック失敗
 }