我有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
与如何使用密码哈希不同,因为这是关于将两个输入的密码的哈希进行相互比较,而不是将字符串与哈希或哈希进行比较以存储在数据库中。
答案 0 :(得分:2)
登录用户的场景是
password_verify
函数,如果返回true,
表示密码正确,否则密码错误请参阅文档php.net