programing

wordpress wp_signon 함수가 작동하지 않습니다.

css3 2023. 10. 2. 15:20

wordpress wp_signon 함수가 작동하지 않습니다.

사용자 로그인을 위해 wp_signon() 기능을 사용하고 있습니다.이렇게 하고 있습니다.

$creds = array();

$creds['user_login'] = $username;

$creds['user_password'] = $password;

$creds['remember'] = true;

$user = wp_signon( $creds, false );

로그인 후 홈페이지로 사용자를 보내고 싶습니다.

그러나 다음과 같은 오류가 발생합니다.

경고: 헤더 정보 - 에 의해 이미 전송된 헤더 정보(E:\xampp\htdocs\wpmoodle\wp-content\themes\twenten\header에서 출력이 시작됨)를 수정할 수 없습니다.php:12)의 E:\xampp\htdocs\wpmoodle\wp-incluggable.690번 전화로 php.

미리 감사드립니다.

wp_signon()브라우저로 실제 페이지를 보내기 전에 실행해야 합니다.

그 이유는 어떤 부분이wp_signon()인증 쿠키를 설정하는 것입니다.이것은 "Set-Cookie:..." 헤더를 출력함으로써 실행됩니다. -- 의 690 행을 보면,pluggable.php, 당신의 오류가 어디에서 온 것인지, 당신은 그 선이 쿠키를 설정한다는 것을 알게 될 것입니다.

그래서.wp_signon()머리글을 출력합니다. 머리글은 항상 내용보다 먼저 출력되어야 하기 때문에 이미 어떤 내용도 이미 전송할 수 없습니다.

그러나 오류는 당신이 이미 일부 출력을 보냈다는 것을 나타냅니다. -- 의 12번째 줄에.header.php, 아마도 표준 WordPress 테마의 첫번째 HTML 중 일부일 것입니다.

이것은 기본적으로 당신이 당신의 몸을 움직일 필요가 있다는 것을 나타냅니다.wp_signon()페이지 내용이 전송되기 전에 헤더를 출력할 수 있도록 워드프레스 처리 초기에 호출합니다.

필요한 사람이 있다면 다음은 제 해결책입니다.

function custom_login() {
    if (isset($_POST['submit'])) {
        $login_data = array();
        $login_data['user_login'] = sanitize_user($_POST['username']);
        $login_data['user_password'] = esc_attr($_POST['password']);

        $user = wp_signon( $login_data, false );

        if ( is_wp_error($user) ) {
            echo $user->get_error_message();
        } else {    
            wp_clear_auth_cookie();
            do_action('wp_login', $user->ID);
            wp_set_current_user($user->ID);
            wp_set_auth_cookie($user->ID, true);
            $redirect_to = $_SERVER['REQUEST_URI'];
            wp_safe_redirect($redirect_to);
            exit;
        }
    }
}

add_action( 'after_setup_theme', 'custom_login' );

언급URL : https://stackoverflow.com/questions/5335833/wordpress-wp-signon-function-not-working