正如标题所说,有没有一种可靠的方法来检测用户是否使用 PHP 在 Mac 上使用 Chrome 访问我的页面?
我有一个错误,只有在 Mac 上使用 Chrome 时才会显示,在我解决它之前,我希望有一个弹出窗口来推荐用户使用不同的浏览器。
正如标题所说,有没有一种可靠的方法来检测用户是否使用 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
}
如果您发布遇到问题的代码而不是创建一个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.11
Chrome 上的 Mac 用户提供类似的东西。
笔记
用户代理并不总是设置,所以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";
}
}
这是一个非常“肮脏”的解决方案,它可能比服务器端的解决方案更准确/可靠。