Je veux vérifier si l'utilisateur a un mot de passe particulier, je l'ai donc essayé avec wp_check_password
, mais le compte pour lequel il est vérifié est déconnecté et ne peut pas se reconnecter tant qu'il n'y a pas d'appel wp_check_password
dans le code.
En fouillant dans le code, j'ai découvert que le mot de passe était défini à l'aide du nouveau hachage. De plus, si j'utilise wp_check_password( 'hello', md5('hello'), 1 );
, il ne vérifie même pas ce qui se trouve à l'intérieur de la base de données et renvoie true. N'est-ce pas un bug?
Des idées, comment puis-je vérifier le mot de passe de l'utilisateur?
Votre exemple fonctionne correctement. Vous vérifiez si le mot de passe hello
correspond à hashed hello
- ce qui est naturellement le cas.
Je n'avais pas pensé à travers. Votre exemple provoque le problème suivant:
hello
correspond à md5 de hello
(au lieu du hachage du profil de l'utilisateur).hello
et en met l'utilisateur à jour, le verrouillant (son mot de passe est maintenant hello
au lieu de ce qu'il était auparavant).Voir la fonction wp_authenticate_username_password()
pour un exemple détaillé, mais l’idée de base est la suivante:
$userdata = get_user_by('login', $username);
$result = wp_check_password($password, $userdata->user_pass, $userdata->ID);
Vous pouvez récupérer leur mot de passe haché dans la base de données et le comparer à l'entrée que vous souhaitez vérifier à l'aide de wp_hash_password () .
Pour vérifier si le mot de passe de l'utilisateur actuel correspond à "hello", essayez ceci:
if ( $current_user->user_pass == wp_hash_password( 'hello' ) )