Самый простой способ выдавать мобильную версию сайта на php

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

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


Решил таким образом
  • Вопрос задан
  • 15172 просмотра
Пригласить эксперта
Ответы на вопрос 7
В том способе, который вы используете, не все мобильные браузеры перечислены.
Наверное, самый полный список:
$browser = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
if (strpos($browser, 'Mobile') === false 
&& strpos($browser, 'Symbian') === false 
&& strpos($browser, 'Opera M') === false 
&& strpos($browser, 'Android') === false 
&& stripos($browser, 'HTC_') === false 
&& strpos($browser, 'Fennec/') === false 
&& stripos($browser, 'Blackberry') === false 
&& strpos($browser, 'Windows Phone') === false 
&& strpos($browser, 'WP7') === false 
&& strpos($browser, 'WP8') === false) {
// выключаем мобильный стиль
} else {
//включаем мобильный стиль
}
Ответ написан
Phelix
@Phelix
SEO, Веб-анализ, Анализ данных
Попробуйте в .htaccess прописать следующее

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} acs [NC,OR]

RewriteCond %{HTTP_USER_AGENT} alav [NC,OR]

RewriteCond %{HTTP_USER_AGENT} alca [NC,OR]

RewriteCond %{HTTP_USER_AGENT} amoi [NC,OR]

RewriteCond %{HTTP_USER_AGENT} audi [NC,OR]

RewriteCond %{HTTP_USER_AGENT} aste [NC,OR]

RewriteCond %{HTTP_USER_AGENT} avan [NC,OR]

RewriteCond %{HTTP_USER_AGENT} benq [NC,OR]

RewriteCond %{HTTP_USER_AGENT} bird [NC,OR]

RewriteCond %{HTTP_USER_AGENT} blac [NC,OR]

RewriteCond %{HTTP_USER_AGENT} blaz [NC,OR]

RewriteCond %{HTTP_USER_AGENT} brew [NC,OR]

RewriteCond %{HTTP_USER_AGENT} cell [NC,OR]

RewriteCond %{HTTP_USER_AGENT} cldc [NC,OR]

RewriteCond %{HTTP_USER_AGENT} cmd- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} dang [NC,OR]

RewriteCond %{HTTP_USER_AGENT} doco [NC,OR]

RewriteCond %{HTTP_USER_AGENT} eric [NC,OR]

RewriteCond %{HTTP_USER_AGENT} hipt [NC,OR]

RewriteCond %{HTTP_USER_AGENT} inno [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ipaq [NC,OR]

RewriteCond %{HTTP_USER_AGENT} java [NC,OR]

RewriteCond %{HTTP_USER_AGENT} jigs [NC,OR]

RewriteCond %{HTTP_USER_AGENT} kddi [NC,OR]

RewriteCond %{HTTP_USER_AGENT} keji [NC,OR]

RewriteCond %{HTTP_USER_AGENT} leno [NC,OR]

RewriteCond %{HTTP_USER_AGENT} lg-c [NC,OR]

RewriteCond %{HTTP_USER_AGENT} lg-d [NC,OR]

RewriteCond %{HTTP_USER_AGENT} lg-g [NC,OR]

RewriteCond %{HTTP_USER_AGENT} lge- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} maui [NC,OR]

RewriteCond %{HTTP_USER_AGENT} maxo [NC,OR]

