【发布时间】:2023-04-01 10:35:02
【问题描述】:
如何比较新输入的密码和存储在 php 会话变量中的旧密码。
我正在使用以下代码。此代码的结果始终是“输入的密码不正确”,即输入正确密码时如果循环不起作用。
<!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 != oldPass?”,“答:让我们看看里面有什么:console.log(oldPass1, oldPass);”
-
您不应该在 HTML 页面中输出旧密码。您甚至不应该将其存储为纯文本。通过 ajax 进行验证。
-
你试过没有 htmlspecialchars() 吗?看起来这会导致您在比较两个密码时可能不需要一些编码:w3schools.com/php/func_string_htmlspecialchars.asp
-
作为旁注,看看这两个
$string = "<!?fgt?}@>"; echo $string."\n"; echo htmlspecialchars($string);的输出你会发现它们非常不同,这可能会给你带来一些问题。 -
我投票决定将此问题作为离题结束,因为 SO 不是调试服务。
标签: javascript php validation login login-script