У меня есть форма «создать нового пользователя» в HTML, и мне нужно знать, где ее части нуждаются в проверке и проверке (PHP или javascript) и как лучше всего это сделать.
Обработка пароля осуществляется в PHP, как и код, который проверяет, доступно ли данное имя пользователя или уже существует в базе данных. Нужно знать лучшее место для сравнения полей «пароль» и «подтвердить пароль», так как это трудно сделать, когда оба хэшируются в PHP.
if ($_SERVER["REQUEST_METHOD"] == "POST") { // If the form is submitted and by the method of post
$new_username = test_input($_POST['new_username']); // Set new_username to the new_username value from the form
$new_password = password_hash(test_input($_POST['new_password']), PASSWORD_DEFAULT); // Get the new_password from the form and hash it before passing to the variable
$confirm_password = password_hash(test_input($_POST['new_password_confirm']), PASSWORD_DEFAULT); // Get the confirm_password field from the form and hash it
$team = $_POST['new_team']; // Get the new_team field (doesn't need validation as it is a dropdown choice)
$username_valid = test_account_validity($newConnection, $new_username);
if ($username_valid) {
echo "";
}
if (hash_equals($new_password, $confirm_password)) {
echo "Passwords Match";
}
else {
echo "Passwords Dont Match";
}
}
function test_input($data) { // Function to remove spaces, slashes and special html characters before returning the valid data
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
Ожидаемые пароли совпадают с выводом, когда пароли перед хэшированием совпадают (одинаковые введены в оба поля формы), но в нем говорится, что пароли не совпадают.
EDIT
Отличается от того, как использовать хэш пароля, поскольку речь идет о сравнении хэшей друг с другом для двух введенных паролей, а не о сравнении строки с хэшем или хэшированием для хранения в базе данных.