Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Определение мобильных устройств.
Форумы портала PHP.SU » Клиентская разработка » Программное обеспечение » Определение мобильных устройств.

Страниц (1): [1]
 

1. nerru86 - 23 Июля, 2014 - 14:40:15 - перейти к сообщению
Добрый день,

Хочу поделиться с вами решением проблемы определения устройств, обращающихся к сайту, которое сэкономит кучу времени и сил. Я сам, образно выражаясь, набил кучу шишек пока искал приемлемый вариант.

51Degrees Device Detector это OpenSource детектор устройств. Распространяется по лицензии Mozilla Public License 2 и может быть использован как в открытых, так и в коммерческих проектах. Доступны дистрибутивы на PHP, Java, C, .NET, Python и Perl.

Для всех платформ процесс установки сведен к нескольким простым действиям. Для примера возьмём PHP версию детектора: PHP Getting Started.

Установка:

1. Скачайте дистрибутив с sourceforge.
2. Распакуйте архив в директорию на сервере.
3. Подключите 2 файла к страницам, на которых нужно определять устройства (либо в подключаемый header):

PHP:
скопировать код в буфер обмена
  1. require_once 'path/to/core/51Degrees.php';
  2. require_once 'path/to/core/51Degrees_usage.php';


Информация об устройстве:

Теперь при обращении к веб сайту устройство будет определено и вся доступная информация будет помещена в переменную $_51d. На пример:

- Чтобы определить является ли устройство мобильным:
PHP:
скопировать код в буфер обмена
  1. if ($_51d['IsMobile'] == TRUE) {    
  2.         //Девайс - мобильный.
  3. }


- Чтобы получить информацию о платформе (ОС и версию):
PHP:
скопировать код в буфер обмена
  1. echo "<p>ОС: ".$_51d['PlatformName'].", компании ".$_51d['PlatformVendor'].", версии ".$_51d['PlatformVersion']."</p>";


- Чтобы получить информацию о браузере:
PHP:
скопировать код в буфер обмена
  1. echo "<p> Браузер: ".$_51d['BrowserName'].", компании: ".$_51d['BrowserVendor'].", версия браузера: ".$_51d['BrowserVersion'].". Браузер поддерживает HTML версии ".$_51d['HtmlVersion'].". Браузер работает на движке: ".$_51d['LayoutEngine']."</p>";


Полный список свойств доступных для устройств, с описанием и типом данных, можно найти на странице Property Dictionary. В зависимости от потребностей файл с данными распространяется в 3 редакциях. Lite версия поставляется бесплатно по умолчанию с каждым дистрибутивом и содержит более 30 000 наиболее популярных устройств с 50 свойствами на устройство.

Для других платформ:

Документацию для других поддерживаемых платформ можно найти на странице с Документацией. Документация на английском, но если нужна помощь в настройке или установке Вы можете написать в эту тему и я постараюсь помочь. Так же Вы можете связаться со службой поддержки (Говорят на нескольких языках, в том числе на Русском).

Чем этот детектор устройств лучше:

1. Определение устройств осуществляется без использования регулярных выражений. Как работает определение устройств.
2. Скорость определения устройств достигает 5000000 в секунду на средненьком железе используя Trie файл. Доказательство и метод тестирования.
3. Точность детекта выше 99%.
4. Уже используется в крупных компаниях по всему миру (Ebay, Hyundai, Dominos Pizza и т.д.).
5. Открытый исходный код. Внятная лицензия.
6. Регулярно обновляемая база устройств.

Плюшки:

Чтобы еще больше облегчить жизнь разработчикам в комплекте идет оптимизатор изображений, который может автоматически изменять размер изображений в зависимости от размеров экрана. Желаемый размер изображения так же можно указать вручную.

Спасибо за внимание и надеюсь этот инструмент станет полезным дополнением к Вашему набору инструментов веб-разработчика!

С уважением,
Михаил
2. esterio - 23 Июля, 2014 - 17:06:37 - перейти к сообщению

глобальные переменные не есть гуд
плюс ко всему юзерагент подделать не составляет труда Ниндзя
3. DelphinPRO - 23 Июля, 2014 - 17:12:02 - перейти к сообщению
esterio пишет:
плюс ко всему юзерагент подделать не составляет труда

Цель определения браузера обычно в том, чтобы подсунуть мобильную версию сайта. Если пользователь напортачил с юзер-агентом - это его проблемы.
4. nerru86 - 23 Июля, 2014 - 17:16:38 - перейти к сообщению
Против подделки юзер агентов в принципе ничего не поможет и яваскрипт не панацея т.к его использование можно запретить в настройках/аддонах полностью либо частично. Но суть не в этом а в том, что это инструмент для определения девайсов пользователей на стороне сервера, без использования js. Нужен он чтобы передать пользователю контент в удобной форме сразу, а не когда страница начнет грузиться. Как распоряжаться этим инструментом - индивидуальное дело разработчика.

В любом случае, доступ к сайту не ограничивается даже с кривым юзер агентом. Да и подавляющее большинство в принципе никогда не станет пытаться менять ЮА. Смысл именно этого решения в том, что не нужно вручную править скрипты с выходом новых девайсов (а их иной раз выпускается до 300 в неделю), достаточно лишь обновить файл с базой раз в пару месяцев и не знать проблем.
5. esterio - 23 Июля, 2014 - 17:17:07 - перейти к сообщению
DelphinPRO
частично согласен, но я бы скорее такое действия доверил бы JS нежели PHP

 

Powered by ExBB FM 1.0 RC1