PHP获得的客户端和服务器端IP

      使用PHP获得IP,在WEB系统设计上时常涉及。笔者就这个问题根据经验做一下整理,加深印象!

客户端IP相关的变量

1. $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。

2. $_SERVER['HTTP_CLIENT_IP']; 代理端的IP,可能存在,可伪造。

3. $_SERVER['HTTP_X_FORWARDED_FOR']; 用户是在哪个IP使用的代理,可能存在,可以伪造。

服务器端IP相关的变量

1. $SERVER_NAME,需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。

2. $HTTP_SERVER_VARS["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。

3. $_SERVER['LOCAL_ADDR'] 、$HTTP_SERVER_VARS['LOCAL_ADDR'],测试中,未获得任何结果(测试环境PHP5)。

完整的获得IP类

   1: /**
   2:  * Get Client/Server IP 
   3:  * 
   4:  * @author        Yaron (http://yaron.org.cn)
   5:  * @version        0.1
   6:  * @package        
   7:  */
   8:  
   9: class getIP{
  10:     function clientIP(){
  11:         $cIP    = getenv('REMOTE_ADDR');
  12:         $cIP1    = getenv('HTTP_X_FORWARDED_FOR');
  13:         $cIP2    = getenv('HTTP_CLIENT_IP');
  14:         $cIP1 ? $cIP = $cIP1 : null;
  15:         $cIP2 ? $cIP = $cIP2 : null;
  16:         return $cIP;
  17:     }
  18:     function serverIP(){
  19:         return gethostbyname($_SERVER_NAME);
  20:     }
  21: }
  22:  
  23: $getIP        = new getIP();
  24: $clientIp    = getIP::clientIP();
  25: $serverIp    = getIP::serverIP();
  26:  
  27: echo 'Client IP is ',$clientIp,'<br />';
  28: echo 'Server IP is ',$serverIp,'<br />';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值