当前位置:首页 > PHP教程 > php应用 > 列表

php判断IP地址是否在多个IP段内

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-22 09:53:35 浏览: 评论:0 

这篇文章主要为大家详细介绍了php判断IP地址是否在多个IP段内,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

本文实例为大家分享了php判断IP地址是否在多个IP段内的具体代码,供大家参考,具体内容如下

IP.class.php

  1. <?php 
  2.    
  3. class Ip { 
  4.   /** 
  5.    * 取IP 
  6.    * @return string 
  7.    */ 
  8.   public static function get() { 
  9.     if ($_SERVER['HTTP_CLIENT_IP'] && $_SERVER['HTTP_CLIENT_IP']!='unknown') { 
  10.         $ip = $_SERVER['HTTP_CLIENT_IP']; 
  11.       } elseif ($_SERVER['HTTP_X_FORWARDED_FOR'] && $_SERVER['HTTP_X_FORWARDED_FOR']!='unknown') { 
  12.         $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
  13.       } else { 
  14.         $ip = $_SERVER['REMOTE_ADDR']; 
  15.       } 
  16.       return $ip
  17.   } 
  18.    
  19.   /** 
  20.    * IP转成整形数值 
  21.    * @param string $ip IP 
  22.    * @return int 
  23.    */ 
  24.   public static function ipToInt($ip) { 
  25.     $ips = explode('.',$ip); 
  26.     if (count($ips)==4) { 
  27.       $int = $ips[0]*256*256*256+$ips[1]*256*256+$ips[2]*256+$ips[3]; //根据IP,a,b,c类进行计算 
  28.     } else { 
  29.       //throw new Exception('ip is error'); 
  30.       Tool::Alert('IP地址存在错误...'); //一个工具类,弹出提示信息 
  31.     } 
  32.     return $int
  33.   } 
  34.    
  35.   /** 
  36.    * 判断IP是否在一个IP段内 
  37.    * @param string $startIp 开始IP 
  38.    * @param string $endIp 结束IP 
  39.    * @param string $ip IP 
  40.    * @return bool 
  41.    */ 
  42.   public static function isIn($startIp$endIp$ip) { 
  43.     $start = Ip::ipToInt($startIp); 
  44.     $end = Ip::ipToInt($endIp); 
  45.     $ipInt = Ip::ipToInt($ip); 
  46.     $result = false; 
  47.     if ($ipInt>=$start && $ipInt<=$end) { 
  48.       $result = true; 
  49.     } 
  50.     return $result
  51.   } 
  52.    
  53.    
  54. ?> 

IpRang.class.php

  1. <?php 
  2.    
  3. //将不同的IP段存储到数组中.. 
  4.    
  5. $iprang=array
  6.   array('222.243.159.1','222.243.159.255'), 
  7.   array('10.1.1.1','10.1.1.255'
  8. ); 
  9. ?> 

test.php

  1. <?php 
  2.    
  3. require_once 'Tool.class.php'//工具类 
  4. require_once 'IP.class.php'//IP类 
  5. require_once 'IpRang.class.php'//IP段范围 
  6.    
  7. $ip = IP::get(); //获取IP地址 
  8. $tag='1'
  9. foreach($iprang as $key => $value){ 
  10.  if(!IP::isIn($value[0], $value[1], $ip)){ 
  11.   continue
  12.  }else
  13.   $tag.=$key
  14.  } 
  15. if(mb_strlen($tag,'utf-8')==1){ 
  16.  echo "<script src='/iplookup/iplookup.php?format=js&ip=".$ip."' type='text/javascript'></script>";//调用新浪IP接口 
  17.  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>"
  18.   //弹出提示框,显示IP地址、地址以及将提交按钮置为不可用状态 
  19.    
  20. ?>

Tags: php判断IP地址 php多个IP段

分享到: