Foros del Web » Programando para Internet » PHP »

Contar votos por ip

Estas en el tema de Contar votos por ip en el foro de PHP en Foros del Web. Hola a todos, tengo una web con un sistema de encuestas en las que los usuarios " registrados" pueden votar... El problema es que la ...
  #1 (permalink)  
Antiguo 03/02/2010, 18:10
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
Contar votos por ip

Hola a todos, tengo una web con un sistema de encuestas en las que los usuarios " registrados" pueden votar...

El problema es que la gente es reacia a registrarse...como es sabido...

Mi pregunta es ¿como monto un codigo para controlar que tambien se puede votar sin registrar PERO SOLO UNA VEZ POR ENCUESTA??? supongo que mediante la ip del que vota

¿ es posible montar este sistema y dejar el otro ( por registro ) funcionando??

Gracias a todos un saludo
  #2 (permalink)  
Antiguo 03/02/2010, 18:14
 
Fecha de Ingreso: enero-2008
Ubicación: /España/Galicia
Mensajes: 928
Antigüedad: 16 años, 3 meses
Puntos: 21
Respuesta: Contar votos por ip

si

compruebas si estas logeado

$login = true; usas el motodo anterior

$login = false;

haces, una db


tabla: encuestas (id.titulo.opcion1.opcion2.opcion3.opcion4.opcion5 .opcion6)
tabla: votos (id.idencuesta.voto.ip)

aces una consulta que si existe la ip en el id de la encuesta no se muestra, como no se como tienes la db
  #3 (permalink)  
Antiguo 03/02/2010, 18:16
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
Respuesta: Contar votos por ip

Que necesitas para guiarme??
  #4 (permalink)  
Antiguo 03/02/2010, 18:17
 
Fecha de Ingreso: enero-2008
Ubicación: /España/Galicia
Mensajes: 928
Antigüedad: 16 años, 3 meses
Puntos: 21
Respuesta: Contar votos por ip

las tablas de la db para las encuesta
  #5 (permalink)  
Antiguo 03/02/2010, 18:19
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
Respuesta: Contar votos por ip

ok, solo doy las opciones de si o no en la encuesta..

en un momento te digo como guardo los datos..
  #6 (permalink)  
Antiguo 03/02/2010, 18:20
 
Fecha de Ingreso: enero-2008
Ubicación: /España/Galicia
Mensajes: 928
Antigüedad: 16 años, 3 meses
Puntos: 21
Respuesta: Contar votos por ip

en la tabla donde el usuario pone si o no, pon un campo mas que sea la ip y luego compruebas si la ip esta metida o no
  #7 (permalink)  
Antiguo 03/02/2010, 18:23
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
se guardan por un lado , las encuestas que se crearón y por otro lado los votos..

de esta manera

id / id_usuario / nombre / id_encuesta

...se puede poner un campo mas para la ip y guardar la ip con la id_encuesta que se voto y luego comprobar si ya está ¿ no?

Última edición por jpinedo; 04/02/2010 a las 20:16
  #8 (permalink)  
Antiguo 03/02/2010, 18:25
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Contar votos por ip

Hola! Che igual creo que por ip no es tan bueno que digamos, de ultima podes hacer una cookie cuando vota... pero tampoco es confiable ya que las eliminan y listo, otra cosa que podes hacer es tomar la mac addres y guardarla en la db y cuando alguien vote comprar que no este dentro de la bd, si esta dentro es porque ya voto, y la mac addres no se puede cambiar reiniciando el router, segun lei por ahi, es muuucho mas complicado y a veces trae problemas. Fijate de buscar algun tuto de como tomar el valor de la mac addres y bueno, de ahi en adelante ya es facil!

Un abrazo y espero que te haya servido! =)
  #9 (permalink)  
Antiguo 03/02/2010, 18:32
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
Respuesta: Contar votos por ip

mmm , gracias , pero de momento creo que voy a montar el sistema con la ip y si veo que no va bien entonces guardo el mac_adreess en vez de la ip....

Por cierto ¿ porque no es bueno controlar los votos con la ip, no es fiable, podrian votar mas de una vez?
  #10 (permalink)  
