Php определить мобильное устройство

Определяем устройство с помощью PHP

Однажды этот прекрасный день пришёл. День, когда я физически осознал, что мне нужно определять, каким устройством пользуется посетитель сайта, чтобы соответственно отрисовывать для него страницу.

Прошлая методика с помощью медиазапросов по ширине экрана в моих глазах себя изжила — в таком случае на страницу всё равно загружается все элементы, только часть из скрывается или модернизируется. С одной стороны — это правильный и надёжный подход. С другой стороны, когда у нас присутствуют тяжёлые медиафайлы (например, видеофон) или немного другое расположение элементов, то будет намного проще и лучше грузить только нужные элементы в зависимости от того, каким устройством пользуется посетитель сайта.

Итак, я пошёл в интернет за готовым ответом, поскольку издавна исповедую практику «Сначала попробовать чужие костыли готовые решения, а если не нашёл — писать самостоятельно». Собственно, что я нашёл в интернете — это использовать $_SERVER[«HTTP_USER_AGENT»] или вообще пользоваться JavaScript’ом.

Затем, на одном форуме нашёл таки описание интересного и простого php-скрипта, которым уже достаточно давно пользуюсь и хочу поделиться с вами. Называется он Mobile-Detect (ссылка на GitHub). Это очень легковесное и удобное решение, которое использует ту самую строчку HTTP_USER_AGENT в комплекте с определёнными заголовками.

Проект постоянно поддерживается и обновляется, ибо весьма полезная вещь.

Подключается скрипт очень просто — с помощью requred_once мы указываем путь к файлу, а затем инициализируем объект:

require_once 'lib/Mobile_Detect.php'; // Подключаем скрипт $detect = new Mobile_Detect; // Создаём экземпляр класса

Настройка скрипта завершена. Теперь через использование $detect мы можем определять устройства. Нам доступны следующие переменные для определения типа устройств:

  • isMobile — переменная, которая определяет любое мобильное устройство — как смартфон, так и планшет;
  • isTablet — переменная, которая предназначена для определения только планшетных компьютеров.
Читайте также:  Python 3 openpyxl документация

Также существуют две переменные для определения операционной системы мобильного устройства:

  • 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) — функции уже есть в последнем релизе, но пока они находятся на бета-тестировании.

Теперь давайте разберём на примере принцип работы скрипта. Допустим, мы должны выводить для посетителя сайта разные сообщения в зависимости от операционной системы его устройства. Это будет выглядеть так:

// Подключаем скрипт и создаём экземпляр класса require_once ‘Mobile_Detect.php’; $detect = new Mobile_Detect; // Условие — если это устройство от Apple if( $detect->isiOS() ) < echo 'Cтиль - это главное!'; >// Условие — если это устройство от Google if( $detect->isAndroidOS() )

Этот пример немного бесполезный, но очень простой. Немного подумав, этот скрипт можно исползовать для более изящных решений, например, в зависимости от операционной системы подключать разные стили и изображения, чтобы дизайн сайта адаптировался под устройство. Либо, если на вашей странице есть реклама мобильного приложения, выводил предложения о переходе на AppStore или Google Play соответственно. Идей для применения может быть много.

Предлагаю вашему вниманию ещё один пример, который используется на моём сайте. Суть кода следующая — мы выводим разные варианты шапки сайта в зависимости от типа устройства. Код (с сокращениями) следующий:

require_once 'functions/Mobile_Detect.php'; $detect = new Mobile_Detect; if ( $detect->isMobile() ) < // Здесь пишем код header'a который будет выводиться для мобильных устройств >else < // Здесь код, который выводится, если устройство не мобильное >

И напоследок самое сладкое — эта библиотека была портирована на JavaScript, Varnish Cache и LUA.

На основе этого скрипта написаны плагины и модули для WordPress, Drupal, Joomla, Magento, PrestaShop (там он вообще поставляется в стандартном пакете с версии 1.5), Laravel, Yii Framework и множество других фреймворков и языков и платформ.

Библиотека очень полезная и весьма доставляющая.

Всем отличного пользования!

Анатолий Куликов

Автор блога, веб-разработчик

Источник

Определение мобильного устройства в PHP

Определить телефон или планшет можно с помощью библиотеки PHP Mobile Detect. Это легкий класс использующий строку User-Agent в сочетании с другими HTTP-заголовками.

Методы класса

