programing

user_id만 사용하여 Wordpress에 로그인하는 방법

abcjava 2023. 3. 2. 21:54
반응형

user_id만 사용하여 Wordpress에 로그인하는 방법

Wordpress 사용자만 해당 wp 사용자로 기록할 수 있는 방법이 있습니까?아이디?

사용자에게 확인 메일을 보냅니다.웹사이트에 접속하기 위해 지정된 링크를 클릭하면 사용자가 로그인해야 하기 때문에 사용자가 로그인한 후 헤더 리다이렉트를 해야 합니다.

php에서 사용할 수 있는 wordpress에서 제공하는 php 함수가 필요합니다.실장 방법에 대해서도 상세하게 알려주시겠습니까?

사용자 자동 로그 기능(테스트되지 않음)은 다음과 같습니다.

function auto_login() {
    if (!is_user_logged_in()) {
        //determine WordPress user account to impersonate
        $user_login = 'guest';

       //get user's ID
        $user = get_userdatabylogin($user_login);
        $user_id = $user->ID;

        //login
        wp_set_current_user($user_id, $user_login);
        wp_set_auth_cookie($user_id);
        do_action('wp_login', $user_login);
    }
}

wp_login hook에서 2개의 파라미터를 전달해야 합니다.Wp codex 참조

wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user->user_login, $user );

전송한 모든 링크와 해당 임시 인증 코드를 저장하는 별도의 테이블을 만든 후 해당 임시 인증 코드와 이메일을 URL 매개 변수로 전달합니다.

사용자가 이메일을 클릭하자마자 리디렉션할 수 있도록 임시 인증 코드를 기반으로 사용자를 검증하는 코드를 작성합니다.

WordPress 플러그인의 temporary-login-without-password는 사용자 코멘트에 따라 고유한 해시/키를 구현합니다.

오픈 소스 코드는, https://plugins.trac.wordpress.org/browser/temporary-login-without-password/trunk/public/class-wp-temporary-login-without-password-public.php 를 참조해 주세요.

    public function init_wtlwp() {

          if ( ! empty( $_GET['wtlwp_token'] ) ) {

                    $wtlwp_token = sanitize_key( $_GET['wtlwp_token'] );  // Input var okay.
                    $users       = Wp_Temporary_Login_Without_Password_Common::get_valid_user_based_on_wtlwp_token( $wtlwp_token );
                    $temporary_user = '';
                        if ( ! empty( $users ) ) {
                            $temporary_user = $users[0];
                        }

                        if ( ! empty( $temporary_user ) ) {

                            $temporary_user_id = $temporary_user->ID;

그건 정말 나쁜 아이디어야.다음 사항을 고려하십시오.사용자 A 및 B에게 다음 링크가 포함된 이메일을 보냅니다.

http://wordpressblog.exp/fromemail?user_id=A;
http://wordpressblog.exp/fromemail?user_id=B;

사용자 B가 사용자 ID를 A의 user_id로 바꾸면 사용자 A의 계정에 액세스할 수 있습니다.이러한 방법으로 사용자를 로깅하기 위한 해시를 구성하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/10041583/how-to-log-a-user-in-to-wordpress-using-only-their-user-id

반응형