Php определить смартфон или планшет
What is the simplest way to tell if a user is using a mobile device to browse my site using PHP?
I have come across many classes that you can use but I was hoping for a simple if condition!
Is there a way I can do this?
Установка PHP библиотеки Mobile Detect
Для подключения достаточно одного файла. Сделать это можно следующим образом.
Вот ссылка на реппозиторий гитхаба. Там есть описание по установке на различные CMS, в том числе и WordPress, а так же популярные фреймворки. А теперь самое время перейти к примерам использования.
$detect = new Mobile_Detect; if($detect->isAndroidOS())< echo "Андроид-устройство версии: ".$detect->version('Android'); > if($detect->isiOS())< echo "IOS-устройство версии: ".$detect->version('iOS'); > if ($detect->isMobile()) < echo '
Вы зашли с мобильного'; > if($detect->isTablet())< echo '
Вы зашли с планшета'; > if ($detect->isLG()) < echo '
Ваш смартфон LG'; > if ($detect->isSamsung()) < echo '
Ваш смартфон Samsung'; >
Кроме определения мобильных устройств в этой библиотеке предусмотрена возможность определять браузер и его версию. Правда пока в бета режиме. Но при тестировании все работает отлично.
if ($detect->is('Chrome')) < echo "
Версия Chrome: ".$detect->version('Chrome'); > if ($detect->is('Opera')) < echo "
Версия Opera: ".$detect->version('Opera'); >
Теперь вы знаете как определить мобильные телефоны и планшеты при помощи PHP. Поделитесь в комментариях если знаете еще подобные и более функциональные библиотеки.
Примеры
Общие возможности
isMobile() - определяет является ли устройство мобильным
isTablet() - определяет является ли устройство планшетом
17 Answers 17
Here is a source:
Code:
@naveed Just a heads up, this no longer seems to be working. Tested in IOS 8.1 using Chrome's mobile browser. Justin's is working for me though.
this answer is now so obsolete. there are many false positives, safari on OSX is detected as a mobile, Chrome on OSX detected as Mobile.
The code detects a user based on the user-agent string by preg_match()ing words that are found in only mobile devices user-agent strings after hundreds of tests. It has 100% accuracy on all current mobile devices and I'm currently updating it to support more mobile devices as they come out. The code is called isMobile and is as follows:
You can use it like this:
To redirect a user to your mobile site, I would do this:
Let me know if you have any questions and good luck!
@RobertHarvey - im confused. they are all asking basically the same thing so what am i supposed to do, other than answer the question? tell them to use something else each time? i'm new here so im not sure if im supposed to link to the first answer?
This keyword "tablet" is creating me a problem on some IE8 (PC) headers that have "Tablet PC 2.0" in response
Here is updated version: 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"]); This is collection of few new devices.
I found mobile detect to be really simple and you can just use the isMobile() function :)
Simply you can follow the link. its very simple and very easy to use. I am using this. Its working fine.
I was wondering, until now, why someone had not posted a slightly alteration of the accepted answer to the use of implode() in order to have a better readability of the code. So here it goes:
There is no reliable way. You can perhaps look at the user-agent string, but this can be spoofed, or omitted. Alternatively, you could use a GeoIP service to lookup the client's IP address, but again, this can be easily circumvented.
GeoIP wouldn't really help. Even if you could determine that their IP belongs to a mobile network, they could be tethering the connection to a desktop computer. If it's not a mobile network you really no nothing all can devices connect through Wi-Fi. Also you have the problem of maintaining a global database of IP ranges. Using the user agent, even though it's not perfect, I would assume is much more reliable. It's not like it's really a security issue to serve the wrong browser content, so who cares? If someone's spoofing the UA, they likely already know what they're getting themselves into.
Right you were 11 years ago, user agents are getting useless, e.g. they do not report Safari and Firefox iPad as mobile anymore. Chrome still does, but it will follow the suit soon, I guess.
You only need to include user_agent.php file which can be found from Mobile device detection in PHP page and use the following code.
If your server supports get_browser (available since PHP 4), it's extremely simple. They have a built in function for what you're asking.
While reading the documentation it occurs to me that this function is more or less just a wrapper to the user agent header which returns it parsed as an array. Am I wrong?
It provides a lot more data vs the user agenda header as long as your server admin has browscap.ini. It can inform you what the browser supports and is a lot easier than having to put in all the regex people are writing.
It's shorter — no doubt about that. I just noticed that they are based on the same data more or less.
@shaedrich Using the built-in function also has the advantage of being updated as new mobile devices (and new versions of user agent strings) are released.
Software is open source distributed under Mozilla Public License 2 and compatible with commercial and open source projects. As a bonus 51Degrees solution also contains a complementary PHP image optimiser that can automatically resize images for mobile devices.
By default 51Degrees PHP device detector uses Lite data file which is free and contains over 30000 devices and 50 properties for each device. Lite file is updated once every 3 month. If you want to have a higher level of details about requesting mobile devices, then Premium and Enterprise data files are available. Premium contains well over 70000 devices and 100 properties for each device with weekly updates. Enterprise is updated daily and contains over 150000 devices with 150 properties for each.
Возможности библиотеки
Для проверки мы можем заюзать следующие методы:
Определение телефона
- isiPhone()
- isBlackBerry()
- isHTC()
- isNexus()
- isDellStreak()
- isMotorola()
- isSamsung()
- isSony()
- isAsus()
- isPalm()
- isGenericPhone()
Определение планшета
- isBlackBerryTablet()
- isiPad()
- isKindle()
- isSamsungTablet()
- isHTCtablet()
- isMotorolaTablet()
- isAsusTablet()
- isNookTablet()
- isAcerTablet()
- isYarvikTablet()
- isGenericTablet()
Определение операционной системы
- isAndroidOS()
- isBlackBerryOS()
- isPalmOS()
- isSymbianOS()
- isWindowsMobileOS()
- isiOS()
- isFlashLiteOS()
- isJavaOS()
- isNokiaOS()
- iswebOS()
- isbadaOS()
- isBREWOS()
Определение мобильного браузера
- isChrome()
- isDolfin()
- isOpera()
- isSkyfire()
- isIE()
- isFirefox()
- isBolt()
- isTeaShark()
- isBlazer()
- isSafari()
- isMidori()
- isGenericBrowser()
5 последних уроков рубрики "PHP"
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза "фильтруйте всё, экранируйте всё" всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Однажды этот прекрасный день пришёл. День, когда я физически осознал, что мне нужно определять, каким устройством пользуется посетитель сайта, чтобы соответственно отрисовывать для него страницу.
Прошлая методика с помощью медиазапросов по ширине экрана в моих глазах себя изжила — в таком случае на страницу всё равно загружается все элементы, только часть из скрывается или модернизируется. С одной стороны — это правильный и надёжный подход. С другой стороны, когда у нас присутствуют тяжёлые медиафайлы (например, видеофон) или немного другое расположение элементов, то будет намного проще и лучше грузить только нужные элементы в зависимости от того, каким устройством пользуется посетитель сайта.
Проект постоянно поддерживается и обновляется, ибо весьма полезная вещь.
Подключается скрипт очень просто — с помощью 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 и множество других фреймворков и языков и платформ.
В веб разработке все чаще приходится учитывать мобильные устройства, чтобы подстроить CSS и javascript-ы под нужды пользователей. Рассмотрим отличный скрипт device.js, который позволяет менять CSS и поведение всего сайта в зависимости от того устройства, через которое мы на него зашли.
Данный скрипт совершенно бесплатен и его стали использовать многие разработчики в современных проектах. Он имеет очень маленький вес - всего 8кб и совершенно не нагружает сайт. Разберем более подробно возможности device.js.
Данный скрипт может:
1. Определить тип устройства (ПК, телефон или планшет).
2. Узнать ориентацию экрана: горизонтальная (альбомная) или вертикальная (портретная).
3. Определить тип Операционной системы устройства (iphone, android, windows, iOS и т.д.)
Причем данные функции можно комбинировать, например, мы можем сначала определить, с какого устройства зашел пользователь - если с планшета - грузим такой-то CSS или выполняем действия для планшета, если с ПК - то грузим другой CSS, затем мы может определить тип ориентации экрана и в зависимости от него, так же выполнять свой действия.
Теперь о том, какие команды надо использовать для работы со скриптом:
В данном примере эти проверки делают сканирование на тип устройства, его ОС и ориентацию экрана. Результаты проверки вы увидите в виде алертов.
Приветствую вас. Продолжаем исследовать возможности языка PHP и сейчас познакомимся с небольшой библиотекой, с помощью которой можно определять мобильные устройства пользователей на сайте. При чем определить можно даже марку телефона. Для чего это нужно? С большой уверенностью могу сказать, что подобные технологии используются в рекламных системах, в частности таргетированной рекламе. Это позволяет делать более персонализированные предложения. К примеру если вы продаете аксессуары для айфона, то имеет смысл показывать рекламу только тем, кто пользуется этими гаджетами, а для остальных скрыть или сделать переадресацию. Такой подход более профессиональный. На своем сайте вы тоже можете сделать нечто подобное. К примеру тем, кто заходит с мобильных — показать ссылку на телеграмм-канал, который будет запускаться автоматом (проверьте на моем), а тем, кто попал на сайт со стационарного компьютера — показать что-то другое. Не будем отрицать очевидные плюсы mobile detect library и перейдем к ее установке.
Читайте также: