it-swarm.com.de

Benutzerregistrierung gefolgt von automatischem Login

Ich verwende ein für meine Zwecke modifiziertes Plugin.

Ich möchte, dass der Benutzer sich registriert hat, um sich automatisch anzumelden und zur aktuellen Seite zurückzukehren. Momentan sendet es ihnen eine E-Mail mit ihrem Benutzernamen und Passwort. Sie müssen sich dann mit diesen Daten anmelden.

14
Robin I Knight

Grundsätzlich können Sie zum Anmelden eines Benutzers Folgendes verwenden:

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

dies ist jedoch nur möglich, wenn Sie das Kennwort und den Benutzernamen haben, sodass Sie Ihr eigenes Registrierungsformular erstellen und es verarbeiten und den Benutzer selbst erstellen können

//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 );

und hier haben wir sowohl Login als auch Passwort, so dass Sie den Benutzer anmelden können.

Hoffe das hilft

9
Bainternet

Es gibt keinen idealen Ort, um sich am Registrierungsprozess zu beteiligen. Ich denke, es gibt gute Gründe, dem Core einen Aktions-Hook für Benutzerregistrierungsereignisse hinzuzufügen. Aber ich denke, Sie könnten es in der Zwischenzeit vortäuschen. Eines der letzten Dinge, die passieren, wenn sich ein Benutzer erfolgreich registriert, ist die Erstellung einer Benutzeroption mit dem Namen 'default_password_nag'. Wir können eine Aktion erstellen, um darauf zu achten, und den Benutzer einrichten, wenn er eingerichtet ist.

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 );
}

Ungetestet, sollte aber theoretisch funktionieren.

Jetzt, da wir eine Idee haben, was zu tun ist, denke ich, dass dies aus Sicherheitsgründen eine schlechte Idee ist. Benutzer können Junk-Konten erstellen, ohne dass sie sich die Mühe machen müssen, eine Junk-E-Mail-Dropbox einzurichten. :)

4
Dougal Campbell

Ich habe es gerade geschafft, diese Funktionalität mit dem user_register hook und dem folgenden Code in meiner functions.php zum Laufen zu bringen:

// 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