【发布时间】:2013-02-22 16:53:56
【问题描述】:
我使用下面的代码来查找用户代理,
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/MSIE/i', $user_agent)) {
echo "Internet Explorer";
}
if (preg_match('/Firefox/i', $user_agent)) {
echo "FireFox";
}
if (strpos( $user_agent, 'Chrome') !== false)
{
echo "Google Chrome";
}
if (strpos( $user_agent, 'Safari') !== false)
{
echo "Safari";
}
if (preg_match('/Opera/i', $user_agent)) {
echo "Opera";
}
?>
但是我的 chrome 浏览器突然返回到 useragent 下面
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.155 Safari/537.22
它包含单词 safari 和 chrome.so 两个浏览器名称都被打印出来。this.thanks 的解决方案是什么。
【问题讨论】:
-
解决方案几乎总是“停止关心浏览器是什么”
-
我猜这与两个浏览器都使用
WebKit布局引擎这一事实有关。您应该研究特征检测,因为浏览器检测是不可靠的。您应该考虑progressive enhancement 的想法,您可以在其中创建所有浏览器都可以使用的基本功能,并为支持其他功能(即功能检测)的浏览器扩展该功能。 -
要跟进@Quentin 的评论,请始终问自己为什么您的服务器需要知道浏览器是什么。我了解在客户端使用特征检测,但我不明白为什么您需要在服务器上知道这一点。
-
@ColinMorelli 这里有一个想法......如果你想动态包含你只想在某些浏览器上执行的javascript(初学者的功能检测)怎么办?这样您就可以在不需要时节省往返行程(我的意思是,大多数库无论如何都允许您动态加载 js,但是 shhhhh)
-
@jcolebrand 因为它是微软。 '纳夫说。 :)
标签: php user-agent