Apunto de comerme las "Cookies"

jhon
11 de Octubre del 2005
Saludos a los amigos foreros:

Tengo un sistema de encuestas en mi site (www.munisanantonio.gob.pe) con PHP y MySQL, todo funcionaba muy bien hasta q algunos users comenzaron a abusar de los votos, votando una y otra vez.

Leí que las cookies podían ayudar a que los user no abusen de la encuesta, es así que modifiqué el script.... en local (tengo Apache 1.3.29 PHP 4.3.2) funciona muy bien, pero cuando subo el script al server (hosting) sigue el problema de lo votos múltiples.

Lo raro viene aquí:
1. Mi Pc tiene winXP SP2, pero si entro mi site (www.munisanantonio.gob.pe) desde otra pc con winXP las cookies funcionan correctamente.
2. Si ingreso al site desde una pc con Win98 o WInMe se da el primer error.

La verdad estoy desconcertado, aqui les paso el código que uso:

<?php
if (isset($HTTP_COOKIE_VARS) and !empty($HTTP_COOKIE_VARS)) {
$_COOKIE = $HTTP_COOKIE_VARS;
}

//la variable "cond" es establecida en menuEncuesta.php tanto al votar como al visualizar la encuesta
if (isset($_COOKIE['encuesta'])) {
if (isset($_GET['cond'])) {
$condicion=$_GET['cond'];
if ($condicion<>"onlysee") {
echo "<b>Usted ya votó en esta encuesta.</b><br><a href='javascript:history.back()' class='Estilo6'>Regresar</a><br>";
}
}
}
else{
if (isset($_GET['cond'])) {
$condicion=$_GET['cond'];
if ($condicion<>"onlysee") {
//Registra un voto y llama a 'generagrafico.php' para mostrar las barras
//le clavo la cookie para que solo vote una vez (o por lo menos despues de 3 mins):
setcookie("encuesta","ya_voto", time()+180,"/"); /* 180=expirar en 3 mins. */
}
}
//Conectamos a la BD:
include("conexionBD.php");
$Cn=conexion();

//Obtenemos el título de la encuesta:
$consulta="SELECT titulo FROM encuesta ORDER BY fecha DESC LIMIT 1,0";
$consulta=sentencias($consulta);
//capturo algún error:
if(!$consulta) {
$y=mysql_error();
print("Se produjo un error al consultar la BD: $y <BR>");
exit();
}

$lado=mysql_num_rows($consulta);
while($row=mysql_fetch_array($consulta)){
$titulo=$row["titulo"];
}

//Obtenemos el número actual de votos para la opción elegida
//Comprobamos si $opcion no está vacío porque posteriormente este mismo
//fichero lo usaremos para ver resultados sin tener que votar necesariamente
$opcion=$_POST["opcion"];
//echo $opcion;
if(isset($opcion)){
$consulta="SELECT votos FROM respuesta WHERE id=$opcion";
$consulta=sentencias($consulta);
//capturo algún error:
if(!$consulta) {
$y=mysql_error();
print("Se produjo un error al consultar la BD: $y <BR>");
exit();
}
$lado=mysql_num_rows($consulta);
while($row=mysql_fetch_array($consulta)){
$votos=$row["votos"];
}
//Incrementamos en uno los votos totales:
$votos= $votos +1;
//Actualizamos la base de datos:
$consulta="UPDATE respuesta SET votos=$votos WHERE id=$opcion";
$consulta=sentencias($consulta);
//capturo algún error:
if(!$consulta) {
$y=mysql_error();
print("Se produjo un error al consultar la BD: $y <BR>");
exit();
}
}
mysql_close();
} //cierre del if que valida la cookie
?>

Espero puedan ayudarme

Gracias, Jhon//