PHP获取客户端IP地址、浏览器类型版本、操作系统

  1. "code" class="php">
  2.   
  3. //获取IP地址  
  4. function get_client_ip($type = 0,$adv=true) {  
  5.     $type = $type ? 1 : 0;  
  6.     static $ip = NULL;  
  7.     if ($ip!== NULL) return $ip[$type];  
  8.     if($adv){  
  9.         if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {  
  10.             $arr = explode(','$_SERVER['HTTP_X_FORWARDED_FOR']);  
  11.             $pos = array_search('unknown',$arr);  
  12.             if(false !== $pos) unset($arr[$pos]);  
  13.             $ip = trim($arr[0]);  
  14.         }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {  
  15.             $ip = $_SERVER['HTTP_CLIENT_IP'];  
  16.         }elseif (isset($_SERVER['HTTP_X_REAL_IP'])) {  
  17.             $ip = $_SERVER['HTTP_X_REAL_IP'];  
  18.         }elseif (isset($_SERVER['REMOTE_ADDR'])) {  
  19.             $ip = $_SERVER['REMOTE_ADDR'];  
  20.         }  
  21.     }elseif (isset($_SERVER['REMOTE_ADDR'])) {  
  22.         $ip = $_SERVER['REMOTE_ADDR'];  
  23.     }  
  24.     // IP地址合法验证  
  25.     $long = sprintf("%u",ip2long($ip));  
  26.     $ip   = $long ? array($ip$long) : array('0.0.0.0', 0);  
  27.     return $ip[$type];  
  28. }  
  29.   
  30. //获取客户端浏览器  
  31. function get_client_browser(){  
  32.     $sys = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串  
  33.     if (stripos($sys"Firefox/") > 0) {  
  34.         preg_match("/Firefox\/([^;)]+)+/i"$sys$b);  
  35.         $exp[0] = "Firefox";  
  36.         $exp[1] = $b[1];  //获取火狐浏览器的版本号  
  37.     } elseif (stripos($sys"Maxthon") > 0) {  
  38.         preg_match("/Maxthon\/([\d\.]+)/"$sys$aoyou);  
  39.         $exp[0] = "傲游";  
  40.         $exp[1] = $aoyou[1];  
  41.     } elseif (stripos($sys"MSIE") > 0) {  
  42.         preg_match("/MSIE\s+([^;)]+)+/i"$sys$ie);  
  43.         $exp[0] = "IE";  
  44.         $exp[1] = $ie[1];  //获取IE的版本号  
  45.     } elseif (stripos($sys"OPR") > 0) {  
  46.         preg_match("/OPR\/([\d\.]+)/"$sys$opera);  
  47.         $exp[0] = "Opera";  
  48.         $exp[1] = $opera[1];    
  49.     } elseif(stripos($sys"Edge") > 0) {  
  50.         //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配  
  51.         preg_match("/Edge\/([\d\.]+)/"$sys$Edge);  
  52.         $exp[0] = "Edge";  
  53.         $exp[1] = $Edge[1];  
  54.     } elseif (stripos($sys"Chrome") > 0) {  
  55.         preg_match("/Chrome\/([\d\.]+)/"$sys$google);  
  56.         $exp[0] = "Chrome";  
  57.         $exp[1] = $google[1];  //获取google chrome的版本号  
  58.     } elseif(stripos($sys,'rv:')>0 && stripos($sys,'Gecko')>0){  
  59.         preg_match("/rv:([\d\.]+)/"$sys$IE);  
  60.         $exp[0] = "IE";  
  61.         $exp[1] = $IE[1];  
  62.     }else {  
  63.         $exp[0] = "未知浏览器";  
  64.         $exp[1] = "";   
  65.     }  
  66.     return $exp;  
  67. }  
  68.   
  69. //获取客户端操作系统  
  70. function get_client_os(){  
  71.     $agent = $_SERVER['HTTP_USER_AGENT'];  
  72.     $os = false;  
  73.     if (preg_match('/win/i'$agent) && strpos($agent'95')){  
  74.         $os = 'Windows 95';  
  75.     }else if (preg_match('/win 9x/i'$agent) && strpos($agent'4.90')){  
  76.         $os = 'Windows ME';  
  77.     }else if (preg_match('/win/i'$agent) && preg_match('/98/i'$agent)){  
  78.         $os = 'Windows 98';  
  79.     }else if (preg_match('/win/i'$agent) && preg_match('/nt 6.0/i'$agent)){  
  80.         $os = 'Windows Vista';  
  81.     }else if (preg_match('/win/i'$agent) && preg_match('/nt 6.1/i'$agent)){  
  82.         $os = 'Windows 7';  
  83.     }else if (preg_match('/win/i'$agent) && preg_match('/nt 6.2/i'$agent)){  
  84.         $os = 'Windows 8';  
  85.     }else if(preg_match('/win/i'$agent) && preg_match('/nt 10.0/i'$agent)){  
  86.         $os = 'Windows 10';#添加win10判断  
  87.     }else if (preg_match('/win/i'$agent) && preg_match('/nt 5.1/i'$agent)){  
  88.         $os = 'Windows XP';  
  89.     }else if (preg_match('/win/i'$agent) && preg_match('/nt 5/i'$agent)){  
  90.         $os = 'Windows 2000';  
  91.     }else if (preg_match('/win/i'$agent) && preg_match('/nt/i'$agent)){  
  92.         $os = 'Windows NT';  
  93.     }else if (preg_match('/win/i'$agent) && preg_match('/32/i'$agent)){  
  94.         $os = 'Windows 32';  
  95.     }else if (preg_match('/linux/i'$agent)){  
  96.         $os = 'Linux';  
  97.     }else if (preg_match('/unix/i'$agent)){  
  98.         $os = 'Unix';  
  99.     }else if (preg_match('/sun/i'$agent) && preg_match('/os/i'$agent)){  
  100.         $os = 'SunOS';  
  101.     }else if (preg_match('/ibm/i'$agent) && preg_match('/os/i'$agent)){  
  102.         $os = 'IBM OS/2';  
  103.     }else if (preg_match('/Mac/i'$agent) && preg_match('/PC/i'$agent)){  
  104.         $os = 'Macintosh';  
  105.     }else if (preg_match('/PowerPC/i'$agent)){  
  106.         $os = 'PowerPC';  
  107.     }else if (preg_match('/AIX/i'$agent)){  
  108.         $os = 'AIX';  
  109.     }else if (preg_match('/HPUX/i'$agent)){  
  110.         $os = 'HPUX';  
  111.     }else if (preg_match('/NetBSD/i'$agent)){  
  112.         $os = 'NetBSD';  
  113.     }else if (preg_match('/BSD/i'$agent)){  
  114.         $os = 'BSD';  
  115.     }else if (preg_match('/OSF1/i'$agent)){  
  116.         $os = 'OSF1';  
  117.     }else if (preg_match('/IRIX/i'$agent)){  
  118.         $os = 'IRIX';  
  119.     }else if (preg_match('/FreeBSD/i'$agent)){  
  120.         $os = 'FreeBSD';  
  121.     }else if (preg_match('/teleport/i'$agent)){  
  122.         $os = 'teleport';  
  123.     }else if (preg_match('/flashget/i'$agent)){  
  124.         $os = 'flashget';  
  125.     }else if (preg_match('/webzip/i'$agent)){  
  126.         $os = 'webzip';  
  127.     }else if (preg_match('/offline/i'$agent)){  
  128.         $os = 'offline';  
  129.     }else{  
  130.         $os = '未知操作系统';  
  131.     }  
  132.     return $os;   
  133. }  
  134.   
  135. header ( 'Content-Type: text/html; charset=utf-8' );  
  136. $client_ip = get_client_ip();  
  137. $client_browser = get_client_browser();  
  138. $client_os = get_client_os();  
  139. echo '客户端IP:',$client_ip,'
    '
    ;  
  140. echo '客户端浏览器:',$client_browser[0],'
    '
    ;  
  141. echo '客户端浏览器版本:',$client_browser[1],'
    '
    ;  
  142. echo '客户端操作系统:',$client_os,'
    '
    ;  
  143.   
  144. ?>  

你可能感兴趣的:(php)