在php中检测浏览器,版本和平台的可靠方法

ble*_*her 21 javascript php browser owasp

我一直在寻找一种可靠的方式(至少不那么模糊):

  1. 浏览器的名称
  2. 版本
  3. 以及它所在的平台(OS)
  4. 也许更多的信息,但上面的3个信息就足够了.

我想根据这些信息显示自定义内容,例如:

如果用户想知道如何清除浏览器上的cookie.假设我有很多内容已经可用于许多浏览器.版本我想自动加载适当的内容

有没有办法不涉及Javascript来获取这些值?

我有用例没有找到或不准确的浏览器.所以我想拥有最可靠的解决方案.

这里有2个网站完全符合我的需要:

  1. www.whatismybrowser.com(联系店主知道如何用PHP做到这一点)
  2. HawkBrowser真的是详尽的测试,而不是免费的

部分解决方案的其他链接:

  1. 使用2012年8月的旧浏览器cap升级mybrowser.org(来源)
  2. 谷歌的www.whatbrowser.org

花了很多天尝试,搜索,但没有成功.我从Stackoverflow社区发现了许多提示:

  1. 使用get_browser()的browsercap.该项目已经停止(目前为2012年8月8日),并没有发现一些现代流行的手持设备.
  2. Javascript检测功能方法:Modernirz.对于我想要做的事情来说,不是很好的方法,需要经常更新.
  3. jQuery.browser不够好可能性不够.
  4. quirksmode.org javascript并且暂时不准确使用移动版本,并且更喜欢PHP版本.

其他有用的链接:

  1. Stakoverflow答案1
  2. Stackoverflow答案2
  3. PHP移动检测
  4. PIWIK分析报告

编辑1 到目前为止,我已经测试了答案和评论.这些解决方案非常令人满意:

  • PHP移动检测最后一个版本确实很好,如果你使用它,最好给客户端提供示例中的表单,以便他们可以为项目做出贡献.(感谢@Pekka)
  • WURFL不是最近但非常好.(感谢@Ian Roberts)

    编辑2 PHP移动检测使用WURFL

UPDATE

确保您收到的标题未被任何其他库修改.

例如,某些安全库(如OWASP PhpSec [ABANDONED])将标头结构更改为自定义对象, PHP移动检测无法访问所需的所有信息

对于那些使用OWASP PhpSec [ABANDONED]的人来说,http库正在修改全局头对象结构.(2013年12月)因此,如果您遇到问题,请在使用http库包含任何OWASP PhpSec类之前使用PHP移动检测

Ian*_*rts 3

您考虑过WURFL吗?它的主要目标是对移动设备浏览器进行分类,但它声称也有一种识别桌面浏览器的模式。