Advertisement
Guest User

getClientInfo

a guest
Aug 18th, 2011
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.34 KB | None | 0 0
  1. function getClientInfo($user_agent = '') {
  2.  
  3.     if (!$user_agent) {
  4.         $user_agent = $_SERVER['HTTP_USER_AGENT'];
  5.     }
  6.  
  7.     $res = false;
  8.  
  9.     $browser_name = array(
  10.  
  11.         'Avant Browser'                 => 'avant',
  12.  
  13.         'Opera'                         => 'opera',
  14.         'Opera Mini'                    => 'opera-mini',
  15.  
  16.         'Phoenix'                       => 'ff',
  17.         'Firebird'                      => 'ff',
  18.         'Firefox'                       => 'ff',
  19.         'GranParadiso'                  => 'ff',
  20.         'Shiretoko'                     => 'ff',
  21.  
  22.         'Netscape'                      => 'netscape',
  23.         'Konqueror'                     => 'konqueror',
  24.  
  25.         'amaya'                         => 'amaya',
  26.         'America Online Browser'        => 'aol',
  27.         'Camino'                        => 'camino',
  28.         'ELinks'                        => 'elinks',
  29.         'Epiphany'                      => 'epiphany',
  30.         'Flock'                         => 'flock',
  31.         'Chrome'                        => 'chrome',
  32.         'Iceweasel'                     => 'iceweasel',
  33.         'IceCat'                        => 'icecat',
  34.         'iCab'                          => 'icab',
  35.         'K-Meleon'                      => 'k-meleon',
  36.         'Links'                         => 'links',
  37.         'Lynx'                          => 'lynx',
  38.         'Minimo'                        => 'minimo',
  39.         'OffByOne'                      => 'offbyone',
  40.         'OmniWeb'                       => 'omniweb',
  41.         'SeaMonkey'                     => 'seamonkey',
  42.         'Shiira'                        => 'shiira',
  43.  
  44.         'Windows CE'                    => 'ie-mobile',
  45.         'Microsoft Internet Explorer'   => 'ie',
  46.         'MSIE'                          => 'ie',
  47.  
  48.         'Safari'                        => 'safari'
  49.     );
  50.  
  51.     $browser_vers = array(
  52.  
  53.         'Microsoft Internet Explorer'   => '/Microsoft Internet Explorer[\/]([a-z0-9.+-]*)/i',
  54.         'Phoenix'                       => '/Phoenix[\/]([a-z0-9.+-]*)/i',
  55.         'Firebird'                      => '/Firebird[\/]([a-z0-9.+-]*)/i',
  56.         'Firefox'                       => '/Firefox[\/]([a-z0-9.+-]*)/i',
  57.         'GranParadiso'                  => '/GranParadiso[\/]([a-z0-9.+-]*)/i',
  58.         'Shiretoko'                     => '/Shiretoko[\/]([a-z0-9.+-]*)/i',
  59.         'Konqueror'                     => '/Konqueror[\/]([a-z0-9.+-]*)/i',
  60.         'amaya'                         => '/Amaya[\/]([a-z0-9.+-]*)/i',
  61.         'Camino'                        => '/Camino[\/]([a-z0-9.+-]*)/i',
  62.         'Epiphany'                      => '/Epiphany[\/]([a-z0-9.+-]*)/i',
  63.         'Flock'                         => '/Flock[\/]([a-z0-9.+-]*)/i',
  64.         'Chrome'                        => '/Chrome[\/]([a-z0-9.+-]*)/i',
  65.         'Iceweasel'                     => '/Iceweasel[\/]([a-z0-9.+-]*)/i',
  66.         'IceCat'                        => '/IceCat[\/]([a-z0-9.+-]*)/i',
  67.         'K-Meleon'                      => '/K-Meleon[\/]([a-z0-9.+-]*)/i',
  68.         'Lynx'                          => '/Lynx[\/]([a-z0-9.+-]*)/i',
  69.         'Minimo'                        => '/Minimo[\/]([a-z0-9.+-]*)/i',
  70.         'OmniWeb'                       => '/OmniWeb[\/]([a-z0-9.+-]*)/i',
  71.         'SeaMonkey'                     => '/SeaMonkey[\/]([a-z0-9.+-]*)/i',
  72.         'Shiira'                        => '/Shiira[\/]([a-z0-9.+-]*)/i',
  73.         'Safari'                        => '/Shiira[\/]([a-z0-9.+-]*)/i',
  74.  
  75.         'ELinks'                        => '/ELinks \(([a-z0-9.+-]*)[;]/i',
  76.         'Links'                         => '/Links \(([a-z0-9.+-]*)[;]/i',
  77.  
  78.         'MSIE'                          => '/MSIE[\s]([0-9.+-]*)[;]/i',
  79.         'America Online Browser'        => '/America Online Browser[\s]([a-z0-9.+-]*)/i',
  80.         'iCab'                          => '/iCab[\s]([0-9.+-]*)[;]/i',
  81.  
  82.         'Opera'                         => '/Opera[\/\s]([a-z0-9.+-]*)/i',
  83.  
  84.         'Netscape'                      => '/Netscape[6]?[\/]([a-z0-9.+-]*)/i',
  85.  
  86.         'Windows CE'                    => '',
  87.         'OffByOne'                      => '',
  88.         'Avant Browser'                 => '',
  89.  
  90.         'Unknow'                    => ''
  91.     );
  92.  
  93.     $os_name = array(
  94.  
  95.         'Windows'       => 'win',
  96.         'Macintosh'     => 'mac',
  97.         'Mac OS'        => 'mac',
  98.         'Mac_PowerPC'   => 'mac',
  99.         'Ubuntu'        => 'linux ubuntu',
  100.         'Linux'         => 'linux',
  101.         'SunOS'         => 'unix sunos',
  102.         'FreeBSD'       => 'unix freebsd',
  103.         'w3m'           => 'unix freebsd',
  104.  
  105.         'J2ME/MIDP'     => 'java',
  106.         'iPhone'        => 'iphone',
  107.         'iPad'      => 'ipad',
  108.         'Symbian OS'    => 'symbian'
  109.     );
  110.  
  111.     $os_vers = array(
  112.  
  113.         'Windows'       => '/Windows[\s]([a-z0-9.+-\s]*)[;)]/i',
  114.         'Macintosh'     => '',
  115.         'Mac OS'        => '',
  116.         'Mac_PowerPC'   => '',
  117.         'Ubuntu'        => '/Ubuntu[\/\s]([a-z0-9.+-\s]*)/i',
  118.         'Linux'         => '',
  119.         'SunOS'         => '',
  120.         'FreeBSD'       => '',
  121.         'w3m'           => '',
  122.  
  123.         'J2ME/MIDP'     => '',
  124.         'iPhone'        => '',
  125.         'Symbian OS'    => ''
  126.     );
  127.  
  128.     // Сначало нужно узнать браузер!
  129.  
  130.     foreach ($browser_name as $key => $value) {
  131.         $pos = strpos($user_agent, $key);
  132.         if ($pos !== false) {
  133.             $res['browser_key'] = $key;
  134.             $res['browser_name'] = $value;
  135.             break;
  136.         }
  137.     }
  138.  
  139.     if (!$res['browser_key']) {
  140.         $res['browser_key'] = 'Unknow';
  141.         $res['browser_name'] = 'Unknow';
  142.     }
  143.  
  144.     $pattern = $browser_vers[$res['browser_key']];
  145.     if ($pattern) {
  146.         if (preg_match($pattern, $user_agent, $match)) {
  147.             $res['browser_version'] = $match[1];
  148.         } else {
  149.             $res['browser_version'] = '';
  150.         }
  151.     } else {
  152.         $res['browser_version'] = '';
  153.     }
  154.  
  155.     // Теперь ОСЬ
  156.  
  157.     foreach ($os_name as $key => $value) {
  158.         $pos = strpos($user_agent, $key);
  159.         if ($pos !== false) {
  160.             $res['os_key'] = $key;
  161.             $res['os_name'] = $value;
  162.             break;
  163.         }
  164.     }
  165.  
  166.     if (!$res['os_key']) {
  167.         $res['os_key'] = 'Unknow';
  168.         $res['os_name'] = 'Unknow';
  169.     }
  170.  
  171.     $pattern = $os_vers[$res['os_key']];
  172.     if ($pattern) {
  173.         if (preg_match($pattern, $user_agent, $match)) {
  174.             $res['os_version'] = $match[1];
  175.  
  176.             if ($res['os_key'] == 'Windows') {
  177.                 switch ($res['os_version']) {
  178.                     case 'NT 5.0': $res['os_version'] = '2000'; break;
  179.                     case 'NT 5.1': $res['os_version'] = 'xp'; break;
  180.                     case 'NT 5.2': $res['os_version'] = 'xp64'; break;
  181.                     case 'NT 6.0': $res['os_version'] = 'vista'; break;
  182.                     case 'NT 6.1': $res['os_version'] = '7'; break;
  183.                     case 'NT 2000': $res['os_version'] = '2000'; break;
  184.                 }
  185.             }
  186.         } else {
  187.             $res['os_version'] = '';
  188.         }
  189.     } else {
  190.         $res['os_version'] = '';
  191.     }
  192.  
  193.     if (isset($res['os_key']))      unset($res['os_key']);
  194.     if (isset($res['browser_key'])) unset($res['browser_key']);
  195.  
  196.     $res['os'] = $res['os_name'].$res['os_version'];
  197.     $res['browser'] = $res['browser_name'].$res['browser_version'];
  198.  
  199.     return $res;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement