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

중복 로그인 방지 - HOOK 방식

· 4개월 전 · 481 · 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개월 전
고맙습니다~

게시글 목록

번호 제목
24149
24140
24133
24125
24119
24109
24105
24101
24093
24089
24077
24074
24071
24070
24067
24056
24050
24046
24043
24040
24037
24036
24035
24034
24021
24017
24005
24002
23990
23980