[PHP] 获得用户的真实 IP 地址 →→→→→进入此内容的聊天室

来自 , 2019-12-14, 写在 PHP, 查看 99 次.
URL http://www.code666.cn/view/2a0f97f8
  1. /**
  2.  * 获得用户的真实 IP 地址
  3.  *
  4.  * @return NULL Ambigous unknown>
  5.  */
  6. function get_client_ip(){
  7.     static $realip = NULL;
  8.     if($realip !== NULL){
  9.         return $realip;
  10.     }
  11.     if(isset($_SERVER)){
  12.         if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
  13.             $arr = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  14.             /* 取X-Forwarded-For中第?个非unknown的有效IP字符? */
  15.             foreach($arr as $ip){
  16.                 $ip = trim($ip);
  17.                 if($ip != 'unknown'){
  18.                     $realip = $ip;
  19.                     break;
  20.                 }
  21.             }
  22.         }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
  23.             $realip = $_SERVER['HTTP_CLIENT_IP'];
  24.         }else{
  25.             if(isset($_SERVER['REMOTE_ADDR'])){
  26.                 $realip = $_SERVER['REMOTE_ADDR'];
  27.             }else{
  28.                 $realip = '0.0.0.0';
  29.             }
  30.         }
  31.     }else{
  32.         if(getenv('HTTP_X_FORWARDED_FOR')){
  33.             $realip = getenv('HTTP_X_FORWARDED_FOR');
  34.         }elseif(getenv('HTTP_CLIENT_IP')){
  35.             $realip = getenv('HTTP_CLIENT_IP');
  36.         }else{
  37.             $realip = getenv('REMOTE_ADDR');
  38.         }
  39.     }
  40.     preg_match("/[\d\.]{7,15}/",$realip,$onlineip);
  41.     $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
  42.     return $realip;
  43. }

回复 "获得用户的真实 IP 地址"

这儿你可以回复上面这条便签

captcha