Web应用程序在加入反向代理服务器的时候如何获得真实IP

前段时间在开发的过程中,遇到了一个很诡异的问题,明明在请求页面的时候Request了客户端的IP,但是在页面打印出来的时候却是不一样的IP,此IP从没见过,在纠结了N长时间后,终于发现是反向代理惹的祸,相信大家肯定有人遇到过这般问题,所以就写出来供大家参考

值得注意的是:必须在代理服务器上面设置将服务器信息带入主机头,否则不管怎么取都取不到你的客户端IP的

 

 

function getip(){

      $unknown ='unknown';

      if( isset($_SERVER['HTTP_X_FORWARDED_FOR'])&& $_SERVER['HTTP_X_FORWARDED_FOR']&& strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown)){

      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

        } elseif ( isset($_SERVER['REMOTE_ADDR'])&& $_SERVER['REMOTE_ADDR']&& strcasecmp($_SERVER['REMOTE_ADDR'], $unknown)){

      $ip = $_SERVER['REMOTE_ADDR'];

}

/*

处理多层代理的情况

或者使用正则方式:$ip = preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : $unknown;

*/

if(false!== strpos($ip,','))

     $ip = reset(explode(',', $ip));

     return $ip;

}

 

转载于:https://www.cnblogs.com/feifeinet/p/3361496.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值