如何在php中遍历文本文件以查找特定文本行

时间:2018-09-29 16:05:48

标签: php loops

我制作了一个程序,可以让您输入用户名和密码,然后将其存储在文本文件中,当我要登录时,我要进行设置,以便它遍历具有usr / pass的文本文件查找您是否正确输入了凭据。我不确定该怎么做。请有人帮忙

2 个答案:

答案 0 :(得分:0)

您可以将它们硬编码为数组:

 $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).';');

当然,您甚至可以在文件中手动编辑密码。有点像配置文件。

正如我在评论中所提到的,最好使用数据库,加密以及不如您所说的那样使用

  

这仅适用于我和其他人

只要您没有任何第三方数据,并且可以接受这样做的安全隐患,那么您就可以通过上面的命令que窃。

解释一下:

Var Export将数组转换为有效的PHP代码,但采用字符串格式。然后,如果我们向其中添加PHP开放标记<?php,返回调用return和结尾;并将其保存在PHP文件中,那么我们现在有了一个带有动态密码的有效PHP文件保存为数组。

当您有一个返回数组的文件时,可以像上面显示的那样通过设置变量将其注入到变量中。然后,检查所有内容是否匹配很简单。

从性能上来讲,您可以省下大部分代价来保存文件,像这样导入数组非常快,这是关键查找。然后遍历文件并尝试从文件中解析数据要快得多。

您必须正确设置路径和文件名以及所有Jazz,但这应该是相当困难的。

答案 1 :(得分:-1)

示例text.txt文件:

$ cat text.txt

text1|answer1
text2|answer2
text3|answer3

示例代码:

cat test2.php

<?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 $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"; } } 用法示例:

文本文件不是验证用户凭据的好方法。您应该尝试sql数据库。例如sqlite3。