[英]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.