Antiguo 04/02/2010, 12:09
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
crear sistema de votos por ip

Hola , tengo montado un sistema de registro de votos para una encuesta ( solo si o no) , pero hasta ahora hera necesario estar registrado para votar...

¿que tengo que hacer en el código para permitir que se vote sin estar registrado y guardar la ip del usuario para controlar que solo vote una vez??

gracias y saludos

Código PHP:
/* sumo positivo */
if($_POST['positivo']){
$c="select * from votos where id_usuario = '".$_SESSION['id']."' and id_encuesta = '".$_REQUEST['id']."'";
$r=mysql_db_query($mysql_db,$c)or die(mysql_error());
$ver=mysql_fetch_array($r);
    if(
$ver['id_usuario']!=$_SESSION['id']){
    
/* Inserto voto */
    
$c1="UPDATE encuesta set positivo = positivo + 1, total = total + 1  where id = '".$_REQUEST['id']."'";
    
$r1=mysql_db_query($mysql_db,$c1)or die(mysql_error());
    
/* Inserto registro de votante*/
    
$c2="Insert into votos (id_usuario,nombre,id_encuesta,estado) values ('".$_SESSION['id']."','".$_SESSION['usuario']."','".$_REQUEST['id']."','si')";
    
$r2=mysql_db_query($mysql_db,$c2) or die(mysql_error());
    
$aviso="Su voto ha sido registrado. <br> Gracias por participar";
    }else{ 
$aviso="Usted ya ha votado en esta plataforma."; }

}
/* sumo negativo */
if($_POST['negativo']){
$c="select * from votos where id_usuario = '".$_SESSION['id']."' and id_encuesta = '".$_REQUEST['id']."'";
$r=mysql_db_query($mysql_db,$c)or die(mysql_error());
$ver=mysql_fetch_array($r);
    if(
$ver['id_usuario']!=$_SESSION['id']){
    
/* Inserto voto*/
    
$c1="UPDATE encuesta set negativo = negativo + 1 , total = total + 1 where id = '".$_REQUEST['id']."'";
    
$r1=mysql_db_query($mysql_db,$c1)or die(mysql_error());
    
/* Inserto registro de votante*/
    
$c2="Insert into votos (id_usuario,nombre,id_encuesta,estado) values ('".$_SESSION['id']."','".$_SESSION['usuario']."','".$_REQUEST['id']."','si')";
    
$r2=mysql_db_query($mysql_db,$c2) or die(mysql_error());
    
$aviso="Su voto ha sido registrado.<br> Gracias por participar";
}else{ 
$aviso="Usted ya ha votado en esta plataforma."; }

  #11 (permalink)  
Antiguo 04/02/2010, 12:23
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Contar votos por ip

Esto ya lo respondi....

Guarda todas las IP de los usuarios que voten separados por , en una tabla. Cuando vallan a votar, extraes todos los ip (seria algo como 192.168.1.1,158.468.46.4,etc) entonces usas explode() para separarlos, lo cual te dejaria con un array con todas las IP.

Despues buscas en el array que la IP del usuario en cuestion no exista en el array, para lo cual podrias usar array_search()

Si existe, entonces el usuario ya voto, sino... se procesa el voto del usuario.
  #12 (permalink)  
Antiguo 04/02/2010, 12:26
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
Respuesta: Contar votos por ip

yo ke no tengo mucha idea de php, me podrías indicar como sería el código...

gracias.
  #13 (permalink)  
Antiguo 04/02/2010, 12:47
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Contar votos por ip

No tengo tiempo asique no te lo puedo adaptar al codigo que ya tenes, pero seria algo asi:

Código PHP:
<?php
//Cuando el usuario vota por primera vez.
$ip $_SERVER['REMOTE_ADDR'];

$cons mysql_query("SELECT ip FROM `tabla`");
$row mysql_fetch_assoc($cons);

$ips $row['ip'];
$ips .= ','.$ip//Se agrega el IP a la lista de IPs que ya votaron

mysql_query("UPDATE `tabla` SET ip = '$ips'"); //Se actualiza la tabla


//Comprobar si el usuario ya voto.
$ip $_SERVER['REMOTE_ADDR'];

if(
mysql_query("SELECT ip FROM `tabla` WHERE ip LIKE '%$ip%'")){
    
//USUARIO YA VOTO    
}else{
    
//USUARIO PUEDE VOTAR.    
}
?>
Lo hice muy rapido no lo eh probado ni nada, fijate si funciona :P
  #14 (permalink)  
Antiguo 04/02/2010, 13:14
rtr
 
Fecha de Ingreso: abril-2009
Mensajes: 368
Antigüedad: 15 años
Puntos: 2
gracias tio , probare

muchas gracias

Código PHP:

<?php
session_start
();
require_once 
'graphs.inc.php';
require(
"conexion.php");
include(
'bebecode/bbcode/bbcode.php');


//Cuando el usuario vota por primera vez.
$ip $_SERVER['REMOTE_ADDR'];

$cons mysql_query("SELECT ip FROM `tabla`");
$row mysql_fetch_assoc($cons);

$ips $row['ip'];
$ips .= ','.$ip//Se agrega el IP a la lista de IPs que ya votaron

mysql_query("UPDATE `tabla` SET ip = '$ips'"); //Se actualiza la tabla


//Comprobar si el usuario ya voto.
$ip $_SERVER['REMOTE_ADDR'];

if(
mysql_query("SELECT ip FROM `tabla` WHERE ip LIKE '%$ip%'")){
    
//USUARIO YA VOTO    
}else{
    
//USUARIO PUEDE VOTAR. 
   

/* sumo positivo */
if($_POST['positivo']){
$c="select * from votos where id_usuario = '".$_SESSION['id']."' and id_encuesta = '".$_REQUEST['id']."'";
$r=mysql_db_query($mysql_db,$c)or die(mysql_error());
$ver=mysql_fetch_array($r);
    if(
$ver['id_usuario']!=$_SESSION['id']){
    
/* Inserto voto */
    
$c1="UPDATE encuesta set positivo = positivo + 1, total = total + 1  where id = '".$_REQUEST['id']."'";
    
$r1=mysql_db_query($mysql_db,$c1)or die(mysql_error());
    
/* Inserto registro de votante*/
    
$c2="Insert into votos (id_usuario,nombre,id_encuesta,estado) values ('".$_SESSION['id']."','".$_SESSION['usuario']."','".$_REQUEST['id']."','si')";
    
$r2=mysql_db_query($mysql_db,$c2) or die(mysql_error());
    
$aviso="Su voto ha sido registrado. <br> Gracias por participar";
    }else{ 
$aviso="Usted ya ha votado en esta encuesta."; }

}
/* sumo negativo */
if($_POST['negativo']){
$c="select * from votos where id_usuario = '".$_SESSION['id']."' and id_encuesta = '".$_REQUEST['id']."'";
$r=mysql_db_query($mysql_db,$c)or die(mysql_error());
$ver=mysql_fetch_array($r);
    if(
$ver['id_usuario']!=$_SESSION['id']){
    
/* Inserto voto*/
    
$c1="UPDATE encuesta set negativo = negativo + 1 , total = total + 1 where id = '".$_REQUEST['id']."'";
    
$r1=mysql_db_query($mysql_db,$c1)or die(mysql_error());
    
/* Inserto registro de votante*/
    
$c2="Insert into votos (id_usuario,nombre,id_encuesta,estado) values ('".$_SESSION['id']."','".$_SESSION['usuario']."','".$_REQUEST['id']."','si')";
    
$r2=mysql_db_query($mysql_db,$c2) or die(mysql_error());
    
$aviso="Su voto ha sido registrado.<br> Gracias por participar";
}else{ 
$aviso="Usted ya ha votado en esta encuesta."; }
}

}

?>
He intentando colocar el codigo en el mio, pero como es normal no me funciona... ¿cuantas cosas he hecho mal ???


Entro en la página y me aparece esto arriba del todo;

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /mnt/web3/30/71/52236271/htdocs/public/plataforma.php on line 12

Última edición por jpinedo; 04/02/2010 a las 20:15

Etiquetas: contar, ip, votos
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:23.