Detecting the user’s browser
version is helpful in web applications that harness some of the newer bleeding edge concepts. With the browser type and version you can notify users about challenges they may experience and suggest they upgrade before using such application. Not a great idea on a large scale public site; but on a private application this type of check can be helpful.
In an active project of mine we have a pretty graphically intensive and visually appealing user interface which leverages a lot of transparent PNG files. Because we all know how great IE6 supports PNG files it was necessary for us to tell our users the lack of power their browser has in a kind way.
Searching for a way to do this at the PHP layer and not at the client layer was more of a challenge than I would have guessed; the only script available was written by Gary White and Gary no longer maintains this script because of reliability. I do agree 100% with Gary about the readability; however, there are realistic reasons to desire the user’s browser and browser version and if your visitor is not echoing a false user agent we can take an educated guess.
I based this solution off of Gary White’s original solution but added a few things:
This solution identifies the following Operating Systems:
This solution identifies the following Browsers and does a best-guess on the version:
removed an unused constant and renamed the constructor to use the PHP magic method
__construct (thanks to Robin for locating the legacy constant and suggesting the use of the magic method).
updated typical usage to show a correct example! (thanks David!)
fixed typo in the usage! (thanks Adam!)
added support for the iPod; added iPod and iPhone as platforms; added Google’s Android
added support for GoogleBot, the W3C Validator and Yahoo! Slurp
John pointed out a terrible typo (see below) — removed the typo
A lot of changes to the script, thank you to everyone for the suggestions and emails. This release should add all of the requested features. Added BlackBerry, mobile detection, Opera Mini support, robot detection, Opera 10′s UserAgent “mess”, detection for IceCat and Shiretoko!
Version 1.7 was a MAJOR Rebuild (preg_match and other slow routine removal(s)) included the following changes:
isChromeFrame()call to check if chromeframe is in use
__toString()method (Thanks Deano)
Update (Version 1.8) Added iPad support
Update (Version 1.9) – Added MSN Explorer Browser, Added Bing/MSN Robot, Added the Android Platform, Fixed issue with Android 1.6/2.2