Recipe 8.8 Detecting Different Browsers
8.8.1 Problem
You want to generate content based
on the capabilities of a user's browser.
8.8.2 Solution
Use the object returned by get_browser(
)
to determine a browser's capabilities:
$browser = get_browser( );
if ($browser->frames) {
// print out a frame-based layout
} elseif ($browser->tables) {
// print out a table-based layout
} else {
// print out a boring layout
}
8.8.3 Discussion
The get_browser( ) function examines the
environment variable
$_ENV['HTTP_USER_AGENT'] (set by the web server)
and compares it to browsers listed in an external browser capability
file. Due to licensing issues, PHP isn't distributed
with a browser capability file. The "Obtaining
PHP" section of the PHP FAQ
(http://www.php.net/faq.obtaining) lists
http://www.cyscape.com/asp/browscap/ and
http://www.amrein.
com/apps/page.asp?Q=InowDownload as sources for a browser
capabilities file, and there is also one at
http://asp.net.do/browscap.zip.
Once you download a browser capability file, you need to tell PHP
where to find it by setting the
browscap configuration directive
to the pathname of the file. If you use PHP as a CGI, set the
directive in the php.ini file:
browscap=/usr/local/lib/browscap.txt
If you use Apache, you need to set the
directive in your Apache configuration file:
php_value browscap "/usr/local/lib/browscap.txt"
Many of the capabilities get_browser( ) finds are
shown in Table 8-1. For
user-configurable capabilities
such as javascript or cookies
though, get_browser( ) just tells you if the
browser can support those functions. It doesn't tell
you if the user has disabled the functions. If JavaScript is turned
off in a JavaScript-capable browser or a user refuses to accept
cookies when the browser prompts him, get_browser(
) still indicates that the browser supports those
functions.
Table 8-1. Browser capability object properties
|
platform
|
Operating system the browser is running on (e.g., Windows, Macintosh,
UNIX, Win32, Linux, MacPPC)
|
|
version
|
Full browser version (e.g., 5.0, 3.5, 6.0b2)
|
|
majorver
|
Major browser version (e.g., 5, 3, 6)
|
|
minorver
|
Minor browser version (e.g., 0, 5, 02)
|
|
frames
|
1 if the browser supports frames
|
|
tables
|
1 if the browser supports tables
|
|
cookies
|
1 if the browser supports cookies
|
|
backgroundsounds
|
1 if the browser supports background sounds with
<embed> or
<bgsound>
|
|
vbscript
|
1 if the browser supports VBScript
|
|
javascript
|
1 if the browser supports JavaScript
|
|
javaapplets
|
1 if the browser can run Java applets
|
|
activexcontrols
|
1 if the browser can run ActiveX controls
|
8.8.4 See Also
Documentation on get_browser( ) at
http://www.php.net/get-browser.
|