Ir ao conteúdo
  • Cadastre-se

Navegadores - Identificação em PHP e Redirecionamento


Jeff54

Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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.

Link para o comentário
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!!!!! :)

.

Link para o comentário
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.

.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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?

Link para o comentário
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

.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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)

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • mês depois...

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.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...