Foros del Web » Programando para Internet » PHP »

Sistema de encuestas

Estas en el tema de Sistema de encuestas en el foro de PHP en Foros del Web. Tengo un sistema de encuestas, y quiero saber cómo le hago para que los visitantes solo pueda votar una vez, y pase por lo menos ...
  #1 (permalink)  
Antiguo 01/06/2005, 14:57
Avatar de daosorio  
Fecha de Ingreso: mayo-2002
Ubicación: Veracruz
Mensajes: 235
Antigüedad: 21 años, 10 meses
Puntos: 3
Sistema de encuestas

Tengo un sistema de encuestas, y quiero saber cómo le hago para que los visitantes solo pueda votar una vez, y pase por lo menos una media o una hora para volver a hacerlo. O en caso contrario, en 24 horas.

¿Qué podrá hacer...?¿Dónde le pongo el código para que haga lo que quiero..?

Gracias y saludos.

Anexo el código de mi actual page de votación:

Código:
<? 
$servidor="SERVIDOR"; 
$usuario="USUARIO"; 
$password="CONTRASEÑA"; 
$base="BASEDEDATOS"; 
$SQLid = mysql_connect($servidor,$usuario,$password); 
mysql_select_db($base,$SQLid); 
$SQLquery = "SELECT * FROM tblenc order by encid desc"; 
$SQLresult = mysql_query($SQLquery,$SQLid); 
$SQLrow = mysql_fetch_array($SQLresult); 
?>
<table width="100%"  border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><form name="form1" method="post" action="resultados.php">
      <input type=hidden name="encid" value="<?echo $SQLrow[0]?>">
      <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
        <tr>
          <td height="24" align="center" valign="middle" bgcolor="#F0F0E1"><div align="center" class="pregunta"> <? echo $SQLrow[1]?> </div></td>
        </tr>
        <tr>
          <td bgcolor="#FFFFFF"><p class="Estilo2">
              <label>
              <input type="radio" name="voto" value="1">
              <? echo $SQLrow[2]?></label>
              <br>
              <label>
              <input type="radio" name="voto" value="2">
              <? echo $SQLrow[3]?></label>
              <br>
              <label>
              <input type="radio" name="voto" value="3">
              <? echo $SQLrow[4]?></label>
              <br>
              <label>
              <input type="radio" name="voto" value="4">
              <? echo $SQLrow[5]?></label>
              <br>
          </p></td>
        </tr>
        <tr>
          <td align="center" valign="middle" bgcolor="#F9F9F2"><div align="center">
              <p><br>
                <input name="Submit" type="submit" class="pregunta" value="    Votar    ">
                <br>
                &iexcl; Participa !</p>
            </div></td>
        </tr>
      </table>
    </form>
Gracias de antemano por su ayuda dada al respecto.
__________________
Mi Blog: www.daosorio.com
  #2 (permalink)  
Antiguo 02/06/2005, 00:27
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Algo sencillo... cookies, busca en JavaScript... pero no es seguro, tan simple como borrar las cookies acabado de votar y listo (quién querrá darse tantas molestias?).

Algo seguro... create una table donde guardes la IP de tu visitante y en un campo DATETIME el momentó en el que votó, entonces antes de efectuar el voto borra todos los registros que hayan sobrepasado tu "tiempo reservado", para ello te servirá la función DATE_SUB() de SQL... entonces como ya borraste los registros que han pasado ese tiempo solo los que estén en la tabla no tienen permiso para votar, entonces busca la IP de tu visita y si se encuentra.. le niegas el voto; para ello te servirá la función mysql_num_rows() de PHP --después de realizar la busqueda--.

Contras de esta última forma? ... si usan PROXY tendrás una misma IP para varias computadoras... la mayoría de los usuarios cuentan con IP dinámica, bastaría con que se desconectaran para cambiar de IP y pueden volver a votar... más molestías aún ¿quién hace eso??.

www.php.net/mysql_num_rows
www.mysql-hispano.org

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 17/07/2005, 13:45
Avatar de daosorio  
Fecha de Ingreso: mayo-2002
Ubicación: Veracruz
Mensajes: 235
Antigüedad: 21 años, 10 meses
Puntos: 3
Colegas:

Encontré un sistema muy completo, se llama X-Poll, que era precisamente lo que andaba buscando:

X-Poll Version 2.0 allows you to create polls with unlimited options which have their own start and expiry dates. You can choose whether to protect your poll with IP and/or Cookie protection. You can even choose how often users can vote on your poll. New with V2.0 is the ability to choose the bars which represent the polls options when the polls results are viewed. The admin area allows you to Add/Edit/Delete/View polls with ease. New with V2.0 is the IP Blocker. A sophisticated way to block certain users from voting on polls of your choosing by blocking their IP Address. Another new feature is the image uploader. You can now upload images to be used in the results graph for your polls. Version 2.25 builds upon version 2.0 by adding even more poll options such as preventing the user from seeing results, so polls can be kept private. Also, an archive page has been created so users can look at previous polls.


Puedes descargarlo con un gestor desde el enlace siguiente:
http://members.lycos.co.uk/xscripts03/xpoll.zip

Si la descarga falla, entonces solamente desde http://members.lycos.co.uk/xscripts03/

Espero les sirva

Saludos.

www.cgsat.net
__________________
Mi Blog: www.daosorio.com
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 12:55.