Jan 18

Задали мне вот в асе такой вопрос - как средствами 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, авось понадобится кому-нибудь.

written by fxposter


6 Responses to “Определение браузера”

  1. 1. neanton Says:

    Аффтар, не боянь :)
    Что сложно прогнать пару раз stristr для разных браузеров? Браузеров основных то FF, Mozilla, IE, Opera, Safari да и все.. остальное старье…

  2. 2. FX Poster Says:

    Не сложно :) Но я ж написал – захотелось выдрать как можно больше. Вот, собственно, до чего докатился в этом выдирании. :)

  3. 3. Alexander Says:

    Большое спасибо за ссылку на обновляемый browsecap.

  4. 4. Василий Says:

    Подскажи как и в каком месте в php.ini прописать путь до на php_browscap.ini

  5. 5. fxposter Says:

    Напишите, например, так в любом месте php.ini:

    [browscap]
    browscap = /path/to/browscap.ini
  6. 6. Василий Says:

    Сделал следующее:
    – скопировал php_browscap.ini
    – в php.ini на 920 строчек нашел
    [browscap]
    ;browscap = extras/browscap.ini
    – раскоментировал строчку, заменил browscap.ini на php_browscap.ini
    и скопировал php_browscap.ini в папку browscap.ini
    – перезапустил сервер
    – напрал в php скрипте get_browser()
    – вызвал php скрипт и ничего……………!!!!!!!!!!!!!!

    Прошу ваших дальнейших рекомендаций!

Leave a Reply