为了检测客户端ip是否位于指定的网络里(如防火墙过滤有时候需要用到这个技术),有如下方法:
1、第一种
        public function netMatch($client_ip, $server_ip, $mask)
{
$mask1 = 32 - $mask;
return ((ip2long($client_ip) >> $mask1) == (ip2long($server_ip) >> $mask1));
} $client_ip = '192.168.1.15';
$server_ip = '192.168.1.1';
$mask = 24; $res = netMatch( $dev_ip, $server_ip , $mask );

  

2、第二种
    1、客户端ip,假设符号是D
    2、该网络下的ip地址段,假设符号是N
    3、该网络下的子网掩码,假设符号是M
    那么,如果客户端ip处于该网络下,应该会满足:
    N==(D&M)
 
    文字解释就是,用客户端ip和子网掩码进行与操作,所得结果应该与该网络下的ip段相等。不过注意一个问题,上面的公式,是用二进制进行计算的,并不是我们常见的点分十进制的ip地址。也就是说,我们获得客户端ip后,应该把它转换为32位二进制数字再进行计算。
    代码如下:
function ip_binay($ip)
{
$ip_array = explode(".",$ip);
$t = '';
foreach($ip_array as $v)
{
$tmp = decbin($v);
$tmp_len = strlen(decbin($v));
if($tmp_len < 8)
$t .= str_repeat( "0",(8 - $tmp_len) ).$tmp;
else
$t .= $tmp;
}
return $t;
}
$server_ip = "0.0.0.0"; //地址段
$mask_ip = "0.0.0.0"; //子网掩码 $client_ip='192.168.1.11';//客户端ip $D=ip_binay($client_ip);
$is_ip_in=0;
$M = ip_binay($mask_ip);
$temp = $D & $M;
$N = ip_binay( $server_ip );
if( $temp == $N ){
$is_ip_in=1;
} if($is_ip_in){
echo "你的ip处于该网络下!";
}else{
echo 'NO';
}

php根据ip段以及子网掩码,判断某ip是否处于某子网下的更多相关文章

  1. [转帖]IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

    IP地址.子网掩码.网络号.主机号.网络地址.主机地址以及ip段/数字-如192.168.0.1/24是什么意思? 2016年03月26日 23:38:50 JeanCheng 阅读数:105674  ...

  2. IP地址、子网掩码和地址分类

    http://blog.csdn.net/bluishglc/article/details/47909593?utm_source=tuicool&utm_medium=referral 实 ...

  3. Nginx 禁用IP IP段

    最近公司网站被竞争对手用爬虫频繁访问,所以我们这边要禁止这些爬虫访问,我们通过nginx 指令就可以实现了 方法一:直接在LB机器上封IP 1.在 blocksip.conf 文件中加入要屏蔽的ip或 ...

  4. 计算机网络九:IP地址、子网掩码、默认网关、DHCP服务器、DNS服务器、WINS服务器

    一.IP地址与子网掩码 1.IP地址 ipv4下,ip地址=网络号+主机号. 2.子网掩码         子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个I ...

  5. 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区

    一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ...

  6. ip效验和ip段的效验

      package com.juchen.utils; import javax.servlet.http.HttpServletRequest; /** * ip 相关的工具方法 */ public ...

  7. IP地址和子网掩码

    A分类IP住址 在第一个领域值规模:0-127  默认子网掩码:255.0.0.0 B分类IP就拿地址的第一个字段值范围:128-191  默认的子网掩码255.255.0.0 C类IP地址的第一个字 ...

  8. 一键批量ping任意ip段的存活主机

    =======================by me===================================== @echo offecho.color FC for /f %%i ...

  9. 查询运营商的ip段

    查询运营商的ip段 所有的IP地址都是通过国际组织NIC(Network Information Center)统一分配的,目前世界上有三个这样的网络信息中心: InterNic: 负责美国及其他地区 ...

随机推荐

  1. Vue双向数据绑定原理解析

    基本原理 Vue.采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter和getter,数据变动时发布消息给订阅者,触发相应函数的回调 ...

  2. 初学者入门web前端:C#基础知识:函数

    入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...

  3. block的定义及使用

    (1)最基础的用法案例,我们可以把block理解为一段类似变量一样的可执行函数代码片段: void (^printBlock)(NSString *x); printBlock = ^(NSStrin ...

  4. Java中ArrayList remove会遇到的坑

    前言 平时最常用的莫过于ArrayList和HashMap了,面试的时候也是问答的常客.先不去管容量.负载因子什么的,就是简单的使用也会遇到坑. Remove 元素 经常遇到的一个场景是:遍历list ...

  5. 【Java IO流】对象的序列化和反序列化

    对象的序列化和反序列化 1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化. 2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObjec ...

  6. my new start

    my new start in blog csdn : today i formally migrate my personal technical blog from sina to here in ...

  7. JavaSE(十)集合之Set

    今天这一篇把之前没有搞懂的TreeSet中的比较搞得非常的清楚,也懂得了它的底层实现.希望博友提意见! 一.Set接口 1.1.Set集合概述 Set集合:它类似于一个罐子,程序可以依次把多个对象 “ ...

  8. 201521123084 《Java程序设计》第7周学习总结

    第7周-集合 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind ------------------------------------------- ...

  9. 201521123091 《Java程序设计》第2周学习总结

    Java 第二周总结 第二周的作业. 一个简陋的目录 1.本章学习总结 2.Java Q&A 3.使用码云管理Java代码 4.PTA实验 5.小任务 1.本章学习总结 基本数据类型 Stri ...

  10. 团队作业4--第一次项目冲刺(Alpha版本)预备工作

    小组说明 我们组是从周一开始对项目进行研究讨论并编程的,因为我们看截止日期是周日,就从周一才开始,起步晚了,是我们认识上的失误,导致我们周一周二的步伐没有协调好,项目进展的不稳定,但是我们在上周末并不 ...