3

我有一个简单的表单,用户可以在其中更改密码,并且我正在使用一个onsubmit事件来检查通常可以正常工作的表单,除非我尝试使用已经在使用的密码来阻止他们。

密码存储在数据库中并被加密。我需要做的是将加密密码与尚未加密的新密码进行比较。我使用的加密是:

<%
Function encrypt(x1, x2)
    s = ""
    t = 0
    For i = 1 to len(x1)
        t = t + asc(mid(x1,i,1))
    Next
    For i = 1 to len(x2)
        y = (t + asc(mid(x2,i,1)) * asc(mid(x2,((i+1) mod len(x2)+1),1))) mod 255
        s = s & chr(y)
    Next
    For i = (len(x2) + 1) to 10
        If t>598.8 Then t = 598.8
        y = t^3*i mod 255
        s = s & chr(y)
    Next
    encrypt = s
End Function
%>

我运行encrypt(Username,Password)它给了我一个像¬{±ÝÆÝl

onsubmit我正在使用的代码是

function checkData (){
    if (document.signup.password1.value != document.signup.password2.value) {
        alert("Your passwords do not match.")
        document.signup.password1.focus()
        return false
    }
    if (document.signup.password1.value == "") {
        alert("Please enter a password.")
        document.signup.password1.focus()
        return false
    }
}

这一切都很好,我只是坚持最后一点,即旧密码检查。我尝试过各种各样的事情,比如

if (encrypt(document.signup.password1.value,emailaddress) == "value from database"){ 
    alert("The password chosen is already in use.")
    document.signup.password1.focus()
    return false
}

我的主要问题是:我可以将 ASP 函数加密调用到我的 javascript 中checkData吗?当我开始认为这就是问题所在时,我想知道我是否在浪费时间并觉得没有办法做到这一点。我知道我可以将表格提交到下一页并在那里进行检查,但如果可以的话,我真的很想这样做。

4

1 回答 1

1

您不能直接从 JavaScript 调用 ASP(或任何其他服务器端语言的)函数。话虽如此,有一种广泛使用的技术称为 AJAX,它允许您对服务器端应用程序执行异步JavaScript 请求。它们被称为异步,因为您不提交/重新加载整个页面,而是执行一段 JavaScript 调用服务器端功能并返回结果,从而让您无需重新加载即可更新页面。

在您的情况下,您希望实现一个 AJAX 请求,询问您是否已在使用用户输入的某个密码,并且服务器将简单地返回一个布尔值,您将在 JavaScript 端对其进行评估并更新您的相应的页面。

我很确定有大量关于如何在 ASP 中使用 AJAX 请求的教程和解释(我不熟悉),提供这样的解释肯定超出了这里可以提供的范围。请咨询谷歌 :)

于 2013-03-02T19:19:28.040 回答