Подтвердить что ты не робот

Обнаружение мобильного браузера?

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

Есть ли у вас какие-либо предложения? Хороший (даже если не идеальный) обновленный код?

Я знаю о WURFL, и я считаю, что это здорово, но это не бесплатное использование для проектов с открытым исходным кодом. По ошибке я нашел этот код: http://mobiforge.com/developing/story/lightweight-device-detection-php (и некоторые варианты), но я не уверен в этом. Похоже, что это написано очень плохо (посмотрите, например, когда они используют $mobile_browser = '0' с кавычками вокруг целого числа...).

Вы можете что-то порекомендовать?

Спасибо,

Алессандро

4b9b3361

Ответ 1

Я использую этот:

$isMobile = (bool)preg_match('#\b(ip(hone|od)|android\b.+\bmobile|opera m(ob|in)i|windows (phone|ce)|blackberry'.
                    '|s(ymbian|eries60|amsung)|p(alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'.
                    '|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] );

Он короткий и обнаруживает большинство мобильных пользователей (или, скорее, смартфонов). iPad и Android-планшеты не будут классифицироваться как "мобильные", поскольку они имеют больший размер экрана.

Если вы хотите поймать планшеты, вы можете использовать это:

$isMobile = (bool)preg_match('#\b(ip(hone|od|ad)|android|opera m(ob|in)i|windows (phone|ce)|blackberry|tablet'.
                    '|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'.
                    '|mobile|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] );

Ответ 2

Я использую класс Mobile_Detect. Он обновляется почти еженедельно. Код ищет признаки "мобильного" устройства как в заголовках HTTP, так и в строке User-Agent.

Демо & larr; запустите это с вашего мобильного устройства.

Вероятно, вы будете использовать только:

include("Mobile_Detect.php");
$detect = new Mobile_Detect();
if ($detect->isMobile()) {
    // any mobile platform
}

Класс также пытается обнаружить устройства планшета через:

if($detect->isTablet()){
    // any tablet
}

В обнаружении мобильных устройств нет серебряной пули, но это хорошее начало, прежде чем принимать решение об использовании внешних API, таких как WURLF, DeviceAtlas или других.

Ответ 3

Floern Спасибо за код!!!

Я добавил планшет HP TouchPad с помощью:

hpwos

Вот он:

$isMobile = (bool) preg_match ('#\b (ip (hone | od | ad) | android | opera м (об-| в) я | окна (Телефон | се) | ежевика || hpwos | таблетки '' | s (Л Я | eries60 | amsung) | р (laybook | альм | rofile/MIDP | laystation переносной) | Nokia | Fennec | HTC [-_] '' | мобильный | up.browser | [1-4] [0-9] {2} х [1-4] [0-9] {2})\б # я", $_SERVER ['HTTP_USER_AGENT']);

Ответ 4

Вы можете использовать встроенную функцию PHP get_browser(). Согласно руководству PHP, выходной массив имеет поле platform, которое вы можете использовать для обнаружения мобильных браузеров.

Существует также легкое обнаружение мобильных устройств от Mobiforge.

Ответ 5

Если вам не нужны расширенные возможности обнаружения, вы можете использовать этот ресурс. Я думаю, что новый WURFL apis - AGPL, поэтому они бесплатны. В любом случае, вы можете использовать старую версию, is't?

Ответ 6

Две другие идеи:

  • Некоторые из основных носителей вставляют свой собственный заголовок: вы можете использовать это, если хотите, до тех пор, пока пользователи проходят через сеть операторов связи.
  • Вы можете использовать JavaScript для определения размера экрана. Многие компании стремятся внедрить адаптивный дизайн, делая крошечные веб-страницы: таким образом, это, возможно, лучший, более простой подход. Кроме того, HTML5 имеет медиа-запросы для изменения css на основе размера экрана.

Ответ 7

Извините, я неправильно прочитал ваш вопрос перед тем, как

Существует очень простой способ определить, использует ли кто-то мобильный или ПК

Это то, что я делаю

В результатах отображения моей формы я добавляю следующее на ОЧЕНЬ конце сбора данных формы;

    $msg .= "Referers: ".$_POST['Referers']. "\r\n";

Затем просто под полем я добавляю это

  [[input type="hidden"  id="Referers" name="Referers" value="[[?php 
  echo "IP: " . $_SERVER['REMOTE_ADDR']; 
  echo "\nURL: " . $_SERVER['HTTP_REFERER']; 

echo "\nWebsite: " . $URL;
echo "\n\nBrowser Type:" . $_SERVER['HTTP_USER_AGENT'];
?]]"]]

Обратите внимание, что я изменил

Результаты ПЕЧАТЬ как это на моих письмах::

Источники: IP: xxx.xxx.xxx.xxx//Я скрываю это

URL: http://www.emailmarketingaustralia.com.au/Contact/index.php Веб-сайт: http://www.emailmarketingaustralia.com.au

Тип браузера: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; HTC_Sensation_Z710e; en-in) AppleWebKit/533.16 (KHTML, например Gecko) Версия /5.0 Safari/533.16

Интересно, что я в AUstralia, но GEO-REGION перечисляет меня как en-in (Индия)

//GEO CITY

Вы также можете получить данные из MAX MIND (www.maxmind.com), если вы хотите, чтобы IP отображал город и страну

Это просто и чисто и дает вам нужную