php判断ip段,php判断IP地址是否在多个IP段内

本文详细介绍了如何使用PHP编写代码来检查一个IP地址是否位于预定义的多个IP段内,并包含了一个错误检测机制。通过实例展示了如何使用Ip类的方法,如ipToInt()和isIn(),来完成这项任务,同时提供了错误处理和提示功能。
摘要由CSDN通过智能技术生成

php判断IP地址是否在多个IP段内,地址,弹出,段内,本文,工具

php判断IP地址是否在多个IP段内

易采站长站,站长之家为您整理了php判断IP地址是否在多个IP段内的相关内容。

本文实例为大家分享了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 "";//调用新浪IP接口 echo ""; //弹出提示框,显示IP地址、地址以及将提交按钮置为不可用状态} ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。以上就是关于对php判断IP地址是否在多个IP段内的详细介绍。欢迎大家对php判断IP地址是否在多个IP段内内容提出宝贵意见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值