PasswordHash не работает с CodeIgniter


Я поместил файлы, которые я скачал из http://www.openwall.com/phpass/ to 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.

2 3

2 ответа:

Я думаю, что ваша проблема заключается в том, что вы пытаетесь использовать универсальный объект PHP в качестве библиотеки CodeIgniter. Ты не можешь просто так это сделать. Вам нужно будет изменить исходный код для работы или загрузить одну из библиотек , уже разработанных для CodeIgniter.

Библиотеки CodeIgniter имеют некоторые ограничения (например, как они создаются), поэтому простое удаление любого файла в папку библиотеки не будет работать.

У меня была та же проблема при интеграции PasswordHash в Symfony2.

Чтобы решить ее, я переименовал метод PasswordHash в __construct.

Теоретически PHP 5+ должен искать метод с тем же именем, что и класс, если он не может найти конструктор (http://php.net/manual/en/language.oop5.decon.php я предполагаю, что имя класса разрешается по-разному, как только пространство имен добавляется (требование для моей интеграции), но я не исследовал вообще.