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: php, user_agent, браузер, операционная система
а как можно узнать язык операционки? чтоб ограничеть доступ из некоторых стран?
> а как можно узнать язык операционки? чтоб ограничеть доступ из некоторых стран?
Для определения страны посетителя можно использовать какую-нибудь свободную geoIP базу, например, эту:
http://software77.net/cgi-bin/ip-country/geo-ip.pl