Foros del Web » Programando para Internet » PHP »

ayudita con cookies

Estas en el tema de ayudita con cookies en el foro de PHP en Foros del Web. tengo una encuesta que permite votar y luego contea los votos, pero quise controlar que una misma persona no vote 2 veces. Tengo un archivo ...
  #1 (permalink)  
Antiguo 03/05/2006, 19:07
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
ayudita con cookies

tengo una encuesta que permite votar y luego contea los votos, pero quise controlar que una misma persona no vote 2 veces.
Tengo un archivo que recoge en un formulario el voto y luego envia este a otro archivo donde almacena el voto y muestra una grafica.

puse al principio del archivo el siguiente codigo pero no puedo evitar que voten mas de una vez, ¿que hago mal?:

Código PHP:
if ($voto!='si') {                     // comprueba si ya voto antes
setcookie('voto','si',time()+86400,'/');

            
        } else {
            echo 
"<B>Error!! ya voto usted antes.</B>";
            echo (
"Location: index.php");
        }; 
  #2 (permalink)  
Antiguo 03/05/2006, 22:20
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Primero: (y de atrevido, porque no sé si se aplica) no uses variables globales, usá la matriz $_COOKIE
Segundo: ¿decís que no funciona porque no hace la redireccion? Eso es simple, lo que sucede es que no se hace así
Código PHP:
echo ("Location: index.php"); 
sino así
Código PHP:
header("Location: index.php"); 
Además, tené en cuenta que si redireccionás, el mensaje de error nunca se va a ver. Y también tené en cuenta que las cabeceras (headers) deben mandarse ANTES que cualquier texto. Lo conveniente sería redireccionar de esta forma:
Código PHP:
header("Location: index.php?error=1"); 
y luego en index.php comprobás si el valor de la variable $_GET['error'] es 1, si lo es, mostrás el mensaje de error en algún lugar de la página.


Saludos.
  #3 (permalink)  
Antiguo 04/05/2006, 03:42
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
Gracias por la explicación, ya entendi casi todo.

No me quedo claro como usar "la matriz $_COOKIE", puedes poner un ejemplito?

gracias
  #4 (permalink)  
Antiguo 04/05/2006, 08:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
lo mismo que con $_POST (que tiene las variables de formularios enviados con el método post), $_GET (variables pasadas por la url) o $_SESSION (variables de sesión), en vez de usar variables globales, usás esas matrices. $_COOKIE guarda todas las variables de cookies.

Como ejemplo, en tu caso sería $_COOKIE['voto'] en vez de $voto.

Otro ejemplo, si el navegador va a la página
pagina.php?var=43

se inicializa la matriz $_GET, y se guarda el valor de "var" en $_GET['var'].
También, si se habilita 'register_globals', vas a tener $var disponible.

El problema es que imaginate que yo pongo esto en mi navegador:

www.tusitio.com/encuesta.php?voto=no

(suponiendo que encuesta.php es la página que tiene el código que pegaste en el primer mensaje)

Se crearía la matriz $voto con el valor 'no', a pesar de lo que tenga en la cookie. ¿me explico? Sin embargo, aún tendrías $_GET['voto'] y $_COOKIE['voto'] como variables distintas.

Espero haberme hecho entender.

Saludos.
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 04:27.