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 相关文章推荐
openflashchart 2.0 简单案例php版
May 21 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
Yii2 assets清除缓存的方法
May 16 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 PHP
解决PhpStorm64不能启动的问题
Jun 20 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安装全攻略:APACHE
2006/10/09 PHP
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
JS input 数字验证代码
2009/07/30 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
javascript动态加载三
2012/08/22 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
django rest framework之请求与响应(详解)
2017/11/06 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
python3中for循环踩过的坑记录
2020/12/14 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
安全隐患整改报告
2014/11/06 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
52条SQL语句教你性能优化
2021/05/25 MySQL
swagger如何返回map字段注释
2021/07/03 Java/Android