※PEAR の Net/IPv4が必要
/**
* @param array IP/Subnet Set
* @return boolean
*/
function checkInIP($set) {
require_once 'Net/IPv4.php';
foreach ($set as $ip=>$subnet) {
if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], "{$ip}/{$subnet}")) {
return true;
}
}
return false;
}
/**
* @return boolean
*/
function checkInDoCoMoIP() {
$set = array(
'210.153.84.0' => '24'
,'210.136.161.0' => '24'
,'210.153.86.0' => '24'
,'124.146.174.0' => '24'
,'124.146.175.0' => '24'
//,'202.229.176.0' => '24' (2010年7月上旬に追加予定)
//,'202.229.177.0' => '24' (2010年7月上旬に追加予定)
//,'202.229.178.0' => '24' (2010年7月上旬に追加予定)
);
return checkInIP($set);
}
/**
* @return boolean
*/
function checkInAuIP() {
$set = array(
'210.230.128.224' => '28',
'121.111.227.160' => '27',
'61.117.1.0' => '28',
'219.108.158.0' => '27',
'219.125.146.0' => '28',
'61.117.2.32' => '29',
'61.117.2.40' => '29',
'219.108.158.40' => '29',
'219.125.148.0' => '25',
'222.5.63.0' => '25',
'222.5.63.128' => '25',
'222.5.62.128' => '25',
'59.135.38.128' => '25',
'219.108.157.0' => '25',
'219.125.145.0' => '25',
'121.111.231.0' => '25',
'121.111.227.0' => '25',
'118.152.214.192' => '26',
'118.159.131.0' => '25',
'118.159.133.0' => '25',
'118.159.132.160' => '27',
'111.86.142.0' => '26',
'111.86.141.64' => '26',
'111.86.141.128' => '26',
'111.86.141.192' => '26',
'118.159.133.192' => '26'
);
return checkInIP($set);
}
/**
* @return boolean
*/
function checkInSoftbankIP() {
$set = array(
'123.108.237.0' => '27'
,'202.253.96.224' => '27'
,'210.146.7.192' => '26'
,'210.175.1.128' => '25'
,'123.108.237.224' => '27'
,'202.253.96.0' => '28'
);
return checkInIP($set);
}
最初は正規表現でなんとかしようと思ったんだが、au のパターンが多すぎて断念。