Ir para conteúdo

POWERED BY:

Arquivado

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

randomuser

[Resolvido] IF e valor vindo de formulário

Recommended Posts

Tenho uma dúvida de como filtrar palavras digitadas em um textfield, antes de inseri-las na tabela.

 

Ex.::

 

A linha abaixo insere a palavra digitada em um textfield anterior no banco de dados.

 

sql = "INSERT INTO tags (palavra) VALUES ('"&request("chave")&"')"
conexao.execute(sql)

 

Gostaria porém de filtrar algumas palavras antes de inserir na tabela, para evitar que o usuário digite palavrões ou algo do tipo.

 

Tentei usar.::

 

if ('"&request("chave")&"') <> "palavra1" OR ('"&request("chave")&"') <> "palavra2" then
sql = "INSERT INTO tags (palavra) VALUES ('"&request("chave")&"')"
conexao.execute(sql)
end if

 

Onde "palavra1" e "palavra2" seriam as palavras a serem ignoradas antes de inserir na tabela, mas não funcionou, as palavras são inseridas mesmo assim.

 

Alguém pode me dar uma força ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother,

 

eu acho q você deverá fazer uma validação no campo texto com javascript

antes de gravar no banco.

 

 

aqui no forum tem um exemplo:

http://forum.imasters.com.br/index.php?/topic/14307-filtro-de-palavroes/

 

esse funciona:

 

<script>
function envia(){

// crie (na ordem) uma var para cada palavrão
var a1 = "palavra1"
var a2 = "palavra2"
var a3 = "palavra3"
var a4 = "palavra4"

// cria a var txt com os valores do campo (textarea)
txt = document.form.valores.value;

// aqui, faço uma verificação com as 4 var criada acima
// adicionando mais var(a1, a2, a3, a4,...) aumente também a indexação
if (txt.indexOf(a1) != -1 || txt.indexOf(a2) != -1 || txt.indexOf(a3) != -1 || txt.indexOf(a4) != -1){

// retornamos o alerta e paramos a ação
alert("Você usou uma palavra imprópia para o site, corrija");
return false;
}
}
</script>


<form name="form">
<textarea name="valores" cols="20" rows="6"></textarea>
<input type="submit" onClick="return envia()">
</form> 

 

 

assim sendo você coloca o foco no campo q foi digitada a palavra proibida.

Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda Amigo.

 

Antes de criar o tópico eu procurei pela internet e encontrei também um método de validar por JavaScript, o problema da validação por JS é que se o usuário desabilitar o JavaScript ou olhar o código fonte poderá "burlar" o sistema de filtragem.

 

Encontrei um método que fazia a verificação antes de inserir na tabela, mas era por PHP, tentei adequar para ASP mas não funcionou.

 

Vou procurar uma maneira de fazer essa verificação por ASP mas caso não consiga vou usar por JavaScript mesmo.

 

Você sabe me dizer porque o modo que eu coloquei no Post não funcionou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilize o replace:

 

sql = "INSERT INTO tags (palavra) VALUES ('"&replace(replace(request("chave")," palavra1",""),"palavra2","")&"')"
conexao.execute(sql)

 

Cara, estava testando agora sua primeira sugestão. Funcionou de primeira, salvou minha vida, rs. Obrigado.

 

A função em PHP era bem parecida, ela criava uma string com os dados vindos do campo e uma pattern com diversas palavras e respectivas substituições. O Filtro então era feito utilizando preg_replace.

 

preg_replace($palavras, $substituicoes, $string);

 

Obrigado denovo pela ajuda amigo!

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que funcionou.

 

Funcionou sim, a palavra é substituída de primeira.

 

E uma última dúvida, pretendo usar sua sugestão para substituir palavrões, como posso fazer um replace para substituir cerca de 10 palavras por exemplo ? Devo ir adicionando a palavra e a substituição após a palavra2 ("palavra2","", "palavra3","", "palavra4","")ou devo criar uma nova chave replace para cada palavra ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize esta função:

 

function limpa(str,palavras)
palavras = split(palavras,",")
for each p in palavras
str = replace(str,p,"")
next
limpa = str
end function

 

E para usar, use assim:

 


texto = limpa(request.form("campo"),"pudim,arroz,feijão,sorriso")

 

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize esta função:

 

function limpa(str,palavras)
palavras = split(palavras,",")
for each p in palavras
str = replace(str,p,"")
next
limpa = str
end function

 

E para usar, use assim:

 


texto = limpa(request.form("campo"),"pudim,arroz,feijão,sorriso")

 

 

Espero ter ajudado.

 

Muito Boa essa função, economiza bastante tempo no meu caso que preciso trocar várias palavras.

 

Antes da sua resposta estava testando como implementar o replace do post anterior, consegui fazer múltiplas palavras inserindo uma nova chave de replace.::

 

sql = "INSERT INTO tags (palavra) VALUES ('"&replace(replace(replace(replace(replace(request("chave"),"palavra1",""),"palavra2",""),"palavra3",""),"palavra4",""),"palavra5","")&"')"

 

Acima também funcionou perfeitamente.

 

Agradeço novamente a ajuda amigo, tinha passado a madrugada inteira ontem procurando uma solução e essa foi sem dúvida a melhor que encontrei.

 

Abraço.

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.