Hittade problemet. när jag gjorde det här:
echo strlen($hash)
den skrev ut 90, vilket är konstigt eftersom det definitivt inte fanns några mellanslag i slutet när jag skrev ut meddelandet om framgång/misslyckande, och fältet har en varchar-längd på 255
Jag lade till den här raden:
$hash = substr( $hash, 0, 60 );
Och nu fungerar det bra.
Det är konstigt att ingen annan verkar ha stött på det här problemet. Det finns liknande inlägg om password_verify, men ingen av dem krävde den här typen av konvertering, eller någon konvertering för den delen:
php password_verify fungerar inte
password_verify php matchar inte
http://forums.phpfreaks.com/topic/ 283407-need-help-with-password-verify/
Använder PHP 5.5:s password_hash och password_verify-funktion
En sak som stör mig är att detta hindrar koden från att vara framåtkompatibel. Hur vet jag att hashen är 60 tecken långt när standarden ändras?