IPアドレスのマッチング
IPアドレス(単数、複数)のマッチングするモジュール
PHP
/**
*
* IPアドレスのマッチング
*
* @param string $ip_list
* @param string $remote_addr
* @return boolean
*/
function getIpMatching($ip_list, $remote_addr)
{
$acsess_flg = FALSE;
if (strpos($ip_list, ',') === FALSE) {
// IPの指定が1つ XXX.XXX.XXX.XXX/XX
$ip_list_arr = array($ip_list);
} else {
// IPの指定が複数 XXX.XXX.XXX.XXX/XX,XXX.XXX.XXX.XXX/XX,XXX.XXX.XXX.XXX/XX
$ip_list_arr = explode(',', $ip_list);
}
foreach($ip_list_arr as $ipListKey => $ipListVal) {
if (strpos($ipListVal, '/') === FALSE) {
$ip = $ipListVal;
// IPの形式がXXX.XXX.XXX.XXX
if ($ip == $remote_addr) {
$acsess_flg = TRUE;
break;
}
} else {
list($ip, $bit_mask) = explode('/', $ipListVal);
// IPの形式がXXX.XXX.XXX.XXX/XX
$allow_ip_long = ip2long($ip) >> (32 - $bit_mask);
$acsess_ip_long = ip2long($remote_addr) >> (32 - $bit_mask);
if ($acsess_ip_long == $allow_ip_long) {
$acsess_flg = TRUE;
break;
}
}
}
return $acsess_flg;
}
サンプル