Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2011, 11:48
gmkhul
 
Fecha de Ingreso: mayo-2011
Mensajes: 10
Antigüedad: 13 años
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