php
に名前とパスワードの対応がチェックされています。原則は次のとおりです。名前がファイル内にある場合(ファイル名とパスワードがjsonファイルに格納されている場合)、ファイル内のパスワードが入力されたパスワードと一致するかどうか。名前とパスワードが一致することを確認してください。
$file = "../data/users.json";
$json_array = json_decode(file_get_contents($file), true);
$users = array();
if(is_array($json_array)) {
$users = $json_array;
}
if(isset($users[$name])) {
if($users[$name]["pass"] !== $password){
http_response_code(400);
}
}
else {
$users[] = array("name" => $name, "pass" => $password, "id" => $i);
$i = 0;
foreach ($users as $key => $value) {
$users[$key]["id"] = $i;
$i++;
}
file_put_contents($file, json_encode($users, JSON_PRETTY_PRINT));
}
そして、ここでそれがファイルに書き込まれ
[
{
"name": "qwe",
"pass": "qwe",
"id": 0
}
]
私はすでに存在している名前と、それに一致しないパスワードを入力すると、スクリプトは新しいペアとしてそれを書き込みます。
[
{
"name": "qwe",
"pass": "qwe",
"id": 0
},
{
"name": "qwe",
"pass": "qweqwe",
"id": 1
}
]
私が理解したように、これは原因ISSET($ユーザー[$名])は常に虚偽になりますが、私はそれを修正する方法を知らないという事実にあります。名前とパスワードの確認を修正するにはどうすればよいですか?
'$ユーザーが[$名]'動作しません。配列。 あなたができることは、ループ内のすべてのエラーをチェックし、その名前と一致させようとすることです。私はPHPはmapやgrep関数を持っていると思うが、これはループよりも優れているかもしれない(それは基本的に同じであることも厳しい) – Phiter