为此,我花了一天时间在谷歌上搜索;到目前为止没有运气。
如何获取用户操作系统和版本。我的是 Mac OS X 10.6.4,办公室里的备用 PC 是 Windows XP SP3。你明白我在说什么。
我见过一百万零一种方法来单独获取用户平台,而不是版本。
JS 将是理想的,但服务器端 (PHP) 解决方案也可以。
为此,我花了一天时间在谷歌上搜索;到目前为止没有运气。
如何获取用户操作系统和版本。我的是 Mac OS X 10.6.4,办公室里的备用 PC 是 Windows XP SP3。你明白我在说什么。
我见过一百万零一种方法来单独获取用户平台,而不是版本。
JS 将是理想的,但服务器端 (PHP) 解决方案也可以。
<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
function getOS() {
global $user_agent;
$os_platform = "Unknown OS Platform";
$os_array = array(
'/windows nt 10.0/i' => 'Windows 10',
'/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']."");
?>
您可以使用 $_SERVER 数组中的 HTTP_USER_AGENT 字段。例如,以下代码将检测 iPhone 和 Android 用户并将他们重定向到不同的位置(例如,iTunes App Store 或 Android Marketplace):
$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' 函数定义的常量。
您将看到的所有服务器端解决方案实际上都归结为在请求中使用 User-Agent 字符串。
在客户端 (JS) 上进行工作具有能够直接与浏览器/操作系统交互的好处。例如,jQuery 的浏览器功能(可能正是您所需要的)在 DOM/浏览器上运行一系列测试以查看其反应,然后根据这些反应确定浏览器类型和版本。已经有一些项目将 jQuery 的浏览器功能扩展为包括操作系统检测,但我之前没有使用过;用谷歌快速搜索很容易找到。
干杯。
除了进行网络探测(无论如何都不太可靠)之外,您拥有的唯一提示是检查 User-Agent 标头,但您也不能过于依赖它,因为任何人都可以修改他的默认标头浏览器发送。