Как определить, является ли это мобильным устройством с PHP?

13
задан John Topley 22 December 2008 в 22:58
поделиться

9 ответов

Необходимо проверить несколько заголовков, которые клиент отправляет, такие как USER_AGENT и HTTP_ACCEPT. Выезд эта статья для всестороннего сценария обнаружения для мобильных агентов пользователя в PHP.

15
ответ дан Eran Galperin 22 December 2008 в 22:58
поделиться

Другая вещь рассмотреть: Много сайтов на самом деле предложит другой URL для мобильных устройств. См. http://m.facebook.com как пример. С увеличивающейся способностью устройств в эти дни, это дает Вашим пользователям опцию. Если они находятся на устройстве, которое может на самом деле обработать полный веб-сайт приятно (использующий изменение масштаба и этажерку), то они, вероятно, стали бы симпатичными раздраженный принуждаемый к конкретному расположению.

4
ответ дан nickf 22 December 2008 в 22:58
поделиться

Был бы агент пользователя в запросе давать Вам достаточно информации для принятия решения?

существует польза список агентов пользователя здесь .

1
ответ дан scunliffe 22 December 2008 в 22:58
поделиться

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

0
ответ дан 22 December 2008 в 22:58
поделиться

Для обнаружения на основе Агента пользователя используйте база данных WURFL . По крайней мере, это всесторонне и постоянно обновлено.

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

0
ответ дан Community 22 December 2008 в 22:58
поделиться

Самые мобильные веб-сайты используют user_agent исключительно. База данных с открытым исходным кодом функций устройств сохраняется в http://wurfl.sourceforge.net/ Используя wurlf, и на основе user_agent, можно определить физический экран и пиксельная ширина, длина и намного больше параметров, и принять решение рендеринга.

0
ответ дан Yaniv 22 December 2008 в 22:58
поделиться

Что такое мобильное устройство? Более слабый ЦП? Более низкая пропускная способность? В действительности это имеет экран, разрешение которого ниже 320x240 и глубина цвета, ниже 24.

необходимо использовать JavaScript также. Эта ссылка даст Вам общее представление: http://www.w3schools.com/js/tryit.asp?filename=tryjs_browsermonitor

И, эта ссылка будет учить Вас, что что: http://www.w3schools.com/htmldom/dom_obj_screen.asp

0
ответ дан Jonathan Leffler 22 December 2008 в 22:58
поделиться

Традиционно мобильные устройства были обнаружены путем сравнения заголовка Агента пользователя HTTP против списка известных мобильных строк UA. Новый подход вместо этого пытается обнаружить присутствие настольной ОС - что-либо, что, как находят, не является настольной ОС, должно затем быть мобильным.

Это приводит к намного менее ложным положительным сторонам.

Я записал сообщение с примером кода в Python здесь: http://notnotmobile.appspot.com

Вот отрывок:

import re

# Some mobile browsers which look like desktop browsers.
RE_MOBILE = {
    "iphone" : re.compile("ip(hone|od)", re.I),
    "winmo" : re.compile("windows\s+ce", re.I)}

RE_DESKTOP = {
    "linux" : re.compile(r"linux", re.I),
    "windows" : re.compile(r"windows", re.I),
    "mac" : re.compile(r"os\s+(X|9)", re.I),
    "solaris" : re.compile(r"solaris", re.I),
    "bsd" : re.compile(r"bsd", re.I)}

# Bots that don't contain desktop OSs.
RE_BOT = re.compile(r"(spider|crawl|slurp|bot)")


def is_desktop(user_agent):
  # Anything that looks like a phone isn't a desktop.
  for regex in RE_PHONE.values():
    if regex.search(user_agent) is not None:
      return False

  # Anything that looks like a desktop probably is.
  for regex in RE_DESKTOP.values():
    if regex.search(user_agent) is not None:
      return True

  # Bots get the desktop view.
  if RE_BOT.search(user_agent) is not None:
    return True

  # Anything else is probably a phone!
  return False

def get_user_agent(request):
  # Some browsers put the User-Agent in a HTTP-X header
  if 'HTTP_X_OPERAMINI_PHONE_UA' in request.headers:
    return request.headers['HTTP_X_OPERAMINI_PHONE_UA']
  elif:
    # Skyfire / Bolt / other mobile browsers
    ...
  else:
    return request.headers.get('HTTP_USER_AGENT', '')

def view(request):
  user_agent = get_user_agent(request)
  if is_desktop(user_agent):
    return desktop_response()
  else:
    return mobile_response()
2
ответ дан 1 December 2019 в 20:31
поделиться

Вам следует взглянуть на Tera-WURFL , это программный пакет на основе PHP и MySQL, который определяет мобильные устройства и их возможности. Вот код Tera-WURFL, который вы могли бы использовать, чтобы определить, является ли посещающее устройство мобильным:

<?php
require_once("TeraWurfl.php");
$wurflObj = new TeraWurfl();
$wurflObj->GetDeviceCapabilitiesFromAgent();
if($wurflObj->capabilities['product_info']['is_wireless_device']){
    // this is a mobile device
}else{
    // this is a desktop device
}
?>    
5
ответ дан 1 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: