Foros del Web » Programando para Internet » ASP Clásico »

Sistema de votaciones a prueba de trolls.

Estas en el tema de Sistema de votaciones a prueba de trolls. en el foro de ASP Clásico en Foros del Web. Saludos. Necesito hacer un sistema de votaciones para una serie de fotos que van a aparecer en mi web. La idea es hacer un ranking. ...
  #1 (permalink)  
Antiguo 06/07/2011, 18:53
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 16 años, 4 meses
Puntos: 0
Sistema de votaciones a prueba de trolls.

Saludos.

Necesito hacer un sistema de votaciones para una serie de fotos que van a aparecer en mi web. La idea es hacer un ranking.

La idea es poner un botón al lado de cada foto y al hacer clic en el, se sumaría un voto al total de cada foto.

Para hacer todo eso no tengo ningún problema, mis dudas aparecen en como evitar que una persona vote una foto más de una véz (por ejemplo que un usuario descontrolado, o troll, vote su propia foto continuamente para ganar posiciones).

La solución fácil sería obligar a registrarse a los usuarios antes de votar y guardarme la identidad del usuario para cada voto, pero quiero que cualquier usuario pueda votar, esté o no registrado.

¿Cómo podría hacer esto? ¿Con cookies, controlando la IP de cada voto?

Agradezco vuestra ayuda con esto, un saludo.

EDITO: Ya tengo hecho el control por cookies, ahora necesito ayuda para controlar también el tema por IP, más que nada por si a alguien se le ocurriese borrar las cookies del navegador para volver a votar saltandose la restricción.

¿Alguna ayuda sobre como puedo hacer esto?

Última edición por provotector; 06/07/2011 a las 21:01
  #2 (permalink)  
Antiguo 07/07/2011, 00:48
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Sistema de votaciones a prueba de trolls.

al ser una votacion publica, esta dificil, lo que se me viene a la mente seria por IP asi omitir los votos duplicados de la misma IP, tambien podrias poner un captcha para evitar que solo den clic y votar, y asi hacer mas dificil la tarea.

son solo sugerencias.
para la ip te vale
Código ASP:
Ver original
  1. vIP = request.ServerVariables("REMOTE_ADDR")

despues la buscas en la tabla algo asi con la consulta

Código ASP:
Ver original
  1. str = "Select top 1 cIP from tblIp where cIP='" & vIP & "'"
y validas si existe
Código ASP:
Ver original
  1. if not rs.eof then
  2.     response.write "ya has votado"
  3. end if
  #3 (permalink)  
Antiguo 09/08/2011, 15:11
Avatar de Jall251  
Fecha de Ingreso: marzo-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sistema de votaciones a prueba de trolls.

oie disculpa me intereso tu comentario y me gustaria saber si me podrias ayudar un poco me gustaria lo mismo pero en php

tengo un script algo asi lo pongo
Código PHP:
<?

// iniciamos session
session_start ();

$dbConn mysql_connect("localhost""root""");
mysql_select_db("db"$dbConn);

//obtengo el id de la noticia
$notid $_GET['idNoticia'];
//selecciono la db y ago una query para saber los datos
$sql "SELECT * FROM votos WHERE noticia = '".$_GET['idNoticia']."'";
$resultado mysql_query($sql$dbConn) or die(mysql_error());
$query2 mysql_fetch_array($resultado);

//condiciono si existe la noticia y si no creo un nuevo voto con referencia a la noticia
if($query2['noticia'] != $notid){
mysql_query("INSERT INTO votos (noticia) VALUES ('$notid')"$dbConn);
}

//obtendo el id de la noticia para agregarlo e incrementar en la db referente a la noticia seleccionada
if($bueno=$_GET['b']){
    
//
    
$sql "SELECT * FROM votos WHERE noticia = '".$_GET['b']."'";
    
$resultado mysql_query($sql$dbConn) or die(mysql_error());
    
$query2 mysql_fetch_array($resultado);

$incremento $query2['bueno']+1;
mysql_query("UPDATE votos SET bueno = '$incremento' WHERE noticia = '".$_GET['b']."'");
//retorno a la noticia seleccionada
    
header'Location: voto.php?idNoticia='.$_GET['b']);
    die;
}

if(
$bueno=$_GET['m']){
    
//
    
$sql "SELECT * FROM votos WHERE noticia = '".$_GET['m']."'";
    
$resultado mysql_query($sql$dbConn) or die(mysql_error());
    
$query2 mysql_fetch_array($resultado);

$incrementoMalo $query2['malo']+1;
mysql_query("UPDATE votos SET malo = '$incrementoMalo' WHERE noticia = '".$_GET['m']."'");
//retorno a la noticia seleccionada
    
header'Location: voto.php?idNoticia='.$_GET['m']);
    die;
}


?>


Código HTML:
<p>&nbsp;</p>
<table width="400" border="1" align="center">
  <tr>
    <td colspan="3" ><center>
      Noticia: <?= $notid ?>
    </center></td>
  </tr>
  <tr>
    <td width="101">Total de Votos:</td>
    <td colspan="2"><?= $total = $query2['bueno'] + $query2['malo']; ?></td>
  </tr>
  <tr>
    <td>Buenos</td>
    <td width="38"><?= $query2['bueno'] ?></td>
    <td width="239"><a href="voto.php?b=<?=$_GET['idNoticia']; ?>"><img src="bien.png" width="35" height="25" border="0" /></a></td>
  </tr>
  <tr>
    <td>Malos</td>
    <td><?= $query2['malo'] ?></td>
    <td><a href="voto.php?m=<?=$_GET['idNoticia']; ?>"><img src="mal.png" width="35" height="25" border="0"/></a></td>
  </tr>
</table>
<p>&nbsp;</p> 
Todo el codigo lo he puesto junto en un solo archivo llamado voto.php

y la sql asi
Código:
CREATE TABLE `votos` (
  `id` int(10) NOT NULL auto_increment,
  `bueno` int(10) NOT NULL default '0',
  `malo` int(10) NOT NULL default '0',
  `noticia` int(10) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Espero que me puedas ayudar un poco lo agradeceria mucho.

Etiquetas: sistema, votacion
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 13:56.