首页 > PHP > PHP获得客户端真实IP地址
2013
11-05

PHP获得客户端真实IP地址

  1. /**
  2.  * 获得用户的真实IP地址
  3.  *
  4.  * @access  public
  5.  * @return  string
  6.  */
  7. function real_ip()
  8. {
  9.     static $realip = NULL;
  10.     if ($realip !== NULL)
  11.     {
  12.         return $realip;
  13.     }
  14.     if (isset($_SERVER))
  15.     {
  16.         if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR’]))
  17.         {
  18.             $arr = explode(‘,’, $_SERVER[‘HTTP_X_FORWARDED_FOR’]);
  19.             /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
  20.             foreach ($arr AS $ip)
  21.             {
  22.                 $ip = trim($ip);
  23.                 if ($ip != ‘unknown’)
  24.                 {
  25.                     $realip = $ip;
  26.                     break;
  27.                 }
  28.             }
  29.         }
  30.         elseif (isset($_SERVER[‘HTTP_CLIENT_IP’]))
  31.         {
  32.             $realip = $_SERVER[‘HTTP_CLIENT_IP’];
  33.         }
  34.         else
  35.         {
  36.             if (isset($_SERVER[‘REMOTE_ADDR’]))
  37.             {
  38.                 $realip = $_SERVER[‘REMOTE_ADDR’];
  39.             }
  40.             else
  41.             {
  42.                 $realip = ‘0.0.0.0’;
  43.             }
  44.         }
  45.     }
  46.     else
  47.     {
  48.         if (getenv(‘HTTP_X_FORWARDED_FOR’))
  49.         {
  50.             $realip = getenv(‘HTTP_X_FORWARDED_FOR’);
  51.         }
  52.         elseif (getenv(‘HTTP_CLIENT_IP’))
  53.         {
  54.             $realip = getenv(‘HTTP_CLIENT_IP’);
  55.         }
  56.         else
  57.         {
  58.             $realip = getenv(‘REMOTE_ADDR’);
  59.         }
  60.     }
  61.     preg_match(“/[\d\.]{7,15}/”, $realip, $onlineip);
  62.     $realip = !emptyempty($onlineip[0]) ? $onlineip[0] : ‘0.0.0.0’;
  63.     return $realip;
  64. }
最后编辑:
作者:dean
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。