require_once '/Mobile_Detect.php'; $detect = new Mobile_Detect; // Мобильные и планшеты if ($detect->isMobile()) < . >// Планшеты if ($detect->isTablet()) < . >// Только мобильные if ($detect->isMobile() && !$detect->isTablet()) < . >// iOS устройства if ($detect->isiOS()) < . >// Android устройства if ($detect->isAndroidOS())

Использование

Результат работы класса можно передать в переменную, константу и т. д. и далее использовать для вывода шаблонов или отдельных блоков на сайте. Например телефоны ссылками:

require_once '/Mobile_Detect.php'; $detect = new Mobile_Detect; $is_mobile = ($detect->isMobile() && !$detect->isTablet()); 

Если проект написан на ООП, для передачи значения переменной $is_mobile между объектами будет полезным класс Registry.

require_once '/Mobile_Detect.php'; require_once '/Registry.php'; $detect = new Mobile_Detect; Registry::set('is_mobile', ($detect->isMobile() && !$detect->isTablet())); . if (Registry::get('is_mobile'))

Переключение между версиями

Когда активна мобильная версия сайта, пользователю нужна возможность переключится на десктопную. В подвале мобильной версии выводится ссылка «полная версия» с GET-параметром:

После перехода значение попадает в сессию и мобильная версия больше не показывается.

require_once '/Mobile_Detect.php'; $detect = new Mobile_Detect; if (isset($_GET['full'])) < $_SESSION['full'] = true; >if (empty($_SESSION['full'])) < $is_mobile = ($detect->isMobile() && !$detect->isTablet()); > else

Источник

Php определить мобильное устройство

The lightweight PHP class for detecting mobile devices (including tablets).

Mobile Detect is a lightweight PHP class for detecting mobile devices (including tablets). It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.

This project is sponsored by it’s developers and community.
Thanks to the JetBrains team for providing PHPStorm and DataGrip licenses.

Install

Download and include manually

require_once "libs/Mobile_Detect.php";
composer require mobiledetect/mobiledetectlib

or include the dependency in the composer.json file:

Develop

// Include and instantiate the class. require_once 'Mobile_Detect.php'; $detect = new Mobile_Detect; // Any mobile device (phones or tablets). if ( $detect->isMobile() ) < >// Any tablet device. if( $detect->isTablet() ) < >// Exclude tablets. if( $detect->isMobile() && !$detect->isTablet() ) < >// Check for a specific platform with the help of the magic methods: if( $detect->isiOS() ) < >if( $detect->isAndroidOS() ) < >// Alternative method is() for checking specific properties. // WARNING: this method is in BETA, some keyword properties will change in the future. $detect->is('Chrome') $detect->is('iOS') $detect->is('UC Browser') // [. ] // Batch mode using setUserAgent(): $userAgents = array( 'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19', 'BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103', // [. ] ); foreach($userAgents as $userAgent)< $detect->setUserAgent($userAgent); $isMobile = $detect->isMobile(); $isTablet = $detect->isTablet(); // Use the force however you want. > // Get the version() of components. // WARNING: this method is in BETA, some keyword properties will change in the future. $detect->version('iPad'); // 4.3 (float) $detect->version('iPhone') // 3.1 (float) $detect->version('Android'); // 2.1 (float) $detect->version('Opera Mini'); // 5.0 (float) // [. ]

© Mobile Detect is an open-source script released under MIT License.

Источник

Определение мобильного устройства в php

Определение мобильного устройства в php

Сегодня перебирал свои старые исходники и нашел одну замечательную функцию, которая определяет с компьютера зашел пользователь или с мобильного устройства. Я уже не помню, сам ее писал или нашел где-то в интернете, а может нашел кусок и отредактировал. Не важно откуда она взялась, главное. что функция работает. Определение устройство, с которого просматривается сайт, реализовано очень просто: получаем информацию о HTTP_USER_AGENT и сравниваем со всеми известными на данный момент агентами, используемыми мобильными устройствами.

Определение мобильного устройства. Код

// определение мобильного устройства function check_mobile_device() < $mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser'); $agent = strtolower($_SERVER['HTTP_USER_AGENT']); // var_dump($agent);exit; foreach ($mobile_agent_array as $value) < if (strpos($agent, $value) !== false) return true; >return false; >

// пример использования $is_mobile_device = check_mobile_device(); if($is_mobile_device)< echo "Вы зашли с мобильного устройства"; >else

На этом все. Если у кого-то эта функция не будет срабатывать — присылайте в комментарии название устройства, а лучше, используемый им, юзер агент. Тогда функция будет дополняться, и вместе мы ее сделаем более универсальной.

Источник

Оцените статью