2026, 새로운 도약을 시작합니다.

중복 로그인 방지 - HOOK 방식

· 6개월 전 · 555 · 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개

감사합니다 ^^

감사합니다.

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

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

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

감사 합니다.

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

감사합니다

고맙습니다~

댓글 작성

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

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 112
2740 4일 전 조회 104
2739 1주 전 조회 209
2738 1주 전 조회 217
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 281
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 267
2730 1개월 전 조회 226
2729 1개월 전 조회 356
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 330
2724 1개월 전 조회 360
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 211
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 336
2716 2개월 전 조회 202
2715 2개월 전 조회 312
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고