WordPress : WordPress – Effacer les champs de connexion sur des informations d’identification incorrectes

Publié par Jean-Michel le

J’ai trouvé cet extrait de code sur le Web à insérer dans mon function.phpfichier pour personnaliser le message d’erreur afin qu’il soit plus sécurisé :

// custom the login error message
function customize_login_errors(){
    return 'The login credentials are incorrect.';
}
add_filter( 'login_errors', 'customize_login_errors' );

Bien que j’ai trouvé une faille.

Si le nom d’utilisateur est incorrect, le champ de saisie du nom d’utilisateur est effacé avec le mot de passe. Parfait, juste ce que je veux. Cependant, si j’entre le nom d’utilisateur correctement, l’entrée du champ reste lors de la saisie d’un mot de passe invalide. Bien que ce soit plus sûr que le message d’erreur par défaut, il permet toujours aux invités indésirables de savoir s’ils ont deviné un nom d’utilisateur valide.

Comment puis-je aller plus loin et clear both the username/email and password fieldslors de la saisie d’informations d’identification invalides ?

Solution n°1 trouvée

J’injecterais l’extrait de code javascript suivant dans la page de connexion lorsque la connexion échoue !

Mettez ce javascript dans un fichier appelé, disons,custom_error_login.js

jQuery(document).ready(async function ($) {

  await new Promise(r => setTimeout(r, 200));

  $("input#user_pass").val("").blur();

  $("input#user_login").val("").focus();

});

Et puis mettez l’extrait suivant dans votre functions.phpenfant/thème actif et utilisez le crochet suivant pour l’injecter dans la page de connexion après l’échec de la connexion !!!

add_filter('login_errors', 'my_custom_login_failure');

function my_custom_login_failure()
{
    global $errors;

    $error_codes = $errors->get_error_codes();

    // Invalid username.
    if (in_array('invalid_username', $error_codes)) {
        $error = '<strong>Invalid credentials!!!</strong>';
    }

    // Incorrect password.
    if (in_array('incorrect_password', $error_codes)) {
        $error = '<strong>Invalid credentials!!!</strong>';
    }

    remove_action('login_footer', 'wp_shake_js', 12); // removing the shaking effect of the form, snippet could work without this line too!!!  

    wp_enqueue_script('jquery');

    wp_enqueue_script('my_custom_login_script', get_theme_file_uri('path/to/js_folder/custom_error_login.js'), 'JQuery', "1.0", TRUE);

    
    return $error;
}

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *