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动态创建Flash动画
Oct 09 PHP
图书管理程序(二)
Oct 09 PHP
如何使用PHP中的字符串函数
Nov 24 PHP
PHP 飞信好友免费短信API接口开源版
Jul 22 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
PHP仿微信发红包领红包效果
Oct 30 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
PHP实现文件上传功能实例代码
May 18 PHP
基于php数组中的索引数组和关联数组详解
Mar 12 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 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 Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
php获取excel文件数据
2017/04/21 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
基于Python的关键字监控及告警
2017/07/06 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
pycharm显示远程图片的实现
2019/11/04 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
师范学院毕业生求职信范文
2013/12/26 职场文书
电子商务自荐书范文
2014/01/04 职场文书
优秀交警事迹材料
2014/01/26 职场文书
承诺书格式范文
2014/06/03 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
安全保证书怎么写
2015/02/28 职场文书
区域销售大会开幕词
2016/03/04 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript