การลงทะเบียนผู้ใช้ตามด้วยการล็อกอินอัตโนมัติ


15

ฉันใช้ปลั๊กอินที่ถูกดัดแปลงเพื่อจุดประสงค์ของฉัน

สิ่งที่ฉันเป็นหลังจากนั้นคือหลังจากที่ผู้ใช้ลงทะเบียนเพื่อให้พวกเขาเข้าสู่ระบบโดยอัตโนมัติและกลับไปที่หน้าปัจจุบัน ในขณะนี้จะส่งอีเมลพร้อมชื่อผู้ใช้และรหัสผ่านของพวกเขา พวกเขาจะต้องเข้าสู่ระบบโดยใช้รายละเอียดเหล่านั้น


คุณใช้แบบฟอร์มลงทะเบียนเริ่มต้นหรือแบบฟอร์มที่กำหนดเองหรือไม่?
Bainternet

แบบกำหนดเอง แต่ขึ้นอยู่กับการเปลี่ยนเส้นทางดังนั้นรหัสที่ออกแบบมาเพื่อทำงานกับระบบเริ่มต้นอาจทำงานได้ดีและหากไม่สามารถแก้ไขได้
Robin I Knight

ฉันคิดว่าฉันควรชี้ให้เห็นว่าการลงชื่อเข้าใช้โดยอัตโนมัติเมื่อผู้ใช้ลงทะเบียนหลีกเลี่ยงส่วนหนึ่งของความปลอดภัยในการเข้าสู่ระบบ ตามปกติผู้ใช้จะไม่สามารถเข้าสู่ระบบได้โดยไม่ต้องให้ที่อยู่อีเมลที่ถูกต้อง ผู้ใช้ต้องลงทะเบียนรับอีเมลจากนั้นลงชื่อเข้าใช้ หากคุณลบขั้นตอนอีเมลผู้ใช้ของคุณสามารถลงทะเบียนด้วยที่อยู่ปลอมเข้าสู่ระบบโดยอัตโนมัติและสามารถไปที่แบ็กเอนด์แสดงความคิดเห็นสิ่งที่สมาชิกเริ่มต้นของคุณสามารถทำได้ ใครจะได้ประโยชน์ ผู้ส่งอีเมลขยะสำหรับหนึ่ง แฮกเกอร์ก็ชอบที่จะแหย่หลุมในแบ็กเอนด์ของคุณโดยไม่ต้องให้ที่อยู่ที่สามารถเปิดเผยได้
s_ha_dum

บล็อกรายละเอียด: sforsuresh.in/auto-login-wordpress
Suresh Kamrushi

คำตอบ:


10

โดยทั่วไปเพื่อเข้าสู่ระบบผู้ใช้คุณสามารถใช้:

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

และที่นี่เรามีทั้งการเข้าสู่ระบบและรหัสผ่านเพื่อให้คุณสามารถเข้าสู่ระบบผู้ใช้

หวังว่านี่จะช่วยได้


2
ไม่มีตัวกรองการลงทะเบียนที่สามารถเชื่อมต่อได้หรือไม่
แซค

1
หากินฉันจะดูว่าฉันสามารถรวมเข้าด้วยกันได้ไหม ไม่มีทางง่ายกว่านั้น ฉันคิดว่า wordpress ไม่สนใจที่จะให้ get_the_password () สะดวกดีเพราะมันเป็นอีเมลที่ออกมา
Robin I Knight

5

ไม่มีสถานที่ที่เหมาะที่จะขอเข้าสู่กระบวนการลงทะเบียน ฉันคิดว่ามีกรณีที่ดีในการเพิ่มการกระทำของเหตุการณ์ลงทะเบียนผู้ใช้ลงในคอร์ แต่ฉันคิดว่าคุณอาจจะปลอมในเวลาเฉลี่ย หนึ่งในสิ่งสุดท้ายที่เกิดขึ้นเมื่อผู้ใช้ลงทะเบียนสำเร็จคือการสร้างตัวเลือกผู้ใช้ที่ชื่อว่า 'default_password_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 );
}

ในทางทฤษฎียังไม่ทดลอง แต่ควรใช้งานได้

ตอนนี้เรามีความคิดว่าจะทำอย่างไรฉันจะเข้าใจว่าฉันคิดว่านี่เป็นความคิดที่ไม่ดีฉลาดหลักแหลม ผู้ใช้สามารถสร้างบัญชีอีเมลขยะโดยไม่ต้องผ่านปัญหาในการตั้งค่าดรอปบ็อกซ์อีเมลขยะ :)


1
user_register เป็นสถานที่ที่ดีที่ฉันจะลองดู
jsims281

1

ฉันเพิ่งจะได้รับการทำงานที่ทำงานโดยใช้user_register hookและรหัสต่อไปนี้ใน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' );

ควรส่งอีเมลเพื่อยืนยันการลงทะเบียนหรือไม่ ฉันไม่ได้รับสิ่งนี้อีกแล้ว
codecowboy

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

1
โปรดให้คำอธิบายพร้อมกับรหัสของคุณ
s_ha_dum
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.