使用jQuery on BeforeSybmit加密密码

时间:2013-05-10 18:29:02

标签: javascript jquery md5

在使用ajaxSubmit

传输之前加密密码时遇到问题

login_password是输入密码清除值

login_password_md5隐藏输入

在我的警报中,密码被加密,所以当我查看php文件请求时,我会看到它明确

JavaScript / jQuery代码:

var loginSubmit = function () {
    $(this).ajaxSubmit({

        beforeSubmit: function (p1, p2, p3, p4) {
            // Crypt 

            alert("cryptPassword");
            login_password_md5 = $().crypt( {
                method: 'md5',
                source: $('#login_password').val()
            });

            $("#login_password_md5").val(login_password_md5);
            passmd5 = $("#login_password_md5").val();
            alert(passmd5);

            $("#login_password").val("");

            var form = $("#form_login");

            // Validation
            $(form).validate(rulesLogin);
            if (!$(form).valid())
                return false;

            $("#btn_login").hide();
            $("#login_loader").show();

            return true;
        },
        success: function (p1, p2, p3, p4) {
            // Data JSon Correction
            var dataX = "";
            for(i in p1) {
                dataX += p1[i];
            } 

            var result = JSON.parse(dataX);

            //var result = p1;
            var xmlHttp = p2;
            var form = p4;                

            // Result is null
            if(result == null || result == "") {
                $("#login_loader").hide();
                $("#btn_login").show();
                $("#login_password").val("");
                $("#login_email").val("");
                alert("(ERROR-LOGIN-1000) : Result is NULL !");
                return false;
            }

            // Success is false OR exception is true
            if(result.success != true || result.exception != false || result.status != 0) {
                $("#login_loader").hide();
                $("#btn_login").show();
                $("#login_password").val("");
                $("#login_email").val("");
                alert("(ERROR-LOGIN-1001-" + result.status + ") : " + result.message);
                return false;
            }

            // AccessLevel : Suspended account
            if(result.data.AccessLevel == 10) {
                $("#login_loader").hide();
                $("#btn_login").show();
                $("#login_password").val("");
                $("#login_email").val("");
                alert("(ERROR-LOGIN-1002) : Your account has been suspended by an Administrator ! You can contact customer service using the Contact link at the bottom of this page.");
                return false;                
            }

            // AccessLevel : User deleted account
            if(result.data.AccessLevel == 20) {
                $("#login_loader").hide();
                $("#btn_login").show();
                $("#login_password").val("");
                $("#login_email").val("");
                alert("(ERROR-LOGIN-1003) : You deleted your account. You can contact customer service using the Contact link at the bottom of this page.");
                return false;                
            } else if (result.data.AccessLevel >= 30) {      

                top.location.href="/site";
            } else {
                $("#login_loader").hide();
                $("#btn_login").show();
                $("#login_password").val("");
                $("#login_email").val("");
                alert("(ERROR-LOGIN-1004) : AccessLevel error ! Please try again.");
                return false;                
            }
        }
    });
    return false;
};

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

没有测试为什么隐藏文本值没有使用加密密码设置,但是为我编写了一个简单的代码段:

$("form").ajaxForm({
    beforeSubmit: function(data) {
        $(data).each(function(i, field) {
            if(field.name == "password") {
                var encrypted = $().crypt({
                    method: "md5",
                    source: field.value
                });

                field.value = encrypted;
            }
        });
        return true;
    }
});

实际上,“beforeSubmit”允许您在提交之前阻止/修改表单数据。返回false会停止提交,返回true会使呼叫继续。您可以随意拦截和修改数据。请注意,您必须在提交的字段上设置“name”属性,否则它们将不会在传递给“beforeSubmit”的“data”中可用。

制作了一个小型演示(发布到Google无法使用,但请查看检查器中的http调用以查看正确发布的加密值):http://jsfiddle.net/8B9fL/

希望这有帮助。