Проверка на мобильные устройства с помощью php
Проверка на мобильное устройство может нам пригодиться, чтобы скрывать целые пласты кода и инфомации, недоступные пользователям мобильной версии. Или же напротив показать то, что не увидят пользователи компьютеров.Проверка через HTTP_USER_AGENT
Самый простой способ определить мобильную устройство на php, заглянуть что же нам отдает $_SERVER["HTTP_USER_AGENT"]. В зависимости от устройства мы получим следующие строки.
Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36
Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1
Так что все что нам остается, написать проверку на php, на наличие слов Android, iPhone и Mobile.
if( strpos( $_SERVER["HTTP_USER_AGENT"], 'Android' ) !== false ||
strpos( $_SERVER["HTTP_USER_AGENT"], 'iPhone' ) !== false ||
strpos( $_SERVER["HTTP_USER_AGENT"], 'Mobile' ) !== false ){
echo 'Мобильная версия';
}
else{
echo 'Декстопная версия';
}
Для полного охвата можно добавить проверки и для других мобильных устройств Symbian, Blackberry, Windows Phone. Но если честно, я не уверен, что хоть кто-то еще заходит в интернет с этих устройств. В обозримом будущем может появится потребность проверять на наличие в HTTP_USER_AGENT таких слов, как Aurora (Аврора ОС) и Rosa (Роса ОС), если идея с нашими операционными мобильными системами не заглохнет.
Проверка через библиотеку MobileDetect
Своя лаконичная проверка на php, это конечно хорошо. Но если вдруг надо немножко более удобный инструмент для определения мобильного устройства? Или определить планшет?
Для этого и была разработана удобная библиотека MobileDetect, которая легко ставится на сервер через composer.
composer require mobiledetect/mobiledetectlib
После чего пишем простой код
require __DIR__ . '/vendor/autoload.php';
use Detection\MobileDetect;
$detect = new MobileDetect();
if( $detect->isMobile() || $detect->isTablet() ){
echo 'Мобильная версия';
}
else{
echo 'Декстопная версия';
}
Проверка на мобильные устройства в CMS
Так же стоит помнить, что подобные проверки уже есть во многих CMS и не надо ставить эту библиотеку.
Например в 1C-Bitrix проверку на мобильное устройство, можно сделать так:
\Bitrix\Main\Loader::includeModule('conversion');
$detect = new \Bitrix\Conversion\Internals\MobileDetect;
if( $detect->isMobile() || $detect->isTablet() ){
echo 'мобильная версия';
}
Стоит только помнить, что для этого требуется установленный модуль Конверсии, а он доступен только в редакциях не ниже "Малый бизнес".
В Wordpress к примеру существует функция wp_is_mobile
if( wp_is_mobile() ) {
// тут выполняем ваш код только для мобильных устройств.
}
Подобные функции существуют во многих CMS. Если они недоступны "из под коробки", то наверняка существует готовый модуль или плагин для популярной CMS. Если конечно ни один из вариантов не подходит, то в таком случае лучше всего поставить библиотеку MobileDetect