0

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

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

4

3 回答 3

1

使用 $_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
}
于 2012-07-14T16:06:09.650 回答
0

如果您发布遇到问题的代码而不是创建一个hacky修复程序会更好。

但是,您可以使用$_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.11Chrome 上的 Mac 用户提供类似的东西。

笔记

用户代理并不总是设置,所以isset首先使用以避免出现通知。

于 2012-07-14T16:07:51.160 回答
0

我知道您正在寻找用于查找浏览器的 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";
    }
}

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

于 2012-07-14T16:24:33.640 回答