Inicio > PHP > davidcortesb > Consulta en php con datos en un archivo TXT

Consulta en php con datos en un archivo TXT

Experto:
Usuario:
Fecha: 30/07/2008
Valoración: (4,00 sobre 5) Categoría: PHP
17/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
Hola muy buen dia.
Bueno, de ante mano agradesco si me pueden ayudar con el tema.
Es que me gustaria realizar una pequeña apliacion web o bueno solo una pagina de consulta en la cual muestre consultas de un archivo de texto que tiene cierta estructura. La idea es que en una pagina php  una persona ingrese por su cedula o documento de identificacion y una contraseña y luego  si son validos se le muestren los datos de su cuenta. Solo es poder mostrar a cada usuario sus datos llamados desde un archivo plano (txt) aunque ay un detalle, en el archivo de texto no estan las contraseñas guardadas, es decir el archivo de texto es generado de un programa, pero al implementarlo a la web me gustaria que cada usuario tuviera una contraseña. Pensaba en que depronto validando el numero de identificacion desde el txt y la contraseña en una BD  o no se como podria ser mas sencillo.   Muchas  muchas gracias les quedaria eternamente agradecido  y que Dios los bendiga.
 
17/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
Hola que pena. se me olvidaba algo. es que  luego de hacer la pregunta anterior probe unos codigos que encontre, pero veo que al realizar las consultas de ese modo directamente al archivo de texto tiene desventajas. Por ejemplo, si el nombre de una persona es demasiado largo  no lo alcanza a mostrar si se sale de la longitud que se indica, y si es muy corto, el proximo dato  coje letras del anterior.   Estaba pensndo si en el sistema se podria pasar de txt a base de datos sql y mas bien desde ahi realizar las consultas, pero luego toacria estar actualizando la BD con los nuevos archivos de txt.  el codigo es el siguiente:
<?php
$i=0; // variable Inicial para comprobar si se encontró algun valor
//Si no está vacio y si la variable existe
if((!emptyPOST['codigo']))|| isset(POST['codigo'])){
// abriendo el archivo de texto que se encuentra en el mismo directorio
//que los archivos html y php
$file = fopen ("b.txt", "r");
//Para el indice de mi array
$v=0;
//recorrido del archivo TXT
while (!feof($file)) {
// consideramos linea por linea
$linea = fgets($file,100);
//linea por linea enviamos a un array
$cadena[$v]=$linea;
//contador incremental
$v++;
}
//obtenido los datos del archivo cerramos el archivo
fclose ($file);
// recorremos nuestro array y trabajarlo con nuestro algoritmo
foreach($cadena as $pasar)
{
// comparamos si el codigo ingresado en el TEXTBOX
//coincide con alguno que tenemos en nuestro TXT
if(POST['codigo']==substr($pasar,0,10))
{
// si es asi mostramos los datos que corresponden
echo "<br>";

echo "CODIGO :".substr($pasar,0,10);

echo "<br>";

echo "FECHA : ".substr($pasar,10,11);

echo "<br>";

echo "CLIENTE : ".substr($pasar,21,18);

echo "<br>";
echo "Ciudad : ".substr($pasar,38,20);
// indica que encontró algo
$i=1;
}
}
}
// Si no se encontró nada simplemente mostramos este texto
if($i=='0')
{
echo "Su Nro de CODIGO no fué encontrado ....";
echo "<br> Intente nuevamente ";
echo '<A HREF="1.html">Anterior</A>';
}
?>
17/07/2008
jaimegomez, experto respondiendo en PHP
Experto
Hola,
para las contraseñas, te recomiendo que uses una base de datos que contenga el código y su contraseña. Es sencillo y muy práctico.
Para los ficheros, dices que tienen 'una estructura determinada'. Pues habría que saber qué estructura es esa y extraer los datos en consecuencia a esa estructura. Ahora no te funciona porque tomas los campos con una longitud fija y parece que el fichero no está en ese formato.
Lo más probable es que los datos estén separados por comas, o algún caracter especial que permitan extraer la información correcta en cada caso. Creo que es mejor pelearse con eso, que  no tener que estar actualizando una base de datos cada vez que tienes un fichero nuevo.
Saludos.
David Cortés Braña
17/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
Hola David !
Primero te agradesco muchisimo por la pronta respuesta.   Respecto a  las contraseñas, no habria nigun problema si para eso utilizo base de datos y para extraer las consultas un txt ??  y bueno  respecto a la estructura tienes razon  estaba utilizando una longitud fija y pues  no encajaba bien en todos los datos. en este momento no estoy en mi casa por lo tanto no te podria mostrar la estructura del archivo txt pero cuanto antes la voy a subir  creo que cada dato esta separado por " ; "  y son bastantes registros.  De igual forma muchas gracias por la ayuda  y ya muy pronto te muestro la estructura. Gracias y que Dios lo bendiga.
17/07/2008
jaimegomez, experto respondiendo en PHP
Experto
Hola,
no hay ningún problema en usar una base de datos para validar usuarios y contraseñas por un lado, y extraer datos de ficheros .txt por otro lado.
Puedes tener múltiples fuentes de datos sin ningún problema.
Eso, suponiendo que sepas los nombres de los usuarios y sus contraseñas para almacenarlos en la base de datos, claro.
En cuanto me muestres la estructura del fichero, te digo como resolverlo. Si está separado por ; será fácil.
Saludos.
David Cortés Braña
23/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
Hola David.
Que pena por la demora.  Ya encontre los archivos de txt. Son varios pero  con que me enseñe a manejar dos archivos yo creo que ya podria implementar los demas.  La cuestion es la siguiente. Todos los archivos que tengo  tienen un campo que es la cedula de la persona. la idea es que se verifique esa misma cedula con una contraseña  guardada en la base de datos, ahi supongo q en la base de datos debe ir cedula y contraseña para que se verifique con la cedula del archivo de texto. Bueno eso por ese lado.  Ya luego de verificar esa cedula, el usuario tendra por lo minimo dos paginas a ver que serian totales por asociado  y prestamos por asociado. Entonces  pues no se exactamente como podria ser para que la persona entre por medio de un formulario login (cedula y contraseña)  pase a total por asociado y que tambien pueda pasar a prestamos por asociado, y que solo vea los datos de esos archivos txt   segun la cedula indicada. igual solo es mostrar datos, nada de actualizar ni nada.
Le voy a dejar los links de los archivos mejor.
Archivo 1 Totales
Archivo 2  Prestamos
 
