테스트 사이트 - 개발 중인 베타 버전입니다

중복 로그인 방지 - HOOK 방식

· 4개월 전 · 486 · 10

※ krfreedevlife 님의 글을 기반으로 HOOK 방식으로 재구성하였습니다.
https://hoai.tistory.com/entry/%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C-%EC%A4%91%EB%B3%B5%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EB%B0%A9%EC%A7%80

 

동일한 계정으로 다른 브라우저나 기기에서 로그인 시,

이전 로그인 세션은 페이지 이동하는 순간 자동 로그아웃됩니다.

 

아직 충분히 검증된 방식은 아니므로, 사용 중 문제가 발생할 수 있습니다.

관련 의견이나 문제는 댓글로 공유해주시면 개선에 참고하겠습니다.

 

* /extend/z_duplicate_login_prevent.php

(extend 폴더에 z_duplicate_login_prevent.php 파일 생성)

(파일명은 변경 가능하나 alert() 사용을 위해 z_ 접두어는 붙이는 것을 권장)

[code]

<?php
if (!defined('_GNUBOARD_')) exit;

 

// 중복 로그인 방지 Hook
// 1. 로그인 성공 후 랜덤값 저장
add_event('member_login_check', 'prevent_duplicate_login', 10, 3);
function prevent_duplicate_login($mb, $link, $is_social_login) {
    global $g5;

    if ($mb['mb_id']) {
        // 중복로그인 방지 검사값 생성 및 저장
        $dbl_login = rand(10000, 99999);

        sql_query("UPDATE {$g5['member_table']}
                             SET mb_1 = '{$dbl_login}'
                             WHERE mb_id = '{$mb['mb_id']}'");

        set_session('ss_mb_1_ss', $dbl_login);
    }
}

 

// 2. 매 페이지 로드 시 중복 로그인 체크
add_event('common_header', 'check_duplicate_login', 3, 0);
function check_duplicate_login() {
    global $member;

    // 로그인된 회원만 체크
    if ($member['mb_id']) {
        $ss_mb_1 = get_session('ss_mb_1_ss');

        // 세션값과 DB값이 다르면 중복 로그인으로 판단
        if ($ss_mb_1 != $member['mb_1']) {

            // 소셜 로그인 로그아웃 처리
            if (function_exists('social_provider_logout')) {
                social_provider_logout();
            }

            // 세션 완전 제거
            session_unset();
            session_destroy();

            // 중복 접속 알림 후 메인으로 이동
            alert('중복접속으로 인하여 로그아웃 되었습니다.', G5_URL);
        }
    }
}

[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 10개

4개월 전
감사합니다 ^^
4개월 전

감사합니다.

4개월 전

바로 테스트 환경이 못되 먼저 질문 드려 봅니다. 같은 공간내 있는 ip(와이파이)사용시 에도 중복 로그인이 불가 한가요? 

4개월 전

@좐슨앤존슨 IP 체크 방식이 아닌 세션 체크 방식이라.. 동일 IP 사용시에도 브라우저나 기기가 다르면 중복 로그인 불가입니다.

4개월 전

@마르스컴퍼니 네 감사합니다.^^

4개월 전

감사 합니다.

4개월 전

아이디어 좋네요. 추천합니다^^

4개월 전

감사합니다

감사합니다.

1개월 전
고맙습니다~

게시글 목록

번호 제목
22896
22895
22885
22875
22872
22862
22860
22855
22849
22846
22824
22812
22809
22801
22795
22786
22765
22756
22739
22735
22685
22639
22636
22607
22605
22603
22592
22583
22578
22577