admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:oracle服务器)

PHP获取真实的客户IP的方法

PHP获取真实的客户IP的方法

PHP获取真实的客户IP的方法,有需要的朋友,可以参考下。就跟随店铺一起去了

解下吧,想了解更多相关信息请持续关注我们店铺!

服务器环境是APACHE+PHP,在配置Squid后会产生一个问题:

原先使用PHP预定义变量$_SERVER['REMOTE_ADDR']获取客户端的IP地址,现在

这个变量的值是Squid代理的IP地址,比如假设Squid和Apache装在同一服务器上的

话,现在$_SERVER['REMOTE_ADDR']是127.0.0.1。

为了取得真实的客户端IP地址,可以使用$_SERVER['HTTP_X_FORWARDED_FOR']

来透过代理,这个变量在PHP的官方手册里的保留字列表|预定义变量|$_SERVER部分里

没有提到,但在相应评论里可以找到。

'HTTP_X_FORWARDED_FOR'是HTTP协议头中的一部分,也就是说客户端可以伪

造,使用时需要进行相应检测防止被利用,例如网站有封IP的'功能,恶意用户可以伪造

IP,使网站误封正常用户的IP。

PHP手册用户注释中提供了一个办法:

复制代码 代码如下:

if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {

if ($_SERVER["HTTP_CLIENT_IP"]) {

$proxy = $_SERVER["HTTP_CLIENT_IP"];

} else {

$proxy = $_SERVER["REMOTE_ADDR"];

}

$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];

} else {

if ($_SERVER["HTTP_CLIENT_IP"]) {

$ip = $_SERVER["HTTP_CLIENT_IP"];

} else {

$ip = $_SERVER["REMOTE_ADDR"];

}


本文标签: 用户 相应 IP地址