【问题标题】:How to prevent user from entering previous passwords in a new password field using ajax in sugarcrm?如何防止用户在 Sugarcrm 中使用 ajax 在新密码字段中输入以前的密码?
【发布时间】:2015-01-30 12:01:08
【问题描述】:
当用户更改密码时,我想在现有 JavaScript 验证中添加一些 JavaScript 验证。
现在,我想使用 AJAX 连接 PHP 文件,该文件对当前用户运行 db 查询,并检查在 new_password 字段中输入的密码是否与他最近 10 个密码匹配。
现在,我发现了 SugarCRM 用于将密码与存储在数据库中的散列密码匹配的那些函数。但是,问题是我不知道如何使用 AJAX 连接到 SugarCRM 中的 PHP 文件。
我想使用 onblur 函数添加 JavaScript 验证。当用户使用 onblur 输入他的新密码时,我想使用 AJAX 将该密码值发送到 PHP 文件并返回该值。当用户单击保存按钮时,如果他的新密码与他的最后一个密码匹配,它应该给出警告框,如果不匹配,它应该允许他更改他的密码。
这里有人可以指导我吗?任何帮助表示赞赏。
【问题讨论】:
标签:
php
ajax
validation
passwords
sugarcrm
【解决方案1】:
我已经设法找到了我想要的答案。我正在与大家分享我的代码。
if(form.new_password.value!=''){
$.ajax({
url:'index.php?entryPoint=check_last_passwords',
data:{new_password: $('#new_password').val(),
record: $('#record').val()},
success: function(data){
if(data!=''){
alert("Error: New password should not match with the last 10 passwords.");
return false;
}else{
var _form = $('#EditView')[0];
if (!Admin_check())
return false;
_form.action.value='Save';
set_chooser();
if(verify_data(EditView))
_form.submit();
}
}
});
}
【解决方案2】:
首先,您必须存储用户的最后 10 个密码,因为在 Sugar 的默认行为中,您只会获得旧密码和新密码。
对于 AJAX,您必须在控制器的帮助下在用户模块中创建一个操作,或者只需在 custom/modules/Users 中创建文件 actionName.php。 (参考Link)
var URL = "index.php?module=Users&action=actionName";
YAHOO.util.Connect.asyncRequest('POST', URL, callBack);
var callBack = {
success: function(){},
failure:function(){}
}
您可以使用此代码进行 AJAX 调用,也可以使用此代码Link