kemply
@kemply
школьник

Почему не работает проверка в PHP?

Есть файл users.php:
function user($login, $password){
    $file = file_get_contents(__DIR__ . '/users.txt');
    $users = explode("\n", $file);

    $all = array();
    foreach($users as $str){
      $temp = explode(' ', $str);
      if( $str[1] ) $all[$temp[0]] = $temp[1];
    }

    if( $all[$login] == $password ) echo 'ok'; // Проверка ложная

    if( $all[$login] && $all[$login] == $password )
      return true;

    return false;
  }

И в том же каталоге файл users.txt
admin pass
Когда я вызываю функцию с Правильным логином и паролем мне возвращает ложный результат.
Хотел узнать, в чем проблема, выяснил, что проверка не проходит. На экран должен был вывести ok, но ничего нет.
При отдельном выводе $all[ $login ] и $password, оба идентичны (pass и pass), но проверка всё равно ложная. Почему?
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
alsopub
@alsopub
Как вариант - лишние пробелы в файле users.txt
Но что более вероятно - переводы строк в users.txt - \r\n, а вы разделяете его только по \n
Соответственно в пароль попадает еще символ \r
Проверить это вы можете выведя strlen обоих паролей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы