rapidinjection / browser.php
一个用于检测用户浏览器的PHP类。该封装通过浏览器的user-agent字符串对浏览器及其版本进行分解。这不是一个保证的解决方案,但提供了一个检测用户使用何种浏览器的总体准确方法。
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^8
This package is not auto-updated.
Last update: 2024-09-24 03:59:40 UTC
README
通过用户代理帮助在PHP级别检测用户的浏览器和平台
安装
您可以使用 Composer 将此库作为本地、按项目依赖项添加到您的项目中
composer require cbschuld/browser.php
如果您仅在开发期间需要此库,例如运行项目测试套件,则应将其添加为开发时间依赖项
composer require --dev cbschuld/browser.php
典型用法
$browser = new Browser(); if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >=10 ) { echo 'You have FireFox version 10 or greater'; }
浏览器检测
此解决方案识别以下浏览器,并对版本进行最佳猜测
- 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::BROWSER_FIREBIRD
) - UCBrowser (
Browser::BROWSER_UCBROWSER
) - Firefox (
Browser::BROWSER_FIREFOX
) - Mozilla (
Browser::BROWSER_MOZILLA
) - Palemoon (
Browser::BROWSER_PALEMOON
) - curl (
Browser::BROWSER_CURL
) - wget (
Browser::BROWSER_WGET
) - Amaya (
Browser::BROWSER_AMAYA
) - Lynx (
Browser::BROWSER_LYNX
) - Safari (
Browser::BROWSER_SAFARI
) - Playstation (
Browser::BROWSER_PLAYSTATION
) - iPhone (
Browser::BROWSER_IPHONE
) - iPod (
Browser::BROWSER_IPOD
) - Google's Android(
Browser::BROWSER_ANDROID
) - Google's Chrome(
Browser::BROWSER_CHROME
) - GoogleBot(
Browser::BROWSER_GOOGLEBOT
) - Yahoo!'s Slurp(
Browser::BROWSER_SLURP
) - W3C's Validator(
Browser::BROWSER_W3CVALIDATOR
) - BlackBerry(
Browser::BROWSER_BLACKBERRY
)
操作系统检测
此解决方案识别以下操作系统
- 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
)
历史和传统
检测用户的浏览器类型和版本对于利用一些较新尖端概念的网络应用程序很有帮助。通过浏览器类型和版本,您可以通知用户他们可能遇到的挑战,并建议他们在使用此类应用程序之前升级。在大型公共网站上这不是一个好主意;但在私人应用程序中,此类检查可能是有帮助的。
在我的一个活跃项目中,我们有一个相当图形密集和视觉上吸引人的用户界面,它利用了很多透明的PNG文件。因为我们都知道IE6对PNG文件的支持有多糟糕,所以我们有必要以一种温和的方式告诉我们的用户他们的浏览器在功能上的不足。
在PHP层而不是客户端层实现这个功能比我想象中更具挑战性;可用的唯一脚本是由Gary White编写的,由于可靠性问题,Gary已经不再维护这个脚本。我100%同意Gary关于可读性的看法;然而,出于现实原因,我们可能需要用户的浏览器及其版本,如果您的访客没有返回错误的用户代理,我们可以做出合理的猜测。
我是基于Gary White的原始工作实现的这个解决方案,但已经替换了他所有的原始代码。无论如何,都要感谢Gary。遗憾的是,我从未能够就这个解决方案与他取得联系。
测试
使用PHPUnit对测试/list中的已知用户代理进行测试。每个文件都是用以下字段进行制表符分隔的
用户代理,用户代理类型,浏览器,版本,操作系统,操作系统版本
例如
Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16 Browser Opera 12.16 Linux Linux
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1 Browser Chrome 14.0.835.186 Macintosh OS X 10_7_2
可以使用phpunit运行测试
vendor/phpunit/phpunit/phpunit