Ir para conteúdo

POWERED BY:

Arquivado

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

mvz

Como bloquear caracteres especiais em formulário

Recommended Posts

Olácomo fazer para bloquear caracteres especiais em campos de formulários? Tem alguém inserindo constantemente JSP em um livro de visitas no meu site - site em ASP e banco ACCESS -....preciso evitar que sejam aceitos caracteres como as chaves....Agradeceria muito qualquer ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando for exibir ou inserir no BD use o Server.HTMLEncode na variável, isso irá transformar todos os caracteres especiais em seus respectivos códicos HTML

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente um ReplaceReplace(Request.form("campo"),"[","")Replace(Request.form("campo"),"]","")Replace(Request.form("campo"),"'","")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria bom você conhcer essas duas opções que nossos amigos mandaram.Num sistema mais profissional, seria conveniente você usar o Server.HTMLEncode, pois o cara pode postar qualquer coisa que ele vai ignorar, mas vai exibir. É como você postar HTML aqui no fórum, sacou?E o replace você vai ter que usar bastante. Nesse caso se você não necessita disso, ou precisa que as pessoas coloquem HTML, use só o replace, ai tire o que você quer, tire também as aspas simples, pois dão erro.Abração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente um ReplaceReplace(Request.form("campo"),"[","")Replace(Request.form("campo"),"]","")Replace(Request.form("campo"),"'","")

No caso do Replace...como eu usaria? já tenho na variável um replace:<%=replace(rsrecadostodos.Fields.Item("mensagem"),vbcrlf,"<br>")%>como eu deixaria isso?Obrigado ai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não creio que o replace seja a melhor alternativa, tenta usar Server.HTMLEncode(Valor) mesmo que fará com que seja visualizado exatamente o que foi inserido, entretando será o codigo html dos caracters e não os proprios como por exemplo< = <> = >as chaves acho que ficam a mesma coisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não creio que o replace seja a melhor alternativa, tenta usar Server.HTMLEncode(Valor) mesmo que fará com que seja visualizado exatamente o que foi inserido, entretando será o codigo html dos caracters e não os proprios como por exemplo< = <> = >as chaves acho que ficam a mesma coisa

Ok...mas nunca usei isso, você pode me dar um exemplo de onde e como eu uso o HTMLencode baseado na variável que eu tenho?:<%=replace(rsrecadostodos.Fields.Item("mensagem"),vbcrlf,"<br>")%>Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%=replace(rsrecadostodos.Fields.Item("mensagem"),vbcrlf,"<br>")%>

aqui não deve mudar, você deve colocar no momento de inserir no bd

 

[tr][/tr][tr][/tr]
ASP texto = "<script language = ""javascript""> alert(""aew""); </script>"

 

SQL = "INSERT INTO teste (Texto) VALUES ('" & Server.HTMLEncode(texto) & "')"

 

na hora de mostra vai mostarr exatamente como foi escrito mas não executará a acao javascript

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%=replace(rsrecadostodos.Fields.Item("mensagem"),vbcrlf,"<br>")%>

aqui não deve mudar, você deve colocar no momento de inserir no bd

 

ASP [/tr][tr]texto = "<script language = ""javascript""> alert(""aew""); </script>"

 

SQL = "INSERT INTO teste (Texto) VALUES ('" & Server.HTMLEncode(texto) & "')"

[/tr]

 

na hora de mostra vai mostarr exatamente como foi escrito mas não executará a acao javascript

Cara, estou iniciando no ASP...o código que tenho foi gerado pelo Dreamweaver MX:

Tabela: teste

Coluna: nome

Campo de texto: txtnome

Código:

MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

 

Onde se encaixa o exemplo que você me passou? tentei inserir como no exemplo abaixo mas não deu certo

MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ") ('" & Server.HTMLEncode(tentei o nome da coluna e do campo de texto tb) & "')"

 

Valeu ai cara...obrigado pela força....

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não creio que o replace seja a melhor alternativa, tenta usar Server.HTMLEncode(Valor) mesmo que fará com que seja visualizado exatamente o que foi inserido, entretando será o codigo html dos caracters e não os proprios como por exemplo< = <> = >as chaves acho que ficam a mesma coisa

o que foi que eu disse? :angry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vez de

 

[tr][/tr][tr][/tr]
ASP MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

 

poe

 

[tr][/tr][tr][/tr]
ASP MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & Server.HTMLEncode(MM_dbValues) & ")"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vez de

 

ASP [/tr][tr]MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"[/tr]

 

poe

 

ASP [/tr][tr]MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & Server.HTMLEncode(MM_dbValues) & ")"[/tr]
Valeu mesmo cara...era isso mesmo que eu precisava, não estava conseguindo acertar a entrada do HTMLEncode, agora deu certo...mesmo que ocupe muito espaço, como disse o Kdu, pra mim não tem problema, pois não será postado HTML no form...estou apenas tomando medidas de segurança.

Obrigado a todos!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao acho boa essa solucao.

 

você vai gastar espaço no banco em excesso de maneira desnecessaria.

 

um espaço por exemplo ao inves de gastar 1 byte dessa forma gasta 6 bytes, pq ele vira  .

agora imagina num texto enorme... a qtde ocupada no BD de forma desnecessaria...

 

o melhor eh soh usar o Server.HTMLEncode na hora de exibir os dados...

 

na minha opiniao.

 

flw!!

cara o Kdu tem razão...

 

muda ai volta o insert como tava

 

[tr][/tr][tr][/tr]
ASP MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

 

e muda a exibição para

 

[tr][/tr][tr][/tr]
ASP <%=Server.HTMLEncode(replace(rsrecadostodos.Fields.Item("mensagem"),vbcrlf,"<br>"))%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

e muda a exibição para

 

ASP [/tr][tr]<%=Server.HTMLEncode(replace(rsrecadostodos.Fields.Item("mensagem"),vbcrlf,"<br>"))%>[/tr]
desculpa me entrometer de novo <_<

hehehe

 

mas assim ele nao pula de linha, ele vai mostrar o <br> como texto...

 

acho q assim resolve:

 

ASP [/tr][tr]<%=Replace(Server.HTMLEncode(rsrecadostodos("mensagem")),vbCrlf,"<br>")%>[/tr]

 

me corrija se estiver errado!!

 

[]'s

beleza cara!!!! Deu certinho aqui....usei primeiramente o outro código, do insert...agora mudei para o HTML Encode agir só na exibição, como você me mostrou e ficou beleza, funcionou a quebra de linha tb....

 

Valeu mesmo!!!! obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta função substitui todas & # xxx; por char.

pode te ajudar, antes de inserir no bd

 

 

function decode(myStr)
  dim k,s1,s2

  'while there is stuff left to replace
  while inStr(myStr,"") 
	k = inStr(myStr,"")'ind
	s1= Mid(myStr,k,6)   'vamos buscar toda (# &xxx;)
	s2= Mid(s1,3,3)	 ' buscar apenas código ASCII (xxx)

	'replace (#&xxx;) por char
	myStr = replace(myStr,s1,chr(s2)) 
  wend

  decode=myStr
end function

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que fez no codigo e que problemas esta enfrentando?

 

talvez fosse melhor iniciar novo topico com sua duvida

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.