如何使用Zend過濾器將我的POST數據過濾爲SHA1值?我試圖比較用戶提交給我的數據庫中的SHA1值的當前簡單密碼。Zend框架中的SHA1過濾器
我正在使用Identical Validator來比較值(從數據庫呈現表單到用戶之前)。我正在使用processAjax
來驗證所有表單值。
如何使用Zend過濾器將我的POST數據過濾爲SHA1值?我試圖比較用戶提交給我的數據庫中的SHA1值的當前簡單密碼。Zend框架中的SHA1過濾器
我正在使用Identical Validator來比較值(從數據庫呈現表單到用戶之前)。我正在使用processAjax
來驗證所有表單值。
你應該創建自己的過濾器來做到這一點:
class Sha1Filter implements Zend_Filter_Interface
{
public function filter($value)
{
return sha1($value);
}
}
之後,你可以把它添加任何其他過濾器
http://framework.zend.com/manual/en/zend.filter.writing_filters.html
zerkms'答案是正確的。
但是,我會建議不要使用過濾器來做到這一點。你應該爲此使用Zend_Auth。簡單的例子:
$adapter = new Zend_Auth_Adapter_DbTable($db);
$adapter->setTableName('users');
$adapter->setIdentityColumn('username');
$adapter->setCredentialColumn('password');
$adapter->setCredentialTreatment('SHA1(password)');
$adapter->setIdentity($form->getValue('username'));
$adapter->setCredential($form->getValue('password'));
$result = $auth->authenticate($adapter);
switch ($result->getCode()) {
case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
// do something
break;
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
// do something
break;
case Zend_Auth_Result::SUCCESS:
// do something
break;
default:
// do something
break;
}
我實際上要使用它的用戶的控制面板,以便用戶可以更改他/她的密碼。但是,感謝代碼,我們將使用它進行身份驗證:) – amree 2010-11-02 15:03:29