#php #authentication
#php #аутентификация
Вопрос:
Как мне сохранить имя пользователя и пароль в отдельном текстовом файле вместо этого файла php. Ниже приведен код. Я хочу создать систему регистрации входа без использования базы данных.
<?php
// Init Start session
error_reporting(E_ALL amp; ~E_NOTICE);
session_start();
// Handle AJAX request
switch ($_POST['req']) {
// Invalid request
default:
echo "ERR";
break;
// Sign In
case "in":
// Already signed in
if (is_array($_SESSION['user'])) {
die("OK");
}
// Email => Password
// ADD MORE OF YOUR OWN HERE!
$users = [
"john@doe.com" => "123456",
"jane@doe.com" => "654321"
];
// Check given email amp; password
if (isset($users[$_POST['email']]) amp;amp; $_POST['password'] == $users[$_POST['email']]) {
$_SESSION['user'] = [
"email" => $_POST['email']
];
echo "OK";
} else {
echo "ERR";
}
break;
// Sign out
case "out":
unset ($_SESSION['user']);
echo "OK";
break;
}
?>```
Комментарии:
1. сохранить: json_encode -> file_put_contents. получаем: file_get_contents -> json_decode .. хотя это плохая практика
2. или создайте строку из массива, чтобы сделать
<?php return [['username' => '', 'password' => '']];
тогдаinclude/require
ее более безопасной (например, конфигурацию), но все равно плохая практика3. не могли бы вы, ребята, уточнить, как? не могли бы вы, пожалуйста, создать примеры файлов?
4. я думаю, что ответ заключается в том, что вы этого не делаете. Зачем вам хранить пароли в текстовом файле? Именно для этого и существуют базы данных. Для доступа к ним вам нужны учетные данные, они не зависят от программы, ими можно легко управлять и обновлять, помечать, что требуется изменение, или отслеживать, были ли у них неправильные предположения и т.д., Чтобы помочь уменьшить вероятность рассылки спама…
5. это просто подсказка о том, как это сделать, если вам нужна система регистрации, которую вы должны иметь возможность добавлять в файл, о чем я уже говорил file_put_contents , и лучшим / безопасным способом было бы создать php-файл, который будет example.com/users.json не приведет ко всем именам пользователей и паролям. также должно храниться вне webroot, есть много соображений, которые делают его слишком широким, чтобы предоставить вам решение для копирования и вставки вместо простого использования базы данных. также никто не собирается голосовать за плохую практику, совсем наоборот