
password_verify 함수의 첫 번째 인자인 hashed_password(해시된 비밀번호)가 잘못된 것은 아닙니다. 오류 메시지에서 "Argument must be a string of bytes or a numeric string"이라는 문구가 있습니다. 이는 password_verify 함수의 첫 번째 인자가 문자열이 아닌 다른 형태의 값이 들어간 때문입니다.
password_hash 함수를 사용하여 해시된 비밀번호를 생성했을 때 오류가 발생하는 이유는 password_hash 함수의 인자값이 잘못된 것일 수 있습니다. PASSWORD_DEFAULT를 사용할 때는 PHP 7.0 이상이 필요합니다. PHP 버전이 낮은 경우 오류가 발생할 수 있습니다.
또한, password_verify 함수의 두 번째 인자인 input_password도 문자열이 아닌 다른 형태의 값이 들어간 경우 오류가 발생할 수 있습니다.
해결 방법은 다음과 같습니다.
1. password_hash 함수의 인자값을 확인하여 PHP 버전이 7.0 이상인지 확인합니다.
2. password_verify 함수의 두 번째 인자인 input_password을 문자열로 변환합니다.
3. password_verify 함수의 첫 번째 인자인 hashed_password을 문자열로 변환합니다.
예제를 통해 확인해 보겠습니다.
#hostingforum.kr
php
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$input_password = '비밀번호';
$input_password = strval($input_password); // 문자열로 변환
if (password_verify($input_password, $hashed_password)) {
echo '비밀번호가 일치합니다.';
} else {
echo '비밀번호가 일치하지 않습니다.';
}
이러한 방법을 통해 password_verify 함수의 오류를 해결할 수 있습니다.
2025-04-16 16:59