我在DataMapper ORM 1.6.0中使用Codeigniter 2.0.3。在CI中集成DataMapper已成功实现,除密码加密外,一切正常。在DataMapper和Codeigniter中加密密码自定义规则
我有模型叫users.php
与类Users
。我还设置验证规则:
var $validation = array(
array(
'field' => 'password',
'label' => 'Password',
'rules' => array('required', 'trim', 'unique', 'min_length' => 5, 'encrypt'),
),
array(
'field' => 'email',
'label' => 'Email Address',
'rules' => array('required', 'trim', 'valid_email')
)
);
我的加密功能的验证规则:
function _encrypt($field)
{
// Don't encrypt an empty string
if (!empty($this->{$field}))
{
// Generate a random salt if empty
if (empty($this->salt))
{
$this->salt = md5(uniqid(rand(), true));
}
$this->{$field} = sha1($this->salt . $this->{$field});
}
}
MySQL的users
表结构:
id
email
password
last_login
created_on
我简单的通过控制器创建新的用户:
$u = new Users();
$u->email = '[email protected]';
$u->password = 'mario';
$u->save();
EDIT 1:
完整代码的users.php
模型here。
用户成功存储在数据库中,但原始密码未加密。
我在做什么错?
感谢,问候 马里奥
我们可以看到完整的'users.php'模型吗?你的代码是正确的,所以我假设无法找到验证规则。 – swatkins
@swatkins我已经用完整'users.php'模型代码链接更新了我的第一篇文章。 – Puzo