Foros del Web » Programando para Internet » PHP »

Filtrar encuesta mediante ip o algo mejor...

Estas en el tema de Filtrar encuesta mediante ip o algo mejor... en el foro de PHP en Foros del Web. Hola, antes que nada gracias desde ya!!! Siguiendo una de las FAQ de este foro me he creado una encuesta que funciona bien, el problema ...
  #1 (permalink)  
Antiguo 17/12/2003, 15:52
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 22 años
Puntos: 2
Filtrar encuesta mediante ip o algo mejor...

Hola, antes que nada gracias desde ya!!!


Siguiendo una de las FAQ de este foro me he creado una encuesta que funciona bien, el problema que tengo ahora es como filtrar los votos para que cada usuario solo pueda votar una vez, me imagino que habrá varias formas de hacerlo, a mí se me ha ocurrido mediante la ip o cookies(el problema es que las tenga activadas el user).

Por favor alguien me podría dar una idea de como hacerlo o decirme algúna sitio donde pueda encontrar un tuto o info al respecto???

A continuación pego el code que estoy utilizando para que os hagáis una idea...

Código PHP:
<? 
$conexion 
mysql_connect ("localhost","user","pass");
$base "encuestas"
mysql_select_db($base$conexion); 
$sqlupdate "UPDATE encuestabase SET Valor$_POST[voto] = Valor$_POST[voto]+1, Total = Total+1"
mysql_query($sqlupdate$conexion); 
$sql "SELECT * FROM encuestabase ORDER BY Idencuesta desc LIMIT 1"
$resultados mysql_query($sql$conexion); 
$row mysql_fetch_array($resultados); 
?>
Un saludo.
  #2 (permalink)  
Antiguo 17/12/2003, 16:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
La encuesta ha de ser "publica"? ..

Lo ideal es que los usuarios pasen por un registro .. ahí podrás colocar en su perfil algo tipo "ya votó" (un campo extra en su tabla).

Si el acceso a la encuesta es "pùblico" .. ahí sólo te cabe usar cookies en combinación con registro de IP ..y tener cuidado con la gente que accede bajo proxy's (ejemplo intranet's .. )

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 17/12/2003, 16:32
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 22 años
Puntos: 2
Hola Cluster:

La encuesta va a ser publica, me podrías decir como hacerlo me refiero a info sobre el codigo no solo la manera.

Un saludo.
  #4 (permalink)  
Antiguo 18/12/2003, 01:10
Avatar de mrbs  
Fecha de Ingreso: noviembre-2003
Ubicación: Monterrey
Mensajes: 85
Antigüedad: 21 años
Puntos: 0
pues las famosas cookies o session y para mas seguridad guardar x numeros de ips en una base de datos, al detectar la cookie o una session activa o la ip registrada, muestras los resultados nada mas.

bueno en teoria debe funcionar, mas nunca en la practica lo he realizado, espero ayudarte
__________________
Saludos Desde Monterrey. N.L.
  #5 (permalink)  
Antiguo 18/12/2003, 12:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues par ir empezando .. empezaría por usar cookies. (luego ya vendrá el registro de IP's si estimas oportuno).

El psudo código sería:

1) Ver si está definida Cookie (el valor es lo de menos .. jugaremos con el tiempo de expiración de esta sólo).

2) Si está definida: -> NO se ha de relizar el registro de la votación .. por ende . .no se ha de ejecutar el código que pusistes que hace el UPDATE (minimo).
Si NO está definida -> creas la Cookie y realizas el conteo de la votación (con tu UPDATE).

Así de simple.

La función para definir cookies es:
setcookie()
www.php.net/setcookie

Y para ver si está "definida" o no una variable de cookie puedes usar:

isset($_COOKIE['variable_cookie'])

Todo ello bajo un condicional simple tipo "IF" ...

Ahora te toca a tí .. visitar el manual oficial de PHP y ver como se define esa cookie y aplicar el psduo-còdigo-algoritmo que te he dado .. Es simple. Ves haciendolo y nos vas preguntando las dudas que tengas por el camino (sinó, nunca aprenderas).

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 14:44.