/** * isAddr() * * @access public * @param string $sAddr * @param array &$aryBand * @return boolean */ function isAddr($sAddr, &$aryBand) { if ('0.0.0.0' == $sAddr) { return true; } $iAddr = BlockenCommon::_ip2long($sAddr); if (!$iAddr) { return false; } foreach ($aryBand as $sMask) { $aryTmp = explode('/', $sMask); $sTarget = $aryTmp[0]; if (isset($aryTmp[1])) { $sMask = $aryTmp[1]; } else { $sMask = '32'; } $iTarget = BlockenCommon::_ip2long($sTarget); if (!$iTarget) { continue; } $sMask = BlockenCommon::_length2subnet(intval($sMask)); $iMask = BlockenCommon::_ip2long($sMask); if (!$iMask) { continue; } if (($iAddr & $iMask) == ($iTarget & $iMask)) { return true; } } return false; }