как перебрать текстовый файл в php, чтобы найти определенную строку текста - PullRequest
0 голосов
/ 29 сентября 2018

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

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Пример файла text.txt:

$ cat text.txt

text1|answer1
text2|answer2
text3|answer3

Пример кода:

cat test2.php </p> <pre><code><?php $text="text1"; $file="text.txt"; $f = fopen($file, 'r'); while($data = fgets($f)) { $ar_data=explode('|',$data); if($ar_data[0]==$text) { echo "looking for: ".$ar_data[1]."\n"; } }

Пример использования: $ php test2.php looking for: answer1

Текстовый файл не является хорошим способом проверки учетных данных пользователя.Вы должны попробовать базу данных sql.sqlite3 например.

0 голосов
/ 29 сентября 2018

Вы можете просто жестко закодировать их в массиве:

 $passwords = ['someuser' => 'password'];

Если вы действительно хотите сохранить их в файле, чтобы вы могли изменить их (например) без редактирования кода, один из способовиспользовать что-то вроде этого:

 $passwords = ['someuser' => 'password'];
 file_put_contents('passwords.php', '<?php return '.var_export($passwords,true).';');

Это создаст файл с чем-то этим (пробел не выдерживает):

 <?php return array('someuser' => 'password');

Затем, когда вам нужно импортировать его в кодВы можете просто использовать

 $passwords = require 'passwords.php';

, который поместит содержимое этого файла в эту переменную.Затем вы можете легко проверить их, например, так:

$passwords = require 'passwords.php';
if(isset($passwords[$user]) && $passwords[$user] == $password){
    //do something when logged in
}

Вы также можете изменить массив и сохранить его:

$passwords = require 'passwords.php';

$passwords['someuser'] = $new_password;

file_put_contents('passwords.php', '<?php return '.var_export($passwords,true).';');

Конечно, вы даже можете редактировать пароли вручную вфайл.Вроде как файл конфигурации.

Как я уже упоминал в комментариях, лучше использовать БД, шифрование и что нет, но как вы сказали

это только для меня икто-то еще

Пока у вас нет сторонних данных, и вы согласны с последствиями для безопасности этого, тогда вы, вероятно, можете пискнуть с приведенным выше.

Чтобы объяснить это:

Var Export преобразует массивы в действительный код PHP, но в строковом формате.Затем, если мы добавим к нему открытый тег PHP <?php, обратный вызов return и окончание ; и сохраним его в файле PHP, мы получим действительный файл PHP с динамическими паролями, сохраненными в нем в виде массива..

Когда у вас есть такой файл, который возвращает массив, вы можете вставить его в переменную, просто установив его, как я показал выше.Тогда нужно просто проверить, все ли совпадает.

Производительность позволяет вам снизить нагрузку на сохранение файла. Такой массив импортируется очень быстро, как и поиск ключа.Гораздо быстрее, чем перебирать файл и пытаться проанализировать данные из него.

Вам нужно будет правильно указать пути и имена файлов и все такое в Jazz, но это должно быть довольно просто.

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