Как определить ширину экрана PHP

Содержание
Введение
Пример кода на PHP
Результат
Комментарии к коду
Проверить ваш HTTP_USER_AGENT
Похожие статьи

Введение

Из этой статьи вы узнаете о том, что PHP не предназначен для определения ширины экрана, а также о том как определить тип устройства с помощью юзер агента.

Часто бывает нужно заранее знать ширину экрана. В CSS за это отвечает тэг @media.

Например, если Вы не хотите показывать блок класса .rightBanner на экранах уже 1000px , Вы просто пишете

@media screen and (max-width: 1000px) { .rightBanner {display: none;} }

И браузер, получив такой CSS от сервера, скроет блок .rightBanner на узких экранах.

Определить реальную текущую ширину экрана можно с помощью JavaScript про это есть статья

«Опеределить ширину экрана с помощью JavaScript»

Но, что если Вы вообще не хотите отдавать браузеру какой-то контент. Чтобы сэкономить трафик или ускорить загрузку страницы.

Встаёт вопрос - как определить ширину экрана уже на этапе формирования ответа сервера.

Ответ - никак. По крайне мере если Вам нужна точная ширина и Вы не планируете делать финты с AJAX.

Если Вам просто нужно понять зашёл ли посетитель с мобильного устройства или с десктопа - это я покажу ниже

Пример кода на PHP

<?php function isMobile() { return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); } $not_mobile = !(isMobile()); if ($not_mobile) { echo' <div class="rightBanner"> </div> ' }; ?>

Результат

Если браузер клиента передал один из упомянутых заголовков, то правый блок вообще не будет ему послан.

Комментарии к коду

preg_match возвращает 1 если найдёт в $_SERVER["HTTP_USER_AGENT"] один из перечисленных заголовков: android, avantgo, blackberry и так далее.

В таком случае $not_mobile это 0 или FALSE и условие if не выолняется.

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

Если Вы не собираетесь использовать функцию повторно, можно ограничиться строчкой:

$not_mobile = !(preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]));

Ваш HTTP_USER_AGENT

В следующем блоке вы можете увидеть свой HTTP_USER_AGENT

Сегодня:

2024-03-29

Ваш HTTP_USER_AGENT:

claudebot

Проверка - распознал ли скрипт ваше устройство как мобильное или нет

Ваше устройство не распознано как мобильное

Если скрипт неверно распознал ваше устройство - напишите мне в телеграм @andreyolegovichru