fbpx

Como identificar o navegador com PHP - Evertec Digital | Blog

Como identificar o navegador com PHP

Precisa identificar o navegador pelo qual seu site está sendo acessado? Criamos um script básico em PHP para lhe auxiliar nessa missão.

Compartilhe esse conteúdo!

Dependendo do seu projeto web, você precisará identificar qual navegador o seu site está sendo acessado, seja para guardar informações estatísticas ou para fazer uma apresentação personalizada para um determinado navegador.

Atualmente, é uma missão quase impossível, identificar com PHP, por qual navegador o seu site está sendo acessado. Visto que, o parâmetro utilizado para identificar o navegador é o HTTP_USER_AGENT, que não contem informações consistentes e únicas que identifique o navegador utilizado.

Fizemos um teste para validar as informações fornecidas pelo HTTP_USER_AGENT, na versão mais atual dos principais navegadores utilizados, através de um computador com Windows 10 instalado, os resultados que obtemos foram estes abaixo:

  • Google Chrome:
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
  • Mozilla Firefox:
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
  • Microsoft Edge:
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
  • Microsoft Internet Explorer:
    Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
  • Opera:
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71

Em nosso projeto para esse blog, com o objetivo de aumentar a performance do site, colocamos uma opção que nos permite substituir as imagens jpg ou png por svg. Entretanto, navegadores que não receberam mais atualizações como o Internet Explorer, costuma quebrar o layout do site quando utilizado o svg.  Então optamos por realizar a validação, mantendo as imagens originais, quando acessado por esse navegador.

A solução que utilizamos para identificar o navegador segue abaixo:

$navegador = filter_input(INPUT_SERVER, "HTTP_USER_AGENT", FILTER_DEFAULT);

$browsers = array(
    'amaya' => 'Amaya',
    'Camino' => 'Camino',
    'Chimera' => 'Chimera',
    'Chrome' => 'Chrome',
    'Edge' => 'Edge',
    'Firebird' => 'Firebird',
    'Firefox' => 'Firefox',
    'Flock' => 'Flock',
    'hotjava' => 'HotJava',
    'IBrowse' => 'IBrowse',
    'icab' => 'iCab',
    'Internet Explorer' => 'Internet Explorer',
    'Konqueror' => 'Konqueror',
    'Links' => 'Links',
    'Lynx' => 'Lynx',
    'Maxthon' => 'Maxthon',
    'Mozilla' => 'Mozilla',
    'MSIE' => 'Internet Explorer',
    'Netscape' => 'Netscape',
    'OmniWeb' => 'OmniWeb',
    'Opera' => 'Opera',
    'Opera.*?Version' => 'Opera',
    'Phoenix' => 'Phoenix',
    'Safari' => 'Safari',
    'Shiira' => 'Shiira',
    'Trident.* rv' => 'Internet Explorer',
    'Ubuntu' => 'Ubuntu Web Browser',
    'OPR' => 'Opera'
);

if (strpos($navegador, 'Edge')):
    $browserDetect = 'Edge';
elseif (strpos($navegador, 'OPR')):
    $browserDetect = 'Opera';
else:
    $browserDetect = null;
    foreach ($browsers as $key => $value):
        if (preg_match('|' . $key . '.*?([0-9\.]+)|i', $navegador)):
            $browserDetect = $value;
        endif;
    endforeach;
endif;


if (!empty($browserDetect)):
    echo $browserDetect;
else:
    echo 'Desconhecido';
endif;

 

Como pode observar no bloco de código acima, primeiramente tentamos identificar os dois únicos navegadores que possui uma certa exclusividade na identificação, somente depois, caso não identificado, que realizamos a validação geral.

Como pode ver também, essa validação não é precisa. Possui falhas que não garantem o resultado desejado, mas é útil em situações como a nossa.

Se você conseguiu encontrar alguma outra solução mais precisa, compartilhe conosco!


Compartilhe esse conteúdo!

Mais Populares

Veja os nossos conteúdos mais acessados.