Foros del Web » Programando para Internet » PHP »

ayuda con la encuesta, para un solo voto por ip

Estas en el tema de ayuda con la encuesta, para un solo voto por ip en el foro de PHP en Foros del Web. hola leyendo y leyendo una encuesta que hice, lo que quiero que me ayuden es como hacer para que voten una sola vez, tomo el ...
  #1 (permalink)  
Antiguo 14/07/2006, 13:18
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
ayuda con la encuesta, para un solo voto por ip

hola leyendo y leyendo una encuesta que hice, lo que quiero que me ayuden es como hacer para que voten una sola vez, tomo el ip de la computadora, lo guardo en una base de dato llamada (top20deny)
en la cual contiene dos campo el ip y deny

lo que no se como hacer es que yo quiero que no puedan votar al instante pero al otro dia si, en definitiva:

necesito saber como guardar una cantidad de 10 ip en la base de datos, (10 votos de distintos ip), y que a medida de que vayan votando se valla borrando el primer ip de la base de datos, y vaya agregando el nuevo ip, a demas de que controle que no guarde el mismo ip.

alguien puede orientarme???
__________________
DJJJ
  #2 (permalink)  
Antiguo 14/07/2006, 15:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. si registras la IP .. fijate que no todo el mundo anda con conexión con IP fija .. además de los problemas que tendras con los que pasan por un proxy y salen con una misma IP al exterior de sus LAN's ...

Lo recomendable es que a ser posible, voten "usuarios" de tu aplicación/sitio .. donde los puedas tener registrados y saber quienes son .. eso es lo único seguro 100% .. El resto de soluciones tienen sus pro's y contras .. a veces toca implementar una combinación de registro de IP's y cookies.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 15/07/2006, 12:40
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
si tienes razon pero...

si tienes razon cluster, pero la idea no es que puedan votar una unica ves, la idea es que despues de un rato puedan votar de nuevo.

es por eso que quiero que cuando votes vaya registrando en la base de datos que dije antes los ultimos 10 ip, y luego cuando el votante 11 vote borre de la base de datos el primer ip.

alguien puede orientarme como hacerlo ?
__________________
DJJJ
  #4 (permalink)  
Antiguo 16/07/2006, 12:06
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
A mi forma de ver no es la forma correcta de hacerlo. Yo lo haría de la siguiente forma. Cuando alguien quiere votar nos fijamos si la ip esta registrada, si no la esta lo dejamos votar y la registramos pero cuando hacemos el registro guardamos fecha y hora del voto, con este dato (fecha y hora) lo usamos para verificar que si la misma ip intenta votar antes de 24hs. por ej, no lo dejamos votar, si el voto de la ip en cuestion supera las 24hs lo dejamos votar, para poder lograr esto se hace mucho uso de las consultas a la DB, asique debes encaminar tu solucion para el lado de la DB.

Saludos, si no entendiste o me explique muy mal (no seria raro), vualve a preguntar e intento ayudarte.
  #5 (permalink)  
Antiguo 16/07/2006, 13:08
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Antes tenia el sistema como dice cluster y si, es lo más seguro, sabes que un usuario solo puede votar una vez y esas encuestas son EFECTIVAS. Lamentablemente tuve que cambiarlo puesto que muchos de mis visitantes pedían votar sin estar identificados y/o registrados, por lo que tuve que volver al tema de las IP que, a mi gusto, no sirve. Si a mi me gusta X y no soy parcial entonces votare todos los días, perdiendo así la verdadera estadística de la encuesta.

El sistema es censillo, tienes una tabla en donde guardas las IP, cada vez que vota alguien verifica que no este su IP en la tabla, si esta le dices "perdón tu ya has votado", y si no guardas su IP -además del voto, claro esta-

Personalmente tengo un CRON (una "tarea programada") que se ejecuta todos los días a X hora vaciando las IP. Hoy en día casi todo hosting tiene automatización de tareas...

En fin, si tienes la posibilidad de que solo voten los registrados NO LO DUDES, es lo mejor...
__________________
I Love Programming...
  #6 (permalink)  
Antiguo 16/07/2006, 18:27
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
hola que tal ... DJJJ yo supe hacer un script de encuestas, y aca te dejo el hilo....

http://www.forosdelweb.com/showthrea...light=encuesta

En mi script y trabajo con sesiones, y creo que las hice durar una hora o algo asi, lo podes cambiar en el codigo fuente .. cualquier cosa pregunte nomas ...

saludos!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #7 (permalink)  
Antiguo 17/07/2006, 03:56
Avatar de rod524  
Fecha de Ingreso: agosto-2004
Mensajes: 517
Antigüedad: 19 años, 8 meses
Puntos: 0
Tal vez no sea lo más correcto contestar esto en el foro de PHP, preo creo que la mejor opción para hacer lo que buscas es hacer uso de SharedObjects, de flash, no son tan frágiles como las cookies normales, y a menos que tu lo indiques, serán permanentes.

Saludos.
  #8 (permalink)  
Antiguo 17/07/2006, 09:11
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
gracias por sus opiniones

