2014-10-03 47 views
0

Yii 1.x has password hashing build in的最新版本。但是,我们是否有MD5验证器的内部版本,所以我可以检查,如果特定的字段确实包含有效的MD5哈希?Yii的MD5验证器

如果不是,如果我需要自己写自己,是否有任何来源的例子,我可以重用(不重新发明轮子)?还是我必须从头开始写自己?

回答

1

这是一个例子验证码:

public function validateMd5($attribute, $params) 
{ 
    if(!$this->hasErrors() && $this->password !== '') 
    { 
     if(!preg_match('/^[a-f0-9]{32}$/', $this->password)) 
      $this->addError('password', 'Password field must contain valid MD5 hash!'); 
    } 
} 

这就是,如何将它添加到你的模型(rules()法):

array('password', 'validateMd5', 'on'=>array('create', 'update')) 

此代码只验证,如果字符串进入由用户到password字段是一个有效的MD5哈希。它不验证密码本身。为此,您应该考虑例如CPasswordHelper::verifyPassword方法( this answer中的示例)。

+0

完美答案,谢谢!我只是让自己重新编辑你的代码,使其成为全功能的Yii验证器,而不仅仅是验证功能 - 你的建议。除了这个小编辑,当然,所有的荣耀都归于你! :] – trejder 2014-10-03 14:04:37

+0

'verifyPassword'使用一些匹配系统,将在某个时候检查它。无论如何,好工作。 – ineersa 2014-10-03 14:07:27