先注册用户,然后自动登录

时间:2011-02-09 作者:Robin I Knight

我正在使用一个为我的目的而修改的插件。

我所追求的是在用户注册后自动登录并返回到当前页面。目前,它会向他们发送一封包含用户名和密码的电子邮件。然后他们必须使用这些详细信息登录。

4 个回复
SO网友:Bainternet

基本上,要登录用户,您可以使用:

            //Login the user
    $creds = array();
    $creds[\'user_login\'] = $login;
    $creds[\'user_password\'] = $password;
    if ( !empty( $remember ) ){ 
        $creds[\'remember\'] = true;
    }
    $user = wp_signon( $creds, true );
但只有当您拥有密码和登录名时,您才能创建自己的注册表并处理它,然后自己创建用户

//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 );
这里我们有登录名和密码,您可以让用户登录。

希望这有帮助

SO网友:Dougal Campbell

没有一个理想的地方可以参与注册过程。我认为在core中添加一个用户注册事件操作挂钩是很有必要的。但我想你也可以假装一下。用户成功注册后发生的最后一件事是创建一个名为“default\\u password\\u nag”的用户选项。我们可以创建一个操作来监视它,并在设置时设置用户。

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 );
}
未经测试,但理论上应该有效。

现在我们已经知道该怎么做了,我认为这是一个坏主意,从安全角度来看。人们可以创建垃圾邮件帐户,甚至不必麻烦地设置垃圾邮件投递箱。:)

SO网友:jsims281

我刚刚通过使用user_register hook 以及my函数中的以下代码。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\' );

SO网友:ashraf mohammed
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);
}
结束

相关推荐

WordPress循环中的非关闭PHP查询

我在WordPress中有以下查询来调用自定义post meta,一切正常,只有一个例外,无论哪个查询是第二个查询,都没有响应任何内容。很抱歉WordPress的帖子,但对于那些不熟悉\'get_post_meta($post->ID\' 正在检索第一个帖子的帖子ID,然后在第二个帖子中回显相同的帖子ID,我需要关闭第一个查询,但不知道如何关闭。 <h3 class=\"body_heading\"> <?php $soon_e