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


Posted in PHP onAugust 18, 2020

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
支持数组的ADDSLASHES的php函数
Feb 16 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
php一维二维数组键排序方法实例总结
Nov 13 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
PHP中的traits简单使用实例
May 13 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
PHP获取网站中各文章的第一张图片的代码示例
May 20 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP7新特性
Mar 09 PHP
PHP 8新特性简介
Aug 18 #PHP
PHP大文件及断点续传下载实现代码
Aug 18 #PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 #PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 #PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 #PHP
PHP unset函数原理及使用方法解析
Aug 14 #PHP
PHP常量及变量区别原理详解
Aug 14 #PHP
You might like
php访问查询mysql数据的三种方法
2006/10/09 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
javascript表单正则应用
2017/02/04 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
Python同时迭代多个序列的方法
2020/07/28 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
自我鉴定注意事项
2014/01/19 职场文书
一名老师的自我评价
2014/02/07 职场文书
论群众路线学习笔记
2014/11/06 职场文书
爱心募捐感谢信
2015/01/22 职场文书
关于学习的决心书
2015/02/05 职场文书
求职简历自我评价2015
2015/03/10 职场文书
催款函范文
2015/06/24 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
基于Python实现流星雨效果的绘制
2022/03/18 Python
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs