我遇到了使用jQuery验证引擎获取密码哈希的问题。问题是我似乎无法散列给定的密码。
这是我到目前为止所做的。
<script>
jQuery(document).ready( function() {
jQuery("#form").validationEngine('attach',
{onValidationComplete: function(form, status){
if (status == true) {
$("form#form").bind('submit', function(e) {
e.preventDefault();
});
function formhash(form, password) {
var p = document.createElement("input");
form.appendChild(p);
p.name = "p";
p.type = "hidden";
p.value = hex_sha512(password.value);
password.value = "";
form.submit();
}
}
}
})
};
</script>
通过在提交后运行处理脚本,我可以找到并使用未经过修改的密码,但这对我来说还不够。
我做错了什么?
编辑: 我应用了更多的javascript和额外的&#34;后台验证&#34;通过隔离函数(formhash)并放入一个单独的文件中,添加onsubmit =&#34; return validate(this);&#34;在表单标题中。它非常漂亮,但它似乎可以解决问题。
尽管如此,仍然欢迎任何关于改进的建议。
<script type="text/javascript">
function validate(form) {
var reason = "";
reason += validatePassword(form.password);
if (reason != "") {
return false;
}
formhash(form, form.password)
return true;
}
function validatePassword(fld) {
var error = "";
if (fld.value == "") {
error = "";
}
return error;
}
</script>
答案 0 :(得分:0)
有点晚了,但我有同样的问题,没有找到答案,所以我想分享一下我解决它的方式:
function reghash(form, password, confirmation) {
var p = document.createElement("input");
form.appendChild(p);
p.name = "p";
p.type = "hidden";
p.value = hex_sha512(password.value);
password.value = "123456";
confirmation.value = "123456"; }
我从此功能中移除form.submit();
并使用提交按钮中的onclick
调用该功能。我通过简单地匹配jquery表单验证中允许的最小长度,将密码和确认更改为安全值。这样,验证功能就不会阻止提交表单。