Теперь я знаю, что хранение паролей в текстовом файле небезопасно, но не беспокойтесь. Безопасность не моя цель здесь, это похоже на один из этих сайтов hackme.
Итак, мне нужно знать, как я могу хранить имена пользователей и пароли в текстовом файле, пока у меня есть этот массив
$logins = array('Example' => '123','test' => '123','simon' => '123');
и это утверждение if
if (isset($logins[$Username]) && $logins[$Username] == $Password){ /* Success: Set session variables and redirect to Protected page */ $_SESSION['UserData']['Username']=$logins[$Username]; header("location:index.php"); exit; }
Как бы это сделать, а не хранить их в виде списка, я могу сохранить их в текстовом файле, а затем запустить оператор if в текстовом файле?
Вы можете сделать JSON и передать его как массив. Итак, сначала подготовьте файл. Содержимое passwords.json
(или passwords.txt
, назовите его, как вам угодно):
{}
И теперь вам нужно сделать следующее:
Итак, в конечном счете, код будет примерно таким:
<?php // Read the file. $users = file_get_contents("passwords.json"); // Convert into an associative array. $users = json_decode($users); // Get the input from the user. $username = $_POST["username"]; $password = $_POST["password"]; // Check the validity. if (array_key_exists($username, $users) && $users[$username] == $password) { // Valid user. $_SESSION["user"] = array($username, $password); } else { echo "Not Right!"; } ?>
И если вы хотите сохранить пользователей, вам просто нужно сделать наоборот.
Окончательный код:
<?php // Read the file. $users = file_get_contents("passwords.json"); // Convert into an associative array. $users = json_decode($users); // Get the input from the user. $username = $_POST["username"]; $password = $_POST["password"]; // Store the new one into the array. $users[$username] = $password; // Convert back to JSON. $users = json_encode($users); // Put it into the file. file_put_contents("passwords.json", $users); ?>