php - 如何遍历文件PHP中的每一行
问题描述
我正在使用 PHP 制作一个用于教育目的的兑换密钥页面,只是为了看看它的功能。我将密钥存储在 txt 文件中,如下所示:
key1
key2
等等。我尝试了以下方法来遍历 txt 文件,将值插入到数组中并从那里开始工作。这是我所拥有的:
$gkey = $_GET["key"];
$file = fopen("./generatedkeys.txt", "a");
$generatedk = array();
// generate table from data in txt file
while(! feof($file)) {
$generatedk[] = fgets($file);
}
foreach ($generatedk as $key){
if ($key == hash("sha256", $gkey)){
// Removing of key from data in txt file
$contents = file_get_contents($file);
$contents = str_replace($key, '', $contents);
file_put_contents($file, $contents);
fclose($file);
$accfile = fopen("./accs.txt", "a");
fwrite($accfile, hash("sha256", $key).",".hash("sha256", $hwid)."\n");
break;
}
}
然而,上面的代码似乎不起作用。根本没有检测到密钥,也没有从 generatekeys.txt 中删除。(不确定是否有任何错误,因为我看不到任何错误)。有没有明显的错误?任何帮助表示赞赏。谢谢你。
解决方案
我认为这应该使过程更简单,file
用于将整个文件一次读取到一个数组中,然后array_search()
用于查找密钥是否存在(如果未找到,则返回 false,因此!== false
)。
然后如果找到,它只是将使用的密钥附加到另一个文件,取消设置密钥的数组条目并覆盖原始文件......
$gkey = $_GET["key"];
$generatedk = file("./generatedkeys.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if ( ($entry = array_search(hash("sha256", $gkey), $generatedk)) !== false ) {
// Add key used, with whatever content you want
file_put_contents("./accs.txt", $gkey.PHP_EOL, FILE_APPEND);
// Remove found key from list in input file
unset($generatedk[$entry]);
// Overwrite input file with adjusted array
file_put_contents("./generatedkeys.txt", implode(PHP_EOL, $generatedk));
}
推荐阅读
- javascript - 查找嵌套数组的对象子对象的长度
- javascript - 如何在反应js中单击添加活动类
- python - 错误是: PermissionError: [Errno 13] Permission denied: 'C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\IP.PY'
- python - 解决错误 django-oauth-toolkit: raise AppRegistryNotReady("Models are not loaded yet.")
- stripe-payments - 在特定日期后取消条带订阅
- regex - 验证字符串 # 后跟数字,但 # 在每次出现后增加
- android - 应用程序 android 无法在 USB OTG 中播放带有视频的视频
- javascript - 我如何在 javascript 中从这些数据中获取 optional_customization
- node.js - 我的dataArray中有5个数组,想在我的数据库中添加所有内容,但只有第一个值保存在数据库中……有人知道soln吗?
- azure - Teams 中的 Microsoft Bot Framework 是否可以通过我自己的端点免费使用?