Consulta en php con datos en un archivo TXT

Es que me gustaría realizar una pequeña ampliación web o bueno solo una página de consulta en la cual muestre consultas de un archivo de texto que tiene cierta estructura. La idea es que en una página php una persona ingrese por su cedula o documento de identificación y una contraseña y luego si son válidos 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 están las contraseñas guardadas, es decir el archivo de texto es generado de un programa, pero al implementarlo a la web me gustaría que cada usuario tuviera una contraseña. Pensaba en que de pronto validando el numero de identificación desde el txt y la contraseña en una BD o no se como podría ser más sencillo. Muchas muchas gracias les quedaría eternamente agradecido y que Dios los bendiga.
Respuesta
1
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 carácter 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.
Hola que pena. Se me olvidaba algo. Es que luego de hacer la pregunta anterior probé unos códigos que encontré, 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 próximo dato coge letras del anterior. Estaba pensando si en el sistema se podría pasar de txt a base de datos sql y más bien desde ahí realizar las consultas, pero luego toacria estar actualizando la BD con los nuevos archivos de txt. El código 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>';
}
?>
Hola David !
Primero te agradezco muchísimo por la pronta respuesta. Respecto a las contraseñas, ¿no habría ningún problema si para eso utilizo base de datos y para extraer las consultas un txt? Y bueno respecto a la estructura tienes razón 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 podría 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.
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.
Hola David.
Que pena por la demora. Ya encontré los archivos de txt. Son varios pero con que me enseñe a manejar dos archivos yo creo que ya podría implementar los demás. La cuestión 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, ahí supongo que 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 tendrá por lo mínimo dos páginas a ver que serian totales por asociado y prestamos por asociado. Entonces pues no se exactamente como podría ser para que la persona entre por medio de un formulario login (cedula y contraseña) pase a total por asociado y que también pueda pasar a prestamos por asociado, y que solo vea los datos de esos archivos txt según 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 estaré muy pendiente.
De nuevo gracias y que tenga buen día.
Se me olvidaba. Los campos si están separados por ; y los datos alfanuméricos están dentro de comillas.
De nuevo mil y mil gracias.
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.
Hola.
Muchas gracias por esa info. Pero como le indico a ese código el archivo de texto. Realmente no manejo tanto este tipo de código en cuanto a manipulaciond e archivos txt.
¿Me podría ayudar desde el principio como podría verificar la contraseña que esta en la base de datos con la del txt? Es decir, la conexión a la base de datos y eso, lo se manejar pues algo básico, pero no se es respecto a la manipulación de archivos de texto. Y si me podría explicar un poco como funciona el código que me envío:
$datos=split(";", $linea);
echo $datos[0];
echo $datos[1];
Por favor si me pudiera explicar un poco sobre el proceso que le comente. La validación 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.
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 carácter indicado(en este caso el punto y coma) y almacena cada parte en una matriz (en este caso $datos), así que las partes estarán en $datos[0], $datos[1], etc. Por favor, consulta estas funciones en el manual, donde encontrarás explicaciones y ejemplos.
<!--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.
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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas