Pregunta

Actualmente estoy escribiendo un script PHP que valida un nombre de usuario y contraseña. Estoy trabajando probando cosas poco a poco y ahora mismo tengo un archivo de contraseña con una sola línea:

user:0011

estoy usando preg_split Para analizar las líneas en este archivo y tener el siguiente código en mi script PHP:

<html>
<body>

<?php 

    ini_set('display_errors',1);
    error_reporting(E_ALL);

    $usr = $_POST['username'];
    $pass = $_POST["pword"];


    $f = fopen('passwords.txt','r');
    $auth = false;

    while(!feof($f))
    {
        $login = preg_split("/:/",fgets($f));
        echo $login[0]."<br/>";
        echo $login[1]."<br/>";
        print_r($login);
        if($usr == $login[0] && $pass == $login[1])
        {
            echo "in if<br/>";
            $auth = true;
            break;
        }
    }

    if($auth)
        echo "success";
    else
        echo "fail!";

    /*$test = preg_split("/:/","me:you");
    echo $test[0];*/


    fclose($f);
?>

</body>
</html>

El problema es que esta es la salida que me da es:

user
0011
Array ( [0] => user [1] => 0011 )
Notice: Undefined offset: 1 in /srv/www/htdocs/PHP/val.php on line 20
Array ( [0] => ) fail!

Este error no tiene sentido para mí porque está implicando que la matriz no es lo suficientemente larga como para tener un valor en el índice 1, pero acabo de imprimir ese valor e incluso en el resultado de print_r Muestra que hay un valor en ese índice. ¿Alguien tiene alguna idea de lo que está causando este error?

¿Fue útil?

Solución

Estás en la segunda iteración del bucle While es mi suposición; Intente lanzar un mostrador simple para verificar. Si tiene una nueva línea en el archivo que lo haría.

Intenta hacer esto en la parte superior:

$lrec = trim(fgets($f));
if (empty($lrec)) {
    continue;
}
$login = preg_split("/:/",$lrec);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top