Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/05/2013, 11:45
msl13
 
Fecha de Ingreso: mayo-2013
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Autentificación de usuario y contraseña

Llevo varios días con un trozo de código en php que se me atraganta y la verdad es que estoy perdido.

Acabo de iniciarme y aún no tengo demasiada soltura, pero hasta donde yo se esto debería funcionarme. Espero que alguien con mejor ojo que yo y más experiencia pueda echarme un cable.

Lo que sigue es un sencillo formulario en html cuyos únicos campos son, como veréis: Nombre de usuario y Contraseña. Se que habrá quien dirá que para los procesos de autentificación de usuario y contraseña es mucho mejor echar mano de mysql y que cualquier otro intento de lograr lo mismo mediante cualquier otro mecanismo es una pérdida de tiempo, e incluso puede que tengan razón. Lo que yo busco sin embargo es llevarlo a cabo mediante un fichero .txt que contendrá las respectivas contraseñas y nombres de usuario.

Centrandonos en la sección de php $_REQUEST se supone que toma lo que yo halla introducido en las cajas de texto del formulario y como se puede ver se carga en dos variables ($userl, $passl), inmediatamente después ambas las fusiono en $ucon, y a partir de ahí no se qué hago mal.

Con $var = file('usucon.txt'); cargo el contenido del txt en un array (según tengo entendido línea a línea).

Después abro un buble (foreach) para recorrer el array en el que supuestamente he cargado el contenido del documento y seguidamente hago un 'if' anidado en el que le digo que si l $var1 (que será sustituido por cada línea del documento en cada iteración) es igual a $ucon (la variable compuesta del principio) entonces que me redirija a una página determinada, sino (else) que imprima la cadena de más abajo.

EL PROBLEMA: Hasta donde he podido comprobar el condicional de alguna forma salta la primera instrucción en la que le digo que me redirecciones a otra página y solo me imprime la cadena del final (else).

¿Por qué sucede esto cuando en el documento txt está tanto el nombre de usuario como la contraseña?

Otra cosa más, en algún lugar he leído que el header debe aparecer antes de cualquier etiqueta html. Ese no es el problema porque lo he probado poniendo la parte de php antes del formulario y el asunto persiste, lo digo por si alguien sospecha de ello ya que en el script puesto abajo la parte de php está después del formulario.

Cita:
<body> <form name="login" method="post" enctype="application/x-www-form-urlencoded" action="">

<center><p>Nombre de usuario:</p><input type="text" name="usuario" /><br /></center>

<br /><br />

<center><p>Contraseña:</p><input type="text" name="contr" /><br /></center>

<br /><br />

<center><input type="submit" name="submit" value="Ingresar" /></center>

</form>

<?
$userl = $_REQUEST['usuario'];
$passl = $_REQUEST['contr'];
$ucon = $userl." ".$passl.'\r\n';



$var = file ('usucon.txt');
foreach ($var as $var1) {
if ($var1 == $ucon) {
header('Location: pag2.php');
}else{
echo 'Nombre de usuario o contraseña incorrectos.';
}
}
?>

</body>
</html>