基本上,我的目标是允许我的用户指定用于访问测试的ip范围。所以我们假设这些值存储在我的数据库中:
来自:148.197.34.112
收件人:148.197.34.255
我可以使用哪些功能将这些IP地址转换为数字进行比较?
很明显,如果用户试图加载页面......如果他的IP不在IP范围内,请重新指导它们。
提前致谢:)
答案 0 :(得分:6)
ip2long()函数将完成IPv4地址的工作。
要将IPv6地址转换为128位整数,请使用inet_pton()函数。
答案 1 :(得分:1)
如果数据库中的值完全以这种格式存储,那么你可以在php中使用INET_ATON函数(至少用于mysql)和ip2long()。
$iplong=ip2long($ip);
$q=mysql_query("SELECT * FROM ips WHERE INET_ATON(ip_from)<='".$iplong."' AND INET_ATON(ip_to)>='".$iplong."' LIMIT 0,1");
但是,当然,在DB中存储长值会更好,而不是纯IP。