Ayuda de algún experto en PHP

Hola, estoy intentando utilizar este código:

mysql_connect('localhost','root','')or die('ERROR EN LA CONEXION :'.mysql_error());
mysql_select_db('base_de_datos_')or die('ERROR AL ESCOJER LA BD :'.mysql_error());

function show_encuesta($id_ENCUESTA,$proteccion_IP){
// COLOCO TODAS MIS PREGUNTAS Y OPCIONES
$encuesta[1]=array('¿Que Tecnologia utilizas?',array('Php','Asp','ColdFusion','Cgi','Perl','Jsp','Otra'));
//END
if (!array_key_exists($id_ENCUESTA,$encuesta)) return ('El id de la encuesta no se encuentra disponible');
else
$pregunta_de_la_encuesta = array_shift($encuesta[$id_ENCUESTA]);
$opciones_de_la_encuesta = array_pop ($encuesta[$id_ENCUESTA]);
if(isset($_POST[opcion])){
$ssqls=mysql_query('SELECT * FROM encuesta_blt WHERE ip="'.$REMOTE_ADDR.'"')or die(mysql_error());
if($proteccion_IP && mysql_num_rows($ssqls)>=1){
$html_encuesta='Ya usted tiene un voto registrado ';

}
else {mysql_query('INSERT INTO encuesta_blt VALUES("'.$id_ENCUESTA.'","'.$_POST[opcion].'","'.$REMOTE_ADDR.'")')or die(mysql_error()); }
}

$ssql=mysql_query('SELECT * FROM encuesta_blt WHERE id_encuesta="'.$id_ENCUESTA.'"')or die(mysql_error());
$total_votos=mysql_num_rows($ssql);


// IMPRIMIR LOS RESULTADOS.
$html_encuesta.='
';
$html_encuesta.= ''.$pregunta_de_la_encuesta.'';
$html_encuesta.='
';
foreach($opciones_de_la_encuesta as $KEY => $OPCION){
$ssql=mysql_query('SELECT * FROM encuesta_blt WHERE id_encuesta="'.$id_ENCUESTA.'" and id_opcion="'.$KEY.'"')or die(mysql_error());
$votos_x_opcion=mysql_num_rows($ssql);
$estimar_porcentaje= @round($votos_x_opcion*100/$total_votos,1);
$html_encuesta.= 'if($_POST[opcion]==$KEY && isset($_POST[opcion])){$html_encuesta.='checked'; }

$html_encuesta.= '>'.$OPCION.' '.$estimar_porcentaje.'% Votos: '.$votos_x_opcion.'
';
}

$html_encuesta.='
';
$html_encuesta.='
';
return $html_encuesta;
}
?>


Para ello tuve que crear la siguiente tabla en mi base de datos:

CREATE TABLE `encuesta_blt` (
`id_encuesta` varchar(5) NOT NULL default '',
`id_opcion` varchar(5) NOT NULL default '',
`ip` varchar(15) NOT NULL default '' )
TYPE=MyISAM;


Y para llamar la encuesta sólo tengo que poner el siguiente codigo donde me plazca:

include('encuesta_blt.ini.php');
echo show_encuesta(1,true);
?>


Hasta aquí todo bien, la encuesta aparece donde quiero, pero al votar por primera vez, la ip del votante no se queda grabada en la base de datos, la detecta como vacía y por eso sólo deja votar la primera vez, y después le dice a todo el mundo que ya ha votado (Ya que todo el mundo envia una ip en blanco, como la del primer voto)

No se si se entendió, pero me imagino que ha de deberse a algún fallo en el código que yo no soy capaz de encontrar.

Gracias de antemano.

Saludos.
debes cambiar
$REMOTE_ADDR

por
$_SERVER[REMOTE_ADDR]


ten en cuenta que esa es la IP del equipo que se conecta al servidor para obtener la pagina, y en el caso de que alguien esté detrás de un proxy transparente como me pasa mi (gracias telefónica.. [enfa]) limitaras los votos de mucha gente ;-)
javiMaD escribió:debes cambiar
$REMOTE_ADDR

por
$_SERVER[REMOTE_ADDR]


ten en cuenta que esa es la IP del equipo que se conecta al servidor para obtener la pagina, y en el caso de que alguien esté detrás de un proxy transparente como me pasa mi (gracias telefónica.. [enfa]) limitaras los votos de mucha gente ;-)


Lo he probado y funciona ^^.

Muchas gracias javiMaD!
2 respuestas