Разные названия одного браузера в логе

Dave

Новичок
Разные названия одного браузера в логе

Приветствую!
Пишется статистика по логу, нужно определять браузер с точностью до версии. То есть до Netscape я определяю, а нужно до Netscape x.xx. Вроде как с Оперой и MSIE научился определять как надо, а вот с Netscape проблемка, сдается мне что в логе этот браузер может определяться не только как Netscape но и как: X11(есть такое в логе, проверял), Gold, Nav(последние наименованя в логе не наблюдал).
Вот нашел я, например, Х11 - а к какой версии Netscape его писать - незнаю.
Хорошо если только Netscape по разному может называться в логах, а если такая фишка не только с этим браузером то гемора тогда еще больше.

Поэтому нужна инфа по тому как разные браузеры логгируются в лог, какие значения для каких версий.

Если у кого есть такая инфа или нужный линк под рукой, поделитесь, плз.
 

Dave

Новичок
hobobob
в смысле в той строке лога может быть указана мозилла или нетшкаф а опера указана не будет совсем ?
или имеется ввиду запись такого вида: ...Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 ?
если так то еще нормально
 

Фанат

oncle terrible
Команда форума
Dave
забей.
мальчик желает блеснуть познаниями, которые не имеют ни малейшего отношения к твоему вопросу.
 

Dave

Новичок
Прошу помощи.
Такой трабл получился:
функция get_browser(), почему то не возвращает массив значений. вот кусок php.ini с browscap:

[browscap]
browscap = browscap.ini

Сам файлик browscap.ini положил для туде же где и php.exe,php.ini
вроде сделал все правильно, раскоментировал строчку в php.ini кинул файлик в нужное место, рестартанул webserver, но не работает.
Пробовал ложить browscap.ini в отдельную директорию, потом прописывал путь like : /extra/browscap.ini но не помогало.

Есть еще такой нехороший симптом: пользуюсь Денвером, когда запускаю webserver то выскакивает сообщение: Cannot open browscap.ini for reading

а сам скриптец такой:
PHP:
$browser = get_browser();

foreach ($browser as $name => $value) {
   echo "<b>$name</b> $value <br />\n";
}

if (isset($browser))
echo 'est';
else echo 'net';
print_r($browser);
результат такой:
Warning: Invalid argument supplied for foreach() in z:\home\stat\www\test.php on line 6
est

Вобщем, переменная $browser есть, но не массив.

Подскажите как с этим боротся, как заставить работать ф-ю get_browser(), plz.
 

Frol

Новичок
[ ... ]

-~{}~ 14.09.04 16:43:

хмм.. в мануале пример кривой.
функция возвращает объект, а не массив.
 

Dave

Новичок
блин, что то у меня не то:(
делаю:
PHP:
$browser = get_browser();
echo '<br>'.gettype($browser);
выводит: boolean
фигня какая то:(

-~{}~ 16.09.04 16:27:

Разобрался в чем дело.
в php.ini прописал полный путь к browscap.ini и ф-я заработала нормально.
А обновленный browscap.ini есть тут : http://www.garykeith.com/browsers/downloads.asp

-~{}~ 16.09.04 17:52:

Теперь другая проблема.
использование этой функций сильно торомзит комп. Иданоразовый

-~{}~ 16.09.04 18:02:

Теперь другая проблема.
использование этой функций сильно торомзит комп. Единоразовый вызов - все нормально, но я парсю лог в котором около 9000 строк и ф-я вызывается 9000 раз и сразу же идет 100% нагрузка на проц, хотя оно и понятно, при каждом ее вызове она лезет в browscap.ini и ищет нужную инфу по передному ей user_agent.
С помощью этой ф-ий прекрасно определяется браузер и его версия, а также операцинока, то есть все что нужно, но к превеликому сожелению, получается, что она мне не подходит.
придется искать другие пути для точного определения версий браузеров, а скорее всего продолжать дальше использовать ereg()

такой вот облом
 

jonjonson

Guest
Может получить из лога массив всех встречающихся user_agent (с подсчетом их количества по вкусу) и потом пробежать его при помощи get_browser(), а не всего лога... Зачем запрашивать одну и ту же информацию о браузере дважды?
 

SergeR

Новичок
К сожалению, проект давно не обновлялся, но все равно может оказаться полезным. Лично мне, когда возникла необходимость различать браузеры, очень понравился http://phpsniff.sourceforge.net/
 
Сверху