php判断IP地址是否在多个IP段内
程序员文章站
2023-02-16 23:48:25
本文实例为大家分享了php判断ip地址是否在多个ip段内的具体代码,供大家参考,具体内容如下ip.class.php
本文实例为大家分享了php判断ip地址是否在多个ip段内的具体代码,供大家参考,具体内容如下
ip.class.php
<?php class ip { /** * 取ip * @return string */ public static 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; } /** * ip转成整形数值 * @param string $ip ip * @return int */ public static 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'); tool::alert('ip地址存在错误...'); //一个工具类,弹出提示信息 } return $int; } /** * 判断ip是否在一个ip段内 * @param string $startip 开始ip * @param string $endip 结束ip * @param string $ip ip * @return bool */ public static function isin($startip, $endip, $ip) { $start = ip::iptoint($startip); $end = ip::iptoint($endip); $ipint = ip::iptoint($ip); $result = false; if ($ipint>=$start && $ipint<=$end) { $result = true; } return $result; } } ?>
iprang.class.php
<?php //将不同的ip段存储到数组中.. $iprang=array( array('222.243.159.1','222.243.159.255'), array('10.1.1.1','10.1.1.255') ); ?>
test.php
<?php require_once 'tool.class.php'; //工具类 require_once 'ip.class.php'; //ip类 require_once 'iprang.class.php'; //ip段范围 $ip = ip::get(); //获取ip地址 $tag='1'; foreach($iprang as $key => $value){ if(!ip::isin($value[0], $value[1], $ip)){ continue; }else{ $tag.=$key; } } if(mb_strlen($tag,'utf-8')==1){ echo "<script src='/iplookup/iplookup.php?format=js&ip=".$ip."' type='text/javascript'></script>";//调用新浪ip接口 echo "<script type='text/javascript'>alert('很遗憾,您所用的设备网络不在某某范围内...\\n".$ip."\\n'+remote_ip_info.province+remote_ip_info.city+remote_ip_info.district); $(\"input[name='submit']\").attr(\"disabled\",true);</script>"; //弹出提示框,显示ip地址、地址以及将提交按钮置为不可用状态 } ?>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。