0

我在使用 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;
};

感谢您的帮助 !

4

1 回答 1

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 使调用继续。您可以随意截取和修改数据。请注意,您必须在提交的字段上设置“名称”属性,否则它们在传递给“beforeSubmit”的“数据”中将不可用。

做了一个小演示(发布到 Google 不起作用,但请查看检查器内部的 http 调用以查看正确发布的加密值):http: //jsfiddle.net/8B9fL/

希望这可以帮助。

于 2013-05-10T19:23:19.590 回答