Foros del Web » Programando para Internet » ASP Clásico »

Lio con una excepcion a una condicion

Estas en el tema de Lio con una excepcion a una condicion en el foro de ASP Clásico en Foros del Web. A ver si alguien le da una limosna a este pobre novatillo... Estoy modificando un codigo de validacion de formulario, y necesito crear una excepcion ...
  #1 (permalink)  
Antiguo 07/01/2008, 16:45
 
Fecha de Ingreso: septiembre-2007
Mensajes: 99
Antigüedad: 16 años, 8 meses
Puntos: 0
Lio con una excepcion a una condicion

A ver si alguien le da una limosna a este pobre novatillo...

Estoy modificando un codigo de validacion de formulario, y necesito crear una excepcion a una condicion. Uso para ello el <> en lugar del =, asi:

if request.form("autor")="" then
response.write("Falta el autor"<a href=""javascript:history.go(-1)""> atras</a>")
elseif request.form("titulo")="" then
response.write("falta el titulo<a href=""javascript:history.go(-1)"">atras</a>")
elseif request.form("noticia")="" then
response.write("No has escrito nada <a href=""javascript:history.go(-1)"">atras</a>")

(Aqui viene el problema:)

elseif request.form("email")<>"www.lalala.com" then
if request.form("email")="" or instr(request.form("email"),"@")=false or instr(request.form("email"),".")=false then
response.write("este email no vale<a href=""javascript:history.go(-1)"">atras</a>
end if


else
If tatata then...
lalala
end if

if tatata then
lalalal
end if

End if

Yo lo que quiero es que el formulario me revise el email, y rechace todos los no validos, EXCEPTO si se escribe una URL determinada. Bien, esta estructura funciona bien, excepto si alguien escribe un email correctamente. Entonces es como si el codigo no supiera que hacer. No me escribe ningun error, pero tampoco pasa al else a terminar la tarea. En general, donde quiera que ponga el Elseif de "email" y sus correspondientes condiciones anidadas, si tiene que procesar el codigo un mail correcto, se cuelga ahí, a la altura donde lo ponga, y no hace nada mas. Solo pagina en blanco sin mensaje de error ninguno.

A ver si veis donde esta el error
  #2 (permalink)  
Antiguo 08/01/2008, 07:38
 
Fecha de Ingreso: septiembre-2007
Mensajes: 99
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Lio con una excepcion a una condicion

...Pues no lo he logrado resolver. Así que he anulado las condiciones de "@" y "." para el correo y he dejado solo la condicion de que request.form("email") no sea = "", que vale para cualquier string que se escriba...Chapuza.
  #3 (permalink)  
Antiguo 08/01/2008, 10:40
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Lio con una excepcion a una condicion


sustituyendo esta parte
Cita:
elseif request.form("email")<>"www.lalala.com" then
if request.form("email")="" or instr(request.form("email"),"@")=false or instr(request.form("email"),".")=false then
response.write("este email no vale<a href=""javascript:history.go(-1)"">atras</a>
end if
agregando esta funcion

Código PHP:
 <% 
function 
validarEmail(email
       
dim partespartei
       
'rompo el email en dos partes, antes y después de la arroba 
       partes = Split(email, "@") 
       if UBound(partes) <> 1 then 
              '
si el mayor indice del array es distinto de 1 es que no he obtenido las dos partes 
              validarEmail 
false 
              
exit function 
       
end if 
       
'para cada parte, compruebo varias cosas 
       for each parte in partes 
              '
Compruebo que tiene algún caracter 
              
if Len(parte) <=  0 then 
                     validarEmail 
false 
                     
exit function 
              
end if 
              
'para cada caracter de la parte 
              for i = 1 to Len(parte) 
                     '
tomo el caracter actual 
                     c 
Lcase(Mid(partei1)) 
                     
'miro a ver si ese caracter es uno de los permitidos 
                     if InStr("._-abcdefghijklmnopqrstuvwxyz", c) <= 0 and not IsNumeric(c) then 
                            validarEmail = false 
                            exit function 
                     end if 
              next 
              '
si la parte actual acaba o empieza en punto la dirección no es válida 
              
if Left(parte1) = "." or Right(parte1) = "." then 
                     validarEmail 
false 
                     
exit function 
              
end if 
       
next 
       
'si en la segunda parte del email no tenemos un punto es que va mal 
       if InStr(partes(1), ".") <= 0 then 
              validarEmail = false  
              exit function 
       end if 
       '
calculo cuantos caracteres hay después del último punto de la segunda parte del mail 
       i 
Len(partes(1)) - InStrRev(partes(1), "."
       
'si el número de caracteres es distinto de 2 y 3 
       if not (i = 2 or i = 3) then 
              validarEmail = false 
              exit function 
       end if 
       '
si encuentro dos puntos seguidos tampoco va bien 
       
if InStr(email"..") > 0 then 
              validarEmail
=false 
              
exit function 
       
end if 
       
validarEmail true 
end 
function 
%> 
quedaria mas o menos de esta forma

Cita:
elseif request.form("email")<>"www.lalala.com" then
if validarEmail(email)=false then
response.write("este email no vale<a href=""javascript:history.go(-1)"">atras</a>
end if


sera???
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #4 (permalink)  
Antiguo 09/01/2008, 09:14
 
Fecha de Ingreso: septiembre-2007
Mensajes: 99
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Lio con una excepcion a una condicion

Perdona que no lo hiciera antes, he visto esto demasiado tarde, vengo de revisar justo ahora tu método...Parece que no se lo come. No le gusta a la estructura el -if validarEmail(email)=false then...- anidado entre las condicionales...

Hay una forma muy loca de hacerlo, que de tan estúpida y grotesca, funciona. Se trata de hacer un GO TO de PHP adaptado a ASP pero en plan cateto:

Código:
if request.form("author")="" then
response.write("quien eres?<br><a href=""javascript:history.go(-1)"">ATRAS</a>")
elseif request.form("email")="www.lalalala.com/index.asp" then
       if request.form("title")="" then
       response.write("pon titulo, bacalao<br><a href=""javascript:history.go(-1)"">ATRAS</a>")
       elseif request.form("news")="" then
       response.write("tas tonto?<br><a href=""javascript:history.go(-1)"">ATRAS</a>")
       else

If mode X then 

TATATA

end if

if mode Y then

BABABA

end if

end if


elseif request.form("email")="" or instr(request.form("email"),"@")=false or instr(request.form("email"),".")=false then
response.write("email chungo<br><a href=""javascript:history.go(-1)"">ATRAS</a>")
elseif request.form("title")="" then
response.write("pon titulo<br><a href=""javascript:history.go(-1)"">GO BACK</a>")
elseif request.form("news")="" then
response.write("no escribes nada?<br><a href=""javascript:history.go(-1)"">ATRAS</a>")

else (AHORA REPETIMOS LO MISMO DE ANTES)

If mode X then 

TATATA

end if

if mode Y then

BABABA

end if

end if
  #5 (permalink)  
Antiguo 09/01/2008, 13:38
 
Fecha de Ingreso: septiembre-2004
Ubicación: Santiago de Compostela
Mensajes: 103
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Lio con una excepcion a una condicion

Shiryu_Libra Viendo la función de envío de correo me dí cuenta que has puesto un comparador para que la extensión del nombre de dominio tuviese una extensión de dos o de tres caracteres.

Eso debes de quitarlo... ¿Qué pasa con los .info o .museum? por ejemplo.

Saludos!
__________________
Fran Castro
Diseño de Paginas Web Descargas Gratis
  #6 (permalink)  
Antiguo 10/01/2008, 08:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 99
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Lio con una excepcion a una condicion

Es sorprendente...he usado la misma sintaxis, exactamente la misma, igual de burra (pero efectiva) en otro formulario de correo, donde algunas funciones hacia donde redirige el "else" son un poquito distintas de aqui (pero no mucho, a mi entender) y vuelve a dejar de funcionar...Está claro que esto es un bug de la versión de Asp de mi servidor, que seguramente hayan corregido versiones posteriores...digo yo...
  #7 (permalink)  
Antiguo 20/01/2008, 19:14
 
Fecha de Ingreso: septiembre-2007
Mensajes: 99
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Lio con una excepcion a una condicion

Esto...Bueno...Acabo de descubrir casualmente el quid del segundo problema, así que lo comento para aportar algo a los novatos desde un idem. No funcionaba el arreglo burro en el segundo formulario porque este incluia la declaracion de una Dim, y al repetir todo el codigo se duplicaba la declaración. Era esa tontería.
Lo del problema que abrió este hilo sigue abierto. Pero imagino que trabajando con funciones y anidando de otros modos los If desde el principio tiene solución. A mi de momento no me compensa investigarlo mas, si tengo un rato libre me pongo por curiosidad a ello.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:32.