php 获得访问者的IP

1 <?php
2 $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
3 $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 
4 
5 echo $user_IP;
6 ?>
View Code

【PHP获取访问者IP】的三种方法以及详解

Q:三个IP地址的获取有什么区别?
$_SERVER['REMOTE_ADDR']; $_SERVER['HTTP_CLIENT_IP'];
$_SERVER['HTTP_X_FORWARDED_FOR'];
A:区别如下 $_SERVER['REMOTE_ADDR'];  //访问端(有可能是用户,有可能是代理的)IP $_SERVER['HTTP_CLIENT_IP'];  //代理端的(有可能存在,可伪造) $_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)
 
 
方法一:$_SERVER['HTTP_X_FORWARDED_FOR']来获取相应的地址
 1 function get_onlineip() {
 2     $onlineip = '';
 3     if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
 4         $onlineip = getenv('HTTP_CLIENT_IP');
 5     } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
 6         $onlineip = getenv('HTTP_X_FORWARDED_FOR');
 7     } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
 8         $onlineip = getenv('REMOTE_ADDR');
 9     } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
10         $onlineip = $_SERVER['REMOTE_ADDR'];
11     }
12     return $onlineip;
13 }
View Code

方法二:利用curl依靠第三方来获取,如http://www.ip138.com/ip2city.asp

 

1 function get_onlineip() {  
2    $ch = curl_init('http://www.ip138.com/ip2city.asp');  
3     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
4    $a  = curl_exec($ch);  
5    preg_match('/\[(.*)\]/', $a, $ip);  
6     return $ip[1];  
7  }  
View Code

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值