Ir para conteúdo

Arquivado

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

Jeff123

Formulários com identificação de nomes e suas variações

Recommended Posts

Olá pessoal,

 

Sou novo por aqui. Tenho conhecimentos bem rudimentares em javascript, mas passeando por alguns Fóruns e Sites de Webmasters, copiei e adaptei alguns scripts, e assim consegui fazer um Form que funciona razoavelmente.

 

Gostaria de uma ajuda no meu formulário do Livro de Visitas do meu site. Quem quiser dar uma conferida, é só acessar :

 

http://jefferson.freetzi.com/Guestb302.shtml

 

Tem um sujeito que está sempre postando propagandas de remédios no meu "Guestbook" e sempre usa o mesmo nome com algumas vaiações. Então a idéia é, assim que ele clicar no botão "Enviar" ( Botão que finaliza a postagem no livro ) apareça uma janela de alerta dizendo a esse ....sujeito.... que, naquela página, ele não pode fazer isso. À parte, Já tenho a página em PHP que capta o nome, e-mail, cidade e mensagem. Também já tenho os scripts que criticam campos vazios, e-mails incorretos, etc, além de já ter também uma função que só deixa entrar na página se o javacript do Navegador estiver ativado, ou seja, o velho e bom "<noscript>"

 

Resumindo a parte que interessa, em javascript, o código está assim :

 

