Задать вопрос
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), но проверка всё равно ложная. Почему?
  • Вопрос задан
  • 194 просмотра
Подписаться 1 Оценить 9 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
alsopub
@alsopub
Как вариант - лишние пробелы в файле users.txt
Но что более вероятно - переводы строк в users.txt - \r\n, а вы разделяете его только по \n
Соответственно в пароль попадает еще символ \r
Проверить это вы можете выведя strlen обоих паролей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