getIpRange($ip, $ips); } elseif (IpUtils::isIp($ip)) { $ips[] = $ip; } } } foreach ($ips as $ip) { if (SfIpUtils::checkIp($clientIp, $ip)) { return true; } } return false; } /** * @param string $ipRange * @param array $ips * * @return array */ public function getIpRange($ipRange, $ips = array()) { $pieces = array_map('trim', explode('-', $ipRange)); if (isset($pieces[0]) && isset($pieces[1]) && IpUtils::isIp($pieces[0]) && IpUtils::isIp($pieces[1])) { $firstIp = $ip = ip2long($pieces[0]); $lastIp = ip2long($pieces[1]); while ($ip <= $lastIp) { $ips[] = long2ip($ip); $ip++; } } elseif (isset($pieces[0]) && IpUtils::isIp($pieces[0])) { $ips[] = $pieces[0]; } return $ips; } /** * @param string $ip * * @return boolean */ public static function isIp($ip) { if (strpos($ip, '/') !== false) { $pieces = explode('/', $ip); $ip = $pieces[0]; } return filter_var($ip, FILTER_VALIDATE_IP); } }