Ver Mensaje Individual
  #22 (permalink)  
Antiguo 25/10/2004, 10:57
Avatar de Muzztein
Muzztein
 
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 2 meses
Puntos: 16
Funcion que evita el inundamiento o flood

Funcion util para evitar que un usuario ejecute una accion repetidas veces, como; inserciones,actualizaciones o busquedas que apañen el desempeño del sistema.

ejemplo de uso

Ejemplo que obliga esperar 30 segundos entre ejecucion de busquedas.

Código:
ultima_busqueda = session("ultima_busqueda")
hora_actual = now

if permite_accion(ultima_busqueda,hora_actual,"s",30) = true then
	session("ultima_busqueda") = now
	response.write  "puede ejecutar la busqueda"
else
	response.write  "NO puede ejecutar la busqueda"
end if


Codigo



Código:
function permite_accion(fecha_ultima_accion,fecha_intento_accion,Hora_Minuto_o_Segundo,cantidad_de_espera)

	if isdate(fecha_ultima_accion) = false or isdate(fecha_intento_accion)= false then
		permite_accion = true
	end if

   Select Case lcase(Hora_Minuto_o_Segundo)
      Case "hora"	     Hora_Minuto_o_Segundo = "h"
      Case "minuto"		 Hora_Minuto_o_Segundo = "n"
      Case "segundo"     Hora_Minuto_o_Segundo = "s"
      Case "h"			 Hora_Minuto_o_Segundo = "h"
      Case "m"			 Hora_Minuto_o_Segundo = "n"
      Case "s"			 Hora_Minuto_o_Segundo = "s"
      Case Else			 Hora_Minuto_o_Segundo = "n"
   End Select

   if isnumeric(cantidad_de_espera) = false or isnull(cantidad_de_espera) = true or cantidad_de_espera="" then
		permite_accion = true
   end if

	intervalo = datediff(hora_minuto_o_segundo,fecha_ultima_accion,fecha_intento_accion)
	
	if intervalo < cantidad_de_espera then
		permite_accion = false
	else
		permite_accion = true
	end if
end function