problema ao detectar browser [RESOLVIDO]

1. problema ao detectar browser [RESOLVIDO]

shoujo
shoujo

(usa Slackware)

Enviado em 05/12/2013 - 12:58h

Olá pessoal, eu desenvolvi um sistema em html5 e php, e alguns recursos necessarios so funcionam no google crome, para nao gerar problemas decidi bloquear os outros navegadores, e ao usuario entrar com um navegador nao permitido, ele diz que o site esta bloqueado e da o link pra download do google crome.

Mas estou enfrentando um problema, tem alguns usuarios que tem o crome, mas mesmo assim o script pega o navegador como se fosse outro:

browsedetect.php:
<?
$useragent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('|Chrome/([0-13\.]+)|',$useragent,$matched))
{
$browser_version=$matched[1];
$browser = 'Chrome';
}
else
{
$browser_version = 0;
$browser= 'other';
}
echo $browse."<br>".$useragent;
?>

index.php:
include ("browsedetect.php");
if ($browser<>"Chrome") {
header("Location: incompatible.php");
}

Ao usar em uma maquina com google crome no windows xp, nao funciona:

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; chromeframe/13.0.782.215)

Ao usar no meu Ubuntu da certinho:
Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36


outros usuarios com windows tambem acessam, inclusive essa maquina com windows xp acessava, mas do nada nao ta acessando, esse script as vezes falha, sera pq?


  


2. Ch

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/12/2013 - 14:20h

Analise a situação:

Olha o agent dos dois:
- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; chromeframe/13.0.782.215) (ERRO)
- Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 (OK)

Olha o preg_match:
preg_match('|Chrome/([0-13\.]+)|',$useragent,$matched) <- a expressão regular quer achar a palavra 'Chrome', mas nas máquinas windows o agente é chromeframe, e linux Chrome. Tem que mudar essa palavra de pesquisa do preg_match. O correto é ele pesquisar pelo pedaço de string 'hrome'.

Mude a expressão do seu preg_match que vai funcionar.



3. Re: problema ao detectar browser [RESOLVIDO]

shoujo
shoujo

(usa Slackware)

Enviado em 05/12/2013 - 18:07h

estranho que no usuario de uma funcionaria funciona normal e no usuario da outra funcionaria nao funciona no mesmo computador com windows xp, e elas compartilham a mesma pasta meus documentos, e o mesmo desktop, so os usuarios que sao diferentes


4. Resolveu?

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/12/2013 - 12:22h

Você mudou? Resolveu? Dê o feedback.

Uma forma de você debugar é colocar o echo antes das condições. Pra você ver como está a variável na hora da condições. Assim você poderá analisar com mais calma e debugar pra ver qual o erro que está ocorrendo.


5. Re: problema ao detectar browser [RESOLVIDO]

shoujo
shoujo

(usa Slackware)

Enviado em 06/12/2013 - 13:39h

eu tentei adicionar as seguintes condiçoes:

elseif(preg_match('|chromeframe/([0-9\.]+)|',$useragent,$matched))
{
$browser_version=$matched[1];
$browser = 'Chrome';
}
elseif(preg_match('|Trident/([0-9\.]+)|',$useragent,$matched))
{
$browser_version=$matched[1];
$browser = 'Chrome';
}

pois o crome da usuaria que nao funciona aparece o agente como cromeframe, e as vezes aparece como Trident

mesmo assim nao funciona




6. Expressão regular

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/12/2013 - 15:02h

Cara,

Quando eu disse que o problema era no preg_match, não era APENAS pra trocar a palavra. A função preg_match utiliza uma expressão regular para fazer uma pesquisa em um conteúdo informado.

Procure resolver o problema estudando o assunto, leia esse conteúdo, muito bom sobre expressões regulares:
http://aurelio.net/regex/guia/



Isso deve resolver:

browsedetect.php:
<?
$useragent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('+[Cc]hrome+',$useragent,$matched))
{
$browser = 'Chrome';
}
else
{
$browser= 'other';
}
echo $browse."<br>".$useragent;
?>


index.php:
<?php
include ("browsedetect.php");
if ($browser<>"Chrome") {
header("Location: incompatible.php");
}
?>



7. Re: problema ao detectar browser [RESOLVIDO]

shoujo
shoujo

(usa Slackware)

Enviado em 12/12/2013 - 15:00h

bom, acho que o problema é o usuario mesmo, deve ser alguma coisa do google crome que o faz pegar com nomes diferentes, lembro que uma vez ele estava sendo reconhecido como netscape '-'
desisti de tentar resolver essa parada, obrigada pela ajuda






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts