2013-08-13 3 views
0

Это не мой первый раз с использованием CodeIgniter или Bcrypt, но это мой первый раз с использованием specific library of Bcrypt with CodeIgniter. У меня возникла проблема с объединением двух.Интеграция библиотеки password_compat

Позволяет получить к коду:

public function create_user($value) { 
     $this -> CI = get_instance(); // Get the CI instance 
     $this -> CI -> load -> library('bcrypt'); // Use this to load the library from within the model 

     $hash = $this -> CI -> bcrypt -> password_hash($value[":password"], PASSWORD_BCRYPT, array("cost" => 17)); Here is where things get shaky. 

     $value[":password"] = $hash; // Here I take the :password placeholder and update the clear text password with the bcrypt pasword 

     var_dump($value[":password"]); // This gives me NULL, I assume because I am getting errors with $hash = ....... 

........................................ 

согласно инструкции с Password_compat:

Bcrypt также позволяет определить параметр стоимости в опции массива. Это позволяет вам изменить стоимость процессора по алгоритму:

$ hash = password_hash ($ password, PASSWORD_BCRYPT, array ("cost" => 10));

На моем переднем конце эти ошибки я получаю:

Сообщение: Использование неопределенная константа PASSWORD_BCRYPT - предполагается 'PASSWORD_BCRYPT'

Сообщение: password_hash() ожидает параметр 2 для be long, string given

Я сделал это в самой библиотеке, поэтому поместил его в папку приложений/библиотек

This is the file

любая помощь будет большим. Спасибо.

+0

бежишь PHP 5.5+? Похоже, эта константа не была добавлена ​​до тех пор, что также вызвало бы сообщение о том, что параметр 2 не является ожидаемым. –

+0

Я запускаю PHP 5.3 с платьем sushin – user2378411

+0

Ya, постоянная PASSWORD_BCRYPT не была введена до 5.5. http://php.net/manual/en/password.constants.php –

ответ

0

Хорошо well looking at this file (который был мой старый Bcrypt.php файл)

Вы заметили, у меня нет этих линий добавил:

if (!defined('PASSWORD_DEFAULT')) { 

    define('PASSWORD_BCRYPT', 1); 
    define('PASSWORD_DEFAULT', PASSWORD_BCRYPT); 

Ну почему я удалил их потому, что я поставил выше фрагмент кода в строке класса Bcrpyt {..., которая приведет к ошибке.

Теперь я ставлю этот фрагмент кода:

if (!defined('PASSWORD_DEFAULT')) { 
     define('PASSWORD_BCRYPT', 1); 
     define('PASSWORD_DEFAULT', PASSWORD_BCRYPT); 

    Class Bcrypt { 

Это все, что я должен был сделать для того, чтобы работать. Дурак я! Сейчас он работает:

строка (60) "$ 2y $ 17 $ 9qgFDbN3361DAQFilGZySuJ4czachQThuskoSj4DihkxjwGFqTx2e"

Смежные вопросы