2010-06-10 73 views

回答

5
<?php 
echo $_SERVER['HTTP_USER_AGENT']; 
?> 

正如Palantir所说,另外还有一个get_browser函数,您可以在其中检查浏览器中启用的功能。

+0

请记住,用户代理很容易欺骗。 – nico 2010-06-10 16:27:06

2

请参阅get_browser()

<?php 
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n"; 

$browser = get_browser(null, true); 
print_r($browser); 
?> 
2

总而言之,你不能。你当然可以尝试得到它,你几乎可以肯定地得到看起来像你想要的东西;但是绝对没有办法检查这些信息是否正确。当您收到用户代理字符串时,另一端的浏览器可能是真实的,或者它可能在说谎。在处理用户时,总是假定它实际上在说谎。

解决这个问题没有“最好的办法”,但是你最想做的就是用各种各样的浏览器测试你的网站,使用可移植的HTML和CSS技术,如果你绝对必须的话,填写洞与JavaScript。

选择根据什么浏览器发送到浏览器的数据认为是这是一个坏主意™。

+2

我不同意有时有理由针对某些浏览器,因为它们有时具有不同的功能,用户的浏览器会报告任何想要的内容,如果用户希望更改该内容,那么他​​会得到错误的内容并最终破坏功能。用户不这样做,如果他们这样做,那么他们知道他们在做什么以及期望什么。事实上,整个网络都基于某种信任,用户比使用桌面软件时拥有更多的权力,这是游戏的一部分。想想推荐人,cookies,javascript支持等等...... – Palantir 2010-06-10 13:20:40

+0

@Palantir:阿门,兄弟。 – nickf 2010-06-10 13:52:18

+2

身份!=能力。检查功能,而不是名称。 – 2010-06-10 15:09:22

3

您需要创建函数来将用户代理数据到浏览器的通用名称

例如,$_SERVER['HTTP_USER_AGENT']可以返回 Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*是火狐 或 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4是Chrome的

细节为您提供渲染引擎,代码库,版本,操作系统等...

我建议使用preg_match和/或已知浏览器列表是你想要做的事情,如

echo browserCommonName($_SERVER['HTTP_USER_AGENT']); 输出“Google Chrome”。

browserCommonName($ userAgent)需要一个已知浏览器的列表。

编辑:刚才注意到get_browser buit到php做到这一点,我不好的不读线程。

相关问题