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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 PHP
PHPMyAdmin 快速配置方法
May 11 PHP
php win下Socket方式发邮件类
Aug 21 PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 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作的文本留言本的例子(六)
2006/10/09 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
PHP链表操作简单示例
2016/10/15 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python实现的爬虫功能代码
2017/06/24 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
Python 在局部变量域中执行代码
2020/08/07 Python
超级实用的8个Python列表技巧
2020/08/24 Python
学校后勤岗位职责
2014/02/19 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
2014年国培研修感言
2014/03/09 职场文书
岗位安全生产责任书
2014/07/28 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python