Foros del Web » Programando para Internet » PHP »

Lectura de ficheros

Estas en el tema de Lectura de ficheros en el foro de PHP en Foros del Web. Buenos dias Les cuento lo que estoy haciendo y haber si alguien me puede solucionar la duda que tengo. Guardo en un fichero las direccion ...
  #1 (permalink)  
Antiguo 10/04/2008, 05:53
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Lectura de ficheros

Buenos dias

Les cuento lo que estoy haciendo y haber si alguien me puede solucionar la duda que tengo.
Guardo en un fichero las direccion IP y el dia de acceso a una encuesta realizada en mi pagina web.
Y lo que quiero es que una misma direccion IP no pueda votar mas de una vez ha esa encuesta. Por lo tanto lo que he hecho es comparar la direccion IP en cada momento con la que tengo guardada en el fichero y si coincide pues que no pueda votar.
El codigo es el siguiente:

$ipvoto=$_SERVER['REMOTE_ADDR']; //direccion IP
$fechavoto=date("d-m-Y"); //fecha actual

$fp =fopen("../ficheros/direccionIP.txt", 'r'); //fichero donde esta las direccion IP y las fechas
while (!feof($fp)){
$linea = fgets($fp,1024);
$trozo = explode (" ", $linea);
if(($ipvoto==$trozo[2]) && ($fechavoto==$trozo[5])){
echo "Usted ya ha votado en la encuesta ";
}
else{
// Codigo adecuado
}
}
fclose($fp);

Lo que quiero es que si $ipvoto coincide con la direccion IP que esta en el fichero que es $trozo[2], que no recorra mas el fichero y salga directamente el fichero.
¿Como puedo hacer esto? Porque con el codigo que tengo arriba me recorre todo el fichero, y yo lo que quiero es que en el momento que encuentre la misma dirección IP que salga directamente.
Muchas gracias de antemano
Mari
http://www.puenteviejo.tk
  #2 (permalink)  
Antiguo 10/04/2008, 06:15
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Lectura de ficheros

Hola maribajar,

Estas usando un while que es una "estructura iterativa".
Para cortar el ciclo o la iteración (salir de la estructura) usa el comando "break;".
Te quedaría así:

Código PHP:
$fp =fopen("../ficheros/direccionIP.txt"'r'); //fichero donde esta las direccion IP y las fechas
$bandera true;
while (!
feof($fp)){
$linea fgets($fp,1024);
$trozo explode (" "$linea);
if((
$ipvoto==$trozo[2]) && ($fechavoto==$trozo[5])){
echo 
"Usted ya ha votado en la encuesta ";
$banera false;
break;
}
}
fclose($fp);
if (
$bandera) {
// Guardemos el voto

Fíjate en el código que usé "$badera" que es la variable que me va a indicar si guardo o no el voto.

Quedo a tu disposición ;)
SAludos
  #3 (permalink)  
Antiguo 11/04/2008, 05:45
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Re: Lectura de ficheros

Muchas gracias, me ha funcionado perfectamente.
Pero ahora tengo otra duda.
Yo en la encuesta tengo dos botones, uno para votar y otro para ver el resultado de la encuesta.
Si doy al boton de votar, una vez verificado que se rellenado una opcion de la encuesta, deberia guardar en el fichero la IP y despues mostrar el resultado de la encuesta.
Y si doy al boton de ver resultado unicamente se deberia ver el resultado de la encuesta sin guardar en el fichero la IP.
¿Como puedo realizar esto?
Yo lo que tengo es un fichero encuesta.php que muestra la encuesta y valida las opciones y el formulario es el siguiente:

<form name="fvalida" action="respuesta.php" method="post" target="blanco" onsubmit="validar=(valida_envia(this)); return validar ; window.open('','blanco','top=10px, left=20px, width=300px, height=200px, directories=no, location=no, menubar=no'); guardarIP" >

Una vez que es valida la encuesta que se comprueba con valida_envia se deberia guardar la IP, pero en el sitio que tengo puesta la llamada a la funcion guardarIP no funciona y no hace nada.
Como podria hacerlo.
Muchas gracias
Mari
http://www.puenteviejo.tk
  #4 (permalink)  
Antiguo 11/04/2008, 09:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Lectura de ficheros

pon tu codigo completo... donde se halla guardarIP() ??
de lo demas, se le conoce como if-then-else

vaya, si un boton entonces esto... sino, has lo demas...
asi ke

if ($_POST['submit'] == 'votar')
{
// ..... codigo para votar, agregar IP... etc
}
else
{
// sino, pues ha de ser para verle nomas...
}
  #5 (permalink)  
Antiguo 12/04/2008, 04:35
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Busqueda Re: Lectura de ficheros

Muchas gracias por la respuesta.
Lo unico que yo no tengo el boton como submit sino que he creado un boton como imagen de la siguiente forma:
<input type="image" name="votar" src="botones/votar.jpg">
Entonces como se que he dado al boton votar y no ha otro.

Por otro lado el guardarIP esta en el mismo fichero encuesta.php que tambien muestra la encuesta y el codigo es el siguiente:

function guardarIP(){
$archivo ="../ficheros/direccionIP.txt";
$manejador=fopen($archivo,'a') or die ("Imposible abrir el archivo \n");
$ip="Direccion IP: ". $_SERVER['REMOTE_ADDR'] ." ";
$fecha="Fecha: " . date("d-m-Y") ." ";
$hora= "Hora: " .date("H.i:s") ."\n";
fwrite($manejador,$ip);
fwrite($manejador,$fecha);
fwrite($manejador,$hora);
fclose($manejador);
}

y a continuación ya vendria el codigo del formulario.

Como llamo entonces a esta función para que si se da al boton votar se guarde la direccion IP.
Muchas gracias
  #6 (permalink)  
Antiguo 12/04/2008, 08:01
 
Fecha de Ingreso: julio-2007
Mensajes: 62
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Lectura de ficheros

Lo que tienes que hacer es modificar el código que te han puesto arriba de esta manera:
Código PHP:
//Este es el input para votar
<input type="image" name="votar" src="botones/votar.jpg"
Código PHP:
if ($_POST['votar']) //fijate que lo único que tienes que hacer es meter el name de tu input
{
// ..... codigo para votar, agregar IP... etc
}
else
{
// sino, pues ha de ser para verle nomas...

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 16:10.