Foros del Web » Programando para Internet » PHP »

Sistema de encuestas

Estas en el tema de Sistema de encuestas en el foro de PHP en Foros del Web. Bueno dia, el gente toca votar muchos veces, mejor dejar toca uno vez como ip bloquear? Código PHP: <?php require( 'conexion.php' );          $id  =  ...
  #1 (permalink)  
Antiguo 24/01/2014, 03:36
 
Fecha de Ingreso: abril-2013
Mensajes: 39
Antigüedad: 6 años, 8 meses
Puntos: 0
Sistema de encuestas

Bueno dia, el gente toca votar muchos veces, mejor dejar toca uno vez como ip bloquear?
Código PHP:
<?php
require('conexion.php');
        
$id $_GET['id'];
    if(!isset(
$_GET['id'])){
        
header('location: index.php');
    }
 
    if(isset(
$_POST['votar']))
    {
 
        if(isset(
$_POST['valor'])){
            
$opciones $_POST['valor'];
            
$mod mysql_query("SELECT * FROM opciones WHERE id = ".$opciones);
            while(
$result mysql_fetch_object($mod)){
                
$valor $result->valor 1// obtenemos el valor de 'valor' y le a単adimos 1 unidad
                
mysql_query("UPDATE opciones SET valor =  '".$valor."' WHERE id = ".$opciones); // luego ejecutamos el query SQL
            
}
            
header('location: resultado.php?id='.$id); // Por ultimo lo redireccionamos a la encuestas mostrando los resultados.
        
}
    }
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>Sistema de encuestas</title>
    <link rel="stylesheet" href="estilos.css">
</head>
<body>
 
    <div class="wrap">
 
    <form action="" method="post">
<?php
    $aux 
0;
    
$sql "SELECT a.titulo as titulo, a.fecha as fecha, b.id as id, b.nombre as nombre, b.valor as valor FROM encuestas a INNER JOIN opciones b ON a.id = b.id_encuesta WHERE a.id = ".$id;
    
$req mysql_query($sql);
 
    while(
$result mysql_fetch_object($req)){
 
        if(
$aux == 0){
            echo 
'<h1>'.$result->titulo.'</h1>';
 
            echo 
'<ul class="votacion">';
            
$aux 1;
        }
 
        echo 
'<li><input name="valor" type="radio" value="'.$result->id.'"><span>'.$result->nombre.'</span></li>';
 
    }
        echo 
'</ul>'
 
        if(!isset(
$_POST['valor'])){
            echo 
"<div class='error'>Selecciona una opcion.</div>";
        }
 
        echo 
"<input name='votar' type='submit' value='Votar' class='votar'>";
        echo 
"<a href='resultado.php?id=".$id."' class='resultado'>Ver Resultados</a>";
        echo 
"<a href='index.php' class='volver'>&larr; Volver</a>";
 
?>
 
    </form>
    </div>
  #2 (permalink)  
Antiguo 24/01/2014, 06:54
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 11 años
Puntos: 13
Respuesta: Sistema de encuestas

Hola,
No se entiende mucho lo que quieres hacer, pero si fuese bloquear la encuesta una vez que un usuario ya votó, basado en una ip (que no sé si es la mejor idea, pues las ip's son dinámicas y la ip que tu tienes ahora, puede que la tenga yo en unas horas si estamos en la misma zona), deberías guardar la ip que está usando el usuario y guardarla en tu bd.

Para encontrar la ip quizás te sirva lo siguiente (tema en stackoverflow):

http://stackoverflow.com/questions/1...ress-using-php
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 24/01/2014, 07:31
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 11 años, 2 meses
Puntos: 36
Respuesta: Sistema de encuestas

camilomascarell1987,

Normalmente cuando realizas sistemas de encuestas, el tema del controlar el IP, es un tema muy polemico, porque te puedes encontrar con dos variantes:

1- Los usuarios que acceden desde IP publicas y reales.
2- Los usuarios que accedes desde redes LAN y que navegan hacia internet a traves de proxys (que son los muchos)

Entonces te puedes encontrar que hay varios, quizas miles de usurios que desean botar en tus encuentas que estan destras de un proxy y al tu capturar su IP de navegacion estas capturando el IP del proxys, entonces por este IP solo te podra botar una persona.

Aunque una vez un amigo me dijo que habia una forma de poder detectar la IP del proxy y la IP de usario de navegacion. Si te puedo averiagur esto te lo envio.
  #4 (permalink)  
Antiguo 24/01/2014, 07:44
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 11 años
Puntos: 13
Respuesta: Sistema de encuestas

También hay otro tema en stackoverflow al respecto del proxy:
http://stackoverflow.com/questions/5...roxy-detection

Como solución, creo que en realidad funcionaría mejor meter una cookie que indique que el usuario ya votó (o al menos el navegador), en este caso tendrías el problema de que el usuario puede borrar las cookies... en definitiva, no hay forma de que estas soluciones funcionen al 100%...
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #5 (permalink)  
Antiguo 24/01/2014, 08:33
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 11 años, 2 meses
Puntos: 36
Respuesta: Sistema de encuestas

Prueba este codigo, con el podras conocer cual es la ip del visitante si te esta llegando atravez de un proxy o de forma directa.

Código PHP:
Ver original
  1. if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&  $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
  2. {
  3. echo "IP: " . $_SERVER['HTTP_X_FORWARDED_FOR'];
  4. }
  5. else
  6. echo "IP: " . $_SERVER['REMOTE_ADDR'];

Prueba y nos comentas.
  #6 (permalink)  
Antiguo 27/01/2014, 03:33
 
Fecha de Ingreso: abril-2013
Mensajes: 39
Antigüedad: 6 años, 8 meses
Puntos: 0
Respuesta: Sistema de encuestas

mi pagina de web encuesta en ip 100%, muchos gracias
  #7 (permalink)  
Antiguo 27/01/2014, 03:42
 
Fecha de Ingreso: abril-2013
Mensajes: 39
Antigüedad: 6 años, 8 meses
Puntos: 0
Respuesta: Sistema de encuestas

Código PHP:
<?php
$poll
->total_votes intval($poll->total_votes10);
$voted_answer Cookie::get('p_' $poll->id '_v');
if( ! 
$voted_answer ) {
$vote Vote::where('voter_ip''='CURRENT_USER_IP)->and_where('poll_id''=', (int) $poll->id)->first();
if( 
$vote ) {
$voted_answer $vote->answer_id;
}
unset(
$vote);
}
?>

Etiquetas: encuestas, fecha, html, mysql, select, sistema, sql
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 06:49.