Jak przystosować treści strony pod konkretną przeglądarkę lub klienta naszego użytkownika?

Coldpeer

W specyfikacji HTTP znalazło się miejsce dla nagłówka User-Agent. Jest to nagłówek który niektórzy klienci (np przeglądarki internetowe lub aplikacje internetowe) mogą przesłać do servera; w nadziei, że jeśli istnieje jakieś rozwiązanie które jest odpowiedniejsze dla jego urządzenia; to server odpowie właśnie taką odpowiedzią.

Może to być np lepsze dopasowanie rozmiarów treści na stronie, jeśli korzystamy z przeglądarki np na telefonie.

Pamiętajmy jednak, że to klient (przeglądarka) wysyła User-Agent, może więć przedstawić się dowolnie - jako dowolne inne urządzenie, lub nawet nie wysłać go wcale. Nagłówka Http-Agent nie możemy więc użyć, żeby wyciągnąć od klienta jakiekolwiek dane których nie chce nam udostępnić. User-Agent to nagłówek który ma służyć raczej do tego, żeby przeglądarce wygodniej/lepiej przeglądało się stronę.

Jeśli jakaś przeglądarka nie wspiera, powiedzmy wyświetlania obrazków w pewnych formatach, np .tiff, server może na podstawie User-Agent nie wysyłać takiemu klientowi obrazków w takiej formie, a zamiast tego użyć mniej wydajnego .png.

Biblioteka do rozpoznawania agenta klienta

Pamiętajmy, że User-Agent bywa bardzo rozmaity i rządzi się swoimi prawami. Jeśli faktycznie chcielibyśmy próbować rozpoznać agenta klienta, powinniśmy skorzystać raczej z https://github.com/jenssegers/agent

Żeby skorzystać z biblioteki jenssegers/agent musimy zaopatrzyć się w narzędzie Composer.

Prymitywna implementacja

<?php
$brow = strToLower($_SERVER['HTTP_USER_AGENT']);

if (strpos($brow, 'firefox') !== false) {
 echo 'Firefox';
} elseif(strpos($brow, 'opera') !== false) {
 echo 'Opera';
} elseif (strpos($brow, 'msie') !== false) {
 echo 'Internet Explorer';
} else {
 echo 'Inna';
}

if (strpos($brow, 'windows') !== false) {
 echo 'Windows';
} elseif(strpos($brow, 'linux') !== false) {
 echo 'Linux';
} elseif(strpos($brow, 'mac os') !== false) {
 echo 'MacOS';
} else {
 echo 'Inny';
}
FAQ

0 komentarzy