Foros del Web » Programando para Internet » PHP »

Que estoy haciendo mal?

Estas en el tema de Que estoy haciendo mal? en el foro de PHP en Foros del Web. Hola. Es una validacion por cookie. Lo que quiero hacer es que si tiene una cookie valide a ver si es la cookie que busco. ...
  #1 (permalink)  
Antiguo 19/03/2011, 15:10
Avatar de Pafate  
Fecha de Ingreso: mayo-2010
Mensajes: 232
Antigüedad: 13 años, 11 meses
Puntos: 1
Que estoy haciendo mal?

Hola.
Es una validacion por cookie.

Lo que quiero hacer es que si tiene una cookie valide a ver si es la cookie que busco.



Código:
Si no tengo cookie me setea una cookie.
if(!isset($_COOKIE['ya_votaste'])){
setcookie("ya_votaste[$aid]",$aid, time()+3600*24);
$result = mysql_query($query);
$num = mysql_numrows($result);
}else{ Si ya tengo cookie, me fijo a ver si es la misma cookie que tengo
(Para explicar un poco el tema, hay muchas votaciones en una pagina, pero solo se podria votar 1 vez en cada votacion, entonces tengo que setear cookies diferentes por cada votacion)
$num = 2;
if(isset($_COOKIE['ya_votaste'])){ <- Si tiene cookie
    foreach ($_COOKIE['ya_votaste'] as $yavot => $mid) {
(esta parte es confusa, segun tengo entendido lo pasaria como ya_votgaste[$yavot], [$mid]. osea los datos de $aid pasarian a esos dos lugares)
        $yavo = htmlspecialchars($yavot); <- No lo uso
        $mid = htmlspecialchars($mid); <- Esto deberia tener el $aid
        if($mid == $aid){ <- Me fijo si la cookie tiene el mismo $aid que la votacion actgual
Si tiene el mismo $aid, le paso valor 1 y termino el for
        $num = 1;
        break;
        }
    }
Como no se salir del if al terminar el foreach, creo que aca no existe el endif como java
Verifico si Num es 2(puse 2 al principio de este if para este paso), si no es 2 es porque tiene la cookie(el for la setea en 1)
if($num == 2){
Si es 2, le paso los datos para que pueda votar y le seteo la cookie con este $aid
$result = mysql_query($query);
$num = mysql_numrows($result);
setcookie("ya_votaste[$aid]",$aid, time()+3600*24);
}
}}
Bueno, no me funciona.
Tengo validacion por IP, pero la gente usa paginas como... anonymouse.org y pueden volver a votar.

Puse este codigo y fui a anonymouse.org a ver si podia votar 2 veces y pude.

Alguna idea, debe haber algo mal en el for ^^
  #2 (permalink)  
Antiguo 19/03/2011, 15:24
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 13 años, 9 meses
Puntos: 27
Respuesta: Que estoy haciendo mal?

Primero - Usa un navegador como Chrome, o Firefox instalandole Firebug, para ver las cookies que guardas en tu ordenador, es la manera más fácil de hacerlo.

Segundo - Los proxies webs como el que mecionas se suelen especializar en cookies, en guardarlas, cambiarlas, etc. Hay poco que hacer.

Tercero - Si tus usuarios están registrados o puedes identificarlos de otra cualquier manera, lo mejor es que guardes sus nombres, e-mails, cuentas de usuario o lo que sea en la base de datos y luego compares.
__________________
I (L) Google
  #3 (permalink)  
Antiguo 19/03/2011, 15:27
Avatar de Pafate  
Fecha de Ingreso: mayo-2010
Mensajes: 232
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Que estoy haciendo mal?

No, no estan registrados.
  #4 (permalink)  
Antiguo 19/03/2011, 15:37
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Que estoy haciendo mal?

Lo que yo hice algun dia en un software sencillo de votacion era que, quienes votaban estaban registrados, en la tabla habia un campo estado 0 = No ha votado 1 = Ya voto, y una vez votaban actualizaba ese campo, luego comparaba.
  #5 (permalink)  
Antiguo 19/03/2011, 15:49
Avatar de Pafate  
Fecha de Ingreso: mayo-2010
Mensajes: 232
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Que estoy haciendo mal?

Si, si estubiesen registrados, si.

Como veo las cookies con el firebug

Esas web como anoyinmouse... navegan en tu web como Iframe no?

Última edición por Pafate; 19/03/2011 a las 16:01
  #6 (permalink)  
Antiguo 20/03/2011, 03:56
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 13 años, 9 meses
Puntos: 27
Respuesta: Que estoy haciendo mal?

No, las webs están piden la página a través de PHP u otras tecnologías del servidor, guardando las cookies en sus bases de datos, y a ti te envían luego el resultado, a efectos practicos tu tienes una peticion, desde un servidor cualquiera que puede cambiar (suelen tener varios). Luego ellos modifican los enlaces de esa peticion etc y envian el html modificado al usuario.

Algunos proxy escriben una cabecera que se llama FowardedFor o algo asi, googlealo. Es solo convención, por lo tanto no todos lo van a hacer, pero muchos envian esa cabecera diciendo la IP real a la que direccionarán los datos despues.

Si usas firefox, para ver las cookies es en Herramientas > Informacion d ela página y luego en Seguridad > Ver cookies. Para ver QUE peticion envía esas cookies, usa la pestaña Red de Firebug, y busca una cabecera HTML llamada Set-Cookie.
__________________
I (L) Google

Etiquetas: Ninguno
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 18:59.