PHP массив возвращается из preg_split не работает - PullRequest
0 голосов
/ 10 июня 2011

В настоящее время я пишу скрипт php, который проверяет имя пользователя и пароль.Я работаю, проверяя вещи понемногу, и сейчас у меня есть файл паролей только с одной строкой:

user:0011

Я использую preg_split для анализа строк в этом файле и имею следующеекод в моем 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>

Проблема в том, что это вывод, который он мне дает:

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

Эта ошибка не имеет смысла для меня, потому что она подразумеваетчто массив недостаточно длинный, чтобы иметь значение по индексу 1, но я просто напечатал это значение, и даже в результате из print_r он показывает, что в этом индексе есть значение.У кого-нибудь есть идеи, что вызывает эту ошибку?

1 Ответ

3 голосов
/ 10 июня 2011

Я думаю, вы находитесь на второй итерации цикла while;попробуйте добавить простой счетчик, чтобы проверить.Если у вас есть новая строка в файле, которая сделает это.

попробуйте сделать это сверху:

$lrec = trim(fgets($f));
if (empty($lrec)) {
    continue;
}
$login = preg_split("/:/",$lrec);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...