我目前正在尝试使用 HTML/PHP 构建注册表单。由于某种原因,我输入的密码在发布时被替换为保存的密码,我不确定为什么。
我的注册表单代码:
<form autocomplete="off" name="signupform" action="includes/signup_function" method="POST">
<label>First Name: </label>
<input type="text" id="firstname" name="firstname">
<label>Last Name: </label>
<input type="text" id="lastname" name="lastname">
<label>Username: </label>
<input type="text" id="email" name="email"></br></br>
<label>Password: </label>
<input type="password" autocomplete="new-password" id="pwd" name="pwd"></br></br>
<label>Confirm Password: </label>
<input type="password" autocomplete="new-password" id="passwordconfirm" name="passwordconfirm"></br></br>
<input type="submit" name="submit"></input>
</form>
我只是进行密码匹配,它返回 false - 我的调试值显示与我输入的内容完全不同,并且密码发布返回保存的 cpanel 密码。
$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$password = $_POST["pwd"];
$passwordconfirm = $_POST["passwordconfirm"];
if(matchPassword($password, $passwordconfirm) !== true) {
header("Location: ../signup?err=password=");
exit();
}
function matchPassword($password, $passwordconfirm) {
$result;
if($password == $passwordconfirm) {
$result = true;
} else {
$result = false;
error_log("password invalid: " .$password.",".$passwordconfirm);
}
return $result;
}
如果我输入的密码为 Alex,则表单会显示密码为 H9wL^X938*i(保存的密码),确认密码为 Alex。
调试到错误日志显示了这一点 - (表单中输入的密码是 Alex)
[22-Nov-2023 15:59:09 Australia/Sydney] password invalid: H9wL^X938*i,Alex
我以前从未遇到过这种情况,希望有人可以帮助我,TIA。
该问题可能与浏览器的密码自动填充功能有关。当您在表单上设置 autocomplete="off" 时,它可能无法在某些浏览器中完全禁用密码自动填充。相反,您可以尝试专门针对密码字段使用 autocomplete="new-password" 。
更新您的表单以在两个密码字段中包含 autocomplete="new-password":
<form autocomplete="off" name="signupform" action="includes/signup_function" method="POST">
<!-- ... other fields ... -->
<label>Password: </label>
<input type="password" autocomplete="new-password" id="pwd" name="pwd"></br></br>
<label>Confirm Password: </label>
<input type="password" autocomplete="new-password" id="passwordconfirm" name="passwordconfirm"></br></br>
<input type="submit" name="submit"></input>
</form>
通过使用 autocomplete="new-password",您向浏览器发出信号,表明这些字段专门用于输入新密码,这可能有助于防止自动填充功能的干扰。
如果问题仍然存在,您可能需要检查是否有任何浏览器扩展或设置影响了该行为。此外,您可以尝试在不同的浏览器中测试您的表单,看看问题是否统一出现或者是否特定于浏览器。