2011-07-21 13 views
2

jQueryをサーバーに送信する前にフォームのデータを暗号化したい場合は、MD5ハッシュにすることができます。それは小さなプロジェクトなので、SSLを使う必要はありません。フォームデータをjQueryで送信する前に操作する

私はパスワード確認情報に$.md5を使用して、次のJavaScriptコードを持っている:

$(document).ready(function() { 
     var dataToSend = {}; 
     dataToSend['action'] = 'signup'; 
     dataToSend['name'] = name.val(); 
     dataToSend['email'] = email.val(); 
     dataToSend['confsenha'] = $.md5(pass2.val()); 

     var options = { 
      target: '#error', 
      url: 'insert.php', 
      beforeSubmit: validate, 
      data: dataToSend, 
      success: function(resposta) { 
       $('#message').html(resposta); 
      } 
     }; 
     $('#customForm').ajaxForm(options); 
    }); 

問題は、データが複製されていることです。 var dataToSendを使用して送信されるデータを上書きすると、ajaxFormはそのマップ内のデータのみを送信します。しかし、dataToSendからデータを送信するだけでなく、フォームからデータも送信されるため、MD5を使用して暗号化したいものは、暗号化されていてクリーンです。これは、要求の中で何が起こるのかの例です:

usuario =ユーザー&メール=ユーザー%40email.com & senha = 12345 & confsenha = 12345 &送信= &アクション=サインアップ&名=ユーザー&メール=ユーザー%40email.com & confsenha = d41d8cd98f00b204e9800998ecf8427e

私は機能beforeSerializeを定義する必要があります知っているが、私は、フォームデータを操作する方法がわかりません。それを行う方法を教えてもらえますか? plugin siteのドキュメントを1として

+0

私は申し訳ありません。私はそれを目的にしていません。私は受け入れられた答えにフラグを立てなければならなかったことをわかりませんでした。そして私がしたとき、それは問題を解決することに非常に興奮していたからです。私はそれを解決しようとします。 – AntonioJunior

答えて

5

データ
形で沿っ を提出しなければならない余分なデータを含むオブジェクト。

単語alongが重要です。 オプションオブジェクトの一部としてデータを渡すと、そのデータはシリアル化され、フォームの一部であるデータ/入力要素の値と共に送信されます。

より良いアプローチは、パスワード値をハッシュし、beforeSubmitハンドラ(あなたのケースではvalidate関数)の同じフィールドまたは別の隠しフィールドに割り当て、dataToSendオブジェクトを完全に削除することです。以下のような

何か:任意の隠し要素がなければ

:フォームの隠し要素で

function validate(){ 
//Other Code 
    pass2.val($.md5(pass2.val())); 
} 

function validate(){ 
//Other Code 
    $("#hdnPass").val($.md5(pass2.val())); 
    pass2.val(""); 
} 
+0

私はそれを再割り当てする方法を調べましたが、何も見つかりませんでした。それがどうやってできるか知っていますか? – AntonioJunior

+0

@AntonioJunior:いくつかのサンプルコードで答えを更新しました。 Chk it – Chandu

+0

ありがとう、それは私が欲しいものです! – AntonioJunior

関連する問題