PasswordHash不与CodeIgniter工作


PasswordHash not working with CodeIgniter

我已经把我从http://www.openwall.com/phpass/下载的文件放到application/libraries

在我的控制器中,我使用这个代码-

$params = array(
       'phpass_hash_strength' => 8,
           'phpass_hash_portable' => FALSE
       );
$this->load->library('PasswordHash', $params);
$password = $this->passwordhash->HashPassword($pwd);

我得到这些错误-

A PHP Error was encountered
Severity: Notice
Message: Uninitialized string offset: 3
Filename: libraries/PasswordHash.php
Line Number: 116

A PHP Error was encountered
Severity: Warning
Message: strpos() [function.strpos]: Empty delimiter
Filename: libraries/PasswordHash.php
Line Number: 116

更新

删除PasswordHash.php,现在使用SimpleLoginSecure

我在将PasswordHash集成到Symfony2时遇到了同样的问题。

为了解决这个问题,我将PasswordHash方法重命名为__construct

理论上,PHP 5+如果找不到构造函数,应该寻找与类同名的方法(http://php.net/manual/en/language.oop5.decon.php)。我的猜测是,一旦添加了名称空间(我的集成的一个要求),类名的解析就会不同,但我根本没有研究过。

我认为你的问题是你试图使用一个通用的PHP对象作为CodeIgniter库。你不能这么做。您需要修改原始代码才能工作,或者下载已经为CodeIgniter设计的贡献库之一。

CodeIgniter库有一些限制(例如它们如何实例化),所以只是将任何文件放入libraries文件夹将不起作用。