【问题标题】:SHA1 Filter in Zend FrameworkZend 框架中的 SHA1 过滤器
【发布时间】:2010-11-02 22:27:22
【问题描述】:

如何使用 Zend 过滤器将我的 POST 数据过滤为 SHA1 值?我正在尝试将用户提交的当前普通密码与我数据库中的 SHA1 值进行比较。

我正在使用 Identical Validator 来比较值(我在将表单呈现给用户之前从数据库中获得)。我正在使用processAjax 来验证所有表单值。

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    您应该创建自己的过滤器来做到这一点:

      class Sha1Filter implements Zend_Filter_Interface
      {
          public function filter($value)
          {
                        return sha1($value);
          }
      }
    

    之后,您可以将其添加为任何其他过滤器

    http://framework.zend.com/manual/en/zend.filter.writing_filters.html

    【讨论】:

      【解决方案2】:

      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;
      }
      

      【讨论】:

      • 我实际上打算将它用于用户的控制面板,以便用户可以更改他/她的密码。但是感谢代码,我们将使用它进行身份验证:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2012-06-16
      • 1970-01-01
      相关资源
      最近更新 更多