Это происходит потому, что PASSWORD_BCRYPT
является константой , а не строкой. PASSWORD_BCRYPT является удобной для человека версией числового значения - оно избавляет от необходимости запоминать миллиард чисел и их соответствующие значения.
Отредактированная информация
Дхарман обнаружил this - что указывает на то, что в PHP7.4 постоянные значения для типов шифрования больше не будут числовыми значениями.
Идентификаторы алгоритма хеширования паролей теперь являются обнуляемыми строками, а не целыми числами.
PASSWORD_DEFAULT was int 1; now is NULL
PASSWORD_BCRYPT was int 1; now is string '2y'
PASSWORD_ARGON2I was int 2; now is string 'argon2i'
PASSWORD_ARGON2ID was int 3; now is string 'argon2id'
Просто удалите кавычки, и все готово:
<code><?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);
$password = '121@121';
$hash_method = PASSWORD_BCRYPT;
$password_encrypted = password_hash($password, $hash_method);
echo '<pre>'. print_r($password_encrypted, 1) .'
';
Если вы получаете PASSWORD_BCRYPT
из $_POST
или из базы данных, вы можете использовать функцию constant()
:
<code><?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);
$password = '121@121';
$hash_method = 'PASSWORD_BCRYPT';
$password_encrypted = password_hash($password, constant($hash_method));
echo '<pre>'. print_r($password_encrypted, 1) .'
';