Php 确定操作系统是否为Mac
我最近一直在谷歌上搜索,试图找到一个简单易用的php脚本来识别用户是否在Mac上 我想用它告诉用户我告诉他们的键盘快捷键是“控制”还是“命令”。我不需要知道浏览器或任何东西,只要电脑是Mac电脑 以下是我所问的可能的概要:Php 确定操作系统是否为Mac,php,user-agent,Php,User Agent,我最近一直在谷歌上搜索,试图找到一个简单易用的php脚本来识别用户是否在Mac上 我想用它告诉用户我告诉他们的键盘快捷键是“控制”还是“命令”。我不需要知道浏览器或任何东西,只要电脑是Mac电脑 以下是我所问的可能的概要: if (operating_system == Mac) { echo "command"; } else { echo "control"; } 尝试PHP内置的函数 $browser = get_browser(null, true); echo "Pl
if (operating_system == Mac)
{
echo "command";
}
else
{
echo "control";
}
尝试PHP内置的函数
$browser = get_browser(null, true);
echo "Platform: " . $browser["platform"] . "\n";
创建一个页面:identifier.php
<?php
$user_agent = getenv("HTTP_USER_AGENT");
if(strpos($user_agent, "Win") !== FALSE)
$os = "Windows";
elseif(strpos($user_agent, "Mac") !== FALSE)
$os = "Mac";
?>
看看
依照
简短回答:你确实不能
长答案:
您所拥有的只是HTTP用户代理标头中的信息,该标头通常包含操作系统名称和版本
通常,运行在Mac OS和Linux上的浏览器会发送足够的信息来识别确切的操作系统。例如,下面是我的用户代理标题:
Mozilla/5.0(X11;U;Linux x86_64;en-US;rv:1.9.0.7)Gecko/2009030423 Ubuntu/8.10(无畏)Firefox/3.0.7
你可以看到我正在运行Ubuntu8.10IntrepidIbex
以下是Firefox和Safari 4在我的MacBook Pro上的测试报告:
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;en us)AppleWebKit/528.16(KHTML,类似Gecko)版本/4.0 Safari/528.16
另一方面,Windows浏览器通常只报告操作系统版本,而不报告特定的软件包(Pro、Business等):
Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:x.x.x)Gecko/20041107 Firefox/x.x
//这对你有帮助
$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)',
'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);
$uagent=$\u服务器['HTTP\u用户\u代理']。“
”;
操作系统信息功能($uagent)
{
//这个数组的顺序很重要
全球$uagent;
$oses=数组(
'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)',
“WinNT'=>”(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)”,
“OpenBSD”=>“OpenBSD”,
“SunOS”=>“SunOS”,
“Ubuntu”=>“Ubuntu”,
“安卓”=>“安卓”,
“Linux'=>'(Linux)|(X11)”,
“iPhone”=>“iPhone”,
“iPad”=>“iPad”,
“MacOS”=>“(Mac_PowerPC)|(Macintosh)”,
“QNX”=>“QNX”,
“BeOS”=>“BeOS”,
'OS2'=>'OS/2',
“搜索机器人”=>“(nuhk)|(谷歌机器人)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia|U archiver)”
);
$uagent=strtolower($uagent?$uagent:$\u SERVER['HTTP\u USER\u AGENT');
foreach($os为$os=>$pattern)
if(preg_匹配('/'.$pattern.'/i',$uagent))
返回$os;
返回“未知”;
}
echo操作系统信息($uagent);
不幸的是,这不能真正做到
为了回答您的问题而不深入探讨用户代理嗅探为何会被破坏,这里有一些代码可以满足您的要求:
$mactest = strpos($_SERVER["HTTP_USER_AGENT"], 'Macintosh') ? true : false;
if($mactest) {
do something
} else {
do something else
}
函数getUserOS(){
$osList=array
(
“Windows 7”=>“Windows nt 6.1”,
“Windows Vista”=>“Windows nt 6.0”,
“Windows Server 2003”=>“Windows nt 5.2”,
“Windows XP”=>“Windows nt 5.1”,
“Windows 2000 sp1”=>“Windows nt 5.01”,
“Windows 2000”=>“Windows nt 5.0”,
“Windows NT 4.0”=>“Windows NT 4.0”,
“Windows Me”=>“win 9x 4.9”,
“Windows 98”=>“Windows 98”,
“Windows 95”=>“Windows 95”,
“Windows CE”=>“Windows CE”,
“Windows(版本未知)”=>“Windows”,
“OpenBSD”=>“OpenBSD”,
“SunOS”=>“SunOS”,
“Ubuntu”=>“Ubuntu”,
“Linux'=>'(Linux)|(x11)”,
“MacOSX测试版(Kodiak)”=>“MacOSX测试版”,
'Mac OSX Cheetah'=>'Mac os x 10.0',
“Mac OSX Puma”=>“Mac os x 10.1”,
“Mac OSX捷豹”=>“Mac os x 10.2”,
“Mac OSX Panther”=>“Mac os x 10.3”,
“Mac os x Tiger”=>“Mac os x 10.4”,
“Mac OSX Leopard”=>“Mac os x 10.5”,
“Mac OSX雪豹”=>“Mac os x 10.6”,
“Mac OSX Lion”=>“Mac os x 10.7”,
“Mac OSX(版本未知)”=>“Mac os x”,
‘Mac OS(经典)=>’(Mac_powerpc)|(macintosh)’,
“QNX”=>“QNX”,
“BeOS”=>“BeOS”,
'OS2'=>'os/2',
“搜索机器人”=>“(nuhk)|(谷歌机器人)|(yammybot)|(openbot)|(slurp)|(msnbot)|(ask jeeves/teoma)|(ia|U archiver)”
);
$useragent=$\u服务器['HTTP\u用户\u代理'];
$useragent=strtolower($useragent);
foreach($os作为$os=>$match列出){
if(preg_match('/'.$match.'/i',$useragent)){
打破
}
其他的
{
//$os=“未自动检测到。
$useragent”;
$os=“未知”;
}
}
返回$os;
}
感谢您这么快回答!说实话,我对php相当陌生。你介意帮我把它转换成if语句格式吗?非常感谢您注意:只有在php.ini中设置了browscap并且也存在browscap时,这才有效。根据我的经验,这并不常见。@user2180108 get_browser()需要browsecap.ini才能实现全部功能。这需要您的管理输入。。使用提供的URL阅读有关get_浏览器的信息,然后转到此处:for browsecap。ini@Ares大多数web提供商都有一个版本的browsecap,具体取决于版本。。大多数都是最新的,有些只是保持原样,因为@user2180108“它工作得很好”,以目前的状态..他目前在这个问题之上;)很高兴知道这有帮助:)这段代码将检测所有的iOS设备作为Mac,因为它们的UA中都包含“像Mac OS X一样”。相反,您应该检查“Macintosh”而不是“Mac”。您的答案在Windows Phone上使用时会出现问题。Windows和Windows Phone将为Windows提供相同的答案。@WhiteHorse或if(stripos($user\u agent,“Windows”)!==false&&stri
$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)',
'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);
$mactest = strpos($_SERVER["HTTP_USER_AGENT"], 'Macintosh') ? true : false;
if($mactest) {
do something
} else {
do something else
}
<?php
function getBrowserOS() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$browser = "Unknown Browser";
$os_platform = "Unknown OS Platform";
// Get the Operating System Platform
if (preg_match('/windows|win32/i', $user_agent)) {
$os_platform = 'Windows';
if (preg_match('/windows nt 6.2/i', $user_agent)) {
$os_platform .= " 8";
} else if (preg_match('/windows nt 6.1/i', $user_agent)) {
$os_platform .= " 7";
} else if (preg_match('/windows nt 6.0/i', $user_agent)) {
$os_platform .= " Vista";
} else if (preg_match('/windows nt 5.2/i', $user_agent)) {
$os_platform .= " Server 2003/XP x64";
} else if (preg_match('/windows nt 5.1/i', $user_agent) || preg_match('/windows xp/i', $user_agent)) {
$os_platform .= " XP";
} else if (preg_match('/windows nt 5.0/i', $user_agent)) {
$os_platform .= " 2000";
} else if (preg_match('/windows me/i', $user_agent)) {
$os_platform .= " ME";
} else if (preg_match('/win98/i', $user_agent)) {
$os_platform .= " 98";
} else if (preg_match('/win95/i', $user_agent)) {
$os_platform .= " 95";
} else if (preg_match('/win16/i', $user_agent)) {
$os_platform .= " 3.11";
}
} else if (preg_match('/macintosh|mac os x/i', $user_agent)) {
$os_platform = 'Mac';
if (preg_match('/macintosh/i', $user_agent)) {
$os_platform .= " OS X";
} else if (preg_match('/mac_powerpc/i', $user_agent)) {
$os_platform .= " OS 9";
}
} else if (preg_match('/linux/i', $user_agent)) {
$os_platform = "Linux";
}
// Override if matched
if (preg_match('/iphone/i', $user_agent)) {
$os_platform = "iPhone";
} else if (preg_match('/android/i', $user_agent)) {
$os_platform = "Android";
} else if (preg_match('/blackberry/i', $user_agent)) {
$os_platform = "BlackBerry";
} else if (preg_match('/webos/i', $user_agent)) {
$os_platform = "Mobile";
} else if (preg_match('/ipod/i', $user_agent)) {
$os_platform = "iPod";
} else if (preg_match('/ipad/i', $user_agent)) {
$os_platform = "iPad";
}
// Get the Browser
if (preg_match('/msie/i', $user_agent) && !preg_match('/opera/i', $user_agent)) {
$browser = "Internet Explorer";
} else if (preg_match('/firefox/i', $user_agent)) {
$browser = "Firefox";
} else if (preg_match('/chrome/i', $user_agent)) {
$browser = "Chrome";
} else if (preg_match('/safari/i', $user_agent)) {
$browser = "Safari";
} else if (preg_match('/opera/i', $user_agent)) {
$browser = "Opera";
} else if (preg_match('/netscape/i', $user_agent)) {
$browser = "Netscape";
}
// Override if matched
if ($os_platform == "iPhone" || $os_platform == "Android" || $os_platform == "BlackBerry" || $os_platform == "Mobile" || $os_platform == "iPod" || $os_platform == "iPad") {
if (preg_match('/mobile/i', $user_agent)) {
$browser = "Handheld Browser";
}
}
// Create a Data Array
return array(
'browser' => $browser,
'os_platform' => $os_platform
);
}
$user_agent = getBrowserOS();
$device_details = "<strong>Browser: </strong>".$user_agent['browser']."<br /><strong>Operating System: </strong>".$user_agent['os_platform']."";
print_r($device_details);
echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT']."");
?>
function getUserOS(){
$osList = array
(
'Windows 7' => 'windows nt 6.1',
'Windows Vista' => 'windows nt 6.0',
'Windows Server 2003' => 'windows nt 5.2',
'Windows XP' => 'windows nt 5.1',
'Windows 2000 sp1' => 'windows nt 5.01',
'Windows 2000' => 'windows nt 5.0',
'Windows NT 4.0' => 'windows nt 4.0',
'Windows Me' => 'win 9x 4.9',
'Windows 98' => 'windows 98',
'Windows 95' => 'windows 95',
'Windows CE' => 'windows ce',
'Windows (version unknown)' => 'windows',
'OpenBSD' => 'openbsd',
'SunOS' => 'sunos',
'Ubuntu' => 'ubuntu',
'Linux' => '(linux)|(x11)',
'Mac OSX Beta (Kodiak)' => 'mac os x beta',
'Mac OSX Cheetah' => 'mac os x 10.0',
'Mac OSX Puma' => 'mac os x 10.1',
'Mac OSX Jaguar' => 'mac os x 10.2',
'Mac OSX Panther' => 'mac os x 10.3',
'Mac OSX Tiger' => 'mac os x 10.4',
'Mac OSX Leopard' => 'mac os x 10.5',
'Mac OSX Snow Leopard' => 'mac os x 10.6',
'Mac OSX Lion' => 'mac os x 10.7',
'Mac OSX (version unknown)' => 'mac os x',
'Mac OS (classic)' => '(mac_powerpc)|(macintosh)',
'QNX' => 'QNX',
'BeOS' => 'beos',
'OS2' => 'os/2',
'SearchBot'=>'(nuhk)|(googlebot)|(yammybot)|(openbot)|(slurp)|(msnbot)|(ask jeeves/teoma)|(ia_archiver)'
);
$useragent = $_SERVER['HTTP_USER_AGENT'];
$useragent = strtolower($useragent);
foreach($osList as $os=>$match) {
if (preg_match('/' . $match . '/i', $useragent)) {
break;
}
else
{
//$os = "Not automatically detected.<br />$useragent";
$os = "unknown";
}
}
return $os;
}