【问题标题】:Restricting access via IP-ranges (PHP)通过 IP 范围限制访问 (PHP)
【发布时间】:2011-08-19 10:24:46
【问题描述】:

基本上,我的目标是让我的用户指定一个 IP 范围以访问测试。所以假设这些值存储在我的数据库中:

来自:148.197.34.112

收件人:148.197.34.255

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

很明显,如果用户尝试加载页面...如果他的 IP 不在 IP 范围内,请重定向它们。

提前致谢:)

【问题讨论】:

  • 如果有人能提供代码来从 IPv6 地址生成范围,我将不胜感激。
  • 在 PHP 中这样做是否有特定的原因?因为您可以在您的网络服务器配置中轻松做到这一点...
  • 我无权访问网络服务器配置 - 它是一个 uni 项目。谢谢大家。

标签: php mysql ip-address subnet


【解决方案1】:

ip2long() 函数将为 IPv4 地址完成这项工作。

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

【讨论】:

  • merci :D 出于兴趣,有这样的事情来处理 IPv6 地址吗?
【解决方案2】:

如果数据库中的值完全以这种格式存储,那么您可以在 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。

【讨论】:

    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 2011-06-29
    • 2017-05-08
    • 1970-01-01
    • 2018-02-18
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多