3 回答
TA贡献1780条经验 获得超5个赞
简短的回答:不能。
长答案:
您所拥有的只是HTTP User-Agent标头中的信息,该标头通常包含操作系统名称和版本。
通常,在Mac OS和Linux上运行的浏览器会发送足够的信息以标识确切的OS。例如,这是我的User-Agent标头:
Mozilla / 5.0(X11; U; Linux x86_64; zh-CN; rv:1.9.0.7)Gecko / 2009030423 Ubuntu / 8.10(intrepid)Firefox / 3.0.7
您可以看到我正在运行Ubuntu 8.10 Intrepid Ibex。
这是MacBook Pro上Firefox和Safari 4 Beta的报告:
Mozilla / 5.0(Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.7)Gecko / 2009021906 Firefox / 3.0.7
Mozilla / 5.0(Macintosh; U; Intel Mac OS X 10_5_6; zh-cn)AppleWebKit / 528.16(KHTML,如Gecko)版本/4.0 Safari / 528.16
另一方面,Windows浏览器通常仅报告操作系统版本,而不报告特定的程序包(Pro,Business等):
Mozilla / 5.0(Wi
TA贡献1772条经验 获得超8个赞
经过一番谷歌搜索后,我找到了这段代码,它似乎可以正常工作(尽管没有检测到Unix)
<?php
$OSList = array
(
// Match user agent string with operating systems
'Windows 3.11' => 'Win16',
'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
'Windows 98' => '(Windows 98)|(Win98)',
'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
'Windows Server 2003' => '(Windows NT 5.2)',
'Windows Vista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 7.0)',
'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
'Windows ME' => 'Windows ME',
'Open BSD' => 'OpenBSD',
'Sun OS' => 'SunOS',
'Linux' => '(Linux)|(X11)',
'Mac OS' => '(Mac_PowerPC)|(Macintosh)',
'QNX' => 'QNX',
'BeOS' => 'BeOS',
'OS/2' => 'OS/2',
'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
);
// Loop through the array of user agents and matching operating systems
foreach($OSList as $CurrOS=>$Match)
{
// Find a match
if (eregi($Match, $_SERVER['HTTP_USER_AGENT']))
{
// We found the correct match
break;
}
}
// You are using ...
echo "You are using ".$CurrOS;
?>
TA贡献1946条经验 获得超3个赞
//这将为您提供帮助
$uagent = $_SERVER['HTTP_USER_AGENT'] . "<br/>";
function os_info($uagent)
{
// the order of this array is important
global $uagent;
$oses = array(
'Win311' => 'Win16',
'Win95' => '(Windows 95)|(Win95)|(Windows_95)',
'WinME' => '(Windows 98)|(Win 9x 4.90)|(Windows ME)',
'Win98' => '(Windows 98)|(Win98)',
'Win2000' => '(Windows NT 5.0)|(Windows 2000)',
'WinXP' => '(Windows NT 5.1)|(Windows XP)',
'WinServer2003' => '(Windows NT 5.2)',
'WinVista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 6.1)',
'Windows 8' => '(Windows NT 6.2)',
'Windows 8.1' => '(Windows NT 6.3)',
'Windows 10' => '(Windows NT 10.0)',
'WinNT' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
'OpenBSD' => 'OpenBSD',
'SunOS' => 'SunOS',
'Ubuntu' => 'Ubuntu',
'Android' => 'Android',
'Linux' => '(Linux)|(X11)',
'iPhone' => 'iPhone',
'iPad' => 'iPad',
'MacOS' => '(Mac_PowerPC)|(Macintosh)',
'QNX' => 'QNX',
'BeOS' => 'BeOS',
'OS2' => 'OS/2',
'SearchBot' => '(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
);
$uagent = strtolower($uagent ? $uagent : $_SERVER['HTTP_USER_AGENT']);
foreach ($oses as $os => $pattern)
if (preg_match('/' . $pattern . '/i', $uagent))
return $os;
return 'Unknown';
}
echo os_info($uagent);
添加回答
举报