Ir ao conteúdo
  • Cadastre-se
Jeff54

Navegadores - Identificação em PHP e Redirecionamento

Recommended Posts

Olá a todos,

Tenho algum conhecimento em HTML e estou iniciando em PHP.

Meu problema é o seguinte : Quero que somente os principais navegadores acessem meu site, como o IE, FF, Safari, Chrome e Opera. Isso está ocorrendo pois alguns navegadores, pouco usados, não obedecem a tag <noscript>, e isso está me causando problemas com um indivíduo que insiste em ficar postando propagandas no meu site. Já usei um script que pega o IP, mas como o IP dele é dinâmico, fica difícil barrá-lo dessa forma.

Bom, caso não seja nenhum dos principais navegadores ( já li que todos esses citados obedecem o "noscript" ), Eu quero redirecionar para outra página. Sei que o comando deve ser simples, mas como disse, estou começando em PHP. Já tentei o return, break, mas não funcionou.

Meu Script está assim :

<?php

if(strstr($_SERVER["HTTP_USER_AGENT"],'Opera') ||

strstr($_SERVER['HTTP_USER_AGENT'],'MSIE') ||

strstr($_SERVER['HTTP_USER_AGENT'],'Mozilla') ||

strstr($_SERVER['HTTP_USER_AGENT'],'Chrome') ||

strstr($_SERVER['HTTP_USER_AGENT'],'Safari') || ))

{

[COLOR="Red"]Que comando Eu coloco aqui para que o sistema pule para a próxima abertura do PHP ( <?php -> localizado mais abaixo ) [/COLOR]

else ( [COLOR="Red"]Caso não seja nenhum dos navegadores acima Eu redireciono para a pagina : Guestb210.html, ou seja :[/COLOR]

header("Location: Guestb210.html");

exit;

}

?>

AQUI COMEÇA OUTRO COMANDO PHP NA MESMA PÁGINA :

<?php

echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';

blá blá blá, etc

?>

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é mais fácil (e deixa o código menos poluído) fazer a condição ao contrário ?

"SE o navegador for diferente de Opera, MSIE, Mozilla, Chrome e Safari ENTÃO não deixa passar"


if(!strstr($_SERVER["HTTP_USER_AGENT"],'Opera') && !strstr($_SERVER['HTTP_USER_AGENT'],'MSIE') && !strstr($_SERVER['HTTP_USER_AGENT'],'Mozilla') && !strstr($_SERVER['HTTP_USER_AGENT'],'Chrome') && !strstr($_SERVER['HTTP_USER_AGENT'],'Safari')){

header("Location: Guestb210.html");

exit;

} else {

// Exibe o site normal.. Na verdade, nem precisaria do else, mas enfim..

}

?>

Outra opção:


$navegador = get_browser();
if(!in_array($navegador->browser, Array('Opera', 'MSIE', 'Mozilla', 'Chrome', 'Safari')){

header("Location: Guestb210.html");
exit;

}

?>

REF: http://www.php.net/manual/en/function.get-browser.php

PS: Ainda assim acho que é gambiarra.. o certo é você tratar o POST enviado pelo usuário (independente do navegador) pra impedir o conteúdo.. não entendi o seu problema direito..

PS2: Eu estou quase certo que é possível burlar essa verificação também. Como falei acima, o correto é tratar o POST.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Não é mais fácil (e deixa o código menos poluído) fazer a condição ao contrário ?

"SE o navegador for diferente de Opera, MSIE, Mozilla, Chrome e Safari ENTÃO não deixa passar"


if(!strstr($_SERVER["HTTP_USER_AGENT"],'Opera') && !strstr($_SERVER['HTTP_USER_AGENT'],'MSIE') && !strstr($_SERVER['HTTP_USER_AGENT'],'Mozilla') && !strstr($_SERVER['HTTP_USER_AGENT'],'Chrome') && !strstr($_SERVER['HTTP_USER_AGENT'],'Safari')){

header("Location: Guestb210.html");

exit;

} else {

// Exibe o site normal.. Na verdade, nem precisaria do else, mas enfim..

}

?>

Outra opção:


$navegador = get_browser();
if(!in_array($navegador->browser, Array('Opera', 'MSIE', 'Mozilla', 'Chrome', 'Safari')){

header("Location: Guestb210.html");
exit;

}

?>

REF: http://www.php.net/manual/en/function.get-browser.php

PS: Ainda assim acho que é gambiarra.. o certo é você tratar o POST enviado pelo usuário (independente do navegador) pra impedir o conteúdo.. não entendi o seu problema direito..

PS2: Eu estou quase certo que é possível burlar essa verificação também. Como falei acima, o correto é tratar o POST.

:)Cara, Valeu!!! Testei agora e deu certo. Muito obrigado pela ajuda. Claro que é mais fácil tratar com a condição : "Se for diferente de", só que Eu ( como iniciante ) não conhecia qual o comando usar no PHP. Mais uma vez brigadão!!!!! :)

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, no início o Script funcionou bem. Fiz um teste com um navegador e a crítica funcionou. Mas vou aproveitar e deixar aqui dois fatos que ocorreram :

1) Baixei mais alguns Navegadores pouco conhecidos e fiz um novo teste. Notei que alguns deles são quase que uma cópia dos mais conhecidos. Tanto que fui configurar o Javascript de um deles e apareceu exatamente a página de edição do Internet Explorer!!! Como exemplo cito :

