不同的浏览器,不同的IP?

时间:2011-11-15 21:30:47

标签: php browser ip ipv6 ipv4

我通过在MySQL数据库中保存$_SERVER['REMOTE_ADDR']的值来保存用户的IP地址。问题是Firefox和Chrome $_SERVER['REMOTE_ADDR']都是::1(这意味着 IPv6 中的localhost),而IE和Opera的问题是127.0.0.1 IPv4 < /强>)。

所以,我的问题是

  • IP版本是否依赖于浏览器? (我曾经认为它取决于 电脑)

  • 我应该在数据库中创建两个字段,一个用于IPv4地址,一个用于IPv6地址吗?

  • 我应该将所有IP统一到IPv6吗?我怎样才能在PHP中做到这一点(如果可能的话)?

3 个答案:

答案 0 :(得分:6)

  1. 相当明显 - 你的盒子支持IPv6,Firefox / Chrome只要有可用就使用IPv6,而IE和Opera则没有(或者它是默认的默认设置)。

  2. 将地址存储在足以容纳IPv6地址的字符串中。

  3. 不,'因为一般情况下你不能。

答案 1 :(得分:2)

使用PHP函数inet_pton将人类可读的IP地址转换为打包的表示形式。然后,您可以将每个IP地址存储在数据库的BINARY(16)VARBINARY(16)字段中。

答案 2 :(得分:2)

浏览器将使用任何可用的内容。这可以是IPv4或IPv6,甚至可以在会话期间更改。最重要的是,请记住,主机可以拥有许多IPv6地址,因此它也可能在会话期间发生变化。

简而言之:不要太依赖REMOTE_ADDR的值: - )