De verdad que estoy eternamente agradecido con usted. Que Dios lo bendiga mucho por su ayuda.
 
Cualquier cosa estare muy pendiente.
 
De nuevo gracias y que tenga buen dia.
23/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
Se me olvidaba. Los campos si estan separados por ;  y los datos alfanumericos estan dentro de comillas.
 
De nuevo mil y mil gracias.
23/07/2008
jaimegomez, experto respondiendo en PHP
Experto
Hola,
creo que una vez hayas comprobado que la contraseña es correcta, puedes leer los dos ficheros y mostrar la información de los dos sin ningún problema.
Para obtener los diferentes datos de cada línea, puedes usar la función split:
$datos=split(";", $linea);
echo $datos[0];
echo $datos[1];
Puedes reemplazar las comillas por una cadena vacía si te molestan.
Espero que sirva.
Saludos.
David Cortés Braña
23/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
Hola.
Muchas gracias por esa info. Pero  como le indico a ese codigo el archivo de texto. realmente no manejo tanto  este tipo de codigo en cuanto a manipulaciond e archivos txt.
Me podria ayudar desde el principio como podria  verificar la contraseña que esta en la base de datos  con la del txt?  es decir, la conexion a la base de datos y eso, lo se manejar pues algo basico, pero no se es respecto a la manipulacion de archivos de texto.  y si me podria explicar un poco como funciona  el codigo que me envio:
$datos=split(";", $linea);
echo $datos[0];
echo $datos[1];
Porfavor si me pudiera explicar un poco sobre el proceso q le comente. La validacion de cedula y contraseña y luego solo  mostrar los datos de una linea de alguno de los archivos de texto que correspondan a la cedula ingresada.
 
Muchas gracias.
24/07/2008
jaimegomez, experto respondiendo en PHP
Experto
Hola,
para empezar debes tener localizados los ficheros, ya sea porque se llamen de alguna forma relacionada con la cédula, o porque tienes anotado en la base de datos el nombre de cada fichero.
Cuando ya sabes el nombre del fichero a abrir, puedes usar fopen y fgets para leer de línea en línea:

$fichero = fopen("cedula.txt", "r");
$linea = fgets($fichero);
$datos = split(";", $linea);

La función fopen abre el fichero que se indique (en este caso, cedula.txt), para lectura ("r"), la función fgets lee una linea del fichero cada vez que se llama(la segunda vez lee la segunda línea, la tercera vez la tercera, etc.). La función split divide una cadena en partes separadas por el caracter indicado(en este caso el punto y coma) y almacena cada parte en una matriz (en este caso $datos), así que las partes estaran en $datos[0], $datos[1], etc. Por favor, consulta estas funciones en el manual, donde encontrarás explicaciones y ejemplos.
Espero que sirva.
Saludos.
David Cortés Braña
24/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
<!--r-->Ok perfecto.  Hasta ahora con ese codigo todo muy bien pero  solo he podido mostrar la primera linea pero no se como mostrar por ejmeplo la linea 10  o segun corresponda a la cedula. ademas no he podido lograr validar los campos. Aca esta el codigo:
 
$login = $_POST['login'];
$pass = $_POST['pass'];
$fichero = fopen("0806DEPO.txt", "r");
$linea = fgets($fichero);
$datos = split(";", $linea);
if ($login==$datos[0] && $pass==$datos[1]) {
?>
<? echo $datos[0]; ?>
<? } else {
echo "No hay sistema";
}
?>
 
Muchas gracias de nuevo.
26/07/2008
jaimegomez, experto respondiendo en PHP
Experto
Hola,
el código es correcto siempre que el login y la contraseña sean los dos primeros campos del fichero 0806DEPO.txt
Comprueba que sea así, imprimiendo las cuatro variables.
Supongo que me explico mal, porque ya he intentado por dos veces indicarte que para leer la línea 10 del fichero tienes que ejecutar 10 veces la línea:
$linea = fgets($fichero);
cada vez que se ejecuta, se almacena en $linea, una línea del fichero.
Te recomiendo que pruebes estas cosas que te digo, investigues un poco el código y acudas al manual de PHP si tienes dudas sobre estas funciones que te explico. Con la práctica se suele ver todo mucho más claro.
Saludos.
David Cortés Braña
30/07/2008
jaimegomez, usuario preguntando en PHP
Usuario
Muy Bien. Me ha sido de gran utilidad
Más opciones
Enlaces patrocinados