Trovato il problema. quando ho fatto questo:
echo strlen($hash)
ha stampato 90, il che è strano perché non c'erano assolutamente spazi alla fine quando ho stampato il messaggio di successo/fallimento e il campo ha una lunghezza varchar di 255
Ho aggiunto questa riga:
$hash = substr( $hash, 0, 60 );
E ora funziona bene.
È strano che nessun altro sembri essersi imbattuto in questo problema. Ci sono post simili su password_verify, ma nessuno di questi ha richiesto questo tipo di conversione, o qualsiasi altra conversione se è per questo:
php password_verify non funzionante
password_verify php non corrisponde
http://forums.phpfreaks.com/topic/ 283407-need-help-with-password-verify/
Utilizzo della funzione password_hash e password_verify di PHP 5.5
Una cosa che mi infastidisce è che questo impedisce al codice di essere compatibile con le versioni successive. Come faccio a sapere che l'hash è lungo 60 caratteri quando l'impostazione predefinita cambia?