muchas gracias y espero que pronto me puedan ayudar

| |||
ayuda por codigo Necesito ayuda ya que tengo un codigo asp que lo que hace es construir encuestas, esta muy bueno, el tema es que le quiero agregar a mi codigo algo para que el usuadio solo pueda votar una sola vez , ya que el problema que tiene es que un mismo usuario puede votar la veces que quiera , a cambio de la ayuda que me pueda brindar prometo pasarle el codigo completo de este sistema de encuesta, no lo pongo en el foro por que es demasiado largo , en todo caso lo mandaria por mail que me pase el interesado que me quiera ayudar muchas gracias y espero que pronto me puedan ayudar ![]() |
| |||
Como ya te respondio lexus, para evitar q el usuario vote varias veces, primero hay q verificar si ya voto mediante cookies : http://www.forosdelweb.com/showthrea...ncuesta+cookie Busca "encuesta cookies" con el buscador, en el ultimo topic urjose expone codigo para eso. Sera tan bueno como dices si obvia esa caracteristica tan importante ? ![]() saludos! |
| |||
a ver puedes probar con esta condición, creo que te debe de funcionar a la perfección if ((not id="") AND (not Request.Cookies("Votado" & id)="si")) then SQL="UPDATE tabla SET votos=votos+1 WHERE id="&id&";" conexion.Execute (SQL) Response.Cookies("Votado" & id).Expires = Date + 1 Response.Cookies("Votado" & id) = "si" End If Bueno esa es la base, tu ya lo acomodas de acuerdo a tus necesidades sale! saludos |
| |||
este es parte del codigo principal donde pondrian el control de cookies para que vote una sola vez ? <% ID = Request("ID") If ID = "" Then ID = 30 End If Title = "Encuestas" %> <html> <head><link rel="STYLESHEET" type="text/css" href="style.css"> <title>Encuesta del mes</title> <script language="JavaScript"> function gatherForm(form){ if(form.Mode[0].checked){ form.submit(); }else{ form.action="collect.asp"; form.submit(); } } </script> <meta http-equiv="" content="text/html; charset=iso-8859-1"><meta http-equiv="" content="text/html; charset=iso-8859-1"></head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <div align="left"> <table width="800" height="64" border="0"> <tr> <td><img src="file:///D|/portalfamel2/imagenes/lolo2.jpg" width="800" height="80"></td> </tr> </table> <table width="803" height="40" border="0"> <tr> <td><div align="center"> <p> </p> <p><font color="#804040" size="+2"><u>Encuesta del mes</u></font></p> </div></td> </tr> </table> <br> <br> <br> </div> <div align="center"> <table width="83%" cellspacing="0" cellpadding="2"><tr><td align="left" width="25%" valign="top" class="bold"> <form action="default.asp"> <table width="100" border="1" bordercolor=#ccccff><tr><td> <table border=0 cellspacing=0 cellpadding=5 bgcolor=#4f4f4f> <tr> <td colspan=3 bgcolor=#000000 align=center class="bold2">Seleccione una encuesta</td> </tr> <tr> <td colspan=3 bgcolor=#000000 align=center> <select name="ID" onChange="gatherForm(this.form)" class="input"> <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open Application("ASPPollDSN") sql = "select * from Poll" Set rs = conn.Execute(sql) Do While Not rs.EOF %> <option value="<%=rs("ID")%>"><%=rs("PollName")%> <% rs.MoveNext Loop %> </select> </tr> <tr> <td colspan=3 align=right bgcolor=#FFFFFF class="bold"> Votar en encuesta: <input type="radio" name="Mode" value="Vote" CHECKED> <br> Ver resultados: <input type="radio" name="Mode" value="View"> </td> </tr> <tr> <td colspan=3 align=right bgcolor=#000000 align=center> <input type="button" value=" Ir " onClick="gatherForm(this.form)" class="inline"></td></tr> </table></td></tr> </table> </form> <br> <div align="left" class="bold"> </div></td><td align="center" width="75%" valign="top"> <table width="100" border=1 cellspacing=2 cellpadding=0 bordercolor=#ccccff><tr><td> <form method="post" action="collect.asp"> <input type="hidden" name="id" value="<%=id%>"> <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open Application("ASPPollDSN") sql = "select * from Poll where ID = " & ID Set rs = conn.Execute(sql) If rs.EOF = False Then %> <table border=0 cellspacing=0 cellpadding=10 bgcolor=#4f4f4f> <tr> <!-- <td colspan=3 bgcolor=#2f2f4f align=center><font face="verdana" color=#f5fcdc> Poll: <%=rs("PollName")%> </td> --> </tr> <tr> <td colspan=3 bgcolor=#000000 align=left class="bold2"><%=rs("PollQuestion")%> </tr> <% For I=1 To 5 choice = rs("Choice" & I) If choice <> "" Then %> <tr> <!-- <td width=50 colspan=1 bgcolor=#4f4f4f> </td> --> <td colspan=2 bgcolor=#FFFFFF class="bold" align="left"> <%=choice%></td> <td bgcolor=#FFFFFF align="left"><input type="radio" name="choice" value="<%=I%>"> </td> </tr> <% End If Next %></tr> <% If rs("GetName") = "1" Then %> <tr> <td colspan=1 align=right bgcolor=#FFFFFF class="bold"> Your Name:</td> <td colspan=2 align=right bgcolor=#FFFFFF> <input type="text" name="Name"> </td> </tr> <% End If %> <tr> <td colspan=3 align=right bgcolor=#000000 align=center> <input type="submit" value="Enviar voto" class="inline"></td></tr> </table> <% Else Response.Write "Elija una opcion de encuesta !" End If %></td></tr> </form> </table></td> </tr> </table> </div> </body> </html> |
| |||
USA BASE DE DATOS , LO QUE QUIERO ES USAR COOKIES PERO NO SE COMO HACERLO. LA BASE DE DATOS ESTA COMPUESTA POR UN LADO POR LOS RESULTADOS DE LA ENCUESTA , ES DECIR ACUMULA LAS RESPUESTAS SOBRE LA OPCION ELEGIDA Y POR EL OTRO LADO EN LA BASE ESTAN LAS OPCIONES QUE SE PUEDEN ELEGIR , EL TEMA ES QUE ANDA BIEN PERO UN MISMO USUARIO PUEDE VOTAR LAS VECES QUE QUIERA ESTO ES LO QUE QUIERO EVITAR |
| ||||
Mira no vas a poder hacer una verificacion 100% segura, a menos que de algun modo puedas validar la identidad del usuario que te contesta la encuesta. Esto lo puedes hacer bien creando una seccion donde las personas de afilien si desea poder hacer cosas como contestar encuentras, y ahi si podrias contra ese id, validar si contesto o no alguna encuesta. O la otra forma que no es mejor es usar las cookies que te proponen, pero ten en cuenta que si el usuario borra sus cokkies podria votar nuevamente.
__________________ En las manos de su manejador, la vida de Michael Jordan vale unos 20 millones, en las manos de Dios, cuanto crees que valdria tu vida? Entregasela y el hara de tu vida la mas valiosa del mundo entero. |
| |||
mi encuesta esta metida dentro de una seccion que el usuario primero se logea previamente para ingresar ya que es una opcion mas para clientes registrados.- Es una de las opciones de un menu solamente de usuarios registrados , por una tabla que yo mismo les doy de alta- |
| |||
Lo que pudes hacer es restringirlo con la IP del usuario es mas seguro que con Cookies porque asi si borran las cookies de los temps pues volveran a votar y no van a ser tan reales las votaciones. Añade en tu base de datos una tabla que se llame ip entonces con esto vas a grabar la IP u_input=request.form("u_input") u_ip=request.servervariables("remote_addr") sql = "insert into TablaPoll(ip, selection" & u_input &") " sql = sql & "values ('" & u_ip & "',1)" rs.Open sql, cn if u_input = "" then la votacion <%conexion a la base de datos%> despues set rs = server.createobject("ADODB.Recordset") sql = "select ip from ballot where ip ='" & u_ip & "'" rs.Open sql, cn if rs.eof then been_here_before="No" end if rs.close sql = "insert into TablaPoll(ip, selection" & u_input &") " sql = sql & "values ('" & u_ip & "',1)" rs.Open sql, cn end if ya lo demas tu lo decides
__________________ Jherrera.NET |
| |||
A mi juicio lo mas sencillo es hacerlo con cookies. Lo de la ip tiene tambien el inconveniente de las Ip's dinamicas (usuarios que se conectan con modem a traves de un servidor). Asi que te pongo un ejemplo para que lo estudies y decidas if request.cookies("encuestas")("nombre_de_encuesta") ="" then response.cookies("encuestas").expires=date+1000 response.cookies("encuestas")("nombre_de_encuesta" )="votado" tu codigo para votar else response.write("tu ya votaste en esta encuesta") end if De esta forma puedes controlar en que encuesta votaron (si es que hay mas de una). Espero te sirva Saludos Kaki |
| ||||
![]() http://www.2enetworx.com/dev/projects/minisurvey.asp prueba en esta dirección es un sistema de encuesta bastante bueno. te facilitan todo el codigo en asp y valida las Votaciones mediante la ip del participante. Ademas tiene una caracteristica bastante buena es que puedes hacer un lote de preguntas y asignarle un periodo de vigencia para la pregnta de la encuesta... lo unico que podrias considerar encontra es que esta en ingles .... espero que te sirva.... ![]() ![]() ![]() |