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

2

Я прочитал много статей и искал решения для обнаружения мобильных устройств. Фактически, натолкнулся на https://github.com/serbanghita/mobile-detect, но это довольно массивный класс php.

Я действительно хочу очень простое решение. Я хочу определить, является ли браузер пользователя Mobile/iPad/etc или Desktop. Поэтому я хочу что-то вроде этого:

<?php

require('detector.php');

if(isMobile() === true)
{
   header('mobile.php');
   exit();
}
else
{
   header('desktop.php');
   exit();
}

?>

Требуется очень простое решение, которое я могу разместить на любой странице без установки композитора или любой инфраструктуры php.

Как это возможно?

  • 0
    Вопросы с просьбой рекомендовать или найти книгу, инструмент, библиотеку программного обеспечения, учебное пособие или другой сторонний ресурс не по теме для переполнения стека, поскольку они, как правило, привлекают взвешенные ответы и спам.
  • 0
    сделать это в зависимости от размера экрана
Теги:
mobile
desktop

4 ответа

4
Лучший ответ

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

И использование этого класса совершенно просто. В каталоге примеров:

require_once '../Mobile_Detect.php';
$detect = new Mobile_Detect;
$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');

Теперь у вас есть переменная с одним из трех значений: "планшет", "телефон" или "компьютер", и вы можете реагировать на это.

Обратите внимание, что даже если вы можете использовать эту библиотеку без Composer, она будет регулярно обновляться (как в "один раз в месяц"), потому что новые устройства выходят на рынок и должны быть обнаружены. Вам нужно будет обновить эту библиотеку в какой-то момент. Использование Composer делает это очень просто.

  • 0
    Большое спасибо. Не заметил, что так просто использовать этот класс! Оцените ваш вклад!
  • 0
    Это не работает, когда я нажал на флажок рабочего стола в Google Chrome
2

Если вы действительно не хотите включать этот класс в свой код, Mozilla указывает, что он "достаточно хорош" для поиска строки "mobi" в пользовательском агенте.

<?php
if (stristr($_SERVER['HTTP_USER_AGENT'],'mobi')!==FALSE) {
    echo 'mobile device detected';
}
?>
1

Вы можете перенаправить ссылку с помощью
и в контроллере вы можете проверить

$keybord = app::get('keyboard')
if($keyboard == mobile ){
    redirect ('mobile');
}else{
   redirect ('desktop');
}   
0

Я нашел эту простую строку очень надёжной и простой в использовании. Без необходимости добавлять один дополнительный класс.

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'mobile') || strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'android')) {
   echo "running on mobile";
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню