![]() |
![]() |
Cool 04.05.2004 - 18:51 |
Пишу статистику, которая позволяет определять, с каких поисковиков человек пришел на сервер, какой браузер использует (тип, версия) и еще хочу добавить тип операционки. Мне хотелось бы знать, что будет содержать HTTP_USER_AGENT при всех придуманных типах операционок(win,sunos,*nix,os/2, etc.) В яндексе потыкался и че-то не нашел особо, только win и sunos. Может подскажите? |
Cool 1 - 04.05.2004 - 19:32 |
Или может быть более целесообразно будет сделать автоматический парсинг операционки? Ведь HTTP_USER_AGENT имеет вид Browser/version (что-то; что-то; операционка[;что-то|)] и вот как раз вырезать третий блок ; и сравнивать: если такой уже есть в БД, значит ++ а если нет, то добавить. |
упс 2 - 05.05.2004 - 09:01 |
2 Cool Не прокатит, у каждого броузера своя заморочка. и там вообще может не быть ОС. И на 3 части не всегда разобьешь. Как вариант - собери статистику за неделю, потом попробуешь эмпирическое правило составить:) |
Cool 3 - 05.05.2004 - 11:00 | к сожалению пока нет такой возможности :( попробую поискать среди знакомых тех, у кого стоят экзотические операционки и браузеры |
Cool 4 - 05.05.2004 - 11:08 | упс, ты оказался прав, нет закономерности в заголовке. Опера, к примеру, выдает такой ответ: Opera/7.23 (Windows NT 5.1; U) [en] очень жаль, что это не стандартизированно всё, видимо придется забить на то, чтобы считать операционки :( |
DIVЕR 5 - 05.05.2004 - 14:06 | ну почему же, можно искать по ключевому слову Windows =), FreeBSD (сейчас у меня под рукой нет www-логов, но там всякое бывало), Linux и т.д... |
Cool 6 - 06.05.2004 - 12:40 |
Да, можно в принципе, так и пришлось сделать чтобы отлавливать IE, потому что он выдает ответ типа: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2) поэтому приходится искать включение msie в заголовке. Но для того чтобы так же искать операционки надо знать какая операционка как отвечает. Пока что я знаю виды ответов для sunos,win,redhat. Если еще нарою, будет круто, но как-то это всё таки не рационально :-) |
Alexis 7 - 06.05.2004 - 13:09 | hint: get_browser() |
Cool 8 - 06.05.2004 - 16:30 |
Alexis, не работает че-то. На PHP.NET вообще пипец какой-то написан жуткий. сначала пишут что: object get_browser ( [string user_agent]) а потом: $browser = get_browser(); foreach ($browser as $name => $value) { echo "<b>$name</b> $value <br />\n"; } И давно foreach можно к объектам применять таким образом? Сделал проверку после вызова get_browser() if(!$browser) echo "Noooo<br>"; //-- эхает. знач что-то не так. а что? в логах апача глухо, уровень контроля ошибок максимальный. |
Cool 9 - 06.05.2004 - 16:47 | ага... оказывается ссылка browscap.ini file here на самом деле ведет к файлу, который почему-то не заставляет работать функцию гет_браузер. Когда я подсунул апачу browscap.ini от IIS то все заработало вроде. Операционка определяется отлично. Alexis, пасиб. Но и тут как обычно есть подводный валун. Решил я это дело испытать у хостера (бесплатного) - нифига. Орет Noooo. |
Alexis 10 - 06.05.2004 - 18:35 |
1. Это не "пипец", а для сравнения. 2. знать не судьба - пиши в support хостера |