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 相关文章推荐
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
五个PHP程序员工具
May 26 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
mysql 性能的检查和优化方法
Jun 21 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
php去除数组中重复数据
Nov 18 PHP
用PHP写的一个冒泡排序法的函数简单实例
May 26 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
PHP生成随机数的方法总结
Mar 01 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP _construct()函数讲解
2019/02/03 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
中科软测试工程师面试题
2012/06/16 面试题
你懂得怎么写自荐信吗?
2013/12/27 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
党员承诺书格式
2014/05/21 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
服装店员工管理制度
2015/08/07 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
Python合并pdf文件的工具
2021/07/01 Python
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript