使用 js 将存储在 php 会话变量中的密码与新输入的密码进行比较

compare password stored in php session variable with new entered password using js

如何将新输入的密码与存储在 php 会话变量中的旧密码进行比较。

我正在使用以下代码。此代码的结果始终是 "password entered is not correct" 即如果输入正确密码时循环不起作用。

<!DOCTYPE html>
<html lang="en">
    <div id="dom-target" style="display: none;">
        <?php 
            session_start();
            $oldPsassword=$_SESSION['storpass'];
            echo htmlspecialchars($oldPsassword);

        ?>
    </div>    
    <form name="myForm2" method ="post" action = "index-login.php" onsubmit="return PasswordMatch()">
        <div class="form-group">
            <label>Old Password</label>
            <input type="password" name = "op" placeholder="old Password" id = "opass" class="form-control" >
        </div>
    </form>
</html>

JavaScript

function PasswordMatch() {    
    var div = document.getElementById("dom-target");
    var oldPass =div.textContent;

    var oldPass1 =document.getElementById("op").value;

    if (oldPass1 == oldPass) {    
        alert("password entered is correct");     
    }
    else
    {
        alert("password entered is not correct");
        return false;
    }
}

您为 oldpass1

使用了错误的 ID

使用这个:

var oldPass1 =document.getElementById("opass").value;

因为您已将 opass id 提供给输入字段

两件事:

  1. 您输入的 ID 是 opass 而不是 op。更改 getElementById() 调用。

  2. 容器dom-target密码前后有空格导致不匹配。你可以trim它来解决

添加trim:

var oldPass = div.textContent.trim();

但是,将旧密码存储在 HTML 中是不安全的。任何人都可以检查 HTML 来找到密码。您应该在服务器端进行比较。