Вчера возникла задача определения версии браузера посетителя сайта, чтобы выводить сообщение об устаревшей версии браузера. Гуглинг не дал готового кода. PHP функция get_browser вообще нормально не работает. Пришлось написать PHP-код определения весии браузера самому. Итак, задача из HTTP-заголовка UserAgent получить название и версию браузера пользователя, а затем сравнить версию с некими барьерными версиями (по каждому браузеру). Если браузер старше барьерных версий, будем выводить сообщение об ошибке.
Детектить версии нужно только популярных в СНГ немобильных версий браузеров, поэтому в моем коде определяется только Opera, Firefox, Safari, Internet Explorer и Google Chrome. Если вам потребуется определить версии большего числа браузеров, код можно легко дополнить.
Чтобы не раскидывать функции по проекту, весь код я оформляю в классы. Создадим статический класс, в котором будут два метода: определение версии браузера и сравнение версии с данными барьерными версиями по каждому из браузеров. Назовем его BrowserUtils.
Класс состоит из двух методов: определение браузера и его версии и сравнении полученной версии с пороговыми версиями по разным браузерам. Использовать класс очень просто:
Единственный нюанс по коду есть у Safari. Все версии этого браузера всегда посылали в UserAgent тег Safari/build, где buld — версия их движка. Это большая первая цифра, например 528.16. Так версии Safari отображаются в Google Analytics. Но более поздние версии стали писать свою версию в теге Version. Выглядит это примерно так: Version/4.0.2.
Так как мне требовалось выводить версию пользователю, я использовал код считывания версии из тега Version, а для старых версий не детектит номер версии.
Скачать PHP-код определения версии браузера.
Валерий, спасибо за скрипт.
Позвонила сегодня бабушка и пожаловалась, что меню де на сайте не видит. Оказалось, что у нее IE 6. Я на него вообще не смотрел, когда сайт разрабатывал. Но реагировать на таких товарищей нужно и при этом культурно (это и есть «покупатель всегда прав»).
Скачал Ваш скрипт, сделал тестовую страницу, чтобы посмотреть что он выдает на проверенных мной браузерах. И все, остальное — дело пяти минут (нужно было правильные версии указать и все).
Теперь я относительно спокоен за таких людей.