在使用ajaxSubmit
传输之前加密密码时遇到问题在我的警报中,密码被加密,所以当我查看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;
};
感谢您的帮助!
答案 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/
希望这有帮助。