我已經在Googeling度過了一天,到目前爲止沒有運氣。獲取用戶操作系統和版本號
如何獲取用戶的操作系統和版本。我會把我的Mac OS X 10.6.4,在辦公室的備用電腦將Windows XP SP3。你看到我在做什麼。
我見過有一百萬種方法來獲取用戶平臺,而不是版本。
JS是理想的,但服務器端(PHP)解決方案也可以。
我已經在Googeling度過了一天,到目前爲止沒有運氣。獲取用戶操作系統和版本號
如何獲取用戶的操作系統和版本。我會把我的Mac OS X 10.6.4,在辦公室的備用電腦將Windows XP SP3。你看到我在做什麼。
我見過有一百萬種方法來獲取用戶平臺,而不是版本。
JS是理想的,但服務器端(PHP)解決方案也可以。
您將看到的所有服務器端解決方案都將歸結爲在請求中使用User-Agent字符串。
在客戶端(JS)做的工作有能夠直接與瀏覽器/操作系統交互的好處。例如,jQuery's browser function - 這可能正是您所需要的 - 在DOM /瀏覽器上運行一系列測試,以查看它如何反應,然後根據這些反應確定瀏覽器類型和版本。已經有一些項目擴展了jQuery的瀏覽器功能以包含操作系統檢測,但我之前沒有使用它們;通過快速的Google搜索輕鬆找到。
乾杯。
除了做一個網絡探測器,它不是太可靠,唯一的提示是檢查User-Agent頭,但是你也不能太依賴它,因爲任何人都可以修改它他的瀏覽器發送的默認標題。
下面的鏈接似乎有javascript檢測操作系統的代碼 - 在底部。作爲獎勵,它還有其他一些功能,例如瀏覽器類型和版本檢測。
http://www.quirksmode.org/js/detect.html
HTH
在我的Mac上,'navigator.oscpu'在個人電腦上返回'Intel Mac OS X 10.6',它不會返回任何內容。恥辱,因爲這正是我想要的! – PaulAdamDavis 2010-08-10 12:45:42
不幸的是,我們服務器上的browscap.ini文件(實際上都是專用的盒子)還不夠新。 =/ – PaulAdamDavis 2010-08-10 12:36:45
可以使用$ _SERVER數組中的HTTP_USER_AGENT領域。例如,下面的代碼將檢測iPhone和Android用戶重定向到一個不同的位置(例如,iTunes App Store或Android市場):
$http_user_agent = $_SERVER['HTTP_USER_AGENT'];
if (stristr($http_user_agent, "android") != FALSE) {
header("Location: " . ANDROID_REDIRECT);
}
else if (stristr($http_user_agent, "iphone") != FALSE) {
header("Location: " . IOS_REDIRECT);
}
else {
header("Location: " . DEFAULT_REDIRECT);
}
注意ANDROID_REDIRECT,IOS_REDIRECT和DEFAULT_REDIRECT與定義的常量PHP 'define' function。
<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
function getOS() {
global $user_agent;
$os_platform = "Unknown OS Platform";
$os_array = array(
'/windows nt 6.2/i' => 'Windows 8',
'/windows nt 6.1/i' => 'Windows 7',
'/windows nt 6.0/i' => 'Windows Vista',
'/windows nt 5.2/i' => 'Windows Server 2003/XP x64',
'/windows nt 5.1/i' => 'Windows XP',
'/windows xp/i' => 'Windows XP',
'/windows nt 5.0/i' => 'Windows 2000',
'/windows me/i' => 'Windows ME',
'/win98/i' => 'Windows 98',
'/win95/i' => 'Windows 95',
'/win16/i' => 'Windows 3.11',
'/macintosh|mac os x/i' => 'Mac OS X',
'/mac_powerpc/i' => 'Mac OS 9',
'/linux/i' => 'Linux',
'/ubuntu/i' => 'Ubuntu',
'/iphone/i' => 'iPhone',
'/ipod/i' => 'iPod',
'/ipad/i' => 'iPad',
'/android/i' => 'Android',
'/blackberry/i' => 'BlackBerry',
'/webos/i' => 'Mobile'
);
foreach ($os_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$os_platform = $value;
}
}
return $os_platform;
}
function getBrowser() {
global $user_agent;
$browser = "Unknown Browser";
$browser_array = array(
'/msie/i' => 'Internet Explorer',
'/firefox/i' => 'Firefox',
'/safari/i' => 'Safari',
'/chrome/i' => 'Chrome',
'/opera/i' => 'Opera',
'/netscape/i' => 'Netscape',
'/maxthon/i' => 'Maxthon',
'/konqueror/i' => 'Konqueror',
'/mobile/i' => 'Handheld Browser'
);
foreach ($browser_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$browser = $value;
}
}
return $browser;
}
$user_os = getOS();
$user_browser = getBrowser();
$device_details = "<strong>Browser: </strong>".$user_browser."<br /><strong>Operating System: </strong>".$user_os."";
print_r($device_details);
echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT']."");
?>
Chrome瀏覽器會失敗,不是嗎? Chrome在其用戶代理上同時擁有'Safari'和'Chrome'。例如:'Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML,像Gecko)Chrome/31.0.1625.2 Safari/537.36' – RaphaelDDL 2013-09-09 14:43:24
@Gaurang這段腳本真的幫了我很大忙。關於它的一個問題:我使用OS X Mavericks,它返回「未知OS平臺」。任何想法爲什麼以及如何解決這個問題? – 2014-05-19 12:21:48
只要記住,永遠不要相信客戶的任何信息。因此,即使您「檢測到」OS X 10.6.4,您也不知道這是否正確... – ircmaxell 2010-08-09 16:23:18