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

通过IP范围(PHP)限制访问,php,mysql,ip-address,subnet,Php,Mysql,Ip Address,Subnet,基本上,我的目标是允许用户指定访问测试的ip范围。假设这些值存储在我的数据库中: 起始:148.197.34.112 收件人:148.197.34.255 有没有什么函数可以用来将这些ip地址转换成数字进行比较 所以很明显,如果用户试图加载页面…如果他的IP不在IP范围内,请重新引导他们 提前感谢:)该函数将为IPv4地址执行此操作 要将IPv6地址转换为128位整数,请使用该函数。如果数据库中存储的值正好是这种格式,则可以在php中使用函数(至少对于mysql)和ip2long() $iplo

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

起始:148.197.34.112

收件人:148.197.34.255

有没有什么函数可以用来将这些ip地址转换成数字进行比较

所以很明显,如果用户试图加载页面…如果他的IP不在IP范围内,请重新引导他们

提前感谢:)

该函数将为IPv4地址执行此操作


要将IPv6地址转换为128位整数,请使用该函数。

如果数据库中存储的值正好是这种格式,则可以在php中使用函数(至少对于mysql)和ip2long()

$iplong=ip2long($ip);
$q=mysql_查询(“从ip中选择*,其中INET_ATON(ip_FROM)='”“$iplong.”“限制0,1”);

但是,当然,最好是在DB中存储长值,而不是纯IP。

如果有人也能提供从IPv6地址生成范围的代码,我将不胜感激。在PHP中这样做有具体的原因吗?因为您可以在webserver配置中轻松地完成这项工作…我没有访问webserver配置的权限——它是uni项目。谢谢大家。谢谢。出于兴趣,有没有处理IPv6地址的方法?
$iplong=ip2long($ip);
$q=mysql_query("SELECT * FROM ips WHERE INET_ATON(ip_from)<='".$iplong."' AND INET_ATON(ip_to)>='".$iplong."' LIMIT 0,1");