Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 PHP获取真实的客户IP的方法

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

发布时间:2014-11-25   编辑:www.jquerycn.cn
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"];
      }
}
echo "Your IP $ip";
if (isset($proxy)) {
echo "Your proxy IP is $proxy";
}
 

您可能感兴趣的文章:
php获取远程客户端真实ip地址
php函数获取在线ip与客户端ip
获取用户真实IP地址的php代码
深入解析PHP获取客户端IP的方法
php 获取网站地址的函数代码
php获取真实ip地址的实例分享
PHP通过IP获取地理位置的代码
php无法获取真实ip
php 获取外网真实IP的二种方法
php获取客户端的真实IP的方法介绍

[关闭]