RewriteCond %{HTTP_USER_AGENT} midp [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mits [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mmef [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mobi [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mot- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} moto [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mwbp [NC,OR]

RewriteCond %{HTTP_USER_AGENT} nec- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} newt [NC,OR]

RewriteCond %{HTTP_USER_AGENT} noki [NC,OR]

RewriteCond %{HTTP_USER_AGENT} opwv [NC,OR]

RewriteCond %{HTTP_USER_AGENT} palm [NC,OR]

RewriteCond %{HTTP_USER_AGENT} pana [NC,OR]

RewriteCond %{HTTP_USER_AGENT} pant [NC,OR]

RewriteCond %{HTTP_USER_AGENT} pdxg [NC,OR]

RewriteCond %{HTTP_USER_AGENT} phil [NC,OR]

RewriteCond %{HTTP_USER_AGENT} play [NC,OR]

RewriteCond %{HTTP_USER_AGENT} pluc [NC,OR]

RewriteCond %{HTTP_USER_AGENT} port [NC,OR]

RewriteCond %{HTTP_USER_AGENT} prox [NC,OR]

RewriteCond %{HTTP_USER_AGENT} qtek [NC,OR]

RewriteCond %{HTTP_USER_AGENT} qwap [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sage [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sams [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sany [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sch- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sec- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} send [NC,OR]

RewriteCond %{HTTP_USER_AGENT} seri [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sgh- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} shar [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sie- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} siem [NC,OR]

RewriteCond %{HTTP_USER_AGENT} smal [NC,OR]

RewriteCond %{HTTP_USER_AGENT} smar [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sony [NC,OR]

RewriteCond %{HTTP_USER_AGENT} sph- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} symb [NC,OR]

RewriteCond %{HTTP_USER_AGENT} t-mo [NC,OR]

RewriteCond %{HTTP_USER_AGENT} teli [NC,OR]

RewriteCond %{HTTP_USER_AGENT} tim- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} tosh [NC,OR]

RewriteCond %{HTTP_USER_AGENT} tsm- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} upg1 [NC,OR]

RewriteCond %{HTTP_USER_AGENT} upsi [NC,OR]

RewriteCond %{HTTP_USER_AGENT} vk-v [NC,OR]

RewriteCond %{HTTP_USER_AGENT} voda [NC,OR]

RewriteCond %{HTTP_USER_AGENT} w3cs [NC,OR]

RewriteCond %{HTTP_USER_AGENT} wap- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} wapa [NC,OR]

RewriteCond %{HTTP_USER_AGENT} wapi [NC,OR]

RewriteCond %{HTTP_USER_AGENT} wapp [NC,OR]

RewriteCond %{HTTP_USER_AGENT} wapr [NC,OR]

RewriteCond %{HTTP_USER_AGENT} webc [NC,OR]

RewriteCond %{HTTP_USER_AGENT} winw [NC,OR]

RewriteCond %{HTTP_USER_AGENT} winw [NC,OR]

RewriteCond %{HTTP_USER_AGENT} xda [NC,OR]

RewriteCond %{HTTP_USER_AGENT} xda- [NC,OR]

RewriteCond %{HTTP_USER_AGENT} up.browser [NC,OR]

RewriteCond %{HTTP_USER_AGENT} up.link [NC,OR]

RewriteCond %{HTTP_USER_AGENT} windows.ce [NC,OR]

RewriteCond %{HTTP_USER_AGENT} iemobile [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mini [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mmp [NC,OR]

RewriteCond %{HTTP_USER_AGENT} symbian [NC,OR]

RewriteCond %{HTTP_USER_AGENT} midp [NC,OR]

RewriteCond %{HTTP_USER_AGENT} wap [NC,OR]

RewriteCond %{HTTP_USER_AGENT} phone [NC,OR]

RewriteCond %{HTTP_USER_AGENT} pocket [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mobile [NC,OR]

RewriteCond %{HTTP_USER_AGENT} pda [NC,OR]

RewriteCond %{HTTP_USER_AGENT} PPC [NC,OR]

RewriteCond %{HTTP_USER_AGENT} Series60 [NC,OR]

RewriteCond %{HTTP_USER_AGENT} Opera.Mini [NC]

RewriteCond %{HTTP_USER_AGENT} !windows.nt [NC]

RewriteCond %{HTTP_USER_AGENT} !bsd [NC]

RewriteCond %{HTTP_USER_AGENT} !x11 [NC]

RewriteCond %{HTTP_USER_AGENT} !unix [NC]

RewriteCond %{HTTP_USER_AGENT} !macos [NC]

RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]

RewriteCond %{HTTP_USER_AGENT} !playstation [NC]

RewriteCond %{HTTP_USER_AGENT} !google [NC]

RewriteCond %{HTTP_USER_AGENT} !yandex [NC]

RewriteCond %{HTTP_USER_AGENT} !bot [NC]

RewriteCond %{HTTP_USER_AGENT} !libwww [NC]

RewriteCond %{HTTP_USER_AGENT} !msn [NC]

RewriteCond %{HTTP_USER_AGENT} !america [NC]

RewriteCond %{HTTP_USER_AGENT} !avant [NC]

RewriteCond %{HTTP_USER_AGENT} !download [NC]

RewriteCond %{HTTP_USER_AGENT} !fdm [NC]

RewriteCond %{HTTP_USER_AGENT} !maui [NC]

RewriteCond %{HTTP_USER_AGENT} !webmoney [NC]

RewriteCond %{HTTP_USER_AGENT} !windows-media-player [NC]

RewriteCond %{QUERY_STRING} !wpc_nr [NC]

RewriteRule ^(.*)$ site.ru/ [L,R=302]


Не помню, откуда список юзерагентов взял. но использовал в свое время именно это.
Ответ написан
madmaxcorp
@madmaxcorp
Посмотрите в сторону технологии «Responsive Web Design».
Примеры тут.
Ответ написан
@SergeyGrigorev
Не забудьте сделать, как на википедии — кнопчку, вроде «Перейти на обычную версию сайта». Мне порою не нравится, когда меня пересылают на мобильную урезанную версию, когда я могу и полную версию сайта нормально посмотреть прямо на дисплее смартфона.
Ответ написан
@nerru86
На рынке уже давно существует множество готовых решений. В частности хочу обратить Ваше внимание на решение от 51Degrees.com.

Детектор устройств на PHP развёртывается в 4 щага:
1. Скачайте файлы с sourceforge.
2. Разархивируйте в директорию на сервере.
3. Подключите следующие 2 файла на нужных страницах либо в подключаемой шапке:
require_once 'path/to/core/51Degrees.php';
require_once 'path/to/core/51Degrees_usage.php';

4. Доступ к свойствам девайса получается через массив $_51d:
if ($_51d['IsMobile'] == TRUE)
{
    //Код для мобильного устройства.
}

Полный список поддерживаемых свойств.

Преимущество данного решения в скорости и точности детекта, а так же лёгкости развертывания на разных платформах (Кроме PHP поддерживаются еще C, .NET, Java, Python и Perl). Детектор выдаёт 5 000 000 обнаружений в секунду с точностью более 99.97%. База данных устройств каждую неделю пополняется 100-250 новыми устройствами выпускаемыми по всему миру. Кроме планшетов и смартфонов в базе присутствуют смарт ТВ, консоли и книгочиталки. Посмотреть полный список фирм и устройств в базе можно тут.

Весь код детекторов от 51Degrees является открытым ПО (open source) и распространяется по лицензии Mozilla Public License 2, т.е. его можно использовать как в открытых так и коммерческих проектах.

Файл с базой устройств выпускается в 3х вариациях: Lite - содержит более 30 000 устройств с 50 свойствами для каждого. Этот файл распространяется со всеми дистрибутивами по умолчанию. Premium - содержит более 70 000 устройств с 100 свойств для каждого. Enterprise - содержит более 150 000 устройств с 150 свойств для каждого и дополнительными скриптами, повышающими точность определения версий некоторых телефонов (таких как iPhone).

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

Документация для определения устройств на PHP.
Более подробно о том, почему важно определять мобильные устройства.
Ответ написан
@egorinsk
Правильно — сделать это средствами CSS. Например, так это сделано на сайте W3C. Но это не все умеют. Неправильно (но этоn способ работает) — костылем в PHP через проверку User-Agent.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы