Как определить ширину экрана 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-12-03
Ваш HTTP_USER_AGENT:
CCBot/2.0 (https://commoncrawl.org/faq/)
Проверка - распознал ли скрипт ваше устройство как мобильное или нет
Ваше устройство не распознано как мобильное
Если скрипт неверно распознал ваше устройство - напишите мне в телеграм @andreyolegovichru