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

Encuestas dentro de 1 hora

Estas en el tema de Encuestas dentro de 1 hora en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo una encuesta en *.asp, el detalle es que cuando la pagina esta activa con solo actualizar o presionar F5 el usuario ...
  #1 (permalink)  
Antiguo 02/08/2005, 14:09
Avatar de ajmataurus  
Fecha de Ingreso: enero-2005
Mensajes: 268
Antigüedad: 20 años, 4 meses
Puntos: 0
De acuerdo Encuestas dentro de 1 hora

Hola a todos, tengo una encuesta en *.asp, el detalle es que cuando la pagina esta activa con solo actualizar o presionar F5 el usuario puede responder a la encuesta cuantas veces quiera y asi no hya datos mas o menos confiables. cómo puedo hacer para que el usuario no pueda responder la encuesta 2 veces, pero sì despues por ejemplo dentro de 1 hora o 2 horas. algo asì como cuando nosotros buscamos en FDW y hay un mensaje diciendo que se puede hacer uso del buscado dentro de 15 segundos.
Gracias.
Att.
Taurus
__________________
creando conciencia Nacionalista...!!!!! :si:
  #2 (permalink)  
Antiguo 02/08/2005, 14:39
 
Fecha de Ingreso: septiembre-2004
Mensajes: 179
Antigüedad: 20 años, 7 meses
Puntos: 0
Buenas,

lo más apropiado, se me ocurre, sería colocarle una cookie al usuario cuando vota y comprobarla cuando vuelva a intentarlo. Si le pones la caducidad a la cookie o, simplemente, guardas la hora en ella tienes el problema resuelto.

Otro tema es que las cookies cada vez son menos eficaces pues muchos navegadores las bloquean. Pero si permites que voten varias veces no creo que sea mucho problema.
__________________
Estoy en www.aibarra.net

Camino para preguntar: manual -> Google -> FAQs y buscador del foro -> Nuevo Tema.
Tan difícil es escribir correctamente? Es más fácil leerlo. Pónselo fácil al que quiera ayudarte.
  #3 (permalink)  
Antiguo 02/08/2005, 14:42
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 6 meses
Puntos: 16
creando una cookie que caduque a la hora despues de creada y si exite esa cookie no dejar votar al usuario... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #4 (permalink)  
Antiguo 02/08/2005, 14:48
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Solo usuarios registrados pueden realizar esa encuesta?. No conozco tu estructura de la base de datos, dependiendo de esta podrías agregar campos a la misma tabla, o generar una tabla con este propósito únicamente. Si solo los usuarios registrados votan haría lo siguiente: en una tabla digamos "YA_VOTARON", tendría dos campos (además de la clave principal), uno que guarde el id del usuario que votó, y el otro campo que guarde la hora en la que el usuario puede volver a votar. Entonces antes de efectuar la votación, sería cuestión de comprobar si la hora actual es > que la hora que guardaste en la tabla, entonces le permitís votar. Si la hora actual es < a la hora que tenés en la tabla, entonces no le permitís votar.
Con usuarios no registrados haría lo mismo, pero en lugar de guardar el id del usuario que votó, guardaría su ip.
No conozco la estructura de tu base de datos ni de la tabla en donde haces la encuesta, es solo una opinión de ocmo lo haría, no se si se podrá adaptar a lo que tenés hecho.
Saludos!.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 02/08/2005, 14:56
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 6 meses
Puntos: 16
Es válido lo que comentas Mariano pero encuentro que es mucha joda para una encuesta... encuentro mas factible hacerlo mediante la cookie... aunque el sistema que propones puede tener una utilidad única e irremplazable cuando se habla de alguna cosa mas importante en cuanto a seguridad... bueno en realidad es mi opinion pero cada uno lo hace como cree que es mejor y es totalmente válido... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #6 (permalink)  
Antiguo 02/08/2005, 15:19
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Si, de hecho, no había leído los mensajes de ustedes dos, ya que no me habían aparecido cuando entré, y después de haberle propuesto esa opción y haber leído sus mensajes, me reía conmigo mismo diciendo "mira vos, que fácil que era!". Y es así, el tema es como dije en un post anterior, me tengo que acostumbrar a pensar que las cookies son una buena salida para solucionar determinados problemas!, y este es el caso.
Obvien esa propuesta por favor!.
Saludos!.
__________________
Add, never Remove
  #7 (permalink)  
Antiguo 02/08/2005, 15:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
o más fácil ..... bajar de hotscript.com alguna de las muchas encuestas (surveys) que usan uno o ambos métodos

Saludos
  #8 (permalink)  
