/** * ホストが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 チェック失敗 }