[PHP] PHP ver5.4以下で、password_verify($pass, $hash)の処理を行う代替処理
password_verify()関数は、PHP ver5.5以上から使える機能です。
それ以前で使用する場合は、以下のfunctionを実装して、代替処理として使うようにしましょう。
ソースコード
function password_verify($password, $hash) {
if (!function_exists('crypt')) {
trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);
return false;
}
$ret = crypt($password, $hash);
if (!is_string($ret) || $this->strlen($ret) != $this->strlen($hash) || $this->strlen($ret) <= 13) {
return false;
}
$status = 0;
for ($i = 0; $i < $this->strlen($ret); $i++) {
$status |= (ord($ret[$i]) ^ ord($hash[$i]));
}
return $status === 0;
}
function strlen($binary_string) {
if (function_exists('mb_strlen')) {
return mb_strlen($binary_string, '8bit');
}
return strlen($binary_string);
}