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 相关文章推荐
用PHP调用Oracle存储过程
Oct 09 PHP
用PHP制作静态网站的模板框架(一)
Oct 09 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
php实现事件监听与触发的方法
Nov 21 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
php连接oracle数据库的核心步骤
May 26 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
PHP文件操作详解
Dec 30 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
phpQuery采集网页实现代码实例
Apr 02 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生成缩略图的类代码
2008/10/02 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
python基于http下载视频或音频
2018/06/20 Python
用Python读取几十万行文本数据
2018/12/24 Python
python实现多张图片拼接成大图
2019/01/15 Python
在python里面运用多继承方法详解
2019/07/01 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
python输入中文的实例方法
2020/09/14 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
Html5自定义字体解决方法
2019/10/09 HTML / CSS
酒后驾车标语
2014/06/30 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
2014年保卫工作总结
2014/12/05 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
论文答谢词
2015/01/20 职场文书
一般纳税人申请报告
2015/05/18 职场文书