Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: tunante2012 en 23 Febrero 2012, 23:49 pm



Título: Login en Php con txt
Publicado por: tunante2012 en 23 Febrero 2012, 23:49 pm
Hola saludos.... necesito hacer un codigo en php para poder validar login y use en php.... desde bloc de notas.. sin usar mysql(eso si se)... se como entrar valores y crear el archivo en bloc de notas ...
user1|clave1
user2|clave2
......|.....
.....|.....

alguien tiene idea de como se puede hacer validar el usuario y la contraseña   


Título: Re: Login en Php con txt
Publicado por: ‭lipman en 23 Febrero 2012, 23:53 pm
Puedes recoger los valores

$_POST['user'];
$_POST['pass'];

Luego vas recorriendo el fichero de texto hasta que encuentres un user (hemos de suponer que los users son únicos), y en caso de dar true, comparar la contraseña.

Para separar user|password del fichero, puedes usar la función explode, y para aprender a recorrer un fichero, te recomiendo que leas acerca de las funciones fopen, feof, fclose...

Un saludo!


Título: Re: Login en Php con txt
Publicado por: tunante2012 en 24 Febrero 2012, 00:14 am
Te paso lo k he estado haciendo.... quisiera que me digas el error y si puedes ayudarme a corregirlo
Código:
session_start();
$Codigo = $_POST['usuario'];
$Clave = $_POST['contrasena'];

$abrir=fopen("usuario.txt","r") or die ("Error - No fue posible abrir el archivo");

while ($linea=fgets($abrir))
{
 $partes=explode('|',trim($linea))
 }
if (($Codigo==$partes[0]) && ($Clave==$partes[1]))
{
header('location:mantenimento.php');
}
else {
header('location:registro.html');

}

fclose("usuario.txt");


Título: Re: Login en Php con txt
Publicado por: ‭lipman en 24 Febrero 2012, 12:45 pm
Especifícamente el error que te da, puede ser que sea porque usas "header" y para poder usar esta no debes tener codigo html encima de donde está esta función.

He hecho un código que funciona, pero primero te voy a decir el porqué tu forma no es eficiente:
Para empezar, dentro del while, estás todo el rato haciendo la función explode al principio. Esto no es necesario (ni siquiera es necesario usarla realmente) ya que si sabes que el usuario no corresponde con el usuario, para qué partirlo y gastar recursos?

Por otra parte, cuando uses "if"s de una línea, no pongas llaves para que se vea más limpio.

Por último y respecto al tema de seguridad, si haces lo de header:location, cualquiera que sepa la localización del que da como true, puede acceder (a no ser que lo securices). Yo recomendaria hacer includes.

Ahora, te paso el código que he hecho, el cual obviamente, es una prueba. Por cierto, para otra vez, pon el código entre los tags adecuados para que se vea mejor:

Código
  1. $user = "user4";
  2. $pass = "pass4";
  3.  
  4.  
  5. $f=fopen("text.txt","r");
  6.  
  7. while(!feof($f)){
  8.  
  9. $linea = fgets($f);
  10.  
  11. //Pregunto si la linea empieza por el nombre de usuario dado, y si le sigue la barra vertical
  12. if(preg_match("/(^".$user."\|)/",$linea))
  13. //En caso de ser correcto, compruebo que empiece por el nombre de usuario, contenga la barra, y acabe en la contraseña.
  14. if(preg_match("/(^".$user.")\|(".$pass."$)/",$linea))
  15. echo "ENTRO";
  16. else
  17. echo "FALSO";
  18. else
  19. echo "FALSO";
  20. }
  21.  
  22. fclose($f);

Nota: las contraseñas están en el formato especificado, pero muy importante, para que funcione con lo que he puesto, el texto ha de estar en formato de Unix, sino no reconoce el símbolo $ (final de línea) de las expresiones regulares tal como deberia.

Un saludo!


Título: Re: Login en Php con txt
Publicado por: tunante2012 en 25 Febrero 2012, 04:00 am
jejejeej Gracias es mucho mejor que el k habia arreglado.......


Título: Re: Login en Php con txt
Publicado por: Oshrik en 27 Diciembre 2012, 20:03 pm
Holaaaa!
antes de nada comentarte que es un gran aporte.
Por mi parte, debo comentarte que lo he probado, tal cual como lo has escrito, y lo unico que me sale, es todo el rato Falso. He ido poniendo print, y lo que lee del fichero y lo que guarda es lo mismo. Y no entiendo el porque. Soy nuevo en este foro, y no se si deberia abrir otro hilo subiendo los tres ficheros y intentar entre todos averiguar porque soy el unico paleto que no le funciona. Muchas gracias


Título: Re: Login en Php con txt
Publicado por: #!drvy en 27 Diciembre 2012, 20:07 pm
Hola @Oshrik, el tema es de Febrero de 2012, estamos a Diciembre. Lo mejor seria que abras otro hilo poniendo los códigos que tienes.


Saludos