PHP 表单在 POST 中使用不同的值提交?

问题描述 投票:0回答:1

我目前正在尝试使用 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。

php html post submit
1个回答
0
投票

该问题可能与浏览器的密码自动填充功能有关。当您在表单上设置 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",您向浏览器发出信号,表明这些字段专门用于输入新密码,这可能有助于防止自动填充功能的干扰。

如果问题仍然存在,您可能需要检查是否有任何浏览器扩展或设置影响了该行为。此外,您可以尝试在不同的浏览器中测试您的表单,看看问题是否统一出现或者是否特定于浏览器。

© www.soinside.com 2019 - 2024. All rights reserved.