password_verify dans boucle While
Bonjour,
Par le code ci-dessous, je désire que la fonction parcourt un fichier texte contenant des password_hash, afin de vérifier si le mot de passe proposé par l'utilisateur est bien présent.
Curieusement, la fonction ne reconnaît le mot de passe que si ce dernier se trouve en dernière position dans la liste du fichier.
Si le mot de passe est "rasmuslerdorf", la fonction le reconnaîtra dans le hash $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a lorsque celui-ci est en dernière ligne. Sinon rien ...
Fichier texte contenant les hash (le mot de passe situé en fin de liste est reconnu) :
Citation:
$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
$2y$10$.02/L07wfH6XsyVngSQhZvNBwlwfJn27JLnn0ba9yLXtert5lW1tG
$2y$10$7UWbOWX10mo3cufvyuiQlmmmcxXyF7o12pm4UjulZAtrwA/y/5uE2
$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
Fichier texte contenant les hash (le mot de passe situé en milieu de liste n'est pas reconnu) :
Citation:
$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
$2y$10$.02/L07wfH6XsyVngSQhZvNBwlwfJn27JLnn0ba9yLXtert5lW1tG
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
$2y$10$7UWbOWX10mo3cufvyuiQlmmmcxXyF7o12pm4UjulZAtrwA/y/5uE2
$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
La fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
$ok = 0;
$mdp = "rasmuslerdorf";
$handle = fopen("fichier.txt", "r");
if ($handle)
{
while (!feof($handle))
{
$buffer = fgets($handle);
if (password_verify($mdp, $buffer)) {
echo "<br/>Mot de passe reconnu à la ligne : ".$i." ".$buffer;
$ok = 1;
break;
}
else {
echo "<br/>Mot de passe NON reconnu à la ligne : ".$i." ".$buffer;
}
}
fclose($handle);
}
if ($ok == 1) {
echo "Le mot de passe a bien été reconnu.";
}
else {
echo "Le mot de passe N'a PAS été reconnu.";
}
?> |
Je vous remercie de m'éclairer sur ce phénomène.