【问题标题】:Store and search IPv6 ranges in PHP MySQL在 PHP MySQL 中存储和搜索 IPv6 范围
【发布时间】:2012-03-03 20:00:09
【问题描述】:

我有一个 CVS 数据库,它提供 V6 范围 2001:1800::/32 和国家代码 US。到目前为止,我将它们放在$ip_address $cc_code 中。

我需要将每个范围存储在 MySQL 中。我还需要获取用户 IP 地址并获取国家代码。我已经通过存储开始和结束范围让 V4 工作了,但是数据库已经给了我。所以我坚持让 V6 工作。我做了一些谷歌搜索,在这方面找不到太多。也许我问错了?那么这里有人可以给我一些建议吗?我已经知道如何检测 V4 和 V6。所以到目前为止我已经做了很多。只需存储范围/代码并在我卡住的地方将其停用。

【问题讨论】:

  • 一切正常吗?您有机会发布您的解决方案吗?

标签: php mysql ipv6


【解决方案1】:

IP 地址基本上是整数,您只需将它们转换并与基本数学技能交互:WHERE $ip BETWEEN start AND endhttp://www.samclarke.com/2011/07/php-ipv6-to-128bit-int/

【讨论】:

    【解决方案2】:

    MySQL 5.6.3 引入了以下新函数来处理 IPv6 地址:

    INET6_ATON()返回IP地址的数值

    INET6_NTOA()从数值返回IP地址

    例如,hex(INET6_ATON('fdfe::5a55:caff:fefa:9089')) 返回FDFE0000000000005A55CAFFFEFA9089

    您可以在数据库中将 IPv6 存储为 VARBINARY(16)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 2014-11-01
      • 2010-09-28
      • 1970-01-01
      • 2013-09-04
      相关资源
      最近更新 更多