0

我正在尝试为密码散列制作自定义算法。我尝试这样做。

在 app.cfg 中:

sf_guard_plugin:
  algorithm_callable: [Hlp, noHash]

在应用程序/前端/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”是不可调用的。

我正在使用 php 5.2。

我究竟做错了什么?

更新 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

您应该正确定义您的功能。是时候离开 PHP 4 时代了。此外,您需要 PHP >5.2.4

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

你的意思是 app.yml 对吗?

于 2011-06-17T08:23:48.967 回答