31 if (strpos($cidr,
'/') ===
false) {
35 list ($net,
$mask) = explode(
'/', $cidr);
40 if (strstr($ip,
':') || strstr($net,
':')) {
44 $ip_pack = @inet_pton($ip);
45 $net_pack = @inet_pton($net);
47 if ($ip_pack ===
false || $net_pack ===
false) {
52 $ip_ip = str_split(bin2hex($ip_pack), 8);
53 foreach ($ip_ip as &$value) {
54 $value = hexdec($value);
57 $ip_net = str_split(bin2hex($net_pack), 8);
58 foreach ($ip_net as &$value) {
59 $value = hexdec($value);
62 $ip_ip[0] = ip2long($ip);
63 $ip_net[0] = ip2long($net);
66 for (
$i = 0;
$mask > 0 &&
$i <
sizeof($ip_ip);
$i++) {
70 $iteration_mask =
$mask;
74 $ip_mask = ~((1 << (32 - $iteration_mask)) - 1);
76 $ip_net_mask = $ip_net[
$i] & $ip_mask;
77 $ip_ip_mask = $ip_ip[
$i] & $ip_mask;
79 if ($ip_ip_mask != $ip_net_mask) {
if((!isset($_SERVER['DOCUMENT_ROOT'])) OR(empty($_SERVER['DOCUMENT_ROOT']))) $_SERVER['DOCUMENT_ROOT']
static ipCIDRcheck($cidr, $ip=null)
Check whether an IP address is part of a CIDR.