通过IP范围限制访问(PHP)

时间:2011-05-05 14:06:40

标签: php mysql ip-address subnet

基本上,我的目标是允许我的用户指定用于访问测试的ip范围。所以我们假设这些值存储在我的数据库中:

来自:148.197.34.112

收件人:148.197.34.255

我可以使用哪些功能将这些IP地址转换为数字进行比较?

很明显,如果用户试图加载页面......如果他的IP不在IP范围内,请重新指导它们。

提前致谢:)

2 个答案:

答案 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。