php 取得真实ip兼容性写法.

字体大小: 中小 标准 ->行高大小: 标准

  function fun_get_ip(){

     static $ip = null;

     if($ip)

       return $ip; // 不需要计算第二次.

     $ip=false;

     if($_SERVER['HTTP_VIA']){

         if(!empty($_SERVER["HTTP_CLIENT_IP"])){

              $ip = $_SERVER["HTTP_CLIENT_IP"];

         }else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){

              $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);

              if ($ip){

                  array_unshift($ips, $ip); $ip = false;

              }

              $ipss = count($ips);

              for ($i = 0; $i < $ipss; $i++){

                   if (!preg_match('/^(10|172\.16|192\.168)\./', $ips[$i])){

                             $ip = $ips[$i];

                             break;

                   }

              }

         }

     }else{

          $ip = $_SERVER['REMOTE_ADDR'];

     }

      

     # 更兼容的获取.

      if(!$ip)

      if(!$ip = getenv("REMOTE_ADDR"))

      if (!$ip = getenv("HTTP_CLIENT_IP"))

      if(!$ip = getenv("HTTP_X_FORWARDED_FOR"))

          $ip = false;

     return $ip;

 }

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/29900.html