2014-10-03 71 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