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';
}