Autor Tema: Único voto en una encuesta  (Leído 2531 veces)

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Único voto en una encuesta
« en: 28 de Octubre de 2006, 20:14:29 pm »
Pues me he bajado una encuesta muy simple para yo añadirle cosas...

y entre estas cosas quiero que solamente se pueda votar una vez

entonces, lo quiero hacer mediante la comparación de ip... o sea, que una ip pueda votar solamente una vez... ya sé que mucho no servirá porque si es dinámica, podrá volver a votar y demás, pero bueno...

entonces, en el botoncito, en la función de enviar el voto, he puesto para que guarde la ip del votante:

<?
    $log 
fopen("ip.txt""a");
    
$ip $REMOTE_ADDR
    
$host gethostbyaddr($_SERVER[&#39;REMOTE_ADDR&#39;]);
    
fwrite($log" > ".$ip." (".$host.")\n"); 
    
fclose($log); 
?>


Pues entonces, quiero que cada vez que una persona vote, a parte, de que guarde su ip en ip.txt mediante el código de arriba,

 quiero que compare a ver si su ip aparece ya en ip.txt
en el caso de que la ip ya estuviera guardada en ip.txt me gustaría que impidiera el voto saliendo que no puede volver a votar...

porque significaría que intenta volver a votar...


Entonces, qué sería...

Mediante fopen abrir ip.txt

y que leyera el archivo y en el caso de que la ip que vota apareciera en ip.txt no le dejara votar...

pero cómo lo puedo hacer?  ??? ::)

[ya sé que esto lo puedo encontrar facilmente en google, pero lo que me interesa es "aprender" php practicándolo y no copiando y pegando el code]


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Comunidad PHPeros

Único voto en una encuesta
« en: 28 de Octubre de 2006, 20:14:29 pm »

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #1 en: 28 de Octubre de 2006, 21:38:20 pm »
Para buscar algo (en este caso la IP) dentro de un string puedes usar el comando explode()

www.php.net/explode
« Última modificación: 28 de Octubre de 2006, 21:47:23 pm por Raken »
Raken - Moderador para PHP y HTML

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Re: Único voto en una encuesta
« Respuesta #2 en: 31 de Octubre de 2006, 22:25:44 pm »
Es un comando que desconocía hasta el momento

entonces, a ver... no lo entiendo mucho...

el ejemplo que nos ponen...

<?php
// Ejemplo 1
$pizza  "trozo1 trozo2 trozo3 trozo4 trozo5 trozo6";
$trozos explode(" "$pizza);
echo 
$trozos[0]; // trozo1
echo $trozos[1]; // trozo2
?>


entonces... miro de aplicarlo con el ip.txt

<?php
$log 
fopen("ip.txt""a");
$ip  "$REMOTE_ADDR";
$ips explode(" "$log);

?>


No sé si eso está bien /que lo dudo, porque me estoy 'iniciando' en php/
y tampoco sé cómo continuar...

si me puedes echar una mano.

gracias


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #3 en: 01 de Noviembre de 2006, 02:20:55 am »
Bueno, me he acordado de otro comando que puede serte de más utilidad.

strstr()

Definición en PHP.NET:

Citar
" Devuelve toda la cadena pajar desde la primera aparición de caracter hasta el final.

Si no se encuentra el caracter, devuelve FALSE.

Si caracter no es una cadena, se convierte a entero y se aplica como el valor ordinal de un caracter. "

Aplicación:

<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (strstr($log$ip) {
//La IP está en la lista
}
else {
//La IP NO está en la lista
}

?>


Raken - Moderador para PHP y HTML

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Re: Único voto en una encuesta
« Respuesta #4 en: 01 de Noviembre de 2006, 12:58:51 pm »
<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (strstr($log$ip) {
//La IP está en la lista
}
else {
//La IP NO está en la lista
}

?>


Eso ya lo entiendo mejor

entonces... a ver...

<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (strstr($log$ip) {
echo 
"No puedes volver a votar, has votado ya anteriormente";
}
else {
//Aquí se haría la función de realizar el voto
}

?>



//Aquí se haría la función de realizar el voto
¿Qué tendría que añadir ahí, el código html que hace la función de enviar? O cómo lo pogo para que sí, se envíe el voto  ::)


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #5 en: 01 de Noviembre de 2006, 14:59:20 pm »
¿No tienes eso ya hecho? Pensaba que sólo estabas limitando.....

Pues envías el voto añadiendo o actualizando un dato a la base de datos a través de SQL.

"INSERT into votos....."
"UPDATE votos......."

Eso ya depende de cómo lo tengas montado, que a lo mejor ni usas base de datos.

PD: El HTML no envía nada.
Raken - Moderador para PHP y HTML

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Re: Único voto en una encuesta
« Respuesta #6 en: 01 de Noviembre de 2006, 18:32:11 pm »
Ah, no, nada, me he liado.

Gracias, este fin de semana o así lo probaré a ver qué tal.

saludos  ;)


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #7 en: 01 de Noviembre de 2006, 22:33:19 pm »
No crees que seria mejor aserlo mediente sesiones o cookies? :P
Salu2!!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Re: Único voto en una encuesta
« Respuesta #8 en: 02 de Noviembre de 2006, 21:26:27 pm »
No crees que seria mejor aserlo mediente sesiones o cookies? :P
Salu2!!

sí.
pero quiero probar esta forma =P

///////

no me funciona...

<?
    $log 
fopen("ip.txt""a");
    
$ip $REMOTE_ADDR
    
fwrite($log"".$ip."\n"); 
    
fclose($log); 
?>
<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (strstr($log$ip)) {
echo 
"No puedes volver a votar, has votado ya anteriormente";
}
?>


eso tengo puesto en el archivo que hace la función de enviar.
guarda perfectamente la ip pero la función de strstr parece que como que no funciona  xD
aunque haya votado ya la ip y vuelva a votar no se muestra el echo de que no puede volver a votar.
« Última modificación: 02 de Noviembre de 2006, 21:44:08 pm por sagitari »


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #9 en: 02 de Noviembre de 2006, 21:52:15 pm »
Citar
si.
pero quiero probar esta forma =P

¿Tú crees?  ::)  Las cookies se pueden borrar al momento, y la sesión se destruye en el momento que cerramos el navegador. Con la IP se lo pones más difícil al usuario. Y si usas cookies y revisión IP, pues aún más.

Código para escribir la IP:
<?
    $log 
fopen("ip.txt""a");
    
$ip $_SERVER[&#39;REMOTE_ADDR&#39;];
    
fwrite($log"".$ip."\n");
    
fclose($log);
?>


Comprobar si existe la IP:


<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (eregi($ip,$log)) {
echo 
"No puedes volver a votar, has votado ya anteriormente";
}
else {
//Añadir voto...
}
?>
Raken - Moderador para PHP y HTML

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Re: Único voto en una encuesta
« Respuesta #10 en: 02 de Noviembre de 2006, 22:05:03 pm »
Citar
si.
pero quiero probar esta forma =P

¿Tú crees?  ::)  Las cookies se pueden borrar al momento, y la sesión se destruye en el momento que cerramos el navegador. Con la IP se lo pones más difícil al usuario. Y si usas cookies y revisión IP, pues aún más.

Código para escribir la IP:
<?
    $log 
fopen("ip.txt""a");
    $ip $_SERVER[&#39;REMOTE_ADDR&#39;];
    fwrite($log"".$ip."\n");
    fclose($log);
?>


Comprobar si existe la IP:


<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (eregi($ip,$log)) {
echo 
"No puedes volver a votar, has votado ya anteriormente";
}
else {
//Añadir voto...
}
?>


Citar
Con la IP se lo pones más difícil al usuario
... es facilísimo cambiar la ip, o simplemente vas a anonymous, servicio que te da la posibilidad de navegar... anonimamente


Bueno, a lo que iba;


if (eregi($ip,$log)) {
eregi!!¿?¿ eso es nuevo!  xD xD

--------

y me sigue sin funcionar.. mira los archivos de la encuesta:

encuesta.php -> hace la función de enviar /donde he añadido los códigos de guardar la ip y luego comparar y si está ya en ip.txt que salga el echo/

index.php -> el formulario de la encuesta

votos.txt -> donde se guardan los votos

ip.txt -> donde se guardan las ips de los votantes para luego comparar...


<?
    $log 
fopen("ip.txt""a");
    
$ip $REMOTE_ADDR
    
fwrite($log"".$ip."\n"); 
    
fclose($log); 
?>
<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (eregi($ip,$log)) {
echo 
"No puedes volver a votar, has votado ya anteriormente";
}
else {

}
?>
<?
include "configuracion.php";

function 
agregaVotacion($voto) {
	
	
//funcion para agregar el voto
	
global 
$archivo;
	
$leer_votacion fopen($archivo"r");
	
$tu_voto fread($leer_votacionfilesize($archivo));
	
fclose($leer_votacion);
	
$votos split(&#39;[|:]&#39;, $tu_voto);
	
for (
$i 1$i count($votos); $i $i 2) {
	
$nombre $i 1;
	
if (
$votos[$nombre] == $voto) {
	
	
$votos[$i]++;
	
	
}

	
if (
$i == (count($votos) - 1)) {
	
	
$act_Voto .= $votos[$nombre] . ":" $votos[$i];
	
	
}
	
else {
	
	
$act_Voto .= $votos[$nombre] . ":" $votos[$i] . "|";
	
	
}
	
}

	
$escribe_archivo fopen($archivo"w");
	
fputs($escribe_archivo$act_Voto);
	
fclose($escribe_archivo);
}


function 
mostrar($msgs) {
	
	
	
//funcion para mostrar la votación y sus resultados
	
global 
$titulo$archivo;

	
echo 
"<html>";
	
echo 
"<head>";
	
echo 
"<title>$titulo - Resultados</title>";
	

	
global 
$clscr;
	
echo 
"</head>";
	
echo 
"<body>";
	

	
	

	
echo 
"<font face=&#39;Tahoma&#39; size=&#39;2&#39;>";
	
$leer_votacion fopen($archivo"r");
	
$tu_voto fread($leer_votacionfilesize($archivo));
	
fclose($leer_votacion);
	
$votos split(&#39;[|:]&#39;, $tu_voto);
	
echo 
"<u><b>Resultados</b></u><br>";
	

	
for (
$i 1$i count($votos); $i $i 2)
	
{
	
$total_votos += $votos[$i];
	
}

	
for (
$i 1$i count($votos); $i $i 2) {
	
$nombre $i 1;
	
if (
$total_votos == 0) {
	
$porcnt 0;
	
}
	
else {
	
$porcnt $votos[$i] / $total_votos 100;
	
$porcnt round($porcnt1);
	
}

	
echo 
"<br>";
	
echo 
"\t$votos[$nombre] -> ";
	
echo 
"\t<b>$votos[$i]</b> votos <br>";

	
	

	
if (
$porcnt == 0) {
	
echo 
"\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b>";
	
}

	
	

	
else {
	
echo 
"\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b> <br>";
	
}

	

	
	
echo 
"<br>";
	
}
	
echo 
"Total Votos: <b>$total_votos</b><br>";
	
if(
$clscr==1)
	
{
	
	
echo 
"<a href=javascript:window.close();>Cerrar</a>";
	
}
	
else
	
{
	
	
echo 
"<a href=javascript:history.back(-1);>Volver</a>";
	
}
	
	

	
if (isset(
$msgs)) {
	
	
echo 
"$msgs";
	
}
 
	
echo 
"<br>";
	
echo 
"</body>";
	
echo 
"</html>";
}

if (!isset(
$voto)) {
	
mostrar("");
	
exit;
}

agregaVotacion($voto);
mostrar("");

?>


ese es el contenido de encuesta.php...
« Última modificación: 02 de Noviembre de 2006, 22:14:58 pm por sagitari »


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #11 en: 02 de Noviembre de 2006, 22:37:57 pm »
Pero tía, primero comprueba, y si NO hay ninguna IP igual, entonces AÑADE... pero no al revés!

Y la función eregi() existe ;)

http://es.php.net/eregi
« Última modificación: 02 de Noviembre de 2006, 22:40:30 pm por Raken »
Raken - Moderador para PHP y HTML

Desconectado Pc-Admin

  • PHPer@ Fijo
  • ***
  • Mensajes: 118
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #12 en: 03 de Noviembre de 2006, 17:33:55 pm »
Yo de ti, usaria sql, ya que es mas facil comprovarla desde ahi.
Pero si quieres hacerlo en esta forma, todo tuyo.
Almenos aprendes muchas mas funciones xD
Todo en esta vida, es practicar.

Desconectado sagitari

  • PHPer@
  • **
  • Mensajes: 86
  • Karma: 10
  • Sexo: Femenino
  • "A&X&me...4ever"
    • Ver Perfil
    • http://freewebtown.com/sagitari
Re: Único voto en una encuesta
« Respuesta #13 en: 03 de Noviembre de 2006, 20:27:35 pm »
@raken:
Pero no me funciona..., mira:
explico;


<?
    $log 
fopen("ip.txt""a");
    
$ip $REMOTE_ADDR
    
fwrite($log"".$ip."\n"); 
    
fclose($log); 
?>
<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (eregi($ip,$log)) {


}
else {
echo 
"<b><font color=red face=verdana size=1>No puedes volver a votar, ya has votado anteriormente</b></font>\n";
}
?>
<?
include "configuracion.php";

function 
agregaVotacion($voto) {
	
	
//funcion para agregar el voto
	
global 
$archivo;
	
$leer_votacion fopen($archivo"r");
	
$tu_voto fread($leer_votacionfilesize($archivo));
	
fclose($leer_votacion);
	
$votos split(&#39;[|:]&#39;, $tu_voto);
	
for (
$i 1$i count($votos); $i $i 2) {
	
$nombre $i 1;
	
if (
$votos[$nombre] == $voto) {
	
	
$votos[$i]++;
	
	
}

	
if (
$i == (count($votos) - 1)) {
	
	
$act_Voto .= $votos[$nombre] . ":" $votos[$i];
	
	
}
	
else {
	
	
$act_Voto .= $votos[$nombre] . ":" $votos[$i] . "|";
	
	
}
	
}

	
$escribe_archivo fopen($archivo"w");
	
fputs($escribe_archivo$act_Voto);
	
fclose($escribe_archivo);
}


function 
mostrar($msgs) {
	
	
	
//funcion para mostrar la votación y sus resultados
	
global 
$titulo$archivo;

	
echo 
"<html>";
	
echo 
"<head>";
	
echo 
"<title>$titulo - Resultados</title>";
	

	
global 
$clscr;
	
echo 
"</head>";
	
echo 
"<body>";
	

	
	

	
echo 
"<font face=&#39;Tahoma&#39; size=&#39;2&#39;>";
	
$leer_votacion fopen($archivo"r");
	
$tu_voto fread($leer_votacionfilesize($archivo));
	
fclose($leer_votacion);
	
$votos split(&#39;[|:]&#39;, $tu_voto);
	
echo 
"<u><b>Resultados</b></u><br>";
	

	
for (
$i 1$i count($votos); $i $i 2)
	
{
	
$total_votos += $votos[$i];
	
}

	
for (
$i 1$i count($votos); $i $i 2) {
	
$nombre $i 1;
	
if (
$total_votos == 0) {
	
$porcnt 0;
	
}
	
else {
	
$porcnt $votos[$i] / $total_votos 100;
	
$porcnt round($porcnt1);
	
}

	
echo 
"<br>";
	
echo 
"\t$votos[$nombre] -> ";
	
echo 
"\t<b>$votos[$i]</b> votos <br>";

	
	

	
if (
$porcnt == 0) {
	
echo 
"\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b>";
	
}

	
	

	
else {
	
echo 
"\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b> <br>";
	
}

	

	
	
echo 
"<br>";
	
}
	
echo 
"Total Votos: <b>$total_votos</b><br>";
	
if(
$clscr==1)
	
{
	
	
echo 
"<a href=javascript:window.close();>Cerrar</a>";
	
}
	
else
	
{
	
	
echo 
"<a href=javascript:history.back(-1);>Volver</a>";
	
}
	
	

	
if (isset(
$msgs)) {
	
	
echo 
"$msgs";
	
}
 
	
echo 
"<br>";
	
echo 
"</body>";
	
echo 
"</html>";
}

if (!isset(
$voto)) {
	
mostrar("");
	
exit;
}

agregaVotacion($voto);
mostrar("");
?>



Si lo pongo de esa manera, SIEMPRE vota aunque la ip sea repetida, siempre vota, pero a la vez, siempre sale el echo de que no puedes votar...
o sea, al votar, vale, salen los resultados , pues sale, lo de no puedes votar otra vez junto a los resultados actualizados, sale el alert de que no puede volver a votar, pero siempre vota




Y de esta manera:

<?
    $log 
fopen("ip.txt""a");
    
$ip $REMOTE_ADDR
    
fwrite($log"".$ip."\n"); 
    
fclose($log); 
?>
<?php
$log 
fopen("ip.txt""a");
$ip  $_SERVER[&#39;REMOTE_ADDR&#39;];
if (eregi($ip,$log)) {

include 
"configuracion.php";

function 
agregaVotacion($voto) {
	
	
//funcion para agregar el voto
	
global 
$archivo;
	
$leer_votacion fopen($archivo"r");
	
$tu_voto fread($leer_votacionfilesize($archivo));
	
fclose($leer_votacion);
	
$votos split(&#39;[|:]&#39;, $tu_voto);
	
for (
$i 1$i count($votos); $i $i 2) {
	
$nombre $i 1;
	
if (
$votos[$nombre] == $voto) {
	
	
$votos[$i]++;
	
	
}

	
if (
$i == (count($votos) - 1)) {
	
	
$act_Voto .= $votos[$nombre] . ":" $votos[$i];
	
	
}
	
else {
	
	
$act_Voto .= $votos[$nombre] . ":" $votos[$i] . "|";
	
	
}
	
}

	
$escribe_archivo fopen($archivo"w");
	
fputs($escribe_archivo$act_Voto);
	
fclose($escribe_archivo);
}


function 
mostrar($msgs) {
	
	
	
//funcion para mostrar la votación y sus resultados
	
global 
$titulo$archivo;

	
echo 
"<html>";
	
echo 
"<head>";
	
echo 
"<title>$titulo - Resultados</title>";
	

	
global 
$clscr;
	
echo 
"</head>";
	
echo 
"<body>";
	

	
	

	
echo 
"<font face=&#39;Tahoma&#39; size=&#39;2&#39;>";
	
$leer_votacion fopen($archivo"r");
	
$tu_voto fread($leer_votacionfilesize($archivo));
	
fclose($leer_votacion);
	
$votos split(&#39;[|:]&#39;, $tu_voto);
	
echo 
"<u><b>Resultados</b></u><br>";
	

	
for (
$i 1$i count($votos); $i $i 2)
	
{
	
$total_votos += $votos[$i];
	
}

	
for (
$i 1$i count($votos); $i $i 2) {
	
$nombre $i 1;
	
if (
$total_votos == 0) {
	
$porcnt 0;
	
}
	
else {
	
$porcnt $votos[$i] / $total_votos 100;
	
$porcnt round($porcnt1);
	
}

	
echo 
"<br>";
	
echo 
"\t$votos[$nombre] -> ";
	
echo 
"\t<b>$votos[$i]</b> votos <br>";

	
	

	
if (
$porcnt == 0) {
	
echo 
"\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b>";
	
}

	
	

	
else {
	
echo 
"\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b> <br>";
	
}

	

	
	
echo 
"<br>";
	
}
	
echo 
"Total Votos: <b>$total_votos</b><br>";
	
if(
$clscr==1)
	
{
	
	
echo 
"<a href=javascript:window.close();>Cerrar</a>";
	
}
	
else
	
{
	
	
echo 
"<a href=javascript:history.back(-1);>Volver</a>";
	
}
	
	

	
if (isset(
$msgs)) {
	
	
echo 
"$msgs";
	
}
 
	
echo 
"<br>";
	
echo 
"</body>";
	
echo 
"</html>";
}

if (!isset(
$voto)) {
	
mostrar("");
	
exit;
}

agregaVotacion($voto);
mostrar("");
}
else {
echo 
"<b><font color=red face=verdana size=1>No puedes volver a votar, ya has votado anteriormente</b></font>\n";
}
?>



SIEMPRE sale el alert de que no puedes volver a votar y NUNCA deja votar, aunque la ip sea diferente o ip.txt esté vacío...

 ::) ??? ??? ???


http://freewebtown.com/sagitari

Web para aprender a hacer una web desde cero ^^

Videotutoriales y demás.

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Único voto en una encuesta
« Respuesta #14 en: 04 de Noviembre de 2006, 01:57:32 am »
Primero compruebas, luego escribes!!

ya te lo he puesto antes y veo que no has corregido.


Es obvio, lo que estás haciendo ahora sería:
-"Escríbeme la IP"
-"Comprueba que la IP ha sido escrita"

:S ........ si la escribe primero, SIEMPRE ESTARÁ ESCRITA


Y el fallo viene de.....



//Si se ha encontrado la ip en el txt...
if (eregi($ip,$log)) {

//NADA?????? COMO QUE NADA??????

}
//Si la IP NO está apuntada en el txt...
else {
echo 
"<b><font color=red face=verdana size=1>No puedes volver a votar, ya has votado anteriormente</b></font>\n";
//Error??? la IP NO está apuntada!
}
?>


Te has colado. Eregi comprueba una cadena dentro de otra cadena. En este caso, comprobaría si está escrita la IP en la lista de IPs del txt. Entonces, lo que tenemos que poner es que SI LO ENCUENTRA, ES QUE YA HA VOTADO! tú lo estás poniendo en el "else", en el "si NO lo encuentra..."


if (eregi($ip$log) {
echo 
"No puedes volver a votar, has votado ya anteriormente";
}
else {
//Aquiiiiiiiiiiiiiiiiiiiiiiiii!!!!!!!!!!!!!!!!!!!!!!!! se haría la función de realizar el voto.
}



//Y TU ESTABAS PONIENDO LA FUNCION DE ENVIAR VOTO AQUI FUERA Y DENTRO DEL IF!...
?>



« Última modificación: 04 de Noviembre de 2006, 02:01:10 am por Raken »
Raken - Moderador para PHP y HTML