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.ini中文版(2)
Oct 09 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
PHP学习之正则表达式
Apr 17 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
PHP 批量删除 sql语句
2009/06/05 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
tab栏切换原理
2017/03/22 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
教师个人剖析材料
2014/02/05 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
企业人事任命书
2014/06/05 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
综治维稳工作汇报
2014/10/27 职场文书
Django实现聊天机器人
2021/05/31 Python
5行Python代码实现一键批量扣图
2021/06/29 Python