function validar()
{

....

........

 

if(document.FORM.NOME.value == "Smith") {
alert("Your IP has been identified ! \n\nYou are not welcome here !! \n\nOur providers located the address of your Internet Protocol to request measures to specialized Police Crackdown on cyber crimes in Brazil !!! \n\n")
return false
}

..............

.........

 

Bom, o que Eu gostaria de saber é se há uma maneira de fazer o script, além de identificar o nome "Smith" ( seja começando por letra maiúscula ou minúscula -> Smith ou smith ), identificar também qualquer coisa que varie a partir da palavra "Smith", ou seja, "Smith123" ; "Smithabc" ; e por aí vai.

 

É como se fosse possível fazer um script assim :

 

if(document.FORM.NOME.value == "Smith + qualquer coisa") { alert ........................

 

Já li sobre "Expressões Regulares", mas não consegui adaptar aos scripts do Form que já tenho e que deram um trabalhão danado para fazer as adaptações que preciso.

 

Agradeço desde já por qualquer ajuda.

 

Jeff123

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, sugiro tu implementar um captcha nesse teu formulário, assim o cara não vai conseguir postar.

Tentar validar o nome dele, não vai impedir ele de mudar o nome e continuar spameando.

E cara, "Livro de Visitas"? Em pleno 2014?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, sugiro tu implementar um captcha nesse teu formulário, assim o cara não vai conseguir postar.

Tentar validar o nome dele, não vai impedir ele de mudar o nome e continuar spameando.

E cara, "Livro de Visitas"? Em pleno 2014?

 

Obrigado pela resposta, Marion.

 

Bom, depois que implementei a página com alguns scripts que barram várias coisas que esse sujeito vinha postando no meu Guestbook, ele até que ele deu um tempo, mas depois de alguns meses, ele voltou e continuou me provocando com postagens bem inadequadas.

 

Mas pelo que percebi, o nome "Smith" parece ser uma espécie de marca registrada conhecida nesse submundo de comércio ilegal de remédios e concluí que ele não muda o nome "Smith", ele só acrescenta ... "123", "tkk", etc, depois e junto com o nome "Smith", conforme comentei no meu primeiro post.

 

Ele não usa "robots" para divulgar suas propagandas. É ele mesmo quem entra na minha página e posta suas bobagens, agora com sentido de provocação. Se Eu usar um "Captcha", ele vai continuar postando do mesmo jeito.

 

Nota : Meu site não é comercial, é pessoal, hospedado num provedor free. Não sabia que Livro de Visitas está em desuso, hoje em dia !!! É verdade que, em média, só 2 ou 3 pessoas por mês, dão suas opiniões, criticando ou elogiando o site. Antes era bem mais, mas gosto de ler sobre o que as pessoas pensam sobre o meu trabalho. Isso me ajuda a melhorar e a pesquisar mais. Acho que é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só. Algum outro usuário aqui do fórum pode me corrigir, mas acho quase impossível um cara da China ficar entrando no site para postar propaganda.

Como você descobriu que ele não usa um robô?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que sei, ele viaja para vários lugares, seja da Europa, Ásia ou América, pois através de um script PHP, obtenho seu IP, País, Cidade, e também descobri que ele usa um Navegador e indexador Chinês, chamado "Baidu".

 

Já li em alguns Fóruns que, pessoas que querem espalhar postagens sobre suas mercadorias, usam principalmente o Baidu, que acha facilmente páginas "Form" que permitem colocar mensagens.

 

Esse indexador é mal visto pela comunidade ligada ao assunto, pois não respeita certas regras de indexação, mesmo Você deixando, no início da página, um <meta Name="robots" content="noindex">.

Ou seja, o sujeito usa de todas as formas, limpas ou não, para divulgar seu comércio ilegal de remédios.

 

Sei que ele não usa robots, pois agora que ele está batendo em várias barreiras que coloquei, ele, por uma simples questão de insistência, orgulho ou por não admitir que perdeu a batalha, escreve coisas totalmente diferentes umas das outras, muda sempre TODOS os campos : Nome ( aqui ele sempre começa com "Smith" ), Cidade, Pais, e na Mensagem, ele escreve insinuações, ironias, e bobagens que nem vale a pena dizer aqui. Pelo que sei, os robots usam um padrão de preenchimento e assim sempre escrevem a mesma coisa, ou com poucas variações. A menos que o meu raciocínio a esse respeito esteja errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu caro,

 

Já verificou se ele usa sempre o mesmo IP?

 

Neste caso, bloqueia o acesso dele pelo o IP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wilnet,

 

Sim, já verifiquei e já até fiz uma lista de IPs que se repetiam e bloqueei tudo com o código :

 

 

---------------------

var bannedips=
["37.221.174.111", "41.82.103.6", "46.21.144.51", "46.21.144.52", "68.235.36.193", "77.249.40.94", "82.118.16.228", "94.19.191.183", "89.248.165.143", "91.121.170.197", "91.207.20.7", "91.241.14.16", "93.114.45.148", "93.182.175.173", "94.102.52.176", "94.102.52.178", "94.242.237.6", "94.242.237.51", "94.242.237.54", "97.107.99.72", "101.255.32.62", "113.212.70.163", "113.212.70.171", "117.27.152.203", "119.254.88.53", "124.238.238.50", "177.220.201.4", "178.32.218.212", "178.137.165.122", "178.249.14.4", "182.19.75.89", "188.92.75.244", "183.136.146.110", "186.247.11.66", "188.143.234.127", "188.143.232.31", "188.143.232.211", "195.62.25.214", "198.27.83.187", "211.151.187.170", "211.167.112.17", "216.152.252.91", "216.152.252.99", "218.29.97.153"]

var ip = '<!--#echo var="REMOTE_ADDR"-->'


var handleips=bannedips.join("|")
handleips=new RegExp(handleips, "i")

if (ip.search(handleips)!=-1){

alert("You are not welcome here. Click on OK and leave me alone!")
window.location.replace("http://jefferson.freetzi.com/Guestb301.html")
}

---------------------

 

Fiz isso tanto com javascript quanto com PHP. Mas como ele é viajante, a cada lugar que ele "pousa", o IP será diferente. Pelo menos sei que alguns dos IPs acima sempre se repetiam ( talvez fosse do local de trabalho dele, dos seus comparsas, sei lá ). Isso só dificultou um pouco a vida dele, mas não impediu que continuasse a me perturbar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Ele sempre varia o texto da mensagem, coloca um e-mail qualquer, mas o nome sempre começa com "Smith".

 

Como disse antes : "...ele, por uma simples questão de insistência, orgulho ou por não admitir que perdeu a batalha, escreve coisas totalmente diferentes umas das outras, muda sempre TODOS os campos : Nome ( aqui ele sempre começa com "Smith" ), Cidade, Pais, e na Mensagem, ele escreve insinuações, ironias, e bobagens que nem vale a pena dizer aqui."

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cara não precisa viajar pra postar de lugares diferentes, um simples proxy já faria isso. Quanto a você achar que ele preenche manualmente... Acho dificil... Eu acho mais simples e facil fazer um script que poste pra mim automaticamente (mesmo que seja uma mensagem editável a qualquer momento). Bem como fazer um script que faça uma varredura nos resultados do Baidu para buscar formulários sem validação.

Sendo assim, tente, antes de implementar ainda mais verificações, adicionar um captcha ao seu formulário. Existem boas alternativas ao captcha textual maluco, como o VisualCaptcha e o HashCash.


De qualquer forma, segue uma verificação simples se o nome do cara possui smith (que foi sua dúvida inicial e, incrivelmente, ninguém se dispôs a postar):

var user = document.FORM.NAME.value);
isSmith = (user.toLowerCase().search(/smith/) > -1);
if(isSmith) {
// Bloqueia se for smith
}

O problema de validações por nome é que você pode acabar bloquendo um usuário real que se chame Smith.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta Rafael,

 

Realmente o cara não precisa viajar para vários lugares só para ficar postando com IPs diferentes.

O que Eu imagino é que o "trabalho" dele seja mesmo de uma espécie de representante de vendas. Ele só vai viajar mesmo por causa do trabalho. Aí, ele aproveita, e sai postando suas "vendas" de onde ele estiver.

 

Bom, como disse antes, tenho noções bem rudimentares de Javascript. Tentei adaptar seu script para a minha página, mas, em função do meu despreparo, deu problema e o sistema de validação não criticou nada e deixou passar qualquer coisa que se postasse. Até se não postasse nada, ou seja, se deixasse os campos em branco, o sistema aceitava e ia para a página que confirmava o envio.

 

Para esclarecer como está a estrutura de validação do Form, vou postar aqui o início como está no original e, em seguida, colei a minha tentativa de encaixar a sua sugestão.

 

O Script de validação original está assim :

 

------------------------

 

<script>

function validar()

{

if(document.FORM.NOME.value == "") {
alert("Você deve preencher o campo : Nome !")
return false
}

if(document.FORM.NOME.value == "Smith") {
alert("Your IP has been identified ! \n\nYou are not welcome here !! \n\nOur providers located the address of your Internet Protocol to request measures to specialized Police Crackdown on cyber crimes in Brazil !!! \n\n")
return false
}

..................

...........

 

-----------------------------

 

E por aí vai.

 

 

Bom, tentei encaixar a sua sugestão assim :

 

<script>

function validar()

{

 

if(document.FORM.NOME.value == "") {
alert("Você deve preencher o campo : Nome !")
return false
}

 

// Aqui vai a sua sugestão de barrar o nome Smith :

 

var user = (document.FORM.NAME.value);
isSmith = (user.toLowerCase().search(/smith/) > -1);

if(isSmith) {

alert("Your IP has been identified ! \n\nYou are not welcome here !! \n\nOur providers located the address of your Internet Protocol to request measures to specialized Police Crackdown on cyber crimes in Brazil !!! \n\n")
return false

}
...........................

..............

 

----------------------------

 

Repito : Da forma como tentei, deu problema e o sistema de validação passou batido, não criticou nada e deixava passar qualquer coisa que se postasse. Claro que o erro é meu por não saber onde colocar exatamente o seu script.

 

Pergunto : Onde e como Eu encaixo o seu script na página de validação?

 

Agradeço desde já por sua atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um errozinho no meu código... acabei deixando um ) perdido.

var user = document.FORM.NAME.value);

De qualquer forma, eu vi que você corrigiu isso, adicionando um ( no inicio.

var user = (document.FORM.NAME.value);

Não consigo entender porque está falhando. Está no lugar certo. Tente dar um console.log ou alert nas váriaveis para debugar o que esta sendo verificado.

Segue um JSFiddle com a verificação funcionando: Link

 

 

 

Ps. Podes remover os parênteses. deixando somente:

var user = document.FORM.NAME.value;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rafael,

 

Legal saber da existência de sites que testam o Script. Já coloquei a página ( http://jsfiddle.net/rafasirotheau/bzkzg/ ) nos meus favoritos.

 

Estou fazendo alguns testes e talvez Eu descubra onde está o problema, já que Você disse que Eu coloquei a sua sugestão na parte certa do meu script.

 

Se Eu conseguir descobrir o que deve ser ajustado no "novo" Script ( postado por mim em 11 julho 2014 - 19:28 ), Eu demonstro aqui.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.