Очень часто при изготовлении сайта встаёт необходимость в создании облегченной версии (PDA) для телефонов, планшетов и смартфонов.
Чтобы определить, какую версию сайта показывать пользователю для его устройства и реализовать загрузку той версии мобильного приложения, которая больше всего подходит советую использовать API Яндекс.Детектор.
API Яндекс.Детектор предоставляет возможность определения модели и характеристик мобильного устройства пользователя сайта по заголовкам HTTP-запросов, передаваемых браузером его устройства.
Пишем простенькую функцию для определения мобильных браузеров, основанную на примере от Яндекса.
function mobileDetect() { $headers = ''; foreach ($_SERVER as $key => $value) { if (strpos($key, 'HTTP_') === 0 && $key != 'HTTP_HOST' && $key != 'HTTP_CONNECTION') { $key = strtolower(strtr(substr($key, 5), '_', '-')); $headers .= $key . ': ' . $value . "rn"; } } $opts = array( 'http' => array( 'method' => "GET", 'header' => $headers, 'timeout' => 6 ) ); $response = file_get_contents('http://phd.yandex.net/detect', false, stream_context_create($opts)); // Распаковать строку $response = gzdecode( $response ); if (preg_match('|<yandex-mobile-info-error>|si', $response)) { return false; } return true; }
Теперь создаём поддомен на вашем основном домене. Например, если у меня был домен www.peacekeeper.ru, то я создал поддомен pda.peacekeeper.ru (можно и m.peacekeeper.ru).
Использовать нашу функцию будем примерно так: если человек зашел на сайт с мобильного телефона — редиректим его на ту же самую страницу, которую он запросил, только на поддомене pda.peacekeeper.ru.
// Редирект на PDA-версию if (mobileDetect()) { header('Location: http://pda.'.trim($_SERVER['SERVER_NAME'], 'www.').$_SERVER['REQUEST_URI']); }
Пример можно посмотреть здесь (заходить, естественно, через мобилку). Продолжение следует ヅ
Фото Ексей Пантелеев
Ссылки
Источник: https://www.kobzarev.com/programming/pda_version_mobile_detect/