web-dev-qa-db-fra.com

Enregistrement de l'utilisateur suivi d'une connexion automatique

J'utilise un plugin modifié pour mes besoins.

Ce que je veux, c'est après que l'utilisateur se soit enregistré pour le connecter automatiquement et le retourner à la page en cours. Pour le moment, il leur envoie un email avec leur nom d'utilisateur et leur mot de passe. Ils doivent ensuite se connecter avec ces informations.

14
Robin I Knight

Pour connecter un utilisateur, vous pouvez utiliser:

            //Login the user
    $creds = array();
    $creds['user_login'] = $login;
    $creds['user_password'] = $password;
    if ( !empty( $remember ) ){ 
        $creds['remember'] = true;
    }
    $user = wp_signon( $creds, true );

mais ce n’est que lorsque vous avez le mot de passe et la connexion afin que vous puissiez créer votre propre formulaire de registre et le traiter et créer l’utilisateur vous-même.

//Only after Everything has been validated, proceed with creating the user
        //Create the user
        $user_pass = wp_generate_password();
        $user = array(
            'user_login' => $username,
            'user_pass' => $user_pass,
            'first_name' => $firstname,
            'last_name' => $lastname,
            'user_email' => $email
        );
        $user_id = wp_insert_user( $user );

        /*Send e-mail to admin and new user - 
        You could create your own e-mail instead of using this function*/
        wp_new_user_notification( $user_id, $user_pass );

et ici nous avons à la fois le login et le mot de passe pour que vous puissiez vous connecter.

J'espère que cela t'aides

9
Bainternet

Il n'y a pas d'endroit idéal pour prendre part au processus d'inscription. Je pense qu’il est très judicieux d’ajouter un crochet d’action d’événement d’enregistrement d’utilisateur à son noyau. Mais je pense que vous pourrez peut-être faire semblant, en attendant. Une des dernières choses qui se produit lorsqu'un utilisateur s'enregistre avec succès est la création d'une option utilisateur nommée 'default_password_nag'. Nous pouvons créer une action pour surveiller cela et configurer l'utilisateur quand il est défini.

add_action('update_user_metadata', 'my_auto_login', 10, 4);

function my_auto_login( $metaid, $userid, $key, $value ) {
    // We only care about the password nag event. Ignore anything else.
    if ( 'default_password_nag' !== $key  && true !== $value) {
        return;
    }

    // Set the current user variables, and give him a cookie. 
    wp_set_current_user( $userid );
    wp_set_auth_cookie( $userid );
}

Non testé, mais devrait fonctionner, en théorie.

Maintenant que nous avons une idée de ce qu'il faut faire, je vais dire que c'est une mauvaise idée, du point de vue de la sécurité. Les gens peuvent créer des comptes indésirables sans même avoir à se préoccuper de la configuration d'une liste déroulante d'e-mails indésirables. :)

4
Dougal Campbell

J'ai juste réussi à faire fonctionner cette fonctionnalité en utilisant le hook user_register et le code suivant dans mon functions.php :

// auto log in a user who has just signed up       
function auto_login_new_user( $user_id ) {
  wp_set_auth_cookie( $user_id, false, is_ssl() );
}
add_action( 'user_register', 'auto_login_new_user' );
0
jsims281
function login_after_register($userlogin,$userpass){
    $credentials = array( 'user_login' =>  $userlogin, 'user_password' => $userpass, 'remember' => true );

    $secure_cookie = is_ssl();

    $secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, $credentials);
    add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);

    $user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
    wp_set_auth_cookie($user->ID, $credentials["remember"], $secure_cookie);
    do_action('wp_login', $user->user_login, $user);
}
0
ashraf mohammed