Определение мобильного устройства в PHP

Определить телефон или планшет можно с помощью библиотеки PHP Mobile Detect. Это легкий класс использующий строку User-Agent в сочетании с другими HTTP-заголовками.

Сайт проекта mobiledetect.net, GitHub.

require_once '/Mobile_Detect.php';
$detect = new Mobile_Detect;
 
// Мобильные и планшеты
if ($detect->isMobile()) {
	...
}
 
// Планшеты
if ($detect->isTablet()) {
	...
}
 
// Только мобильные
if ($detect->isMobile() && !$detect->isTablet()) {
	...
}
 
// iOS устройства
if ($detect->isiOS()) {
	...
}

// Android устройства
if ($detect->isAndroidOS()) {
	...
}
PHP

Результат работы класса можно передать в переменную, константу и т. д. и далее использовать для вывода шаблонов или отдельных блоков на сайте. Например телефоны ссылками:

require_once '/Mobile_Detect.php';
$detect = new Mobile_Detect;	
$is_mobile = ($detect->isMobile() && !$detect->isTablet());
PHP
<?php if ($is_mobile): ?>
<a href="tel:+7 (123) 456-78-90">+7 (123) 456-78-90</a>
<?php else: ?>
+7 (123) 456-78-90
<?php endif; ?>
HTML

Если проект написан на ООП, для передачи значения переменной $is_mobile между объектами будет полезным класс Registry.

require_once '/Mobile_Detect.php';
require_once '/Registry.php';

$detect = new Mobile_Detect;
Registry::set('is_mobile', ($detect->isMobile() && !$detect->isTablet()));		

...

if (Registry::get('is_mobile')) {
	...
}
PHP

Когда активна мобильная версия сайта, пользователю нужна возможность переключится на десктопную. В подвале мобильной версии выводится ссылка «полная версия» с GET-параметром:

<footer>
	<a href="?full">Перейти на полную версию сайта</a>
<footer>
HTML

После перехода значение попадает в сессию и мобильная версия больше не показывается.

require_once '/Mobile_Detect.php';
$detect = new Mobile_Detect;	

if (isset($_GET['full'])) {
	$_SESSION['full'] = true;
}

if (empty($_SESSION['full'])) {
	$is_mobile = ($detect->isMobile() && !$detect->isTablet());
} else {
	$is_mobile = false;
}
PHP
27.09.2018, обновлено 09.09.2022
16190

Комментарии

, чтобы добавить комментарий.

Другие публикации

Номер телефона на сайте
В последнее время нельзя пренебрегать кликабельными номерами телефонов т.к. количество клиентов, использующих мобильные телефоны превысило десктопы.
71907
+9
Примеры отправки AJAX JQuery
AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
189246
+27
Шаблонизатор Smarty
Smarty это компилирующий обработчик шаблонов для PHP позволяющий отделить логику и HTML-верстку веб-приложения.
19588
+5
HTTP коды
Список основных кодов состояния HTTP, без WebDAV.
7823
+1
Мануал по созданию и форматированию excel файлов в PHPExcel
К сожалению разработчики прекратили поддержку и разработку проекта, но PHPExcel все равно остается популярной...
91011
+27
Яндекс.Доставка работа с API в PHP
Примеры работы с API Яндекс.Доставки (для заказа перевозки грузов корпоративным клиентам).
2871
+5