Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/02/2003, 14:48
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Se contabilizan entradas porque solo miras si se ha hecho el "submit" pero no miras a su vez el estado de la cookie ..

Había tambien un problema de estructura .. Si haces el submit has de contabilizar el voto y crear la cookie (si no se ha creado a su vez).

La sintax del setcookie() no era correcta (o no se q pintaba el $HTTP_xxx por medi?).

Te hace falta tambien redireccionar o mejor dicho "hacer una peticion al servidor" para que quede disponible la cookie .. sino, tras el primer voto (en el q se crea la cookie) No presentará los totales de los votos, sino el formulario de votaciones.

Si metes este sistema de votaciones en alguna pagina via include() por ejemplo con mas HTML por delante te va a dar problemas de cabeceras este redireccionamiento via header(). Para solucionarlo usa redirecionamiento javascript o saca ese bloque de código (el condicional: if($submit && !isset($HTTP_COOKIE_VARS["encuesta"])) { ) fuera de ese punto de tu código y ejecutalo antes de tu <html> q pudieras tener ..

Esto es una solución "parche" q funciona (lo comprobé) .. pero tendrias q pensar en que procesos hace tu aplicación:

1) formulario de votacion
2) presentación votos
3) contabilizar votos

Esto son tres partes bien difernciadas que lo puedes controlar si quieres con tu variable "submit".

Por lo demas .. ese monton de if .. yo los haria con switch .. case o un array y un bucle xD ...

Código PHP:
<?
$archivo
="encuesta.txt";

// se mira q se ha hecho el "sumbit"  y no está creada la cookie (esto evita conteos en recargas de pagina xD)
if($submit && !isset($HTTP_COOKIE_VARS["encuesta"])) {

// se contabiliza el voto en el archivo de texto plano...
$fp=fopen("$archivo","a+");
$w=fputs($fp,"$voto#");

// se crea la cookie
setcookie("encuesta",time()+3600*24*7);

// redireccionar a si mismo la pagina .. sino no estará disponible la cookie
header("Location: $PHP_SELF");
exit;
}

if(isset(
$HTTP_COOKIE_VARS["encuesta"]))
{
$fp=fopen("$archivo","r");
$resultado=fread($fpfilesize ($archivo));
$div=explode("#",$resultado);
$total=count($div)-1;

// resto de tu script
Un saludo,

Última edición por Cluster; 22/02/2003 a las 14:58