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

Error handler + Session + Redirect

Estas en el tema de Error handler + Session + Redirect en el foro de ASP Clásico en Foros del Web. Buenas gente, Tengo el siguiente problema: A mis usuarios les envio el siguiente link: misitio.com/checkpoint.asp? var1 =1A0K& var2 =C664& var3 =ANX& var4 =0A0D& var5 =89FA ...
  #1 (permalink)  
Antiguo 07/05/2011, 11:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 10
Antigüedad: 12 años, 11 meses
Puntos: 0
Error handler + Session + Redirect

Buenas gente,

Tengo el siguiente problema:

A mis usuarios les envio el siguiente link:

misitio.com/checkpoint.asp?var1=1A0K&var2=C664&var3=ANX&var4=0A0D&var5=89FA

Allí hay 5 variables que definen la fecha en que se originó ese link y también el destino al cual se tiene que redirigir al usuario que lo clickea.

Las capturo de la siguiente manera:
var1_codificado = request.queryString("var1")
var2_codificado = request.queryString("var2")
var3_codificado = request.queryString("var3")
var4_codificado = request.queryString("var4")
var5_codificado = request.queryString("var5")


El problema es que una vez que decodifico todas las variables... tras pasarlos a través de una laaaarga lista de IF ELSE ENDs

IF var1_codificado = 1A0K Then
var1_decodif = 2 ....


Genero el siguiente código:

url_dest = ( var4_decofi&"/"&var5_decodif".asp" )

fecha_de_hoy = Now()


fecha_de_emision_recompuesta= ( var1_decodif&"/"&var2_decodif&"/"&var3_decodif )

(hasta acá reúno la fecha de emisión del email, la fecha del día actual y la URL a donde redirigir al usuario)


Luego:


strDateDiff = DateDiff("d" , fecha_de_emision_recompuesta , fecha_de_hoy )
If strDateDiff < 15 Then
session("linkvalidado")=1
ElseIf strDateDiff = "" Then
Response.Write "Lo sentimos, el link ya ha caducado. Ingrese a sus contenidos desde su panel del aula virtual"
Else
Response.Write "Lo sentimos, el link ya ha caducado. Ingrese a sus contenidos desde su panel del aula virtual"
END IF


Acá es que tengo el problema....ASP me dice que en la linea del strDateDiff = DateDiff se genera un error... y esto sucede cuando el usuario modifica por maldad pura el URL que se le envió por email para ver si consigue acceder de manera ilícita.

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'fecha_de_emision_recompuesta'


Al parecer, cuando el usuario manipula o elimina en la URL los valors de var1, var2, var3... y estos no pueden ser obtenidos por querystring o bien reconvertidos por la lista de IF THEN ELSE END entonces no se generan las nuevas variables que llamo: var1_decodif y es entonces cuando strDateDiff trata de hacer cálculos con fecha_de_emisión_recompuesta que se genera el error y se detiene el proceso.

Yo lo que quisiera hacer es que... si sucediera este escenario, el error generado redirija al usuario a una pagina de error preseteada.

He intentado agregar la linea
On Error resume Next

Pero de alguna manera se saltea todo el siguiente codigo que utilizo para crear una session en caso de que el link sea aún valido y por ende no me sirve :S

<%
IF session("linkvalidado")=1 Then
Response.redirect url_dest
ElseIf session("linkvalidado")="" Then
Response.Write "Mensaje error"
ElseIf session("linkvalidado")=0 Then
Response.Write "Mensaje error"
Else
Response.Write "Mensaje error."
END IF

Session.Timeout = 1
%>

Alguna idea de como implementar este redireccionamiento ante un error?

Última edición por gmkhul; 07/05/2011 a las 12:04
  #2 (permalink)  
Antiguo 07/05/2011, 18:18
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Error handler + Session + Redirect

con el On Error resume Next deberias de tener, seguramente lo estas colocando despues de donde se genera el error o bien no tienes un manejador del error detectado.

Otra forma que puedes implementar es revisar toda la coleccion de parametros de querystring y validar que no te falte ninguno. Ahora si me lo permites decir, si tus parametros son tan sensibles, deberias de mandarlos codificados para evitar que te los modificaran a sabiendas de que son para algo. Deberias de implementarte un algoritmo propio o utilizar alguno de dos sentidos (que se pueda codificar y decodificar)

Saludos
  #3 (permalink)  
Antiguo 07/05/2011, 22:18
 
Fecha de Ingreso: mayo-2011
Mensajes: 10
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Error handler + Session + Redirect

Estimado,

Gracias por tu respuesta.


Justamente esta implementado un sistema de codificacion y decodificacion pero a traves de igualdades usando la estructura que comente con el IF+ELSEIF.

Justamente creo que los dos puntos que me fallan son los que mencionas:

1) La forma de aplicar el On Error resume Next


Como mencione, el error cuando faltan las variabels en la URL se genera en la linea... digamos 425... entonces lo que hice fue colocarlo en la linea 424 o bien en la 426 y entonces no se genera ningun mensaje de error...pero tampoco me sirve porque se pasa por alto todos los frenos de seguridad que estoy intentando hacer funcionar. Entonces.... como seria para agregar un error handler correcto en este caso? Algun ejemplo quizaS?

2) Los errores surgen cuando no se genero una conversión de de los valores de var1, var2, var3.... a una nueva variable como var1_decodif o bien cuando una variable estaba faltante en el link....
como puedo hacer lo que mencionas de: "validar qeu no me falte ninguno de la coleccion de querystring"?

Por cierto soy muy novato y recien empece a meterle mano a esto en estos días por extrema necesidad y los ejemplos detallados que me provean me seran de mucha ayuda =)
----------------------------------------------------------------------------------------------------------
AUTORESPUESTA:

Si bien continuo preguntandome como resolver apropiadamente este problema... he encontrado la siguiente solucion alternativa mientras permanezco a la espera de un método mas limpio y ortodoxo que me permita continuar aprendiendo y no estancarme con estas herramientas rudimentarias que hasta ahora manejo =(

A la tabla de conversiones que utilizo para decodificar las variables que recupero de la URL con request.querystring agrego lo siguiente:

ELSEIF var3_codificado= "" Then
Response.redirect "mensaje_de_escarmiento.asp"
ELSE
Response.redirect "mensaje_de_escarmiento.asp"
END IF


Donde por cierto, capturo el ID del cliente que ha estado manipulando el URL y me permite envíarle un email aconsejandole sobre las prácticas éticas saludables jaja

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

Última edición por gmkhul; 07/05/2011 a las 23:15
  #4 (permalink)  
Antiguo 09/05/2011, 09:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Error handler + Session + Redirect

Eso de que con el On Error se pase los candados de seguridad me dice que es por que no has definido un manejador de errores, ese es el problema.

No se como es que dices que codificas los parámetros si el problema es que estos se ven en la URL ... no alcanzo a ver como lo implementaste

Yo lo que decía es que pusieras un ciclo que revisara cada argumento del objeto QueryString e hicieras una cadena o un arreglo, no se, con los parametros que esperas y validaras que existan, algo como esto:

Código ASP:
Ver original
  1. for each control in request.QueryString
  2.   for indice=1 to request.QueryString(control).count
  3.      if control in cadenadeparametros then
  4.         ....
  5.   next
  6. next

Obviamente el IN no se puede usar en vbs así, pero la idea es busques si el parámetro existe en alguna colección, ahí ya tu lógica sería lo que implementaras.

Saludos

Etiquetas: redirect, session
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 19:18.