Часто при программировании своих веб-приложений приходится определять устройство, с которого пользователь посещает страницу: с персонального компьютера, с мобильного телефона, планшета или другого устройства. Как это можно сделать с помощью PHP?
Самый простой способ — использовать переменную $_SERVER в PHP:
var_dump($_SERVER["HTTP_USER_AGENT"]);
Как можно использовать переменную $_SERVER в своей функции? Ниже представлен пример простого PHP-кода, с помощью которого можно обнаружить мобильный девайс:
// объявляем функцию
function isMobile() {
return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackberry|iemobile|bolt|boost|cricket|docomo|fone|hiptop|mini|opera mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
// используем функцию
if(isMobile()) {
// код для мобильных устройств
echo "Это мобилка";
} else {
// код, для всех других устройств
echo "Это НЕ мобилка";
};
В этом примере функция isMobile использует функцию preg_match, которая с помощью регулярного выражения ищет совпадение значения браузера пользователя (User Agent) в значении переменной $_SERVER["HTTP_USER_AGENT"]. Следует отметить, что перечень значений пользовательских браузеров в приведенной выше функции далеко не полон.
Есть ли еще какой-нибудь вариант?
Так, по схожей логике, которую мы рассмотрели выше, работает готовая библиотека PHP Mobile_Detect — небольшой класс PHP для обнаружения мобильных устройств (включая планшеты). В этой библиотеке также используется значение User-Agent в сочетании со специальными заголовками HTTP для обнаружения мобильного устройства. Автор библиотеки: Şerban Ghiţă (serbanghita).
Шаг 1. Сначала нужно подключить автозагрузчик композера (composer’s autoloader):
require __DIR__ . '/vendor/autoload.php';
Шаг 2. Подключаем и создаем экземпляр класса библиотеки Mobile Detect:
use Detection\MobileDetect; $detect = new MobileDetect();
Шаг 3. Проверяем на «мобильность»:
$isMobile = $detect->isMobile(); $isTablet = $detect->isTablet();
В следующем простом примере с помощью библиотеки MobileDetect мы создаем экземпляр класса, который по умолчанию получает строку User-Agent из переменной $_SERVER. Затем в блоке try/catch вызываем метод $detect->isMobile():
$detect = new MobileDetect();
var_dump($detect->getUserAgent()); // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."
try {
$isMobile = $detect->isMobile(); // bool
var_dump($isMobile);
} catch (\Detection\Exception\MobileDetectException $e) {
// если ошибка
}
Вот и все на сегодняшний день по данной теме. Спасибо за внимание!
Алоха! Последние несколько лет окончательно закрепили тренд на отдаленную работу. Для веб-разработчиков, DevOps-инженеров и администраторов…
Кажется, пиво — напиток простой: четыре ингредиента, понятная технология. Но одни и те же хмель,…
В современной IP-телефонии немаловажную роль играет технология, обеспечивающая передачу голоса через Интернет между бизнесом и…
Выбор рабочей машины для веб-разработчика или администратора серверов — является всегда компромиссом между портативностью, автономностью…
Исчез свет и вместе с ним мгновенно исчезла связь с окружающим миром? Это знакомая и…
Что вообще случилось с поиском в интернете? Я не побоюсь сказать это вслух: произошла настоящая…