troovers/browser

一个用于检测用户浏览器的PHP项目

1.1.0 2023-06-12 09:01 UTC

This package is auto-updated.

Last update: 2024-09-12 12:46:39 UTC


README

这是https://github.com/cbschuld/Browser.php的一个副本,它没有版本控制。这个库通过用户代理在PHP级别帮助检测用户的浏览器和平台。

安装

您可以通过使用Packagist存档通过Composer来安装它。

背景

检测用户的浏览器类型和版本对于利用一些较新尖端概念的Web应用程序是有帮助的。有了浏览器类型和版本,您可以通知用户他们可能会遇到的问题,并建议他们在使用此类应用程序之前进行升级。在大规模公开网站上这不是一个好主意;但在私有应用程序中,这种类型的检查可能会有所帮助。

在我的一个活跃的项目中,我们有一个相当图形密集和视觉吸引人的用户界面,它利用了大量的透明PNG文件。因为我们都知道IE6对PNG文件的支持有多么糟糕,所以我们有必要以一种温和的方式告诉我们的用户他们的浏览器有多弱。

在PHP层而不是客户端层寻找这种方法的挑战性比我预想的要大;可用的唯一脚本是由Gary White编写的,Gary因为可靠性问题不再维护这个脚本。我完全同意Gary关于可读性的观点;然而,有现实的理由希望知道用户的浏览器和浏览器版本,如果您的访客没有返回一个虚假的用户代理,我们可以做出一个有根据的猜测。

我基于Gary White的原始解决方案构建了这个解决方案,但增加了一些内容

我添加了将返回值视为类常量的能力,以增加可读性

  • 通过pixelbacon增加了对edge的版本检测
  • 更新了Amaya的版本检测
  • 更新了Firefox的版本检测
  • 更新了Lynx的版本检测
  • 更新了WebTV的版本检测
  • 更新了NetPositive的版本检测
  • 更新了IE的版本检测
  • 更新了OmniWeb的版本检测
  • 更新了iCab的版本检测
  • 更新了Safari的版本检测
  • 增加了对Chrome的检测
  • 增加了对iPhone的检测
  • 增加了对机器人的检测
  • 增加了对移动设备的检测
  • 增加了对BlackBerry的检测
  • 增加了对iPhone的检测
  • 增加了对iPad的检测
  • 增加了对Android的检测
  • 移除了Netscape的检测
  • 更新Safari以移除移动设备(iPhone)

此解决方案识别以下操作系统

  • Windows (Browser::PLATFORM_WINDOWS)
  • Windows CE (Browser::PLATFORM_WINDOWS_CE)
  • Apple (Browser::PLATFORM_APPLE)
  • Linux (Browser::PLATFORM_LINUX)
  • Android (Browser::PLATFORM_ANDROID)
  • OS/2 (Browser::PLATFORM_OS2)
  • BeOS (Browser::PLATFORM_BEOS)
  • iPhone (Browser::PLATFORM_IPHONE)
  • iPod (Browser::PLATFORM_IPOD)
  • BlackBerry (Browser::PLATFORM_BLACKBERRY)
  • FreeBSD (Browser::PLATFORM_FREEBSD)
  • OpenBSD (Browser::PLATFORM_OPENBSD)
  • NetBSD (Browser::PLATFORM_NETBSD)
  • SunOS (Browser::PLATFORM_SUNOS)
  • OpenSolaris (Browser::PLATFORM_OPENSOLARIS)
  • iPad (Browser::PLATFORM_IPAD)

此解决方案识别以下浏览器,并对版本进行最佳猜测

  • Opera (Browser::BROWSER_OPERA)
  • WebTV (Browser::BROWSER_WEBTV)
  • NetPositive (Browser::BROWSER_NETPOSITIVE)
  • Edge (Browser::BROWSER_EDGE)
  • Internet Explorer (Browser::BROWSER_IE)
  • Pocket Internet Explorer (Browser::BROWSER_POCKET_IE)
  • Galeon (Browser::BROWSER_GALEON)
  • Konqueror (Browser::BROWSER_KONQUEROR)
  • iCab (Browser::BROWSER_ICAB)
  • OmniWeb (浏览器::BROWSER_OMNIWEB)
  • 凤凰 (浏览器::BROWSER_PHOENIX)
  • 火鸟 (浏览器::BROWSER_FIREBIRD)
  • Firefox (浏览器::BROWSER_FIREFOX)
  • Mozilla (浏览器::BROWSER_MOZILLA)
  • Amaya (浏览器::BROWSER_AMAYA)
  • Lynx (浏览器::BROWSER_LYNX)
  • Safari (浏览器::BROWSER_SAFARI)
  • iPhone (浏览器::BROWSER_IPHONE)
  • iPod (浏览器::BROWSER_IPOD)
  • Google Android (浏览器::BROWSER_ANDROID)
  • Google Chrome (浏览器::BROWSER_CHROME)
  • GoogleBot (浏览器::BROWSER_GOOGLEBOT)
  • Yahoo! Slurp (浏览器::BROWSER_SLURP)
  • W3C 验证器 (浏览器::BROWSER_W3CVALIDATOR)
  • BlackBerry (浏览器::BROWSER_BLACKBERRY)

典型用法

$browser = new Browser();
if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
	echo 'You have FireFox version 2 or greater';
}

2008年12月9日 更新

  • 移除了一个未使用的常量,并将构造函数重命名为使用PHP魔术方法 __construct(感谢Robin找到旧常量并建议使用魔术方法)。

2009年2月19日 更新

  • 更新了典型用法,以显示正确示例!(感谢David!)

2009年2月24日 更新

  • 修正了用法中的错误!(感谢Adam!)

2009年3月14日 更新

  • 添加了对iPod的支持;将iPod和iPhone作为平台;添加了Google Android。

2009年4月22日 更新

  • 添加了对GoogleBot、W3C 验证器和Yahoo! Slurp的支持。

2009年4月27日 更新

  • John指出了一个严重的错误(见下文)。已移除错误。

2009年11月8日 更新

  • 脚本有很多变化,感谢大家的建议和电子邮件。这个版本应该添加了所有请求的功能。添加了BlackBerry、移动检测、Opera Mini支持、机器人检测、Opera 10.x UserAgent .mess.检测以及IceCat和Shiretoko的检测!

2010年3月7日 更新

  • 版本1.7是一个 重大 重构(移除了preg_match和其他缓慢的例行程序),包括以下更改
  • Gary原始代码的大部分已被替换
  • 创建了一个大的PHPUNIT测试环境,以验证新版本和新增功能
  • 添加了FreeBSD平台
  • 添加了OpenBSD平台
  • 添加了NetBSD平台
  • 添加了SunOS平台
  • 添加了OpenSolaris平台
  • 添加了对Iceweazel浏览器的支持
  • 添加了isChromeFrame()调用,以检查是否使用了chromeframe
  • 由于遗留的Opera User Agents,将Opera检查移至Firefox检查之前
  • 添加了__toString()方法(感谢Deano)

2010年4月27日:更新(版本1.8)

  • 添加了对iPad的支持

2010年8月20日:更新(版本1.9)

  • 添加了MSN Explorer浏览器
  • 添加了Bing/MSN机器人
  • 添加了Android平台
  • 修复了Android 1.6/2.2的问题