获取用户操作系统和版本号

时间:2010-08-09 16:02:00

标签: javascript php os-detection

我为Googeling花了一天时间来做这件事;到目前为止没有运气。

如何获取用户操作系统和版本。我的Mac OS X 10.6.4,办公室的备用PC将是Windows XP SP3。你看到我得到了什么。

我已经看到了一百万种方法来单独获取用户平台,而不是版本。

JS是理想的,但服务器端(PHP)解决方案也可以。

6 个答案:

答案 0 :(得分:22)

<?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']."");

?>

答案 1 :(得分:3)

您可以使用$ _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' function定义的常量。

答案 2 :(得分:2)

下面的链接似乎有 javascript 代码来检测操作系统 - 位于底部。作为奖励,它还有一些其他功能,如浏览器类型和版本检测。

http://www.quirksmode.org/js/detect.html

HTH

答案 3 :(得分:2)

答案 4 :(得分:1)

您将看到的所有服务器端解决方案都将归结为在请求中使用User-Agent字符串。

在客户端(JS)上完成工作的好处是能够直接与浏览器/操作系统进行交互。例如,jQuery's browser function - 可能正是您所需要的 - 在DOM /浏览器上运行一系列测试以查看它的反应,然后根据这些反应确定浏览器类型和版本。有一些项目可以扩展jQuery的浏览器功能以包含操作系统检测,但我之前没有使用它们;通过Google快速搜索很容易找到。

干杯。

答案 5 :(得分:1)

你做的唯一提示,除了做一个网络探测,不管怎么说都不太可靠,是检查User-Agent标题,但你也不能过多依赖它,因为任何人都可以修改默认值他的浏览器发送的标题。