php获取客户端操作系统,浏览器,语言,ip,ip归属地等
希望能楼下的继续补充啊 完善这个东东
2013.8.12 更新了 下 更完善了 1) $matches[1] = 'lion '.$matches[1]; elseif(count(explode(8,$matches[1]))>1) $matches[1] = 'mountain lion '.$matches[1]; $os_ver = x .$matches[1]; } elseif (preg_match('/macintosh/i', $ua)) { $os_name = mac os; $os_code = macos; } elseif (preg_match('/unix/i', $ua)) { $os_name = unix; $os_code = unix; } elseif (preg_match('/cros/i', $ua)){ $os_name=google chrome os; $os_code=chromeos; } elseif (preg_match('/fedor.([0-9. _]+)/i', $ua, $matches)){ $os_name=fedora; $os_code=fedora; $os_ver = $matches[1]; } else{ $os_name = 'unknow os'; $os_code = 'other'; } return array($os_name, $os_code, $os_ver); } function cid_pda_detect_os($ua) { $os_name = $os_code = $os_ver = $pda_name = $pda_code = $pda_ver = null; if (preg_match('#palmos#i', $ua)) { $os_name = palm os; $os_code = palm; } elseif (preg_match('#windows ce#i', $ua)) { $os_name = windows ce; $os_code = windows; } elseif (preg_match('#qtembedded#i', $ua)) { $os_name = qtopia; $os_code = linux; } elseif (preg_match('#zaurus#i', $ua)) { $os_name = linux; $os_code = linux; } elseif (preg_match('#symbian#i', $ua)) { $os_name = symbian os; $os_code = symbian; } elseif (preg_match('#palmos/sony/model#i', $ua)) { $pda_name = sony clie; $pda_code = sony; } elseif (preg_match('#zaurus ([a-za-z0-9.]+)#i', $ua, $matches)) { $pda_name = sharp zaurus . $matches[1]; $pda_code = zaurus; $pda_ver = $matches[1]; } elseif (preg_match('#series ([0-9]+)#i', $ua, $matches)) { $pda_name = series; $pda_code = nokia; $pda_ver = $matches[1]; } elseif (preg_match('#nokia ([0-9]+)#i', $ua, $matches)) { $pda_name = nokia; $pda_code = nokia; $pda_ver = $matches[1]; } elseif (preg_match('#sie-([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = siemens; $pda_code = siemens; $pda_ver = $matches[1]; } elseif (preg_match('#dopod([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = dopod; $pda_code = dopod; $pda_ver = $matches[1]; } elseif (preg_match('#o2 xda ([a-za-z0-9 ]+);#i', $ua, $matches)) { $pda_name = o2 xda; $pda_code = o2; $pda_ver = $matches[1]; } elseif (preg_match('#sec-([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = samsung; $pda_code = samsung; $pda_ver = $matches[1]; } elseif (preg_match('#sonyericsson ?([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = sonyericsson; $pda_code = sonyericsson; $pda_ver = $matches[1]; } elseif (preg_match('#kindle\/([a-za-z0-9. ×\(.\)]+)#i',$ua, $matches)) {//for kindle $pda_name = kindle; $pda_code = kindle; $pda_ver = $matches[1]; } else { $pda_name = 'unknow os'; $pda_code = 'other'; } return array($os_name, $os_code, $os_ver, $pda_name, $pda_code, $pda_ver); } function cid_detect_browser($ua) { $browser_name = $browser_code = $browser_ver = $os_name = $os_code = $os_ver = $pda_name = $pda_code = $pda_ver = null; $ua = preg_replace(/funwebproducts/i, , $ua); if (preg_match('#movabletype[ /]([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'movabletype'; $browser_code = 'mt'; $browser_ver = $matches[1]; } elseif (preg_match('#wordpress[ /]([a-za-z0-9.]*)#i', $ua, $matches)) { $browser_name = 'wordpress'; $browser_code = 'wp'; $browser_ver = $matches[1]; } elseif (preg_match('#typepad[ /]([a-za-z0-9.]*)#i', $ua, $matches)) { $browser_name = 'typepad'; $browser_code = 'typepad'; $browser_ver = $matches[1]; } elseif (preg_match('#drupal#i', $ua)) { $browser_name = 'drupal'; $browser_code = 'drupal'; $browser_ver = count($matches) > 0 ? $matches[1] : ; } elseif (preg_match('#symbianos/([a-za-z0-9.]+)#i', $ua, $matches)) { $os_name = symbianos; $os_ver = $matches[1]; $os_code = 'symbian'; } elseif (preg_match('#avantbrowser.com#i', $ua)) { $browser_name = 'avant browser'; $browser_code = 'avantbrowser'; } elseif (preg_match('#(camino|chimera)[ /]([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'camino'; $browser_code = 'camino'; $browser_ver = $matches[2]; $os_name = mac os; $os_code = macos; $os_ver = x; } elseif (preg_match('#anonymouse#i', $ua, $matches)) { $browser_name = 'anonymouse'; $browser_code = 'anonymouse'; } elseif (preg_match('#php#', $ua, $matches)) { $browser_name = 'php'; $browser_code = 'php'; } elseif (preg_match('#danger hiptop#i', $ua, $matches)) { $browser_name = 'danger hiptop'; $browser_code = 'danger'; } elseif (preg_match('#w3m/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'w3m'; $browser_code = 'w3m'; $browser_ver = $matches[1]; } elseif (preg_match('#shiira[/]([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'shiira'; $browser_code = 'shiira'; $browser_ver = $matches[1]; $os_name = mac os; $os_code = macos; $os_ver = x; } elseif (preg_match('#dillo[ /]([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'dillo'; $browser_code = 'dillo'; $browser_ver = $matches[1]; } elseif (preg_match('#epiphany/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'epiphany'; $browser_code = 'epiphany'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } elseif (preg_match('#up.browser/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'openwave up.browser'; $browser_code = 'openwave'; $browser_ver = $matches[1]; } elseif (preg_match('#docomo/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'docomo'; $browser_code = 'docomo'; $browser_ver = $matches[1]; if ($browser_ver == '1.0') { preg_match('#docomo/([a-za-z0-9.]+)/([a-za-z0-9.]+)#i', $ua, $matches); $browser_ver = $matches[2]; } elseif ($browser_ver == '2.0') { preg_match('#docomo/([a-za-z0-9.]+) ([a-za-z0-9.]+)#i', $ua, $matches); $browser_ver = $matches[2]; } } elseif (preg_match('#(seamonkey)/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'mozilla seamonkey'; $browser_code = 'seamonkey'; $browser_ver = $matches[2]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#kazehakase/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'kazehakase'; $browser_code = 'kazehakase'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#flock/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'flock'; $browser_code = 'flock'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#(firefox|phoenix|firebird|bonecho|granparadiso|minefield|iceweasel)/4([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'mozilla firefox'; $browser_code = 'firefox'; $browser_ver = '4'.$matches[2]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#(firefox|phoenix|firebird|bonecho|granparadiso|minefield|iceweasel)/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'mozilla firefox'; $browser_code = 'firefox'; $browser_ver = $matches[2]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#minimo/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'minimo'; $browser_code = 'mozilla'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#multizilla/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'multizilla'; $browser_code = 'mozilla'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#se 2([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'sougou browser'; $browser_code = 'sogou'; $browser_ver = '2'.$matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#baidubrowser ([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'baidu browser'; $browser_code = 'baidubrowser'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#360([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = '360 browser'; $browser_code = '360se'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#qqbrowser/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'qq browser'; $browser_code = 'qqbrowser'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('/psp \(playstation portable\)\; ([a-za-z0-9.]+)/', $ua, $matches)) { $pda_name = sony psp; $pda_code = sony-psp; $pda_ver = $matches[1]; } elseif (preg_match('#galeon/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'galeon'; $browser_code = 'galeon'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } elseif (preg_match('#icab/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'icab'; $browser_code = 'icab'; $browser_ver = $matches[1]; $os_name = mac os; $os_code = macos; if (preg_match('#mac os x#i', $ua)) { $os_ver = x; } } elseif (preg_match('#k-meleon/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'k-meleon'; $browser_code = 'kmeleon'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#lynx/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'lynx'; $browser_code = 'lynx'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } elseif (preg_match('#links \\(([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'links'; $browser_code = 'lynx'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } elseif (preg_match('#elinks[/ ]([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'elinks'; $browser_code = 'lynx'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } elseif (preg_match('#elinks \\(([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'elinks'; $browser_code = 'lynx'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } elseif (preg_match('#konqueror/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'konqueror'; $browser_code = 'konqueror'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); if (!$os_name) { list($os_name, $os_code, $os_ver) = self::cid_pda_detect_os($ua); } } elseif (preg_match('#netpositive/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'netpositive'; $browser_code = 'netpositive'; $browser_ver = $matches[1]; $os_name = beos; $os_code = beos; } elseif (preg_match('#omniweb#i', $ua)) { $browser_name = 'omniweb'; $browser_code = 'omniweb'; $os_name = mac os; $os_code = macos; $os_ver = x; } elseif (preg_match('#chrome/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'google chrome'; $browser_code = 'chrome'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#arora/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'arora'; $browser_code = 'arora'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#maxthon( |\/)([a-za-z0-9.]+)#i', $ua,$matches)) { $browser_name = 'maxthon'; $browser_code = 'maxthon'; $browser_ver = $matches[2]; if (preg_match('/win/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#crios/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'chrome for ios'; $browser_code = 'crios'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#safari/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'safari'; $browser_code = 'safari'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#opera mini#i', $ua)) { $browser_name = 'opera mini'; $browser_code = 'opera'; preg_match('#opera/([a-za-z0-9.]+)#i', $ua, $matches); $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#opera.(.*)version[ /]([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'opera'; $browser_code = 'opera'; $browser_ver = $matches[2]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } if (!$os_name) { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } if (!$os_name) { list($os_name, $os_code, $os_ver, $pda_name, $pda_code, $pda_ver) = self::cid_pda_detect_os($ua); } if (!$os_name) { if (preg_match('/wii/i', $ua)) { $os_name = nintendo wii; $os_code = nintendo-wii; } } } elseif (preg_match('#opera/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'opera mini'; $browser_code = 'opera'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#webpro/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'webpro'; $browser_code = 'webpro'; $browser_ver = $matches[1]; $os_name = palmos; $os_code = palmos; } elseif (preg_match('#webpro#i', $ua, $matches)) { $browser_name = 'webpro'; $browser_code = 'webpro'; $os_name = palmos; $os_code = palmos; } elseif (preg_match('#netfront/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'netfront'; $browser_code = 'netfront'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver, $pda_name, $pda_code, $pda_ver) = self::cid_pda_detect_os($ua); } elseif (preg_match('#xiino/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'xiino'; $browser_code = 'xiino'; $browser_ver = $matches[1]; } elseif (preg_match('/wp-blackberry\/([a-za-z0-9.]*)/i', $ua, $matches)) { $browser_name = wordpress for blackberry; $browser_code = wordpress; $browser_ver = $matches[1]; $pda_name = blackberry; $pda_code = blackberry; } elseif (preg_match('#blackberry([0-9]+)#i', $ua, $matches)) { $pda_name = blackberry; $pda_code = blackberry; $pda_ver = $matches[1]; } elseif (preg_match('#blackberry#i', $ua)) { $pda_name = blackberry; $pda_code = blackberry; } elseif (preg_match('#spv ([0-9a-za-z.]+)#i', $ua, $matches)) { $pda_name = orange spv; $pda_code = orange; $pda_ver = $matches[1]; } elseif (preg_match('#lge-([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = lg; $pda_code = 'lg'; $pda_ver = $matches[1]; } elseif (preg_match('#mot-([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = motorola; $pda_code = 'motorola'; $pda_ver = $matches[1]; } elseif (preg_match('#nokia ?([0-9]+)#i', $ua, $matches)) { $pda_name = nokia; $pda_code = nokia; $pda_ver = $matches[1]; } elseif (preg_match('#nokian-gage#i', $ua)) { $pda_name = nokia; $pda_code = nokia; $pda_ver = n-gage; } elseif (preg_match('#blazer[ /]?([a-za-z0-9.]*)#i', $ua, $matches)) { $browser_name = blazer; $browser_code = blazer; $browser_ver = $matches[1]; $os_name = palm os; $os_code = palm; } elseif (preg_match('#sie-([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = siemens; $pda_code = siemens; $pda_ver = $matches[1]; } elseif (preg_match('#sec-([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = samsung; $pda_code = samsung; $pda_ver = $matches[1]; } elseif (preg_match('/wp-iphone\/([a-za-z0-9.]*)/i', $ua, $matches)) { $browser_name = wordpress for ios; $browser_code = wordpress; $browser_ver = $matches[1]; $pda_name = iphone & ipad; $pda_code = ipad; } elseif (preg_match('/wp-android\/([a-za-z0-9.]*)/i', $ua, $matches)) { $browser_name = wordpress for android; $browser_code = wordpress; $browser_ver = $matches[1]; $pda_name = android; $pda_code = android; } elseif (preg_match('/wp-windowsphone\/([a-za-z0-9.]*)/i', $ua, $matches)) { $browser_name = wordpress for windows phone 7; $browser_code = wordpress; $browser_ver = $matches[1]; $pda_name = windows phone 7; $pda_code = windows_phone7; } elseif (preg_match('/wp-nokia\/([a-za-z0-9.]*)/i', $ua, $matches)) { $browser_name = wordpress for nokia; $browser_code = wordpress; $browser_ver = $matches[1]; $pda_name = nokia; $pda_code = nokia; } elseif (preg_match('#samsung-(s.h-[a-za-z0-9_/.]+)#i', $ua, $matches)) { $pda_name = samsung; $pda_code = samsung; $pda_ver = $matches[1]; if (preg_match('#(j2me|midp)#i', $ua)) { $browser_name = j2me/midp browser; $browser_code = j2me; } } elseif (preg_match('#sonyericsson ?([a-za-z0-9]+)#i', $ua, $matches)) { $pda_name = sonyericsson; $pda_code = sonyericsson; $pda_ver = $matches[1]; } elseif (preg_match('#(j2me|midp)#i', $ua)) { $browser_name = j2me/midp browser; $browser_code = j2me; // mice } elseif (preg_match('/greenbrowser/i', $ua)) { $browser_name = 'greenbrowser'; $browser_code = 'greenbrowser'; if (preg_match('/win/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#tencenttraveler ([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = '腾讯tt浏览器'; $browser_code = 'tencenttraveler'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#ucweb([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'ucweb'; $browser_code = 'ucweb'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#msie ([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'internet explorer'; $browser_ver = $matches[1]; if ( strpos($browser_ver, '7') !== false || strpos($browser_ver, '8') !== false) $browser_code = 'ie8'; elseif ( strpos($browser_ver, '9') !== false) $browser_code = 'ie9'; elseif ( strpos($browser_ver, '10') !== false) $browser_code = 'ie10'; else $browser_code = 'ie'; list($os_name, $os_code, $os_ver, $pda_name, $pda_code, $pda_ver) = self::cid_windows_detect_os($ua); } elseif (preg_match('#universe/([0-9.]+)#i', $ua, $matches)) { $browser_name = 'universe'; $browser_code = 'universe'; $browser_ver = $matches[1]; list($os_name, $os_code, $os_ver, $pda_name, $pda_code, $pda_ver) = self::cid_pda_detect_os($ua); }elseif (preg_match('#netscape[0-9]?/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'netscape'; $browser_code = 'netscape'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#^mozilla/5.0#i', $ua) && preg_match('#rv:([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'mozilla'; $browser_code = 'mozilla'; $browser_ver = $matches[1]; if (preg_match('/windows/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } } elseif (preg_match('#^mozilla/([a-za-z0-9.]+)#i', $ua, $matches)) { $browser_name = 'netscape navigator'; $browser_code = 'netscape'; $browser_ver = $matches[1]; if (preg_match('/win/i', $ua)) { list($os_name, $os_code, $os_ver) = self::cid_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = self::cid_unix_detect_os($ua); } }else{ $browser_name = 'unknow browser'; $browser_code = 'null'; } if (!$pda_name && !$os_name){ $pda_name = 'unknow os'; $pda_code = 'other'; $os_name = 'unknow os'; $os_code = 'other'; } return array($browser_name, $browser_code, $browser_ver, $os_name, $os_code, $os_ver, $pda_name, $pda_code, $pda_ver); } ////获得访客浏览器类型 function get_useragent(){ if(!empty($_server['http_user_agent'])){ return self::cid_detect_browser($_server['http_user_agent']); } else{ return array(); } } ////获得访客真实ip function get_ip_addr(){ if(!empty($_server[http_client_ip])){ $ip = $_server[http_client_ip]; } if(!empty($_server['http_x_forwarded_for'])){ //获取代理ip $ips = explode(',',$_server['http_x_forwarded_for']); } if($ip){ $ips = array_unshift($ips,$ip); } $count = count($ips); for($i=0;$i if(!preg_match(/^(10|172\.16|192\.168)\./i,$ips[$i])){//排除局域网ip $ip = $ips[$i]; break; } } $tip = empty($_server['remote_addr']) ? $ip : $_server['remote_addr']; if($tip==127.0.0.1){ //获得本地真实ip return self::get_onlineip(); } else{ return $tip; } } ////获得本地真实ip function get_onlineip() { $ip_json = @file_get_contents(http://ip.taobao.com/service/getipinfo.php?ip=myip); $ip_arr=json_decode(stripslashes($ip_json),1); if($ip_arr['code']==0) { return $ip_arr['data']['ip']; } } ////根据ip获得访客所在地地名 function get_ip_from($ip=''){ if(empty($ip)){ $ip = self::getip(); } $ip_json=@file_get_contents(http://ip.taobao.com/service/getipinfo.php?ip=.$ip);//根据taobao ip $ip_arr=json_decode(stripslashes($ip_json),1); if($ip_arr['code']==0) { return $ip_arr['data']; } else { return false; } } }
复制代码