Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Bloquear carcateres especiais

Recommended Posts

Olá pessoal,

 

tenho um código que faz varias verificações dentro da informação repassda pelo form e se tudo ok da a mensagem, o meu problema esta uma função que tenho que deveria verificar se o texto digitado no campo do form tem algum caracter invalido, e ele não esta fazendo isto da maneira que eu gostaria.

 

<%
'resgata o que foi digitado no campo de busca
login = request("login")

	[color="#FF0000"]'FUNÇÃO PARA VERIFICAR SE FOI DIGITADO ALGUM CARACTER INVALIDO[/color]
	Function LoginValido(login)
		Set objRegExp = New RegExp
		objRegExp.Pattern = "[^@\-\.\;\:\?\$\%\#\(\)\*\&\-\_\[\]\{\}\^\~\<\>\ ]"
		objRegExp.IgnoreCase = True
		LoginValido = objRegExp.Test(login)
	End Function

		if login = "" then
		response.Write("CAMPO VAZIO")


			else If LoginValido(Trim(login)) = FALSE Then
			response.Write("CARACTER INVÁLIDO")

		else

			set objRS = Server.CreateObject("ADODB.Recordset")
			sql = "select inscricao from associados2 where inscricao = '" & login & "' "
			set objRS = conn.execute(sql) 'executa a cláusula sql
				if objRS.eof then
					response.Write("LOGIN LIBERADO")

				ELSE
					response.Write("LOGIN JÁ EXISTE")
				end if
			end if
		end if
%>

o que esta aocntecendo na verdade, quando eu mando algum texto que contenha algum caracter invalido deveria dar amensagem de contem caracter inválido, e não esta fazendo se eu digitar somente $ por exemplo ele informa do caracter invalido, porem se eu digitar $teste passa.

 

Alguém sabe se minha função esta errada ou se tem alguma forma melhor para fazer?

 

Link para teste http://www.conquistta.com.br/testaLogin.asp

 

OBS: TAMBÉM ESTOU TENTANDO BLOQUEAR ESPAÇOS ENTRE AS PALAVRAS DIGITAS, POR SE TRATAR DE UM LOGIN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, olhando aqui no froum acabei achando um script

 

Funciona direitinho, porem como ele tem ujm NEXT para verificar palavra por palavra, acaba m,e trazendo a mensagem de OK ou erro varias vezes

vejam http://www.conquistta.com.br/testaLogin.asp

 

como losso implementar ele dentro do código abaixo afim de fazer todas as verificações que coloquei ali mas sem trazer as mensagens varias vezes?

 

<%
'resgata o que foi digitado no campo de busca
login = request("login")

	BLOQUEIO = "!@#$%¨&*()_+=-{}[]^~Ç<>,.:;?/\|"'CARACTERER BLOQUADOS
	LoginVer = login
	VALIDO = True
		FOR I = 1 TO LEN(LoginVer)
		if INSTR(BLOQUEIO,MID(LoginVer,I,1)) >= 1 THEN 
			VALIDO = response.Write("CARACTER INVÁLIDO")
		EXIT FOR
		'end if
		'NEXT
			ELSE IF login = "" then
				response.Write("CAMPO VAZIO")
			else
				set objRS = Server.CreateObject("ADODB.Recordset")
				sql = "select inscricao from associados2 where inscricao = '" & login & "' "
				set objRS = conn.execute(sql) 'executa a cláusula sql
					if objRS.eof then
						response.Write("LOGIN LIBERADO")
					ELSE
						response.Write("LOGIN JÁ EXISTE")
					end if	
			END IF
		end if
		next
%>

se eu separar o código desta forma aqui

 

<%
'resgata o que foi digitado no campo de busca
login = request("login")

	BLOQUEIO = "!@#$%¨&*()_+=-{}[]^~Ç<>,.:;?/\|"'CARACTERER BLOQUADOS
	LoginVer = login
	VALIDO = True
		FOR I = 1 TO LEN(LoginVer)
		if INSTR(BLOQUEIO,MID(LoginVer,I,1)) >= 1 THEN 
			VALIDO = response.Write("CARACTER INVÁLIDO")
		EXIT FOR
		end if
		NEXT
			IF login = "" then
				response.Write("CAMPO VAZIO")
			else
				set objRS = Server.CreateObject("ADODB.Recordset")
				sql = "select inscricao from associados2 where inscricao = '" & login & "' "
				set objRS = conn.execute(sql) 'executa a cláusula sql
					if objRS.eof then
						response.Write("LOGIN LIBERADO")
					ELSE
						response.Write("LOGIN JÁ EXISTE")
					end if	
			END IF
		'end if
		'next
%>

ele vai dar em alguns casos 2 mesnagem, pore exmeplo, login liberado caracter invalido

Compartilhar este post


Link para o post
Compartilhar em outros sites

algumas considerações:

 

o primeiro código é baseado em exspressão regular, completamente diferente da segunda postagem.

 

não existe isso: VALIDO = response.Write("CARACTER INVÁLIDO")

 

recomendo que faça assim:

'resgata o que foi digitado no campo de busca
login = request("login")

	BLOQUEIO = "!@#$%¨&*()_+=-{}[]^~Ç<>,.:;?/\|"'CARACTERER BLOQUADOS
	LoginVer = login
	VALIDO = True
		FOR I = 1 TO LEN(LoginVer)
		if INSTR(BLOQUEIO,MID(LoginVer,I,1)) >= 1 THEN 
			VALIDO = false
		  response.Write("CARACTER INVÁLIDO")
		EXIT FOR
		end if
		NEXT
			IF login = "" and VALIDO=true then
				response.Write("CAMPO VAZIO")
			elseif VALIDO = True and login <> "" then
				set objRS = Server.CreateObject("ADODB.Recordset")
				sql = "select inscricao from associados2 where inscricao = '" & login & "' "
				set objRS = conn.execute(sql) 'executa a cláusula sql
					if objRS.eof then
						response.Write("LOGIN LIBERADO")
					ELSE
						response.Write("LOGIN JÁ EXISTE")
					end if	
			END IF
		'end if
		'next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal, funcionou, só mais uma pergunta, como faço para também bloquear a colocação de espaço no login, ou seja (jose da Silva) dar como invalido, não pode ter espaço

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer isso na propria função

BLOQUEIO = "!@#$%¨&*()_+=-{}[]^~Ç<>,.:;?/\| "'CARACTERER BLOQUADOS

 

ou

 

login = replace(request("login"), " ", "")

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.