验证 IP 和 CIDR 组合
我有一个用户提交了带有网络掩码的 IP 地址,我需要确保它是有效的。例如,如果用户提交:10.113.0.0/14,我需要将其标记为无效,因为该 IP 范围的 /14 块以 10.112.0.0 开头。
我怎样才能在 PHP 中做到这一点?
I have a user submitted IP address with netmask, and I need to make sure it is valid. For instance, if the user submits: 10.113.0.0/14, I need to flag it as invalid, because the /14 block for that IP range begins with 10.112.0.0.
How can I do this in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我有同样的问题,所以为谷歌用户发布我的结果:
解释
让我们评估 255.255.0.0/16
对于 ip 255.255.0.0,long 的二进制表示为 10000000000000000
$ipLong << $prefix
左移 16 位以删除所有网络 ID 位。^ 0
评估先前操作后是否设置了任何位。true
,我们就会得到无效的对。I had the same question, so posting my result for googlers:
Explanation
Let's evaluate 255.255.0.0/16
For ip 255.255.0.0 binary representation of long is 10000000000000000
$ipLong << $prefix
Shift 16 bits to left for deleting all network ID bits.^ 0
Evaluate if any bit is set after previous operation.true
we have invalid pair.http: 底部的函数 cidrMatch //framework.zend.com/svn/framework/extras/incubator/library/ZendX/Whois/Adapter/Cidr.php 应该做你想做的
the function cidrMatch at the bottom of http://framework.zend.com/svn/framework/extras/incubator/library/ZendX/Whois/Adapter/Cidr.php should do what you want
工具“sipcalc”将帮助您验证网络掩码和 cidr。
http://www.routemeister.net/
Tool 'sipcalc' will help you to validate netmask and cidr.
http://www.routemeister.net/