【发布时间】:2010-11-02 22:27:22
【问题描述】:
如何使用 Zend 过滤器将我的 POST 数据过滤为 SHA1 值?我正在尝试将用户提交的当前普通密码与我数据库中的 SHA1 值进行比较。
我正在使用 Identical Validator 来比较值(我在将表单呈现给用户之前从数据库中获得)。我正在使用processAjax 来验证所有表单值。
【问题讨论】:
标签: php zend-framework
如何使用 Zend 过滤器将我的 POST 数据过滤为 SHA1 值?我正在尝试将用户提交的当前普通密码与我数据库中的 SHA1 值进行比较。
我正在使用 Identical Validator 来比较值(我在将表单呈现给用户之前从数据库中获得)。我正在使用processAjax 来验证所有表单值。
【问题讨论】:
标签: php zend-framework
您应该创建自己的过滤器来做到这一点:
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;
}
【讨论】: