masnathan / browser.php
This package is auto-updated.
Last update: 2023-06-16 13:11:02 UTC
README
通过用户代理在PHP级别帮助检测用户的浏览器和平台
安装
要安装,只需在 lib
目录下 require
Browser.php
文件。
您也可以通过 Composer
使用 Packagist存档 来安装。
背景
检测用户的浏览器类型和版本对于利用一些较新前沿概念的Web应用很有帮助。有了浏览器类型和版本,您可以通知用户他们可能遇到的挑战,并建议他们在使用此类应用之前升级。在大规模公共网站上这不是一个好主意;但在私有应用中,这种类型的检查可能很有帮助。
在我的一个活跃项目中,我们有一个图形密集型且视觉上吸引人的用户界面,使用了大量透明的PNG文件。因为我们都知道IE6对PNG文件的支持有多糟糕,所以我们有必要以一种友好的方式告诉我们的用户,他们的浏览器功能不足。
在PHP层而不是客户端层搜索实现此功能的方法比我想的更具挑战性;可用的唯一脚本是由Gary White编写的,由于可靠性问题,Gary不再维护此脚本。我完全同意Gary关于可读性的观点;然而,存在现实的原因希望知道用户及其浏览器版本,如果您的访客没有返回错误的用户代理,我们可以做出合理的猜测。
这个解决方案基于Gary White的原始解决方案,但增加了一些内容
我增加了以类常量查看返回值的能力,以提高可读性
- 更新了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)
- Internet Explorer (Browser::BROWSER_IE)
- Pocket Internet Explorer (Browser::BROWSER_POCKET_IE)
- 海浪浏览器(Browser::BROWSER_GALEON)
- Konqueror浏览器(Browser::BROWSER_KONQUEROR)
- iCab浏览器(Browser::BROWSER_ICAB)
- OmniWeb浏览器(Browser::BROWSER_OMNIWEB)
- 凤凰浏览器(Browser::BROWSER_PHOENIX)
- 火鸟浏览器(Browser::BROWSER_FIREBIRD)
- Firefox浏览器(Browser::BROWSER_FIREFOX)
- Mozilla浏览器(Browser::BROWSER_MOZILLA)
- Amaya浏览器(Browser::BROWSER_AMAYA)
- Lynx浏览器(Browser::BROWSER_LYNX)
- Safari浏览器(Browser::BROWSER_SAFARI)
- iPhone(Browser::BROWSER_IPHONE)
- iPod(Browser::BROWSER_IPOD)
- 谷歌安卓(Browser::BROWSER_ANDROID)
- 谷歌Chrome(Browser::BROWSER_CHROME)
- 谷歌爬虫(Browser::BROWSER_GOOGLEBOT)
- 雅虎Slurp(Browser::BROWSER_SLURP)
- W3C验证器(Browser::BROWSER_W3CVALIDATOR)
- 黑莓浏览器(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作为平台添加;添加了对谷歌安卓的支持。
2009年4月22日更新
- 添加了对谷歌爬虫、W3C验证器和雅虎Slurp的支持。
2009年4月27日更新
- John指出了一个严重的错误(见下文)。已删除该错误。
2009年11月8日更新
- 脚本进行了许多更改,感谢大家的建议和电子邮件。本版本应该添加所有请求的功能。添加了黑莓、移动检测、Opera Mini支持、机器人检测、Opera 10的用户代理.mess.检测、IceCat和Shiretoko的检测!
2010年3月7日更新
- 版本1.7是一个重大重建(移除preg_match和其他慢速例程),包括以下更改
- 几乎所有的Gary原始代码都被替换
- 创建了一个大的PHPUNIT测试环境,以验证新版本和新增功能
- 添加了FreeBSD平台
- 添加了OpenBSD平台
- 添加了NetBSD平台
- 添加了SunOS平台
- 添加了OpenSolaris平台
- 添加了对Iceweazel浏览器的支持
- 添加了isChromeFrame()调用,以检查是否使用了chromeframe
- 由于遗留的Opera用户代理,将Opera检查移动到Firefox检查之前
- 添加了__toString()方法(感谢Deano)
2010年4月27日更新(版本1.8)
- 添加了对iPad的支持
2010年8月20日更新(版本1.9)
- 添加了MSN浏览器
- 添加了必应/MSN爬虫
- 添加了对Android平台的支持
- 解决了Android 1.6/2.2的问题