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

吾爱主题 阅读:126 2021-10-22 14:29:00 评论:0

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

IP.class.php

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 <?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

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

test.php

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?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地址、地址以及将提交按钮置为不可用状态 }   ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/luowei85520/article/details/77983868

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容