muchas gracias por sus ideas, pero quiero probar con lo que dije anteriormente que para mi es una buena idea.
les explico de nuevo, anteriormente dijero que registrara la fecha y luego compare para ver si pasaron 24hs para que pueda votar nuevamente, la idea mia, es mas simple ya que cuando el primero vota, guarda la ip en la base de datos, si vota de nuevo obvio que verificamos, si la ip concide con el de la base de dato no deja votar, asi hasta que votan 10 ip distintas, luego cuando el votante 11 ya voto en lugar de seguir almacenando en la base de datos borra al primer votante y lo guarda en el primer lugar entonces vamos a tener 10 ip guardadas siempre en la bd.

se entiende la idea?

obtener la ip y guardarla en la base de datos lo se
lo que quiero que orienten es como hacer para que:

verifique si la ip esta en la base de datos, si no esta la guarde, se que hay una instruccion que verifica en la bd y si no esta la guarda.

y lo segundo es como obterner el primer id que es autoinc

saludos y gracias
__________________
DJJJ
  #9 (permalink)  
Antiguo 17/07/2006, 09:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La idea de "rotar" registros sobre una tabla cualquiera. Sería algo tipo:

El "id" autonumérico último lo obtienes viendo cual es el n° mayor de esa "columna" (campo ID) .. aprovechando de las virtudes de un campo autonumérico que sabes que es incremental, único y que no se "ocupan" los espacios vacios si es que se borra una secuencia de ID's ...

Código PHP:
<?
// Conectas a tu BBDD .. etc ...

// Cuento el total de registros que tiene la tabla .. para ver si he llegado a mi tope ..

$sql="SELECT COUNT(*) FROM tabla";
$resultado=mysql_query($sql) or die (mysql_error());
$total=mysql_result($resultado,0);

if (
$total == 10){
   
// Borrar el registro más viejo
   
$sql="DELETE FROM tabla WHERE MIN(id)";
   
mysql_query($sql) or die (mysql_error());
}

// INSERTA el nuevo registro 
$sql="INSERT INTO tabla (id,IP) VALUES ('','".$IP."')";
mysql_query($sql) or die (mysql_error());
?>
Hay un detalle en este método .. si te basas en un ID incremental .. al final te vas a llenar de "ID's" .. creo que sería recomendable gestinar ese "ID" a mano o resetearlo (todo depende de que relaciones hagas con ese ID en otras tablas para respetar la "integridad referencial").

También estaría bueno meter todo este proceso bajo una "transacción" para evitar problemas tipo "por un lado COUNT() arrojó tal valor y en ese instante otro "INSERT" ya incrementó esa tabla.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 17/07/2006, 09:54
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
cluster muchas gracias

ni bien termine de realizar esto, pondre el codigo completo de la votacion

un saludo
__________________
DJJJ
  #11 (permalink)  
Antiguo 17/07/2006, 10:44
Avatar de rod524  
Fecha de Ingreso: agosto-2004
Mensajes: 517
Antigüedad: 19 años, 8 meses
Puntos: 0
no es más complicado tratar de identificar la IP, que para muchos casos es variable que tratar de localizar exactamente la computadora desde la que se hace la votación?

Saludos.
  #12 (permalink)  
Antiguo 17/07/2006, 10:54
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 rod524
no es más complicado tratar de identificar la IP, que para muchos casos es variable que tratar de localizar exactamente la computadora desde la que se hace la votación?

Saludos.
No entendí a que te refires ...

La "localización" del computador no sé como lo vas hacer .. a lo sumo por el dato de la IP puedes acuder a las BB.DD. tipo "IP-to-Country" y obtener más o menos (precisión) de donde es esa IP.

Un saludo.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 17/07/2006, 11:15
Avatar de rod524  
Fecha de Ingreso: agosto-2004
Mensajes: 517
Antigüedad: 19 años, 8 meses
Puntos: 0
Bueno, no localización, identificación de cada computadora que ha entrado en tu sitio debí decir.

Saludos.
  #14 (permalink)  
Antiguo 17/07/2006, 12:23
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 rod524
Bueno, no localización, identificación de cada computadora que ha entrado en tu sitio debí decir.

Saludos.
Ok, pero como lo identificas como Único? .. una Cookie? (puedes denegar su creación) .. el MAC ADRRES? (eso sólo sirve en LAN's no en Internet) ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 17/07/2006, 12:38
Avatar de rod524  
Fecha de Ingreso: agosto-2004
Mensajes: 517
Antigüedad: 19 años, 8 meses
Puntos: 0
No, como dije antes, usando SharedObjects, si PHP no puede hacerlo a la manera fácil, entonces ¿por que no recurrir a otra herramienta?

Por eso aclaré en el primer post que no era precisamente PHP.

Saludos.
  #16 (permalink)  
Antiguo 17/07/2006, 12:53
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 rod524
No, como dije antes, usando SharedObjects, si PHP no puede hacerlo a la manera fácil, entonces ¿por que no recurrir a otra herramienta?

Por eso aclaré en el primer post que no era precisamente PHP.

Saludos.
Bueno .. no es que intente solucionar el tema con PHP sólo .. Sino que busco normalmente "estandares" .. Si es por eso, me diseño mi própio ActiveX e interactuo con el en el cliente ... Pero no es el caso.

Si ese objeto de Flash crees tu que va a solucionar el problema .. OK, piensa también en asegurar el script PHP de proceso, por qué si te inyectan datos directos a dicho script de poco servirá un objeto del lado del cliente que haga cierta validación.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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:35.