【发布时间】:2011-10-13 09:18:22
【问题描述】:
我正在使用 Codeigniter 2.0.3 和 DataMapper ORM 1.6.0。 CI 中的集成 DataMapper 已成功实施,一切正常,除了密码加密。
我的模型名为 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});
}
}
MySQLusers表结构:
id
email
password
last_login
created_on
我通过控制器简单地创建新用户:
$u = new Users();
$u->email = 'mario1@mario-design.info';
$u->password = 'mario';
$u->save();
编辑 1:
users.php型号here的完整代码。
用户成功存储在数据库中,但原始密码未加密。
我做错了什么?
谢谢,问候 马里奥
【问题讨论】:
-
我们能看到你的完整
users.php模型吗?您的代码是正确的,所以我假设找不到验证规则。 -
@swatkins 我已经用完整的
users.php模型代码链接更新了我的第一篇文章。
标签: codeigniter passwords password-encryption codeigniter-datamapper