Atualizado em 29 de Março de 2013

Como identificar navegador com PHP

A incompatibilidade entre os navegadores ainda é uma realidade para todos os desenvolvedores (infelizmente), porém, em alguns casos não temos como fugir desta realidade, por isso algumas vezes e importante identificar o navegador que o usuário esta utilizando.

A super variável $_SERVER tem várias utilidades uma delas e poder identificar o navegador que originou a requisição ao servidor, como mostra o srcript PHP no exemplo abaixo:

<?php

$lista_navegadores = array('MSIE', 'Firefox', 'Chrome', 'Safari'); //Aqui devemos colocar a lista dos navegadores
$navegador_usado = $_SERVER['HTTP_USER_AGENT'];


foreach($lista_navegadores as $valor_verificar)
 {
  if(strrpos($navegador_usado, $valor_verificar))
  {
   $navegador = $valor_verificar;
  }
 }

echo "O navegador usado é ".$navegador;

?>

Neste exemplo acima usamos apenas quatro navegadores (os mais conhecidos), você pode adicionar os demais com facilidade.


"Esta dica te ajudou de alguma forma?" Então ajude outras pessoas compartilhando este conteúdo com seus amigos! =)


Até a próxima.

Comentários

Sua foto do perfil

Elias

aqui não funcionou, retornou safari, tanto no chrome quanto no ie

30 de Setembro de 2015 - 19:04

Sua foto do perfil

Mauricio Programador

Olá Elias,

Tente o link abaixo, é um post mais novo.

Verificar Versão do Navegador do usuário com PHP

Abraço.

01 de Outubro de 2015 - 10:01

Sua foto do perfil

Francisco das Chagas

Como seria o código para detectar o navegador e definir um arquivo .css para ele? Por exemplo: detectar o Firefox e colocar como stylesheet o arquivo firefox.css

08 de Julho de 2015 - 19:44

Sua foto do perfil

Mauricio Programador

Olá Francisco,

A variável $navegador guarda a valor retornado por cada navegador, então basta fazer um if e se o valor retornado for o do Firefox, você chama o css adequando para a questão.

Abraço.

10 de Julho de 2015 - 13:58

Sua foto do perfil

Carlos Alberto Silva Junior

Tenho uma duvida. Como fazer detectar o browser e mostrar um aviso de que ele não é apropriado ao site?

28 de Novembro de 2014 - 01:37

Sua foto do perfil

Mauricio Programador

Olá Carlos,

Para detectar o browser e a dica do post.

Já para enviar um aviso, basta colocar um if ou até um Switch (se for bloquear vários navegadores) e colocar um echo para mostrar a mensagem desejada.

Abraço.

28 de Novembro de 2014 - 09:19

Sua foto do perfil

Weliton Oliveira Bonzi

Boa tarde Maurício, a implementação do código do nosso amigo Charles, funciona perfeitamente. Diante disto gostaria de saber como bloquear o acesso via internet explorer de todas as versões.
Exemplo: Estou desenvolvendo uma intranet, cujo acesso via internet explorer estará vetado. Caso o usuário venha acessar o link da intranet via IE através deste script irá identificar o navegador IE e será redirecionado para uma outra página informando que o IE não é suportado e informando quais navegadores são compatíveis. Estou com dificuldade pra colocar em prática essa ação.
No aguardo

20 de Setembro de 2014 - 12:37

Sua foto do perfil

Mauricio Programador

Olá Weliton,

Você pode fazer algo do tipo assim:

if(strrpos($navegador_usado, 'MSIE'))
{
//Redireciona para pagina de erro
}else{
//Redireciona para pagina certa.
}

Espero que ajude.

Abraço.

22 de Setembro de 2014 - 08:49

Sua foto do perfil

Charles Corrêa

Grande Mauricio

Boa Noite

Após algumas noites sem dormir pensando no assunto, consegui realizar a captura dos navegadores com sua ajuda muito obrigado mesmo (http://www.mauricioprogramador.com.br/posts/verificar-versao-do-navegador-do-usuario-com-php), mas agora vem outra coisa.

Recentemente instalei o maldito lixo explorer 11 pra ver como andava as coisas e me deparei com o seguinte:

ao usar $navegador_usado = $_SERVER['HTTP_USER_AGENT']; era apresentado a seguinte resposta

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

Cara e o código dava navegador desconhecido

Notei que a resposta é semelhante ao firefox

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0

neste caso só adaptei o código conforme a necessidade

$navegador = $_SERVER['HTTP_USER_AGENT'];
echo "$navegador <br>";

if (preg_match('?MSIE ([0-9].[0-20]{1,2})?', $navegador, $matched))
{
$browser_version = $matched[1];
$browser = 'Internet Explorer';
}

if (preg_match('?rv:([0-9\.]+)?', $navegador, $matched))
{
$browser_version = $matched[1];
$browser = 'Internet Explorer';
}

elseif (preg_match('?Opera/([0-9].[0-9]{1,2})?', $navegador, $matched))
{
$browser_version = $matched[1];
$browser = 'Opera';
}
elseif (strrpos($navegador, 'OPR'))
{
$posicao_inicial = strpos($navegador, 'OPR') + strlen('OPR');
$browser_version = substr($navegador, $posicao_inicial, 5);

$browser = 'Opera';
}

elseif (preg_match('?Firefox/([0-9\.]+)?', $navegador, $matched))
{
$browser_version = $matched[1];
$browser = 'Firefox';
}
elseif (preg_match('?Chrome/([0-9\.]+)?', $navegador, $matched))
{
$browser_version = $matched[1];
$browser = 'Chrome';
}
elseif (preg_match('?Safari/([0-9\.]+)?', $navegador, $matched))
{
$browser_version = $matched[1];
$browser = 'Safari';
}
else
{
// browser not recognized!
$browser_version = 0;
$browser = 'Navegador Desconhecido';
}
echo "Navegador Atual: $browser Versão $browser_version";

pronto mais um problema resolvido

espero que o post e a minha dica ajude outros com o mesmo problema

grande abraço e sucesso.


23 de Dezembro de 2013 - 02:06

Sua foto do perfil

Mauricio Programador

Olá Charles,

grande dica, muito obrigado por enriquecer nosso conhecimento, ficamos na espera de um dia estes navegadores criem um padrão heheheehe.


Muito Obrigado, grande abraço e sucesso sempre.

23 de Dezembro de 2013 - 10:30

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER