Определение мобильного устройства в PHP
Определить телефон или планшет можно с помощью библиотеки PHP Mobile Detect. Это легкий класс использующий строку User-Agent в сочетании с другими HTTP-заголовками.
Методы класса
Использование
Результат работы класса можно передать в переменную, константу и т. д. и далее использовать для вывода шаблонов или отдельных блоков на сайте. Например телефоны ссылками:
Если проект написан на ООП, для передачи значения переменной $is_mobile между объектами будет полезным класс Registry.
Переключение между версиями
Когда активна мобильная версия сайта, пользователю нужна возможность переключится на десктопную. В подвале мобильной версии выводится ссылка «полная версия» с GET-параметром:
После перехода значение попадает в сессию и мобильная версия больше не показывается.
Определяем устройство с помощью PHP
Однажды этот прекрасный день пришёл. День, когда я физически осознал, что мне нужно определять, каким устройством пользуется посетитель сайта, чтобы соответственно отрисовывать для него страницу.
Прошлая методика с помощью медиазапросов по ширине экрана в моих глазах себя изжила — в таком случае на страницу всё равно загружается все элементы, только часть из скрывается или модернизируется. С одной стороны — это правильный и надёжный подход. С другой стороны, когда у нас присутствуют тяжёлые медиафайлы (например, видеофон) или немного другое расположение элементов, то будет намного проще и лучше грузить только нужные элементы в зависимости от того, каким устройством пользуется посетитель сайта.
Итак, я пошёл в интернет за готовым ответом, поскольку издавна исповедую практику «Сначала попробовать чужие костыли готовые решения, а если не нашёл — писать самостоятельно». Собственно, что я нашёл в интернете — это использовать $_SERVER[«HTTP_USER_AGENT»] или вообще пользоваться JavaScript’ом.
Затем, на одном форуме нашёл таки описание интересного и простого php-скрипта, которым уже достаточно давно пользуюсь и хочу поделиться с вами. Называется он Mobile-Detect (ссылка на GitHub). Это очень легковесное и удобное решение, которое использует ту самую строчку HTTP_USER_AGENT в комплекте с определёнными заголовками.
Проект постоянно поддерживается и обновляется, ибо весьма полезная вещь.
Подключается скрипт очень просто — с помощью requred_once мы указываем путь к файлу, а затем инициализируем объект:
Настройка скрипта завершена. Теперь через использование $detect мы можем определять устройства. Нам доступны следующие переменные для определения типа устройств:
- isMobile — переменная, которая определяет любое мобильное устройство — как смартфон, так и планшет;
- isTablet — переменная, которая предназначена для определения только планшетных компьютеров.
Также существуют две переменные для определения операционной системы мобильного устройства:
- isiOS — определяет устройства под управлением iOs (iPhone и iPad);
- isAndroidOS — устройства на Android;
- isWindowsMobileOS и isWindowsPhoneOS — тут можно не просто узнать, что эта мобильная система производства Microsoft, но даже указать его версии. WindowsMobile уже не столь актуальна, поскольку мелкомягкие перешли на единую платформу, но если вдруг к нам зайдут пользователи Pocket PC и Smartphone, то мы модем предложить для них уникальный сервис;
- isBlackBerryOS — можно определить также смартфоны этого производителя. Для России аппараты BlackBerry не слишком актуальны, но возможно всё (вдруг вы или ваш заказчик — фанат или пользователь этого девайса, и нужно сделать что-то особенное для других пользователей);
- isPalmOS и isSymbianOS — для устройств на таких операционных системах есть переменные для определения. Для меня это очень редкие устройства — настолько, что в жизни таких не видел (но это не точно), только на сайты заходят редкие пользователи этих устройств.
Кроме того, скрипт может определять производителя устройства. Укажу всего несколько переменных для определения вендора устройства, которые нам доступны:
- isiPhone и isiPad — можно чётко определить для каждого из устройств Apple, что показывать его пользователю;
- isSamsung — для устройств производства Samsung, один из самых популярных производителей;
- isLG — телефоны производства LG также весьма популярны и для них можно сделать что-то особое;
- isVertu — посетитель вашего сайта обладатель телефона Vertu, нужно больше золота (и умножаем все цены в магазине на 10).
В реальности этих переменных намного больше — на демо-странице скрипта можно увидеть список поддерживаемых переменных.
Для тех, кто хочет убойной точности и избирательности, можно указывать нужные устройства через значения UserAgent, но по мне такая избирательность уж слишком чрезмерная (хотя бывает всякое).
Разработчики не перестают совершенствовать свой продукт и вполне вероятно, что скоро нам будет доступна возможность определения версий браузеров и устройств (в первую очередь для продукции Apple) — функции уже есть в последнем релизе, но пока они находятся на бета-тестировании.
Теперь давайте разберём на примере принцип работы скрипта. Допустим, мы должны выводить для посетителя сайта разные сообщения в зависимости от операционной системы его устройства. Это будет выглядеть так:
Этот пример немного бесполезный, но очень простой. Немного подумав, этот скрипт можно исползовать для более изящных решений, например, в зависимости от операционной системы подключать разные стили и изображения, чтобы дизайн сайта адаптировался под устройство. Либо, если на вашей странице есть реклама мобильного приложения, выводил предложения о переходе на AppStore или Google Play соответственно. Идей для применения может быть много.
Предлагаю вашему вниманию ещё один пример, который используется на моём сайте. Суть кода следующая — мы выводим разные варианты шапки сайта в зависимости от типа устройства. Код (с сокращениями) следующий:
И напоследок самое сладкое — эта библиотека была портирована на JavaScript, Varnish Cache и LUA.
На основе этого скрипта написаны плагины и модули для WordPress, Drupal, Joomla, Magento, PrestaShop (там он вообще поставляется в стандартном пакете с версии 1.5), Laravel, Yii Framework и множество других фреймворков и языков и платформ.
Определение мобильного устройства в php
Сегодня перебирал свои старые исходники и нашел одну замечательную функцию, которая определяет с компьютера зашел пользователь или с мобильного устройства. Я уже не помню, сам ее писал или нашел где-то в интернете, а может нашел кусок и отредактировал. Не важно откуда она взялась, главное. что функция работает. Определение устройство, с которого просматривается сайт, реализовано очень просто: получаем информацию о HTTP_USER_AGENT и сравниваем со всеми известными на данный момент агентами, используемыми мобильными устройствами.
Определение мобильного устройства. Код
И пример использования:
На этом все. Если у кого-то эта функция не будет срабатывать — присылайте в комментарии название устройства, а лучше, используемый им, юзер агент. Тогда функция будет дополняться, и вместе мы ее сделаем более универсальной.
How to Detect Mobile Device in PHP
Recently while working on a client’s project, we came across a situation where we need to display different sliders on a website for desktop and mobile. Sometimes you may want to serve different content for mobile devices. In this article, I show you how to detect a mobile device in PHP.
There are certain scenarios where we hide sections of a website for mobile devices. These are the sections built for desktop and not for mobile. You probably create such sections differently for mobile users. Then using media queries you apply rules(show/hide) for different devices. The media queries work on the client-side. The disadvantages of using media queries are that your sections are loaded even if you are hiding it on the devices. It just adds unnecessary load on the webpage. A better way to handle this is to apply conditions at the server-side for mobile devices.
In another scenario, you are planning to build a different website for mobile users. When a user visits your URL you want to redirect them to your mobile website. These are a few examples where we want to detect mobile devices on the server side. There may be hundreds of different cases. In my case, it’s a different slider for desktop and mobile devices.
Having said that, let’s take a look at how to detect a mobile device in PHP.
Getting Started
To handle mobile detection, the library called Mobile-Detect is available on GitHub.
This library provides a very clean and easy way to find out if the user is on a mobile device. You can also check for Tablet devices. The library uses the User-Agent string available in HTTP headers to detect the device environment. If you are curious to know about HTTP headers, just print the $_SERVER which gives you information about headers, paths, and script location.
For the installation of this library, I recommend using Composer. Open the terminal in your project root directory and run the command below:
If you don’t want to use Composer then an alternate way is to include this Mobile_Detect.php file in your project.
Detect Mobile Device in PHP
If you have installed the library using the Composer then add the below statement at the top of your file.
After this, create the instance of Mobile_Detect class and you are able to find out if your visitor is on a mobile device.
For checking the Tablet device use the statement:
That’s it! You are done. This is the easiest way to detect a mobile device in PHP. Let me know your thoughts and suggestions in the comment section below.
Related Articles
If you liked this article, then please subscribe to our YouTube Channel for video tutorials.