admin 管理员组文章数量: 1087139
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"];
}
版权声明:本文标题:PHP获取真实的客户IP的方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1714019762a661755.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论