Identificar navegador apenas com PHP

Identificar um navegador não é uma tarefa 100% segura, pois, em alguns casos pode-se configurar o navegador para que não seja identificada a versão entre outras informações, outro fator é o firewall que pode bloquear estas informações. Dentre os diversos navegadores existentes temos outro fator que poderia impedir a identificação correta do navegador, este fator

John-Henriquesexta-feira, 20/07/200717

Identificar um navegador não é uma tarefa 100% segura, pois, em alguns casos pode-se configurar o navegador para que não seja identificada a versão entre outras informações, outro fator é o firewall que pode bloquear estas informações.

Dentre os diversos navegadores existentes temos outro fator que poderia impedir a identificação correta do navegador, este fator é conhecido como atualização de versão. Sim, sempre que um software é atualizado algumas informações podem ser trocadas, até mesmo configurações.

Enfim, identificar um navegador não é uma ação segura.

Ao contrario do que muita gente pensa é possível identificar o navegador do usuário utilizando apenas PHP, veja como isso pode ser realizado.

Muitos [bp]programadores[/bp] conhecem a variável de servidor $_SERVER que é um array contendo informações sobre o servidor e a conexão com o mesmo, porém poucos a usam ao ponto de facilitar o desenvolvimento de seus sistemas e sites.

Dentre as informações contidas em $_SERVER temos HTTP_USER_AGENT que informa o conteúdo do header User-Agent. O retorno desta função pode ser algo como o exemplo abaixo:

Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5

A partir desta informação já é possível saber qual é o navegador do usuário e escolher qual o estilo ou pagina ele deve ser redirecionado, mas, caso você queira melhorar a verificação para saber se o navegador é compatível com seu site, você pode utilizar a função get_browser() que tenta retornar as funções [bp]disponíveis pelo navegador[/bp].

Você pode utilizá-la da seguinte forma

// Informa ao get_browser() qual o header User-Agent a ser analisado
$browser = get_browser($_SERVER['HTTP_USER_AGENT']);

// Faz um loop para percorrer os índices do array
foreach ($browser as $name => $value) {

// Imprime os valores
echo “$name $value
n”;
}
?>

O exemplo anterior retornará algo similar a isto:

browser_name_regex ^mozilla/5.0 (windows; .; windows nt 5.1; .*; rv:1.8.*) gecko/.*$
browser_name_pattern Mozilla/5.0 (Windows; ?; Windows NT 5.1; *; rv:1.8*) Gecko/*
parent Mozilla 1.8
platform WinXP
browser Mozilla
version 1.8
majorver 1
minorver 8
css 2
frames 1
iframes 1
tables 1
cookies 1
backgroundsounds
vbscript
javascript 1
javaapplets 1
activexcontrols
cdf
aol
beta 1
win16
crawler
stripper
wap
netclr

Maiores informações sobre estas funções
Variáveis pré definidas
get_browser()

Termos relacionados:

  • verificar navegador PHP
  • navegador php
  • php navegador
  • identificar browser php
  • php verificar navegador
  • identificar navegador php
  • identificar navegador
  • obter nome do navegador com php
  • php identificar navegador
  • descobrir navegador php

Este post foi útil? Retribua clicando no botão


17 comentários »

  1. Cézar sexta-feira, 30/01/2009 em 19:02 - Reply

    é só ñ vi essa função funcionar!

    Warning: get_browser() [function.get-browser]: browscap ini directive not set in /hom.br/brow.php on line 2

    Warning: Invalid argument supplied for foreach() in /hjhj.com.br/brow.php on line 3

    • John-Henrique sábado, 31/01/2009 em 07:32 - Reply

      @ CÉZAR
      A função está desabilitada no teu server, você precisa ativar a diretiva no php ini para ela funcionar, Veja no manual do PHP http://php.net/get_browser

      Falopa!

  2. CBT quinta-feira, 17/09/2009 em 09:48 - Reply

    Opaa

    kara… muito bonito e simples!
    PENA QUE NÃO FUNCIONA!!

    • John-Henrique quinta-feira, 17/09/2009 em 14:25 - Reply

      @ CBT
      Seria muito interessante aprender o que é HTML e o que é PH, pra somente depois dizer que não funciona.

      Falopa!

  3. Carlos Britto quinta-feira, 29/10/2009 em 21:21 - Reply

    meu amigo, realmente não funciona, perdi meu tempo testando e nada,, ao invés de vc ficar estressado deveria tirar este código ou arruma-lo para outras pessoas como eu não vir aqui perder o tempo tbm, ok?

  4. barracuda mocambicana sábado, 27/02/2010 em 09:45 - Reply

    Galera funfa sim e muito bem!!

    • Juliano sexta-feira, 09/04/2010 em 13:30 - Reply

      Aprenda primeiro o que é PHP antes de falar que não funcionar!

  5. Juliano sexta-feira, 09/04/2010 em 13:31 - Reply

    Funcionar certinho

  6. rudimar remontti sexta-feira, 30/04/2010 em 08:57 - Reply

    Encontre no seu php.ini a linha

    ;browscap = extra/browscap.ini

    tire o ponto e virgula, e restarte o apache, é mais facil q vcs ficarem brigando :D

  7. Bradock quinta-feira, 29/12/2011 em 18:26 - Reply

    o que o @rudimar colocou e quase isso,
    faltando arrumar o diretorio ai, usando o Wamp 2.2 talvez esteja dando um erro Cannot open’extra/browscap.ini’ for reading

    faça o seguinte altere assim

    browscap = ../../php/php5.3.8/extra/browscap.ini

    claro que terá q baixar o arquivo browscap.ini pra php

    ai o link
    http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI

    dentro da pasta php5.3.8 crie a pasta extra e jogue esse arquivo la sem o php_
    inicial

    pronto ai e so

    $browser = get_browser();
    foreach ($browser as $name => $value)
    {
    echo “$name $value \n”;
    }

    nao precisar usar o $_SERVER dentro do metodo get_browser()

    espero que ajude, acho q ao inves de so falar q nao funciona, ou falar q funciona, mas nao mostrar como solucionar nao e a solução, braçaooo

    • John-Henrique quinta-feira, 29/12/2011 em 19:32 - Reply

      @ BRADOCK
      Obrigado por compartilhar a informação. Realmente é uma diretiva comentada e atualmente não é habilitada por padrão. Enfim, na época que o post foi escrito get_browser() atuava em PHP 4 e era necessário informar o user agent, como no exemplo do post, atualmente não é mais mesmo assim o PHP.net continua informando esta mudança veja a nota http://br.php.net/get_browser

      Falopa!

  8. Bradock sábado, 31/12/2011 em 10:01 - Reply

    @john foi malz ai cara, nem vi a data do post, vacilei, malz mesmo

    d qualquer forma pode ser q ajude alguem
    falopa pro c tbem hehe

  9. Bradock domingo, 01/01/2012 em 17:49 - Reply

    poww @John aproveitando a deixa vc sabe solucionar isto?
    dando um
    var_dum(get_browser())
    na lista q e exibida, gostaria de pegar o value somente desta linha
    browser: Netscape

    consegue ??
    grato desde já

Opine também » Coloque sua foto no comentário