0

パスワードハッシュのカスタムアルゴリズムを作成しようとしています。私はこれをやろうとします。

app.cfgの場合:

sf_guard_plugin:
  algorithm_callable: [Hlp, noHash]

apps / frontend / lib / Hlp.phpの場合:

class Hlp
{
  function noHash($password) //tried to make public or public static, but it didn't work either
  {
    return $password;
  }
}

そして私のデータベースでは、「アルゴリズム」は「noHash」に設定されています。ログインしようとすると、次のエラーが発生します。

呼び出し可能なアルゴリズム「noHash」は呼び出し可能ではありません。

私はphp5.2を使用しています。

私は何が間違っているのですか?

UPDATE app.ymlの変更:algorithm_callable:'Hlp :: noHash'

dbのアルゴリズムを「Hlp::noHash」に変更しました

有用なヒントを提供するために、hakreの答えを正しいものとしてマークします。

4

2 に答える 2

1

sfGuardPlugin 1.3は、クラスメンバーを呼び出したい場合に備えて、関数が静的であることを想定しています。

ただし、あなたの場合、エラーメッセージは、グローバルパブリック関数を呼び出していることを明示的に示しています。そうでない場合、エラーメッセージは次のようになります。

呼び出し可能なアルゴリズム「Hlp::noHash」は呼び出し可能ではありません。

したがって、設定を確認してください。PHPの要件を確認してください。疑わしい場合は、ソースを読んでください。

于 2011-06-17T08:32:50.670 に答える
0

関数を適切に定義する必要があります。PHP4の時代を後にする時が来ました。また、PHP>5.2.4が必要です

...
public static function noHash($password)
...

そして、あなたはapp.ymlを意味しますか?

于 2011-06-17T08:23:48.967 に答える