本文实例为大家分享了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地址、地址以及将提交按钮置为不可用状态
}
 
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。