在数据库中保存IP

Kna*_*arf 2 php mysql ip

当用户登录时,我想在数据库中保存他们的IP.我该怎么办?MySQL字段最适合使用哪种类型?PHP代码如何获得IP看起来像?

我正在考虑将它用作登录/会话内容的额外安全功能.我正在考虑检查用户从数据库登录的IP,用户现在拥有的IP作为检查会话的补充.因此,它首先检查会话,然后检查您是否有有效的IP.

这是一个很好的额外功能吗?还有什么其他方法可以让它更安全?

Wil*_*der 9

看一下mysql中的INET_NTOA和INET_ATON函数.它们在点分表示法IP地址之间转换为32位整数.这允许您以4个字节而不是15个字节存储IP.确保使用unsigned int而不是signed int.

  • 至于IPv6 - http://stackoverflow.com/questions/420680/how-to-store-ipv6-compatible-address-in-a-relational-database/420688#420688 (2认同)
  • 我对此表示怀疑,因为IPv6中的地址长度为128位,因此它们不适合8字节整数. (2认同)