Как использовать текстовый файл для входа в систему - PullRequest
0 голосов
/ 05 января 2019

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

Пока я просто использую эхо, чтобы увидеть, действительно ли он что-то находит. кажется, что оператор if не видит два входа как совпадающие, даже если они совпадают.

$myFile = fopen("users.txt", "r");
$username = $_POST['username'];

while(!feof($myFile))
{
    $userN = fgets($myFile);
    //compares entered user to text file users
    if (($username === $userN)){
        echo 'found';
    }
}

Единственный раз, когда он находит совпадение, это если ввод оставлен пустым, так как он будет сопоставлен с последней строкой файла.

Ответы [ 3 ]

0 голосов
/ 05 января 2019

как вы храните информацию о пользователях? Используете ли вы запятые или что-то еще для разделения пользователей, и вы не можете использовать JSON вместо этого таким образом, гораздо проще хранить, извлекать и проверять. если вам все еще нужно использовать, я хотел бы предложить этот метод сначала получить все и сохранить в строке, а затем преобразовать его в массив с помощью функции разнесения PHP и затем проверить массив (при условии, что текстовый файл содержит только имя пользователя и пользователя, разделенные,)

myuser.txt

jhone,jonney,mark kevin

read.php

$file = file_get_contents('./myuser.txt', FILE_USE_INCLUDE_PATH);
$arry = explode(",",$file);
$count = 0;
while($count<sizeof($arry)){
  if($arry[$count]== $userInput){
      echo 'found';
  }else{
       echo "non found";
  }

  $count++;

}
0 голосов
/ 05 января 2019

Хотя это не лучший способ проверить, существуют ли пользователи, вы можете загрузить всех пользователей, используя file() (без новой строки и удаления пустых записей), что приведет к созданию массива пользователей. Затем просто используйте in_array(), чтобы увидеть, есть ли пользователь в списке ...

$username = $_POST['username'];
$userList = file("users.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if ( in_array($username, $userList))    {
    echo "Found";
}
0 голосов
/ 05 января 2019

Попробуйте этот код.

<?php
 $myFile = fopen("users.txt", "r");
 $username = $_POST['username'];

 while(!feof($myFile))
{
 $userN = fgets($myFile);

 //$userN = rtrim(fgets($myFile, "\r\n")); //More cleaner way suggested in comment

 //compares entered user to text file users
  if ($username == trim($userN)){
    echo 'found';
  } else {
    echo "non found";
}
}

Я предполагаю, что $userN принимает некоторые пробелы или другие предопределенные символы до или после строки, поэтому используйте trim(), чтобы удалить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...