Question

I've searched for this and everything I find is way more than I need. I've done this in JavaScript before, but I would really prefer using PHP. How would I go about displaying a message to my visitors, depending on which browser they're using?

Example:

IE User would see: "You're using Internet Explorer"

Firefox User would see: "You're using Mozilla Firefox"

I'm not exactly sure if there are other major browsers besides IE, Firefox, Chrome, Safari, and Opera. But I would at least want to have a message directed to each one of those browsers individually. Thank you.

Was it helpful?

Solution

To identify the user's browser server-side, you'll have to parse the $_SERVER['HTTP_USER_AGENT'] variable...


... Or, probably better, use the get_browser function -- just note you'll have to configure something in php.ini, or you'll get this kind of warning :

Warning: get_browser() [function.get-browser]: browscap ini directive not set

Like the PHP manual page says :

Note : In order for this to work, your browscap configuration setting in php.ini must point to the correct location of the browscap.ini file on your system. browscap.ini is not bundled with PHP, but you may find an up-to-date » php_browscap.ini file here.

While browscap.ini contains information on many browsers, it relies on user updates to keep the database current. The format of the file is fairly self-explanatory.


After downloading that file and adding this line to php.ini :

browscap = /home/squale/developpement/tests/temp/php_browscap.ini

The following portion of code :

var_dump(get_browser(null, true));

Gives me :

array
  'browser_name_regex' => string '^mozilla/5\.0 (x11; .*linux.*; .*rv:1\.9.*) gecko/.*$' (length=53)
  'browser_name_pattern' => string 'Mozilla/5.0 (X11; *Linux*; *rv:1.9*) Gecko/*' (length=44)
  'parent' => string 'Mozilla 1.9' (length=11)
  'platform' => string 'Linux' (length=5)
  'browser' => string 'Mozilla' (length=7)
  'version' => string '1.9' (length=3)
  'majorver' => string '1' (length=1)
  'minorver' => string '9' (length=1)
  'alpha' => string '1' (length=1)
  'frames' => string '1' (length=1)
  'iframes' => string '1' (length=1)
  'tables' => string '1' (length=1)
  'cookies' => string '1' (length=1)
  'javaapplets' => string '1' (length=1)
  'javascript' => string '1' (length=1)
  'cssversion' => string '2' (length=1)
  'supportscss' => string '1' (length=1)
  'beta' => string '' (length=0)
  'win16' => string '' (length=0)
  'win32' => string '' (length=0)
  'win64' => string '' (length=0)
  'backgroundsounds' => string '' (length=0)
  'cdf' => string '' (length=0)
  'vbscript' => string '' (length=0)
  'activexcontrols' => string '' (length=0)
  'isbanned' => string '' (length=0)
  'ismobiledevice' => string '' (length=0)
  'issyndicationreader' => string '' (length=0)
  'crawler' => string '' (length=0)
  'aol' => string '' (length=0)
  'aolversion' => string '0' (length=1)

on firefox 3.5 ; and :

array
  'browser_name_regex' => string '^.*$' (length=4)
  'browser_name_pattern' => string '*' (length=1)
  'browser' => string 'Default Browser' (length=15)
  'version' => string '0' (length=1)
  'majorver' => string '0' (length=1)
  'minorver' => string '0' (length=1)
  'platform' => string 'unknown' (length=7)
  'alpha' => string '' (length=0)
  ....
  'aol' => string '' (length=0)
  'aolversion' => string '0' (length=1)

On a recent version (4.0.203.2) of google chrome for Linux -- well, considering it's some kind of nightly build, I suppose it's normal that it's not recognized...

As a reference, here is it's user-agent string :

string 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0' (length=109)


This show that get_browser is nice ; but maybe not perfect for some cutting-edge test browser -- still, should work fine with most "common" browsers, I suppose...

OTHER TIPS

Most clients send a user agent string and you can use get_browser to "translate" that string into something more "informative".
But hte client is free to send any string it wants, e.g. opera browsers that identify themselves as internet explorer.

I think the only way to detect browser in PHP is from user agent, from HTTP_USER_AGENT.

Or using PHP function get_browser() -> http://us3.php.net/function.get-browser

<?php
  $browser = get_browser();
  echo 'You using '.$browser['browser'];
?>

more info at http://www.php.net/function.get-browser

you can get browscap.ini file here http://browsers.garykeith.com/downloads.asp

There is actually no good way to determine browser capabilities server-side, since each user, regardless to his browser version can manipulate the browser settings thus getting different capabilities(disabling Java for example).

you should resort to client side combined with server side,there are many jscript libraries out there that can do this, for example, link text

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top