Foros del Web » Programando para Internet » PHP »

encuesta y cookies...problema sin solución?

Estas en el tema de encuesta y cookies...problema sin solución? en el foro de PHP en Foros del Web. Hola amigos, tengo un problema con mi sistema de encuestas. Quiero evitar que la misma persona vote en la misma encuesta más de una vez ...
  #1 (permalink)  
Antiguo 06/06/2005, 07:04
 
Fecha de Ingreso: enero-2005
Mensajes: 63
Antigüedad: 12 años, 11 meses
Puntos: 1
encuesta y cookies...problema sin solución?

Hola amigos,
tengo un problema con mi sistema de encuestas. Quiero evitar que la misma persona vote en la misma encuesta más de una vez y lo hago de la siguiente manera con cookies:

setcookie ("encuesta", "1", time () + 7776000);

if ($encuesta == 1)
{
echo "<meta HTTP-EQUIV='refresh' content='1;url=encuesta_error.php?exito=NO'>";
exit;
}

Funciona perfectamente si sólo tengo una encuesta activa, pero en el momento en el que tengo varias sólo se puede votar una vez en una de las encuestas. Para solucionarlo intenté cambiar el nombre de la cookie dependiendo de la encuesta que se vote y para ello usaba un campo id que se manda por el formulario al votar de esta forma:

$encuesta="encuesta".$id_encuesta;
setcookie ($encuesta, "1", time () + 3600);
if ($encuesta == 1)
{
echo "<meta HTTP-EQUIV='refresh' content='1;url=encuesta_error.php?exito=NO'>";
exit;
}
Bueno pues no funciona. He comprobado que valor tiene $encuesta y resulta que se queda con el valor que le doy al principio, o sea encuesta+id, y no "1" que es lo que yo quiero.
Lo último que he probado es esto, adjundicar el valor de la cookie del id de la encuesta:

setcookie ("encuesta", "".$id_encuesta."", time () + 7776000);
if ($encuesta == $id_encuesta; )
{
echo "<meta HTTP-EQUIV='refresh' content='1;url=encuesta_error.php?exito=NO'>";
exit;
}
pero tampoco va bien, no me deja votar más de una vez una encuesta, y si cambio a otra encuesta tampoco, pero cuando vuelvo a la que voté antes me deja hacerlo. Me imagino que es porque al tener la cookie el mismo nombre lo que hace es borrar la anterior y crear una nueva pero con distinto valor.
Ya no sé que hacer...la solución la necesito con cookies, sé que hay otras formas de hacerlo y en últimas circunstancias buscaré por ahí, pero es qie ya es cuestión de amor propio...no se que hago mal.
Muchas gracias a todos.
  #2 (permalink)  
Antiguo 26/06/2005, 10:03
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 14 años, 5 meses
Puntos: 1
Has tenido una idea brillante para resolver el problema de controlar más de una encuesta. Sin embargo, y aunque tu idea es clara, el código se pierde un poco. En este segmento:

Código PHP:
$encuesta="encuesta".$id_encuesta;
setcookie ($encuesta"1"time () + 3600);
if (
$encuesta == 1)
//etc.. 
Defines correctamente el nombre de la cookie, y luego la defines bien, pero a la hora de verificar su existencia, no estás haciendo la validación contra la variable correcta. Parece que estás trabajando con el parámetro de configuración de PHP register_globals activado. En ese caso, el código que buscabas en principio puede ser algo así:

Código PHP:
$encuesta="encuesta".$id_encuesta;
setcookie ($encuesta"1"time () + 3600);
if ($
$encuesta == 1)
// etc.. 
Fíjate en la expresión $$encuesta. Corresponde al valor de una variable que tiene como nombre el valor de $encuesta (espero no haberte enredado mucho :).

Presentado de otra forma, un poco más legible y que no depende del valor de register_globals:

Código PHP:
$encuesta="encuesta".$id_encuesta;
setcookie ($encuesta"1"time () + 3600);
if (
$_COOKIE[$encuesta] == 1)
//etc.. 
Espero que te sea de ayuda para resolver tu problema :).
  #3 (permalink)  
Antiguo 17/07/2005, 16:42
 
Fecha de Ingreso: enero-2005
Mensajes: 63
Antigüedad: 12 años, 11 meses
Puntos: 1
Muchas gracias por tu respuesta...nadie me contestó en tanto tiempo que había desistido de buscar una solución y lo hice de otra manera. Lo he probado y funciona a la perfección. De nuevo muchas gracias!
  #4 (permalink)  
Antiguo 17/07/2005, 17:02
okram
Invitado
 
Mensajes: n/a
Puntos:
buena idea, pero no hay otra forma de evitar que un usuario pueda votar mas de una vez en un intervalo de tiempo?... me refiero a alguna manera sin usar cookies.... pongo un ejemplo: el deep freeze. Para los que no escucharon de este rpograma, lo que hace es congelar el disco, de tal manera que al reiniciar la pc todos los cambios que se hayan hecho despues de congelar el disco son eliminados, y la pc vuelve al estado en el que estaba al congelarla. Bueno al crer la cookie, y disponiendo de este programa facilmente se podria reiniciar la pc y votar enseguida........ o con otro programa se podria modificar la cookie guardada, e incluso eliminarla.

Personalmente no me gusta usar cookies. Tambien tengo un sistema de encuestas, y justo iba a hacer un post en este foro. Mi idea era usar la ip para hacer que se vote solo una vez cada hora. Pero tengo un problema. Yo pensaba guardar la ip en la base de datos, y luego al enviar los datos de la encuesta, verificar primero si la ip ya existe, y si es asi, mandar al usuario a una pagina dse error. Pero como hago para que despues de esa hora o de ese intervalo de tiempo la ip se borre automaticamente de mi bd??? es posible????

salu2
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:59.