PHP获取真实的客户IP
2007-08-29 09:46
246 查看
如何获取真实的客户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"];
}
}
echo "Your IP $ip";
if (isset($proxy)) {
echo "Your proxy IP is $proxy";
}
服务器的环境是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"];
}
}
echo "Your IP $ip";
if (isset($proxy)) {
echo "Your proxy IP is $proxy";
}
相关文章推荐
- PHP获取客户端的真实IP
- php获取客户端真实ip
- php 获取客户端的真实ip
- PHP获取客户端的真实IP
- PHP获取客户端的真实IP
- 做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
- Nginx 后端服务获取客户真实IP配置
- PHP代码如何实现获取真实IP和代理IP
- DisCuz中php获取用户真实IP
- PHP获取客户端的真实IP
- php 获取客户端的ip、地理信息、浏览器信息、本地真实ip
- PHP获取用户的真实ip
- 使用PHP获取用户客户端真实IP的解决方案
- PHP里REMOTE_ADDR字段能够获取真实IP方法
- PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置
- PHP如何获取客户端真实IP
- PHP如何严格获取真实用户IP?
- PHP获取用户的真实IP地址,非代理IP
- 配置Nginx方向代理后,php获取客户端真实IP
- 利用nginx反向代理,后端Web如何获取客户真实ip