在PHP中检测Mac上Chrome的可靠方法


Reliable way to detect Chrome on Mac in PHP?

正如标题所说,有没有可靠的方法可以检测用户是否正在使用PHP在Mac上使用Chrome访问我的页面?

我有一个只有在Mac上使用Chrome时才会显示的错误,在我解决之前,我希望有一个弹出窗口来推荐用户使用不同的浏览器。

使用$_SERVER['HTTP_USER_AGENT']查找用户的用户代理和一个函数来检查它是否在字符串中。

//The following will find out whether the user is using a Mac, obviously you can change this by echoing the user agent to find out what you need to search for.
$browser = strpos($_SERVER['HTTP_USER_AGENT'], "Chrome");
$os = strpos($_SERVER['HTTP_USER_AGENT'], "Macintosh; Intel Mac OS X");
if($browser !== false && $os !== false) {
  //do stuff if on a mac with Chrome
}

这将适用于任何类型的Mac OS X软件和任何版本的Chrome。如果你想进一步缩小你的结果,你可以使用:

if($_SERVER['HTTP_USER_AGENT'] == "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11" ) {
  //do stuff here
}

如果你发布了你有问题的代码,而不是创建一个黑客修复程序,那会更好。

但是,您可以使用$_SERVER['HTTP_USER_AGENT']来检查用户的浏览器/OS。

为了提供帮助,您可能会期望Chrome上的Mac用户提供类似Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11的内容。

注意

用户代理并不总是设置的,因此请先使用isset以避免出现通知。

我知道您正在寻找PHP解决方案来查找浏览器,但由于特定浏览器最有可能遇到的问题是客户端问题,因此不需要从服务器端进行检测。

因此,这里有一个javascript解决方案,如果你得到了你想要的匹配,你可以隐藏正文,或显示弹出窗口,或将其发送到你的服务器,设置cookie,或任何你认为合适的东西来"解决"你的问题(尽管你应该考虑真正解决问题…)

在这里查找来源:

function that_is_called_on_load() {
    if (BrowserDetect.browser == "Chrome" && BrowserDetect.OS == "Mac") {
        alert("You are using mac, sorry.");
        window.location = "mac_chrome.php";
    }
}

这是一个非常"脏"的解决方案,它可能比服务器端的解决方案更准确/可靠。