PHP -  results from $_SERVER('HTTP_USER_AGENT') ?

Posted on 2012-08-26
Last Modified: 2012-09-02
Hi, I am using $_SERVER('HTTP_USER_AGENT') to obtain visitors information.

From details below how do I work out operating system, browser and version etc?

Thanks in advance for your feedback.

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1

Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3
Question by:sabecs
    LVL 58

    Expert Comment

    LVL 20

    Accepted Solution

    Here is a handy function.
    function getOS($userAgent) {
      // Create list of operating systems with operating system name as array key 
    	$oses = array (
    		'iPhone' => '(iPhone)',
    		'Windows 3.11' => 'Win16',
    		'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', // Use regular expressions as value to identify operating system
    		'Windows 98' => '(Windows 98)|(Win98)',
    		'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
    		'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
    		'Windows 2003' => '(Windows NT 5.2)',
    		'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)',
    		'Windows 7' => '(Windows NT 6.1)|(Windows 7)',
    		'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
    		'Windows ME' => 'Windows ME',
    		'Open BSD'=>'OpenBSD',
    		'Sun OS'=>'SunOS',
    		'Safari' => '(Safari)',
    		'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp/cat)|(msnbot)|(ia_archiver)'
    	foreach($oses as $os=>$pattern){ // Loop through $oses array
        // Use regular expressions to check operating system type
    		if(eregi($pattern, $userAgent)) { // Check if a value in $oses array matches current user agent.
    			return $os; // Operating system was matched so return $oses key
    	return 'Unknown'; // Cannot find operating system so return Unknown
    // To use
    echo getOS($_SERVER['HTTP_USER_AGENT']);

    Open in new window

    To find browser details you can use this

    $browser = get_browser(null, true);
    // That will print out something like this:
        [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
        [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
        [parent] => Firefox 0.9
        [platform] => WinXP
        [browser] => Firefox
        [version] => 0.9
        [majorver] => 0
        [minorver] => 9
        [cssversion] => 2
        [frames] => 1
        [iframes] => 1
        [tables] => 1
        [cookies] => 1
        [backgroundsounds] =>
        [vbscript] =>
        [javascript] => 1
        [javaapplets] => 1
        [activexcontrols] =>
        [cdf] =>
        [aol] =>
        [beta] => 1
        [win16] =>
        [crawler] =>
        [stripper] =>
        [wap] =>
        [netclr] =>

    Open in new window

    LVL 107

    Expert Comment

    by:Ray Paseur
    Might want to read the comments and test the code sample here:
    LVL 82

    Expert Comment

    by:Dave Baldwin
    You will probably have to limit your detection to a select few.  This page will show you why:

    Featured Post

    Maximize Your Threat Intelligence Reporting

    Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

    Join & Write a Comment

    Introduction Many web sites contain image galleries; a common design for these galleries includes a page with a collection of thumbnail images.  You can click on each of the thumbnail images to see the larger version of the image.  This is easily i…
    Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
    The viewer will learn how to count occurrences of each item in an array.
    This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

    728 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    21 Experts available now in Live!

    Get 1:1 Help Now