簡體   English   中英

如何遍歷php中的文本文件以查找特定的文本行

[英]how to loop through a text file in php to find a specific line of text

我制作了一個程序,讓您輸入用戶名和密碼,然后將其存儲在一個文本文件中,當我想登錄時,我想讓它循環遍歷包含 usr/pass 的文本文件,以查找您是否正確輸入您的憑據。 我不知道該怎么做。 請有人幫忙

示例 text.txt 文件:

$貓文本.txt

text1|answer1
text2|answer2
text3|answer3

示例代碼:

貓 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 test2.php looking for: answer1

文本文件不是驗證用戶憑據的好方法。 你應該試試sql數據庫。 例如 sqlite3。

您可以將它們硬編碼在一個數組中:

 $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,但它應該非常嚴格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM