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

17

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

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

Я знаю о WURFL, и я считаю, что это здорово, но больше не используется для проектов с открытым исходным кодом. К сожалению, я также нашел этот код: Ссылка (и некоторые варианты), но я Я не уверен в этом. Похоже, что это написано очень плохо (посмотрите, например, когда они используют $ mobile_browser = '0' с кавычками вокруг целого числа ...).

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

Спасибо,

Алессандро     

задан Qualcuno 09.07.2011 в 19:28
источник

7 ответов

30

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

$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'] );
    
ответ дан Floern 10.07.2011 в 23:47
источник
12

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

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

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

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

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

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

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

    
ответ дан Şerban 05.06.2012 в 15:59
источник
1

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

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

  

hpwos

Вот он:

  

$ isMobile = (bool) preg_match ('# \ b (ip (hone | od | ad) | android | opera   м (об-| в) I | окна   (Телефон | се) | ежевика || 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']);

    
ответ дан Dominicanstan 12.11.2011 в 05:12
источник
0

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

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

    
ответ дан Emre Yazici 09.07.2011 в 19:36
источник
0

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

    
ответ дан fravelgue 10.07.2011 в 23:21
источник
-1

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

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

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

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

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

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

    $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: Ссылка Веб-сайт: Ссылка

Тип браузера: 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 отображал город и страну

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

    
ответ дан Larry Kosis 28.04.2012 в 10:38
источник