将IP保存到数据库中

将IP保存到数据库中

问题描述:

当用户登录时,我想将他们的IP保存在数据库中。我会怎么做?什么类型最适合用于MySQL领域? PHP代码如何获得IP看起来像?将IP保存到数据库中

我正在考虑将它作为登录/会话内容的额外安全功能。我正在考虑检查用户用数据库登录的IP,用户现在使用IP作为检查会话的补充。所以它首先检查会话,然后检查你是否有一个有效的IP。

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

查看mysql中的INET_NTOA和INET_ATON函数。它们将虚线符号IP地址转换为32位整数。这使您可以仅以4个字节而不是15个字节存储IP。确保你使用了一个unsigned int而不是一个带符号的int。

+0

这些功能似乎也不支持IPv6。我认为最好的解决方案是一个blob。我很惊讶MySQL没有像postgres的inet类型那样的专用数据类型。 – Artefacto 2010-06-06 18:53:27

+0

它们支持IPv6,但会返回一个8字节的整数而不是4字节的整数。 – 2010-06-06 18:55:36

+2

至于IPv6 - http://*.com/questions/420680/how-to-store-ipv6-compatible-address-in-a-relational-database/420688#420688 – 2010-06-06 18:58:18

关于William Leader的建议,PHP有两个函数ip2long和long2ip,完全符合他所谈论的内容。

的劳里·莱赫蒂宁说,你用$_SERVER['REMOTE_ADDR']来获得IP地址,一个简单的PHP代码看下面......

​​

这只是一个样品只需修改它适合您的需求。 ..