Мобильная версия сайта. Как узнать, что зашли с мобильного устройства?

На днях встала задача о разработке мобильной версии сайта. Я сразу столкнулся с вопросом как сделать мобильную версию сайта? Как понять, что пользователь зашёл с мобильного устройства? Как это отследить? Решение пришло очень быстро, спасибо Яндексу (:

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

Сам детектор находится вот тут — tech.yandex.ru/detector (не актуально). Там же и описание API с примерами. Но я не буду тебя мучать и на пальцах просто объясню как и что делать.

Первым делом нам нужна информация о двух штуках — об UserAgent и о WapProfile. Попробуем получить её, если не получится просто вернём null:

$userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null;
$wapProfile = isset($_SERVER['HTTP_X_WAP_PROFILE']) ? $_SERVER['HTTP_X_WAP_PROFILE'] : null;

Затем необходимо построить запрос:

$query = http_build_query(array(
'user-agent' => $userAgent,
'wap-profile' => $wapProfile,
));

Ну и теперь надо сделать запрос и получить ответ, а ответ от сервера мы получаем в XML, поэтому делаем вот так:

$xml = simplexml_load_file($url . '?' . $query);

Всё готово. Осталось понять, пользователь зашёл с компьютера или мобильного устройства. Я делаю хитрость и проверяю чтобы ответ не был равен ‘Unknown user agent and wap profile’. Такой ответ 100% значит, что заходят не с мобильного устройства, ну или с неизвестного какого-то устройства. А если устройство неизвестное, то лучше показать полную версию сайта.

if (($xml != 'Unknown user agent and wap profile')) {
// тут делаем всё что хотим, например редиректим на поддомен с мобильной версией сайта, или подключаем мобильную тему.
}

Вот такие пироги, всё очень просто (:

Комментарии (1):

  1. ЛИДИЯ Ответить

    Здравствуйте!

    12.12.2016 в 18:11

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *