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(または他のサーバー側言語)関数を直接呼び出すことはできません。そうは言っても、サーバー側のアプリケーションに対して非同期のJavaScriptリクエストを実行できるAJAXと呼ばれる広く使用されているテクノロジーがあります。ページ全体を送信/再読み込みしないため、非同期と呼ばれますが、サーバー側の機能を呼び出して結果を返すJavaScriptを実行するため、ページを再読み込みせずにページを更新できます。

あなたの場合、ユーザーが入力した特定のパスワードがすでに使用されているかどうかを尋ねるAJAXリクエストを実装すると、サーバーはブール値を返すだけで、JavaScript側で評価して更新します。それに応じてページ。

ASPでAJAXリクエストを使用する方法(私はよく知らない)についてのチュートリアルと説明がたくさんあると確信しています。そのような説明を提供することは、ここで提供できるものから確かに外れます。グーグルに相談してください:)

于 2013-03-02T19:19:28.040 に答える