Get users OS and version number

I've spent a day on and off Googeling for this; no luck so far.

How can I get the users OS and version. Mine would me Mac OS X 10.6.4, the spare PC in the office would be Windows XP SP3. You see what I'm getting at.

I've seen a million and one methods to get the users platform alone, just not the version.

JS would be ideal, but a server-side (PHP) solution is OK too.


Solution 1:

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

?>

Solution 2:

You can use the HTTP_USER_AGENT field in the $_SERVER array. For example, the following code will detect iPhone and Android users and redirect them to a different location (e.g., the iTunes App Store or 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);
}

Note that ANDROID_REDIRECT, IOS_REDIRECT, and DEFAULT_REDIRECT are constants defined with the PHP 'define' function.

Solution 3:

check out get_browser function in http://php.net/manual/en/function.get-browser.php

Solution 4:

All of the server side solutions that you will see will really boil down to using the User-Agent string in the request.

Doing the work on the client side (JS) has the benefit of being able to interact directly with the browser/OS. For example, jQuery's browser function - which might be exactly what you need - runs a series of tests on the DOM/browser to see how it reacts, and then determines the browser type and version based on those reactions. There have been some projects to extend jQuery's browser function to include OS detection, but I have not used them before; easily found with a quick Google search.

Cheers.