Точное определение браузера пользователя

12 комментариев

браузеры Периодически перед любым программистом становится задача точного определение браузера, который использует пользователь. Сегодня наткнулся на отличный класс для точного определения браузера на PHP. Причем, он может определить не только браузер пользователя, но и определить операционную систему пользователя.

Определение происходит на основе заголовка User-Agent. То есть по сути никаких новых методик, но впечатляет количество определяемых браузеров. Также класс достаточно удобен в использовании.

Ссылка на источник: chrisschuld.com
Ссылка на архив: Browser-1-9.zip

Пример использования (из комментариев к классу):

$browser = new Browser();
if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
  echo 'You have FireFox version 2 or greater';
}

На данный момент (23.12.2011 v1.9) определяются следующие браузеры:

  • Opera (Browser::BROWSER_OPERA)
  • WebTV (Browser::BROWSER_WEBTV)
  • NetPositive (Browser::BROWSER_NETPOSITIVE)
  • Internet Explorer (Browser::BROWSER_IE)
  • Pocket Internet Explorer (Browser::BROWSER_POCKET_IE)
  • Galeon (Browser::BROWSER_GALEON)
  • Konqueror (Browser::BROWSER_KONQUEROR)
  • iCab (Browser::BROWSER_ICAB)
  • OmniWeb (Browser::BROWSER_OMNIWEB)
  • Phoenix (Browser::BROWSER_PHOENIX)
  • Firebird (Browser::BROWSER_FIREBIRD)
  • Firefox (Browser::BROWSER_FIREFOX)
  • Mozilla (Browser::BROWSER_MOZILLA)
  • Amaya (Browser::BROWSER_AMAYA)
  • Safari (Browser::BROWSER_SAFARI)
  • iPhone (Browser::BROWSER_IPHONE)
  • iPod (Browser::BROWSER_IPOD)
  • Google’s Android(Browser::BROWSER_ANDROID)
  • Google’s Chrome(Browser::BROWSER_CHROME)
  • GoogleBot(Browser::BROWSER_GOOGLEBOT)
  • Yahoo!’s Slurp(Browser::BROWSER_SLURP)
  • W3C’s Validator(Browser::BROWSER_W3CVALIDATOR)
  • BlackBerry(Browser::BROWSER_BLACKBERRY)

И следующие платформы:

  • Windows (Browser::PLATFORM_WINDOWS)
  • Windows CE (Browser::PLATFORM_WINDOWS_CE)
  • Apple (Browser::PLATFORM_APPLE)
  • Linux (Browser::PLATFORM_LINUX)
  • Android (Browser::PLATFORM_ANDROID)
  • OS/2 (Browser::PLATFORM_OS2)
  • BeOS (Browser::PLATFORM_BEOS)
  • iPhone (Browser::PLATFORM_IPHONE)
  • iPod (Browser::PLATFORM_IPOD)
  • BlackBerry (Browser::PLATFORM_BLACKBERRY)
  • FreeBSD (Browser::PLATFORM_FREEBSD)
  • OpenBSD (Browser::PLATFORM_OPENBSD)
  • NetBSD (Browser::PLATFORM_NETBSD)
  • SunOS (Browser::PLATFORM_SUNOS)
  • OpenSolaris (Browser::PLATFORM_OPENSOLARIS)
  • iPad (Browser::PLATFORM_IPAD)

Согласитесь, список впечатляет, не правда ли?)

  1. Денис

    Классный Класс! Я новичёк в php, но этот скрипт подключил и пользуйся getBrowser(); getPlatform();

    1. Дмитрий Амиров Автор

      Взял на себя смелость отредактировать ваш комментарий. Пожалуйста, воздержитесь от такой ярой рекламы вашего сайта.

  2. Alina

    Какую использовать библиотеку для точного определения браузера и операционной системы пользователя по заголовкам?

  3. Виктор

    Сегодня наткнулся на отличный класс для точного определения браузера на PHP.

  4. Владимир

    Что-то даже пример, приведённый в статье почему-то не срабатывает…
    Подключил через require_once. Не срабатывает. Включил отображение всех ошибок в htacess.
    Меня этот класс интересует просто тупо определить стоковый андроид браузер и подменить шрифт для него…
    У кого всё работает, не подскажете, как из него эту переменную достать, дальше я сам соображу )))

    1. Дмитрий Амиров Автор

      Чесно сказать даже на знаю почему у вас не работает. Проверил у себя:

      require_once('Browser.php');
      
      $browser = new Browser();
      var_dump($browser->getBrowser(), $browser->getVersion());
      

      Работает, с планшета видно string(7) "Android" string(3) "4.3"

  5. Сергей

    Класс хороший, метод неплохой, но есть одно НО!, определение не будет точным в случае если установлен например IRON-браузер, в котором заменен User-Agent, (при установке предлагает выбрать кем себя отображать), и тут php в принципе бессилен, тк заголовки можно отправить любые.
    Данную проблему надо решать через js, комплексно проверяя особенности браузеров, срабатывают или нет какие либо стили css, проверть данные объекта navigator, например для смартфонов можно проверить уровень заряда батареи, на ПК этого сделать нельзя, и тд.

Добавить комментарий

Прочли запись? Понравилась? Не стесняйтесь, оставьте, пожалуйста, свой комментарий. Мне очень интересно, что вы думаете об этом. Кстати в комментарии вы можете задать мне любой вопрос. Я обязательно отвечу.

Вы можете оставить коментарий анонимно, для этого можно не указывать Имя и email. Все комментарии проходят модерацию, поэтому ваш комментарий появится не сразу.