Задали мне вот в асе такой вопрос - как средствами php определить, какой браузер использует посетитель сайта. Раньше я как-то особо над этим не задумывался (точнее раньше все сводилось к определению MSIE это или Firefox). Сейчас вот решил все-таки покопаться, чтобы достать как можно больше инфы.
Для начала - я знал, что инфа о браузере храниться в $_SERVER['HTTP_USER_AGENT'] (для тех, кто не в теме - пост можно пропустить). Что ж - раз знаем где, надо бы разобраться, в каком виде она там храниться (структура записи, сама переменная - строковая). Как оказалось - единой структуры никакой нет, IE6 и FF давали настолько разные значения переменной, что стало понятно - этим путем мы не пойдем.
Далее я сделал то, что должен был сделать с самого начала - полез в php manual. Оттуда выкопал функцию get_browser(), которая как раз-таки и возвращает ассоциативный массив с инфой о браузере и не только о нем. Запустил… И получил ошибку, что функция не может работать без ini-файла, путь к которому, к тому же, должен быть прописан в php.ini. Файл по умолчанию должен был называться php_browscap.ini. К счастью по 3-й ссылке гугла я попал на страничку, автор которой заботливо выкладывает новые версии этого файла (зачем новые - см. ниже). Скачав файл и настроив php.ini - все заработало.
Но все-таки вопрос остался - как оно выдирает эту инфу. Как оказалось - всё весьма просто. В файле были прописаны разные regexp’ы для отдельных браузеров (причем для разных версий браузеров - разные regexp’ы). Вот почему требовались обновления для этого файла - чтобы определялись новые версии браузеров.
Вот так вот…
Ссылка на php_browscap.ini, авось понадобится кому-нибудь.





January 18th, 2007 at 22:13
Аффтар, не боянь :)
Что сложно прогнать пару раз stristr для разных браузеров? Браузеров основных то FF, Mozilla, IE, Opera, Safari да и все.. остальное старье…
January 19th, 2007 at 07:44
Не сложно :) Но я ж написал - захотелось выдрать как можно больше. Вот, собственно, до чего докатился в этом выдирании. :)