判断用户ip是否在同一网段或同一局域网实例
原理根据用户给出的ip,再获取当前IP然后转换成数字型的,根据IP,a,b,c类进行计算,根据进行对比就OK
<?php $start = ipToInt('192.168.1.110'); $end = ipToInt('192.168.0.1'); $ipInt = ipToInt(get()); $result = false; if ($ipInt >= $start && $ipInt <= $end) { $result = true; } if ($result) { echo '在同一网段'; } else { echo '不在同一网段'; } //不在同一网段 /* * IP转成整形数值 * @param string $ip IP * @return int */ function ipToInt($ip) { $ips教程 = explode('.', $ip); if (count($ips) >= 4) { $int = $ips[0] * 256 * 256 * 256 + $ips[1] * 256 * 256 + $ips[2] * 256 + $ips[3]; //根据IP,a,b,c类进行计算 } else { throw new Exception('ip is error'); } return $int; } /* * 获取用户IP地址 192.68.0.110 */ function get() { if ($_SERVER['HTTP_CLIENT_IP'] && $_SERVER['HTTP_CLIENT_IP'] != 'unknown') { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif ($_SERVER['HTTP_X_FORWARDED_FOR'] && $_SERVER['HTTP_X_FORWARDED_FOR'] != 'unknown') { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; }
本文地址:http://www.phprm.com/code/33232.html
转载随意,但请附上文章地址:-)