【问题标题】:What is wrong with my code (in Javascript)?我的代码(在 Javascript 中)有什么问题?
【发布时间】:2013-10-03 15:09:38
【问题描述】:

我对我在代码中得到的结果感到非常沮丧:

userOldPass //来自用户输入,用户的旧密码

oldPass //来自数据库,用户的旧密码

newPass //来自用户输入,用户的新密码

confirmNewPass //来自用户输入,用户新密码确认

function checkpass(){

        if(userOldPass==oldPass) && (newPass==comfirmNewPass){
            alert('success');

        }else{
            alert('error');

        }

}

问题是即使输入已经全部正确,它也总是说“错误”。我通过警报功能检查了每个变量的值,看看是否存在一些不等式,但一切正常,但仍然会发出“错误”警报。

可能是什么问题?

附:所有变量都在 SHA1 哈希中。我使用了在网上找到的 CryptoJS.SHA1 函数。 我使用alert函数检查变量中的每个值,结果是正确的。

【问题讨论】:

  • 您是否从数据库中获取密码哈希并将其传递给 JS?
  • 是的,先生。所有值都是正确的,但它仍然打印“错误”。
  • 不要那样做......这是最糟糕的主意!
  • 好的,你能详细说明一下吗?
  • 我们正在对密码进行哈希处理,以使其更难被窃取。此外,我们正在实施阻止用户的机制,例如。输入了 3 个错误密码。但是,当您将该哈希发送到浏览器 (JS) 时,您将允许无数次尝试破坏它。不要将其视为牢不可破(尤其是它只是 SHA1)。

标签: javascript php comparison-operators


【解决方案1】:
 if(userOldPass==oldPass) && (newPass==comfirmNewPass) // all should stay in ()

这样:

if ((userOldPass==oldPass) && (newPass==comfirmNewPass))

【讨论】:

  • 我刚刚做了你的建议,但仍然没有解决问题
  • 你可以用firebug调试它,看看vars是否有相同的值。
  • 好的,我试试。我使用警报功能来查看变量是否具有相同的值并且它们都具有相同的值。
  • 尝试使用 jquery 进行修剪
  • 我已经解决了我的问题。尽管变量在函数 alert 中具有相同的结果并且似乎根本没有问题,但我认为它在语义上是错误的,这就是为什么它仍然在 else 部分进行,即使它应该已经是真的了。问题是当我使用警报功能显示每个变量的值时,即使它们具有相同的结果,'newPass==comfirmNewPass' 也不匹配。
猜你喜欢
  • 1970-01-01
  • 2018-11-17
  • 2017-01-21
  • 1970-01-01
  • 2011-07-28
相关资源
最近更新 更多