pixelbacon / browser.php
This package is not auto-updated.
Last update: 2024-09-14 19:25:29 UTC
README
通过用户代理在PHP级别帮助检测用户的浏览器和平台
安装
要安装,只需在lib目录下require Browser.php
文件。
您也可以通过使用Packagist存档来使用Composer
进行安装。
背景
在利用一些最新尖端概念的Web应用中,检测用户的浏览器类型和版本很有帮助。有了浏览器类型和版本,您可以通知用户他们可能遇到的挑战,并建议他们在使用此类应用程序之前进行升级。在大型公共网站上这并不是一个好主意;但在私有应用程序中,此类检查可能很有帮助。
在我的一项活跃项目中,我们有一个相当图形密集且视觉吸引人的用户界面,使用了大量透明的PNG文件。因为我们都知道IE6对PNG文件的支持有多糟糕,所以我们有必要以一种友好的方式告诉用户他们的浏览器功能不足。
在PHP层而不是客户端层寻找做这件事的方法,比我想象的要更具挑战性;可用的唯一脚本是由Gary White编写的,由于可靠性问题,Gary不再维护这个脚本。我100%同意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::BROWSER_OMNIWEB)
- Phoenix (Browser::BROWSER_PHOENIX)
- Firebird (浏览器::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::BROWSER_ANDROID)
- Google 的 Chrome(Browser::BROWSER_CHROME)
- GoogleBot(Browser::BROWSER_GOOGLEBOT)
- Yahoo! 的 Slurp(Browser::BROWSER_SLURP)
- W3C 的 Validator(Browser::BROWSER_W3CVALIDATOR)
- BlackBerry(Browser::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 Validator 和 Yahoo! Slurp 的支持。
2009年4月27日 更新
- John 指出了一个严重的错误(见下文)。已移除该错误。
2009年11月8日 更新
- 脚本有很多变化,感谢大家的建议和邮件。这次发布应该添加所有请求的功能。添加了 BlackBerry、移动检测、Opera Mini 支持、机器人检测、Opera 10 的 UserAgent .mess. 检测以及 IceCat 和 Shiretoko 的检测!
2010年3月7日 更新
- 版本 1.7 是一个 重大 重构(移除了 preg_match 和其他 .slow. 程序),包括以下更改
- 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 的问题