Mal*_*sar 4 php forms validation codeigniter
我正在尝试在我的Controller中编写表单验证规则以提交更改密码表单,我也在其中检查旧密码.我从db获取旧密码(当前)并将其放在隐藏的输入字段中.
我的规则很简单,如下所示
$config=array(
array(
'field' => 'old_password',
'label' => 'oldpass',
'rules' => 'trim|required'
),
array(
'field' => 'conf_password',
'label' => 'connewpass',
'rules' => 'trim|required|matches[password]'
),
array(
'field' => 'password',
'label' => 'newpass',
'rules' => 'trim|required'
)
Run Code Online (Sandbox Code Playgroud)
我保存当前密码的表单中的隐藏输入字段就像
<input type="hidden" name="old_pass" value="<?php echo $user['password']?>">
Run Code Online (Sandbox Code Playgroud)
我知道规则中的匹配(字段名称)用于匹配两个字段值,但我遇到的问题是来自db的密码是md5加密的.如何加密来自表单的密码并与规则中的旧密码字段匹配?
jag*_*d89 15
不需要在隐藏字段中放置旧密码哈希.它甚至都不安全.您可以为自己的自定义验证创建回调函数.请注意我在以下代码中所做的评论.
$config=array(
array(
'field' => 'old_password',
'label' => 'oldpass',
'rules' => 'trim|required|callback_oldpassword_check' // Note: Notice added callback verifier.
),
array(
'field' => 'conf_password',
'label' => 'connewpass',
'rules' => 'trim|required|matches[password]'
),
array(
'field' => 'password',
'label' => 'newpass',
'rules' => 'trim|required'
)
Run Code Online (Sandbox Code Playgroud)
在控制器的一侧创建一个方法如下
public function oldpassword_check($old_password){
$old_password_hash = md5($old_password);
$old_password_db_hash = $this->yourmodel->fetchPasswordHashFromDB();
if($old_password_hash != $old_password_db_hash)
{
$this->form_validation->set_message('oldpassword_check', 'Old password not match');
return FALSE;
}
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
有关回调验证的更多详细信息,请访问此处
我还没有验证上面的代码.但希望你能找到解决问题的方法.
| 归档时间: |
|
| 查看次数: |
30840 次 |
| 最近记录: |