Скрипт для визначення браузера користувача на PHP

Нещодавно для одного цікавого проекту мені потрібно було зробити визначення браузера та його версії на PHP. Шаблон був адаптивний (чуйний), і треба було підлаштувати під різні браузери виведення елементів сторінки. Сайт я писав на улюбленому движку WordPress і тема була зверстана під нього. Як завжди недовго думаючи над завданням поліз я в Інтернет. Моє було здивування коли я знайшов готовий сценарій, який повністю мене влаштував у першій десятці видачі google. Респект та уважуха розробнику та блогеру до

торий цей скрипт написав і виклав у себе на блозі.

Чим він особливо мені сподобався, так це тим, що скрипт міг визначати браузери на движку Gecko, а не лише основні браузери (Firefox, Chrome, IE, Opera, Safari), і навіть ті, які побудовані на ядрі Trident (Maxthon, Avant Browser, MyIE2), і навіть старі версії Опери, маскуються під IE. Крім того, скрипт знаходить та відображає версію браузера.

Автор блогу виклав деякі відомості, які я також хотів би викласти собі на сайт.

Теорія зі слів автора:

Як визначається браузер на PHP?
У PHP є чудова змінна під назвою $_SERVER["HTTP_USER_AGENT"].
У мене, наприклад, вона виглядає так:

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
Звідси витягти браузер та версію просто, чи не так?

Тепер IE 6

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Тут уже трохи складніше, але теж не повинно викликати особливих труднощів.

Opera 10.61

Опера/9,80 (Windows NT 5.1; U; ru) Presto/2.6.30 Версія/10.61
Опера приготувала нам підлянку: назва браузера на початку, версія, як це не дивно, в кінці.

Safari 5.1

Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit/533.17.8 (KHTML, like Gecko) Версія/5.0.1 Safari/533.17.8
Safari теж дивує: через слеш йде зовсім не номер версії. Номер версії йде трохи раніше.

Chrome 6.0.427.0

Mozilla/5.0 (Windows; U; Windows NT 5.1; в США) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1
Хром витягти легше, добре б ще не переплутати його з Safari.

(Про те, чому всі браузери (крім Опери) називають себе Mozilla можна у простій та захоплюючій формі почитати тут.)

Практика зі слів автора

Ви вже впізнали, яка різноманітність у рядку User-agent пропонують лише п'ять браузерів.
Але в 9 з 10 випадків нас врятує такий регулярний вираз:

Після цього у другому елементі масиву лежатиме назва браузера, а в третьому – його версія.

Виняток є лише Safari починаючи з версії 3.0 і Opera починаючи з версії 10.00.

Для цих браузерів ми пишемо:

І ще один рядок коду:

Якщо ми не змогли визначити браузер, але ми знаємо, що він використовує ядро ​​Gecko, то виводимо повідомлення про те, що браузер працює на цьому ядрі.
Ось, в сутності, і весь зміст першої, більш компактної функції визначення браузера.

Її код повністю:

Ось більш повна версія, що дозволяє визначати екзотичні, застарілі, а також ті браузери, які побудовані на основі Firefox і IE:

Приклади роботи

У таблиці наведено результат роботи двох функцій – у першому стовпці браузер, у якому викликалися функції, у другому – відповідь функції, враховує маловідомі браузери, у третій – результат роботи скороченої функції.

Браузер Результат повної функції Результат скороченої функції
Firefox 1.5.0.12 Firefox 1.5.0.12 Firefox 1.5.0.12
Firefox 3.0.10 Firefox 3.0.10 Firefox 3.0.10
Firefox 3.6.9 Firefox 3.6.9 Firefox 3.6.9
Firefox 4.0 Firefox 4.0 Firefox 4.0
IE 4.01 IE 4.01 MSIE 4.01
IE 5.5 IE 5.5 MSIE 5.5
IE 6.0 IE 6.0 MSIE 6.0
IE 7.0 IE 7.0 MSIE 7.0
IE 8.0 IE 8.0 MSIE 8.0
Chrome 5.0.375.127 Chrome 5.0.375.127 Chrome 5.0.375.127
Chromium 6.0.472.36 Chrome 6.0.472.36 Chrome 6.0.472.36
Chrome 7.0.517.8 Chrome 7.0.517.8 Chrome 7.0.517.8
Opera 7.03 Opera 7.03 MSIE 6.0
Opera 8.0 Opera 8.0 MSIE 6.0
Opera 8.54 Opera 8.54 Opera 8.54
Opera 9.50 Opera 9.50 Opera 9.50
Opera 10.00 Opera 10.00 Opera 10.00
Opera 10.10 Opera 10.10 Opera 10.10
Opera 10.61 Opera 10.61 Opera 10.61
Safari 3.0 Safari 3.0 Safari 3.0
Safari 4.0 Safari 4.0 Safari 4.0
Safari 5.0.1 Safari 5.0.1 Safari 5.0.1
Flock 1.2.6 Flock 1.2.6 Firefox 2.0.0.17
Epiphany 2.22 Epiphany 2.22 Firefox 2.0.0.20
Navigator 9.0.0.6 Navigator 9.0.0.6 Firefox 2.0.0.12
Netscape 8.1.3 Netscape 8.1.3 Browser based on Gecko
Konqueror 4.4 Konqueror 4.4 Browser based on Gecko
Galeon 2.0.4 Browser based on Gecko Browser based on Gecko
Iceape 1.1.13 Browser based on Gecko Browser based on Gecko
Iceweasel 3.0.4 Iceweasel 3.0.4 Browser based on Gecko
SeaMonkey 1.1.14 SeaMonkey 1.1.14 Browser based on Gecko
Minefield 3.7 Minefield 3.7 Browser based on Gecko
Avant Browser 7.0 Avant Browser based on IE 7.0 MSIE 7.0
Camino 2.0.4 Camino 2.0.4 Firefox 3.0.19

Червоним кольором відмічені браузери, які функція не змогла визначити.

А тут ви можете перевірити роботу функцій у своєму браузері.
Сподіваюся, що ці функції будуть комусь корисні.
хай щастить.

Завантажити скрипт для визначення браузера можна у мене:

Скрипт визначення браузера

або на сайті автора:

https://www.recens.ru/php/detect_user_browser.html

Ще раз окреме дякую автору!

Визначаємо мобільні браузери

Ще із коментарів на сайті автора знайшов, як визначити мобільні пристрої:

Повертає mobile або PC, хай щастить )


Купить хостинг WordPress
/* Репетитор по wordpress
Послуги репетитора онлайн. Список курсів, які я веду
  • Базовий курс з веб-дизайну;
  • Верстка сайтів;
  • Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
  • Розробка сайтів на PHP.
Докладніше читайте на сторінці репетитор по WordPress
*/

Ніколаєнко Максим

Директор веб-студии ProGrafika. Займаюсь розробкою, дизайном та просуванням веб-сайтів. Завжди радий новим читачам блогу та добрим клієнтам.


Вам також може сподобатися...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.

Шаблони для WordPress
Найкращий хостинг в Україні
Стабільний хостинг для Drupal