programing

jQuery 체크 워드프레스_logged_in cookie

goodjava 2023. 3. 26. 11:21

jQuery 체크 워드프레스_logged_in cookie

jquery를 사용하여 wordpress cookie wordpress_press_in을 체크하는 방법이 있습니까?

저는 cloudflare 풀캐시를 사용하고 있기 때문에 사용자가 로그인하고 있는지 확인할 수 있는 방법은 이 쿠키 이외에는 없습니다.jquery를 사용하여 읽으려고 했지만 보호되고 보이지 않는 것 같습니다.PHP를 통해서만 액세스 할 수 있습니다.

지금 바로 읽을 수 있는 방법은 다음과 같습니다.

$logged_in = 'no'; 
if (count($_COOKIE)) {
    foreach ($_COOKIE as $key => $val) {
        if (preg_match("/wordpress_logged_in/i", $key)) {
            $logged_in = 'yes';
        }       
    }
}

어쩌면 단순히 jquery로 확인할 수 있는 가능성이 있을지도 모릅니다만, 저는 방법을 찾지 못했습니다.

도와 줘서 고마워.

다음 이름의 워드프레스 쿠키에 액세스할 수 없습니다.wordpress_logged_in사용.js/jquery다음과 같이 플래그가 붙어 있습니다.

보안 쿠키는 HTTPS 프로토콜을 통해 암호화된 요청으로만 서버로 전송됩니다...사이트 간 스크립팅(XSS) 공격을 방지하기 위해 HttpOnly 쿠키는 JavaScript의 Document.cookie API에 액세스할 수 없으며 서버에만 전송됩니다.

그러나 3.0 워드프레스는 사용자가 로그인 할 때 wp-settings-{time}-[UID]라는 이름의 쿠키를 하나 더 추가합니다.

또한 WordPress는 몇 개의 wp-settings-{time}-[UID] 쿠키를 설정합니다.끝에 있는 번호는 사용자 데이터베이스 테이블의 개별 사용자 ID입니다.이것은 관리 인터페이스 및 메인사이트 인터페이스의 뷰를 커스터마이즈하기 위해서 사용됩니다.

그리고 이 쿠키는 다음 방법으로 얻을 수 있습니다.js/jquery쿠키에서 사용자 ID를 얻을 수도 있습니다.

다음은 사용자가 로그인한 경우 쿠키를 가져오고 확인하는 js 함수입니다.

function getLoggedInCookie() {
    var cookie = document.cookie.indexOf('wp-settings-time') !== -1;

    if(cookie){
        alert('Logged in');
    }else{
        alert('Not User');
    }
}
getLoggedInCookie();

jQuery 솔루션은 Wordpress 테마/플러그인에 Cookie 플러그인을 포함시켜 사용하려고 합니다(일부 수정이 필요할 수 있습니다).

주의:

제공된 코드는 다음과 같은 독립 WordPress 함수 및 엔드포인트를 사용하는 로그인 양식과 함께 작동합니다.http://{website-name}/wp-admin/또는http://{website-name}/wp-login.php. 서드파티 플러그인은 cookie를 설정할 수 없습니다.wp-settings-{time}-[UID].

사용자가 로그인했는지 여부만 알고 싶은 경우 본문 요소에 '로그인' 클래스가 있는지 확인할 수 있습니다.

jQuery( 'body' ).hasClass( 'logged-in' )

WordPress는 사용자가 로그인한 경우 이 클래스를 본문 요소에 추가합니다.

Ajax 요청을 생성하여 사용자가 로그인했는지 확인할 수 있습니다.

기능하고 있습니다.php:

function ajax_check_user_logged_in() {
    echo is_user_logged_in()?'yes':'no';
    die();
}
add_action('wp_ajax_is_user_logged_in', 'ajax_check_user_logged_in');
add_action('wp_ajax_nopriv_is_user_logged_in', 'ajax_check_user_logged_in');

function load_my_scripts()
{
    wp_localize_script('my-ajax-handle', 'the_ajax_script', array('ajaxurl' => admin_url('admin-ajax.php')));
}

add_action('wp_enqueue_scripts', 'load_my_scripts');

js:

var data = {
    action: 'is_user_logged_in'
};

jQuery.post(the_ajax_script.ajaxurl, data, function(response) {
    if(response == 'yes') {
        // user is logged in
    } else {
        // user is not logged in
    }
});

비슷한 토픽은 이쪽

이 솔루션이 효과적입니다.또는 로그인 액션에 액션을 추가하고 다음 명령을 사용하여 파일용 js var를 생성할 수 있습니다.wp_localize_script().

다른 답변에서도 언급했듯이wp_localize_script()편리한 기능입니다.특히 다음과 같은 것을 사용합니다.

wp_localize_script(
    'site-js',
    'siteVars',
    array(
        'ajaxurl' => admin_url( 'admin-ajax.php' ),
        'isMobile' => (wp_is_mobile() ? true : false),
        'isHome' => (is_home() || is_front_page() ? true : false),
        'isSingle' => (is_single() ? true : false),
        'isLogged' => (is_user_logged_in() ? true : false),
    )
);

다음 할 수 .siteVars.isLogged올바른 부울 값을 반환합니다.를 이이 your your your your place place 、 place place place place place place place place place place 。functions.php이 파일을 함수에 넣고 스크립트를 큐잉한 후 바로 실행하는 것이 좋습니다.

js-cookie와 같은 스크립트를 사용할 수 있습니다. WP를 통해 쿠키 데이터를 설정/읽기 위해 여러 번 사용하였습니다.하지만 첫 번째 방법은wp_localize_script()마마더더더신신신신을을요요요요요요요 。쿠키 데이터가 보호되면 JS 솔루션이 작동하지 않을 수 있습니다.PHP php php php php php php php php php php php php 。사용자 역할 및 사용자 정보를 가져오도록 확장할 수도 있습니다.

https://developer.wordpress.org/reference/functions/is_user_logged_in/

https://codex.wordpress.org/Function_Reference/wp_localize_script

에 액세스 할 수 있는 경우.HTACCESS 파일에 이 코드를 추가합니다.

Wordpress 기본 logged in cookie가 존재하는지, 존재하는지 여부를 확인하고 cookie "hello"를 설정합니다.

"wordpress_logged_in" cookie가 존재하지 않는 것을 검출하면 "hello" cookie가 삭제되거나 만료됩니다.

<If "%{HTTP_COOKIE} =~ /wordpress_logged_in/">
        Header add Set-Cookie "hello;secure;path=/"
</If>

<If "%{HTTP_COOKIE} !~ /wordpress_logged_in/">
       Header add Set-Cookie "hello;secure;Expires=Wed, 21 Oct 1963 07:28:00 GMT"
</If>

httpOnly는 "hello" cookie에 설정되어 있지 않기 때문에 javascript로 접근할 수 있습니다.

언급URL : https://stackoverflow.com/questions/48511579/jquery-check-wordpress-logged-in-cookie