PHP: Определение браузера и операционной системы

http://techpatterns.com/downloads/php_browser_detection.php – Здесь находится отличный скрипт для определения браузера и операционной системы по строке $_SERVER['USER_AGENT']. Буквально выжимется ВСЕ возможное, влючая определение бот это или браузер:) Хотя понятно, что строка может быть легко подделана при желании.

А если добавить в конец файла browser_detection.php (который fully featured), то команда

require_once("browser_detection.php");

установит переменные $_SERVER['CLIENT_BROWSER'] и $_SERVER['CLIENT_OS'], в которых будут читабельные названия браузера и ОС соответственно. Код взят из примера на том же сайте

browser_detection.php

..........
..........
function browser_detection_initBD(){
    $os =  '';
    // change these two to match your include path/and file name you give the script
    $browser_info = browser_detection('full'); 

    $browser_info[] = browser_detection('moz_version'); 

    switch ($browser_info[5])
    {
                case 'win':
                    $os .= 'Windows ';
                    break;
                case 'nt':
                    $os .= 'Windows NT ';
                    break;
                case 'lin':
                    $os .= 'Linux ';
                    break;
                case 'mac':
                    $os .= 'Mac ';
                    break;
                case 'unix':
                    $os .= 'Unix Version: ';
                    break;
                default:
                    $os .= $browser_info[5];
    } 

    if ( $browser_info[5] == 'nt' )
    {
                if ($browser_info[6] == 5)
                {
                    $os .= '5.0 (Windows 2000)';
                }
                elseif ($browser_info[6] == 5.1)
                {
                    $os .= '5.1 (Windows XP)';
                }
                elseif ($browser_info[6] == 5.2)
                {
                    $os .= '5.2 (Windows XP x64 Edition or Windows Server 2003)';
                }
                elseif ($browser_info[6] == 6.0)
                {
                    $os .= '6.0 (Windows Vista)';
                }
                elseif ($browser_info[6] == 6.1)
                {
                    $os .= '6.1 (Windows 7)';
                }
    }
    elseif ( ( $browser_info[5] == 'mac' ) &&  ( $browser_info[6] >= 10 ) )
    {
                $os .=  'OS X';
    }
    elseif ( $browser_info[5] == 'lin' )
    {
                $os .= ( $browser_info[6] != '' ) ? 'Distro: ' . ucfirst ($browser_info[6] ) : 'Smart Move!!!';
    }
    elseif ( $browser_info[6] == '' )
    {
                $os .=  ' (version unknown)';
    }
    else
    {
                $os .=  strtoupper( $browser_info[6] );
    } 

    $browser = '';
    if ($browser_info[0] == 'moz' )
    {
                $a_temp = $browser_info[count( $browser_info ) - 1];// the moz array is last item
                $browser .= ($a_temp[0] != 'mozilla') ? 'Mozilla/ ' . ucfirst($a_temp[0]) . ' ' : ucfirst($a_temp[0]) . ' ';
                $browser .= $a_temp[1] . '; ';
                $browser .= 'ProductSub: ';
                $browser .= ( $a_temp[4] != '' ) ? $a_temp[4] . '; ' : 'Not Available; ';
                $browser .= ($a_temp[0] != 'galeon')?'RV version: ' . $a_temp[3] : '';
    }
    elseif  ( $browser_info[0] == 'ns' )
    {
                $browser .= 'Netscape ';
                $browser .= $browser_info[1] . '';
    }
    else
    {
                $browser .= ($browser_info[0] == 'ie') ? strtoupper($browser_info[7]) : ucwords($browser_info[7]);
                $browser .= ' ' . $browser_info[1];
    }
    $_SERVER['CLIENT_BROWSER'] = $browser;
    $_SERVER['CLIENT_OS'] = $os;
}
browser_detection_initBD();

Tags: , , ,

2 Responses to “PHP: Определение браузера и операционной системы”

  1. Арекс says:

    а как можно узнать язык операционки? чтоб ограничеть доступ из некоторых стран?

  2. stillwaiting says:

    > а как можно узнать язык операционки? чтоб ограничеть доступ из некоторых стран?

    Для определения страны посетителя можно использовать какую-нибудь свободную geoIP базу, например, эту:

    http://software77.net/cgi-bin/ip-country/geo-ip.pl

Leave a Reply

You must be logged in to post a comment.