К списку форумов К списку вопросов
[PHP]::Типы операционок в HTTP_USER_AGENT
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 хостера

К списку вопросов на форуме Веб-дизайн

>>