a) TheWorld 3 - Similar ao IExplorer

B) SuperBird - Similar ao Firefox

c) Maxthon Cloud Browser – Similar ao Chrome

d) AvantBrowser – +- Similar ao IExplorer

Todos esses não foram criticados pelo Script e passaram como se fossem navegadores conhecidos. É como se a crítica os identificasse como 'MSI', 'Chrome', 'FF' ou 'Safari'.

Assim, pergunto : Será que existe um comando em php que critica essas similaridades também ? Talvez a pergunta seja um pouco tola, mas PHP é muito vasto e talvez exista algo que se possa fazer.

2) Notei que o segundo Script ( segue o mesmo mais ao final ) que critica os navegadores que não sejam os mais usados e conhecidos, dá um erro ao ser usado, ou seja, apareceu o aviso :

Parse error: syntax error, unexpected '{' in /home/vhosts/jefferson.freetzi.com/formail-jeff.php on line 14.

Pelo que entendi, existe uma chave "{" inesperada !!!! Mas mesmo Eu que mal conheço PHP, sei que ela é necessária!!!! Esse erro Eu não entendi.

O Código é :



$navegador = get_browser();
if(!in_array($navegador->browser, Array('Opera', 'MSIE', 'Mozilla', 'Chrome', 'Safari')){

header("Location: Guestb210.html");
exit;

}

?>

Mais uma vez agradeço por qualquer ajuda.

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como te falei anteriormente, é errado verificar qual é o browser pois isso é uma identificação enviada pelo próprio browser e ele pode enviar o que quiser..

Quanto ao segundo código.. eu errei, fiz direto aqui no fórum.. falta um ) no final, antes da {..

$navegador = get_browser();
if(!in_array($navegador->browser, Array('Opera', 'MSIE', 'Mozilla', 'Chrome', 'Safari'))[B][COLOR="Red"])[/COLOR][/B]{

header("Location: Guestb210.html");

O que você pode tentar é debugar a variável $navegador e ver se tem alguma propriedade que lhe ajude a identificar o browser (Como versão, por exemplo).

$navegador = get_browser();
var_dump($navegador);

Não é mais fácil tratar o POST do que baixar 209182398132 navegadores pra testar?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Como te falei anteriormente, é errado verificar qual é o browser pois isso é uma identificação enviada pelo próprio browser e ele pode enviar o que quiser..

Quanto ao segundo código.. eu errei, fiz direto aqui no fórum.. falta um ) no final, antes da {..

$navegador = get_browser();
if(!in_array($navegador->browser, Array('Opera', 'MSIE', 'Mozilla', 'Chrome', 'Safari'))[B][COLOR="Red"])[/COLOR][/B]{

header("Location: Guestb210.html");

O que você pode tentar é debugar a variável $navegador e ver se tem alguma propriedade que lhe ajude a identificar o browser (Como versão, por exemplo).

$navegador = get_browser();
var_dump($navegador);

Não é mais fácil tratar o POST do que baixar 209182398132 navegadores pra testar?

Ok, vou tentar detalhar mais a identificação dos navegadores e assim fazer o script ser mais exigente.

O segundo Script agora funcionou bem com o acréscimo da ")" que Você observou.

Quanto ao Post do indivíduo que insiste em colocar propagandas no meu site, o que ele faz é driblar os outros scripts que coloquei lá, por exemplo, a pessoa tem que preencher todos os campos e na mensagem não pode usar html. Para tanto fiz um sisteminha que impede de colocar várias coisas no campo texto, como "http://" , "www", "<a href=", etc, pois o sujeito ficava colocando o endereço dos seus sites de vendas.

Como ele dribla? Ele simplesmente DESLIGA o javascript e tudo passa batido sem criticar nada!!!! Daí a necessidade de usar a tag <noscript>, comentada no meu primeiro Post. Mas como alguns navegadores não obedecem essa tag, o indivíduo estava conseguindo colocar suas propagandas no meu site ( na verdade é o meu Livro de visitas ).

Há algum tempo atrás, quase todo dia tinha propagandas dele no meu Guestbook, mas já consegui diminuir muito essa frequência. Tenho certeza de que o sujeito agora vai desistir, pois estou dificultando a ação dele com os Scripts aqui deixados.

Se houver alguma sugestão, agradeço. Mas já valeu a ajuda

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, vamos por partes.

Primeiro, quero fixar algo na sua mente: PHP é server-side, Javascript é client-side. Tendo isso em mente, entenda que não importa o que ele faça (como desabilitar o Javascript, usar outro navegador ou espernear), se você verificar os dados no server-side (PHP), ele não vai conseguir burlar nada!

Você fala de propagandas mas não se preocupou com a segurança de seus visitantes? E se ele colocasse um código javascript malicioso?

Tendo em mente que o próprio PHP cuidará do POST, existe uma simples função capaz de resolver todo seu problema:

http://php.net/manual/en/function.strip-tags.php

Basta utilizar:


$_POST['mensagem'] = strip_tags($_POST['mensagem']);

// Inserir o $_POST['mensagem'] no banco de dados

E pronto! :) todos as tags html, php, vão ser removidas. Claro, ainda é bom ter em mente outras preocupações, como por exemplo SQL Injection.

Recomendo que estude: SQL Injection e Ataques XSS.

O mais provável é que seja um bot de propagandas, é normal bots 'vasculharem' a internet e postarem propagandas aonde conseguirem.

PS: A paranoia de desenvolver algum site pra qualquer outro navegador é demais também.. a quantidade de usuários de "outros navegadores" é tão baixa que não vale a pena o esforço. Claro, desde que eles estejam seguros (e isso não depende do navegador deles)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A vantagem de usar PHP é essa mesma : O Servidor analisa, independente de qualquer artifício que o usuário tente ou navegador que use.

Vou ler o Manual indicado - string strip_tags - para aprender mais um pouco, além, é claro, do SQL injection e XSS.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem levantar esse tópico já há muito não acessado.

Neste Fórum houve orientações sobre a maneira mais precisa de trabalhar ( em PHP ) sobre o Post de quem visita um site com permissão de deixar mensagens num site. Justifico a postagem apenas como opção para aqueles que quiserem saber como barrar o Opera 11 que não obedece a TAG 'noscript', e que alguns usuários ainda o usam, justamente para burlar exigências de preenchimento de um 'form' de mensagem, como por ex. um Livro de Visitas, que foi o meu caso.

Assim sendo, deixo aqui o Script que um Programador chamado Mauricio fez gratuitamente para mim. Sinto-me na obrigação ( mesmo que não seja relevante para a maioria dos que aqui participam para tirar suas dúvidas ) de também deixar público tal script, pois penso que devemos oferecer aos outros aquilo que de graça recebemos. Se a Moderação achar conveniente tirar o endereço dessa pessoa, entenderei os motivos :

==========

<?php

// Código enviado pelo Programador Maurício para barrar o Opera 11

// Finalmente esse Script deu certo !!!

// mauricioprogramador.com.br

$navegador_usado = $_SERVER["HTTP_USER_AGENT"];

if(substr($navegador_usado, 0, 5) == "Opera")

{

$posicao_inicial = strpos($navegador_usado, "Version") +

strlen("Version");

$versao = substr($navegador_usado, $posicao_inicial, 5);

if($versao == "/11.0")

{

header ("Location: A-Página-Que-Você-Quiser.html");

exit;

}

}

?>

==========

Grato pelo oportunidade

Jeff.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×