|
|
|
| Всем добрый день.
Часто возникает проблема с корректностью при определении типов и версий браузера и операционной системы. Написать универсальную функцию не позволяет отсутствие данных для тестирования.
Давайте создадим общую базу значений HTTP_USER_AGENT и будем вместе ею пользоваться!
У кого есть редкие браузеры или операционки, не поленитесь, пополните нашу базу своими значениями...
Opera/9.01 (Windows NT 5.1; U; ru)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MRA 4.10 (build 01952); .NET CLR 2.0.50727)
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9) Gecko/2008052906 Firefox/3.0
|
| |
|
|
|
|
|
|
|
для: Петр
(12.08.2008 в 17:27)
| | Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17 | |
|
|
|
|
|
|
|
|
для: Петр
(12.08.2008 в 17:27)
| | Спасибо за ссылку, очень полезная.
Нашел файл в который складывал HTTP_USER_AGENT посетителей:
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.8 (build 01709); .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863); .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0 ; .NET CLR 2.0.50215; SL Commerce Client v1.0; Tablet PC 2.0)
Mozilla/5.0 (Windows NT 5.1; U; ru) Opera 9.00
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Firefox/2.0.0.11
Mozilla/4.0 (compatible; Powermarks/3.5; Windows 95/98/2000/NT)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060206 Songbird/0.1)
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; WebMoney Advisor; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Opera/9.25 (Windows NT 5.2; U; ru)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060206 Songbird/0.1
Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; en-US; rv:1.9a1) Gecko/20060214 Firefox/1.6a1
Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)
Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.13) Gecko/20080407 FreeBSD/7.0-PRERELEASE
Opera/9.27 (Windows NT 5.1; U; ru)
Windows; U; Windows NT 5.1; en-US; rv:1.4b) Gecko/20030504 Mozilla Firebird/0.5+
Mozilla/5.0 (Windows; U; WinNT4.0; en-CA; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1
Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2) Gecko/20021126
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54 [en]
Windows; U; Windows NT 5.0; en-US; rv:1.8a) Gecko/20040416 Firefox/0.8.0+
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.00
Mozilla/4.0 (compatible; MSIE 7.0; Linux i686)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007 Sylera/1.2.7
|
| |
|
|
|
|
|
|
|
для: Петр
(12.08.2008 в 17:51)
| | а еще туева куча микроброузеров сотовых телефонов и КПК | |
|
|
|
|
|
|
|
для: GeorgeIV
(12.08.2008 в 18:06)
| | КПК я пока в расчет не беру
нужно придумать регулярное выражение универсальное для всех браузеров
функция выдергивает название браузера и его версию:
<?php
function GetBrowser($agent) {
// Список известных браузеров;
$browsers = array(
'msie' => 'Internet Explorer',
'opera' =>'Opera',
'myie' =>'MyIE',
'firefox' =>'Firefox',
'safari' =>'Safari',
'netscape' =>'Netscape',
'mozilla' =>'Mozilla'
);
// Обход массива браузеров;
foreach ($browsers as $item=>$value) {
// ;
if (eregi("(".$item."|".$item." |".$item."/)([0-9]{1,4}.[0-9]{1,4}){0,1}", $agent, $match)) {
return $value.' '.$match[2];
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Петр
(13.08.2008 в 09:44)
| | буду краток, все уже создано до нас http://ru.wikipedia.org/wiki/User_Agent
=) | |
|
|
|
|
|
|
|
для: mechanic
(13.08.2008 в 10:46)
| | По ссылке - только примеры значений User Agent, но не вся база, хотя тож неплохо спасибо | |
|
|
|
|
|
|
|
для: mechanic
(13.08.2008 в 10:46)
| | Спасибо за ссылку. Основные браузеры (более 30 штук) я взял именно с Википедии и протестировал на тех же примерах, все работает отлично, все браузеры определяются отлично, за исключением Links. Он определяется, но версию вытащить никак не получается, т.к. она находится за скобкой.
Не получилось вставить еще условие со скобкой, может кто-нибудь подскажет?
Еще осталось взять мобильные браузеры, штук 20 самых основных (Java-браузеров, типа Opera Mini и встроенных в мобильники)
http://www.zytrax.com/tech/web/mobile_ids.html
Дополненная функция:
<?php
function GetBrowser($agent) {
// Список известных браузеров;
$browsers = array(
'amaya' => 'Amaya',
'america online' => 'America Online',
'avant browser' => 'Avant Browser',
'camino' => 'Camino',
'epiphany' => 'Epiphany',
'flock ' => 'Flock ',
'iceweasel' => 'Iceweasel',
'icecat' => 'IceCat',
'k-meleon' => 'K-Meleon',
'konqueror' => 'Konqueror',
'minimo' => 'Minimo',
'links' => 'Links',
'netpositive' => 'NetPositive',
'playstation' => 'PlayStation',
'seamonkey' => 'SeaMonkey',
'Lynx ' => 'Lynx',
'freebsd' =>'FreeBSD',
'powermarks' => 'Powermarks',
'safari' =>'Safari',
'phoenix' => 'Phoenix',
'paradiso' => 'GranParadiso',
'firebird' =>'Firebird',
'songbird' =>'Songbird',
'firefox' =>'Firefox',
'sylera' =>'Sylera',
'netscape' =>'Netscape',
'opera mini' => 'Opera Mini',
'opera' =>'Opera',
'myie' =>'MyIE',
'msie' => 'Internet Explorer',
'mozilla' =>'Mozilla'
);
// Обход массива браузеров;
foreach ($browsers as $item=>$value) {
// ;
if (eregi("(".$item.".|".$item.". |".$item."./)([0-9a-z._+-:]{0,15})", $agent, $match)) {
return $value.' '.$match[2];
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Петр
(13.08.2008 в 12:14)
| | Ну что, кто-нибудь разобрался с Links? Его вроде уже нет вообще... Может стоит заменить eregi() на что-то вроде preg_match? | |
|
|
|