本文俺将跟大家介绍,如何用PHP获取用户客户端ip。
服务端开发中一个重要核心就是: 确保不能完全信任从客户端发送过来的数据 ,因为可能存在伪造的情况。
$_SERVER[‘REMOTE_ADDR’]包含了连接方的真实IP地址。
但是,它们可能位于代理服务器的后面,在这种情况下,代理可能设置了$_SERVER[‘HTTP_X_FORWARDED_FOR’],但是这个值很容易被欺骗。
例如,它可以由没有代理的人设置,或者IP可以是来自代理后面的局域网的内部IP。
这意味着,如果您要保存$_SERVER[‘HTTP_X_FORWARDED_FOR’],请确保您也保存了$_SERVER[‘REMOTE_ADDR’]值。例如,在数据库中的用两个字段来保存这两个值。
如果要将IP作为字符串保存到数据库中,请确保至少有45个字符的空间。IPv6将继续存在,这些地址比旧的IPv4地址更大。
(请注意,IPv6通常最多使用39个字符,但IPv4地址也有一个特殊的IPv6符号,其完整形式最多可达45个字符。所以如果你知道你在做什么,你可以使用39个字符,但如果你只是想设置然后忘记它,使用45)。