Foros del Web » Programando para Internet » PHP »

encuesta mas compleja

Estas en el tema de encuesta mas compleja en el foro de PHP en Foros del Web. Hola Tengo el siguiente codigo quiero que me ayuden a que solo se pueda votar una vez ya sea con cookies o que detecte la ...
  #1 (permalink)  
Antiguo 26/12/2005, 11:50
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
encuesta mas compleja

Hola Tengo el siguiente codigo
quiero que me ayuden a que solo se pueda votar una vez ya sea con cookies o que detecte la ip
y que recien luego de 5 minutos se pueda volver a votar

desde ya gracias



<?php
//cargo el numero de respuestas de un fichero de texto
$f=fopen("encuesta.txt","r");
$todas=fread($f,filesize("encuesta.txt"));
$respuestas=explode(",",$todas);
fclose($f);

if ($respuesta) {
//incremento la respuesta y la guardo en el fichero
$respuestas[$respuesta-1]++;
$f=fopen("encuesta.txt","w");
$todas=$respuestas[0].",".$respuestas[1].",".$respuestas[2];
fwrite($f,$todas,strlen($todas));
fclose($f);
}

$total=$respuestas[0]+$respuestas[1]+$respuestas[2];
if($total==0) {
$porcentaje[0]=0;
$porcentaje[1]=0;
$porcentaje[2]=0;
} else {
$porcentaje[0]=sprintf("%1.2f",(($respuestas[0]/$total)*100));
$porcentaje[1]=sprintf("%1.2f",(($respuestas[1]/$total)*100));
$porcentaje[2]=sprintf("%1.2f",(($respuestas[2]/$total)*100));
}

?>



<table border="0">
<tr>
<td colspan="3" align="center">
Encuesta: ¿Pregunta?
</td>
</tr>
<tr>
<td align="left">
<?php echo "$porcentaje[0]%"; ?>
</td>
<td align="left">
<img src="red.png" height="15" width="<?php echo "$porcentaje[0]"; ?>">
</td>
<td>
OpcionA
</td>
</tr>
<tr>
<td align="left">
<?php echo "$porcentaje[1]%"; ?>
</td>
<td align="left">
<img src="blue.png" height="15" width="<?php echo "$porcentaje[1]"; ?>">
</td>
<td>
OpcionB
</td>
</tr>
<tr>
<td align="left">
<?php echo "$porcentaje[2]%"; ?>
</td>
<td align="left">
<img src="yellow.png" height="15" width="<?php echo "$porcentaje[2]"; ?>">
</td>
<td>
OpcionC
</td>
</tr>
</table>

<br><br>

<form name="encuesta" action="encuesta.php" method="post"">
¿Pregunta?<br>
<input type=radio name="respuesta" Value="1"> OpcionA <br>
<input type=radio name="respuesta" Value="2"> OpcionB <br>
<input type=radio name="respuesta" Value="3"> OpcionC <br>
<input type="submit" value="Votar">
</form>
  #2 (permalink)  
Antiguo 26/12/2005, 12:37
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Esto se resolveria con cierta facilidad a través de las sesiones session
  #3 (permalink)  
Antiguo 26/12/2005, 12:44
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
session ?

la verdad es que entiendo muy poco de php, puedes ser mas preciso

mil gracias
  #4 (permalink)  
Antiguo 26/12/2005, 13:06
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Mira las sesiones se pueden definir como :

Un conjunto de variables almacenadas en el servidor; única por cada entidad
que accede a la página.

o también como:

Estructura de datos almacenadas en el servidor, que ofrecen información del
seguimiento del cliente, ésta información es individual para cada cliente.

Por lo que a través de las sesiones puedes limitar al usuario a través de una variable de sesion a que vote únicamente una sola vez durante su estancia dentro de tu página.
  #5 (permalink)  
Antiguo 26/12/2005, 13:10
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
ya entiendo perooo?

si ya entendi, tu por casualidad tienes algun script de ejemplo que me pueda orientar

muchas gracias por contestarme
  #6 (permalink)  
Antiguo 26/12/2005, 13:57
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
<?php
session_start();
$votar = 1;
session_register[$votar];
if(isset($votar))
echo "No puedes votar";
else
echo "Vota";

?>
  #7 (permalink)  
Antiguo 26/12/2005, 13:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El problema de usar sesiones es que si salgo de tu sistema y vuelvo a entrar (abriendo/cerrando el navegador simplemente) podré votar denuevo.

Es importante que si quieres unas votaciones -fieles- y seguras, que .. uses un sistema de gestión de usuarios donde identifiques a tus usaurios (previo login) donde puedas marcar al usuario como "ya votó".

Si la votación ha de ser pública .. (sin registro de usuarios) .. entonces tendrás que asumir el margen de error que tienes al usar sesiones (al salir y entrar de tu aplicació volveran a votar), al usar cookies (las pueden no aceptar o eliminar a voluntad fácilmente) o al registrar IP (sobre todo por todos aquellos usuarios que usan IP dinámica .. o los que vas a limitar por IP que salgan a traves de un proxy como suele pasar en empresas y hacen algunos ISP's).

Un saludo,
  #8 (permalink)  
Antiguo 26/12/2005, 14:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por mauled
<?php
session_start();
$votar = 1;
session_register[$votar];
if(isset($votar))
echo "No puedes votar";
else
echo "Vota";

?>
La función session_register() no va el nombre de la variable como un "indice" de un array como sucede al usar $_SESSION ... El uso que haces de sesiones no es lo correcto ni la forma .. (ojo)

Código PHP:
<?
session_start
();
if(empty(
$_SESSION['votar'])){
   
// Si no tiene valor nuestra variable de sesión .. la creamos.
   
echo "Votar";
   
$_SESSION['votar']=true;
   
// logica de la votación.
} else {
   echo 
"No puedes Votar";
}


?>
El uso básico de sesiones (tal cual está) se asume propagación del SID en cookies (pues por ningún lado se hace expresamente).

Un saludo,
  #9 (permalink)  
Antiguo 26/12/2005, 14:24
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
señores muchas gracias

Muchas gracias por las respuestas
les agradezco un monton por su tiempo
y porque no se guardan lo que saben como mucha gente lo suele hacer

Juan Jose Ferrer
  #10 (permalink)  
Antiguo 26/12/2005, 14:38
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 1 mes
Puntos: 0
si para poder votar necesitas que el usuario este registrado.. pues.. en vez de guardar la ip, sobre todo en el caso de usuarios con ip dinamica, guarda el nombre de usuario
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 15:19.