我有一个用户提交的带网络掩码的IP地址,我需要确保它是有效的。例如,如果用户提交:10.113.0.0/14,我需要将其标记为无效,因为该IP范围的/ 14块以10.112.0.0开头。
我如何在PHP中执行此操作?
答案 0 :(得分:2)
我有同样的问题,所以将结果发布给googlers:
$ipLong = ip2long($ip);
if ( ( ($ipLong << $prefix) ^ 0) == true ) {
//IP and prefix pair is not valid
}
让我们评估255.255.0.0/16
对于ip 255.255.0.0,long的二进制表示为10000000000000000
$ipLong << $prefix
向左移16位以删除所有网络ID位。^ 0
评估上一次操作后是否设置了任何位。true
,则表示无效对。答案 1 :(得分:0)
http://framework.zend.com/svn/framework/extras/incubator/library/ZendX/Whois/Adapter/Cidr.php底部的函数cidrMatch应该做你想做的事情
答案 2 :(得分:0)
工具'sipcalc'将帮助您验证网络掩码和cidr。