Antiguo 02/08/2005, 15:21
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 6 meses
Puntos: 16
no porque de verdad que en otros problemas quiza mas complejos la salida sea la que comentas tu.. la verdad hy que tener en cuenta lo que cometnaste... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #9 (permalink)  
Antiguo 02/08/2005, 16:11
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
A mí me gusta el método de mariano (que es el que llevo usando desde hace mucho tiempo) porque me permite marcar cuantas veces quiero que un usuario vote en una encuesta (que suele ser una vez), y así me aseguro que no puede votar 2 veces.

Depende de como tengas montada tu pagina (si tienes sistema de usuarios), te irá mejor una u otra.
__________________
Tu portal de manga y anime.
  #10 (permalink)  
Antiguo 02/08/2005, 16:38
Avatar de ajmataurus  
Fecha de Ingreso: enero-2005
Mensajes: 268
Antigüedad: 20 años, 4 meses
Puntos: 0
Bueno señores gracias por los datos:
es una pagina abierta y no es necesario que el usuario se registre para votar, lo que propuso MARIANO esta bien, pero el detalle es cómo pdría implementarlo, la tabla que uso es muy sencilla:
______tablaEncuestas.mdb
-id_no ' almacena el ID de la encuesta
-Pregunta ' Auiq va la pregunta de la encuesta
-alternativa1 ' alternativas
-alternativa2
-alternativa3
-alternativa4
-alternativa5
-voto1 'almacena los votos de cada alternativa
-voto2
-voto3
-voto4
-voto5
-fecha ' fecha de encuesta
______________
como veràn es sencillo, si se almacenara el ip del navegante cuàl es el còdigo para almacenar
y si es con una cooki cómo lo haría?????

graciass
__________________
creando conciencia Nacionalista...!!!!! :si:
  #11 (permalink)  
Antiguo 02/08/2005, 17:10
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
y además la fecha, la hora de la votación. al votar se comprueba que ha pasado una hora y ya está preparado.

Para los de las cxookies: te puedes saltar ese sistema con la gorra: borras las cookies y votas, borras las cookies y votas.....
  #12 (permalink)  
Antiguo 02/08/2005, 17:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
En la tabla donde controlas si ya votaron, además de guardar la IP del usuario que votó y la fecha a partir de la cual se le permite votar, deberías guardar el Id de la encuesta, para saber en que encuesta ya registró su voto el usuario.
El Ip del usuario lo sacas con Request.ServerVariables("REMOTE_ADDR") (creo, no recuerdo en este momento si era ese). La fecha y hora a partir de la cual el usuario puede votar de nuevo en esa encuesta, lo haces con la función DateAdd. Y lo demás sería un insert común, en el cual tendrías que insertar el ip del usuario, el resultado de DateAdd y el Id de la encuesta. Antes, lógicamente, tendrías que comprobar que el IP del usuario no esté en la tabla de control, y si está, que no sea con el Id de la encuesta a la cual quiere votar. Algo así:

IpUsuario = Request.ServerVariables("REMOTE_ADDR")
IdEncuesta = 'Acá iría el id de la encuesta

set conn = server.createObject("ADODB.Connection")
conn.open(strCOnexion)
set rs = conn.execute("SELECT campo_FechaParaVotar FROM tabladecontrol WHERE campo_IpUsuario = " & IpUsuario & " AND campo_IdEncuesta = " & IdEncuesta & " ORDER BY campo_FechaParaVotar")

if rs.eof then
'Si el rs no contiene ningún registro, entonces le permito votar
elseif
rs("campo_FechaParaVotar") < now() then
'El usuario ya votó en la misma encuesta, pero
'como el "campo_FechaParaVotar" es menor que la fecha actual,
'también le pemito votar
else
'Le informo al usuario que no puede votar
end if
rs.close()
conn.close()
set rs = nothing
set conn = nothing

El Elseif no iría, solo lo hice para ponerle comentarios. Se puede hacer con un OR para no repetir las mismas acciones (if rs.eof or rs("campo_Fecha...") < now() then...).
Espero que hayas entendido las explicaciones y no haberme hecho tanto lío.
Saludos!.

--------------------------------------------
Respecto al final del mensaje, no estoy tan seguro que funcione con el or, porque si el rs te arroja 0 registros, entonces no habrá ningún rs("campo_Fecha") con el cual hacer la sentencia condicional. Por lo tanto, me parece que sí vas a necesitar el elseif, pero ahí ya entra en duda la estructura del código, porque estarías escribiendo dos veces el mismo código, salvo que en ambas situaciones llames a una función o procedimiento que te ejecute la tarea completa de votación.
------------------- segunda edicion ---------------
Me confundí en una parte del código.
__________________
Add, never Remove

Última edición por mariano_donati; 02/08/2005 a las 17:33
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 16:40.