当前位置:首页 > PHP教程 > php应用 > 列表

php 获取客户端的ip地址程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-19 13:45:09 浏览: 评论:0 

获取客户端IP地址我们最简单的办法就是直接使用REMOTE_ADDR但这种如果有代理IP就无法获取了,所以我们要使用HTTP_X_FORWARDED_FOR来获取,下面我来给大家介绍一个获取IP地址函数.

最简单的做法,代码如下:

  1. function getRealIpAddr() 
  2.   if (!emptyempty($_SERVER['HTTP_CLIENT_IP'])) 
  3.   { 
  4.     $ip=$_SERVER['HTTP_CLIENT_IP']; 
  5.   } 
  6.   elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) 
  7.   //to check ip is pass from proxy 
  8.   { 
  9.     $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
  10.   } 
  11.   else 
  12.   { 
  13.     $ip=$_SERVER['REMOTE_ADDR']; 
  14.   } 
  15.   return $ip

这个我自己写的,代码如下:

  1. <?php 
  2. if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { 
  3.   $onlineip = getenv('HTTP_CLIENT_IP'); 
  4.  } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { 
  5.   $onlineip = getenv('HTTP_X_FORWARDED_FOR'); 
  6.  } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { 
  7.   $onlineip = getenv('REMOTE_ADDR'); 
  8.  } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { 
  9.   $onlineip = $_SERVER['REMOTE_ADDR']; 
  10.  } 
  11. echo $onlineip
  12. ?> 

但感觉不怎么样,后来百度找到了一个,实例代码如下:

  1. function real_ip() { 
  2.  static $realip = NULL; 
  3.  
  4.  if ($realip !== NULL)  { 
  5.   return $realip
  6.  } 
  7.  
  8.  if (isset($_SERVER)) { 
  9.   if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
  10.    $arr = explode(','$_SERVER['HTTP_X_FORWARDED_FOR']); 
  11.  
  12.    /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */ 
  13.    foreach ($arr AS $ip) { 
  14.     $ip = trim($ip); 
  15.  
  16.     if ($ip != 'unknown') { 
  17.      $realip = $ip
  18.      break
  19.     } 
  20.    } 
  21.   } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { 
  22.    $realip = $_SERVER['HTTP_CLIENT_IP']; 
  23.   } else { 
  24.    if (isset($_SERVER['REMOTE_ADDR'])) { 
  25.     $realip = $_SERVER['REMOTE_ADDR']; 
  26.    } else { 
  27.     $realip = '0.0.0.0'
  28.    } 
  29.   } 
  30.  } else { 
  31.   if (getenv('HTTP_X_FORWARDED_FOR')) { 
  32.    $realip = getenv('HTTP_X_FORWARDED_FOR'); 
  33.   } elseif (getenv('HTTP_CLIENT_IP')) { 
  34.    $realip = getenv('HTTP_CLIENT_IP'); 
  35.   } else { 
  36.    $realip = getenv('REMOTE_ADDR'); 
  37.   } 
  38.  } 
  39.  
  40.  preg_match("/[d.]{7,15}/"$realip$onlineip); 
  41.  $realip = !emptyempty($onlineip[0]) ? $onlineip[0] : '0.0.0.0'
  42.  
  43.  return $realip

Tags: php 客户端的ip ip地址

分享到: