중복 로그인 방지 - HOOK 방식
※ 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년 전 | 4405 | ||
| 2664 |
선택과집중
|
4개월 전 | 573 | |
| 2663 |
|
4개월 전 | 622 | |
| 2662 |
|
4개월 전 | 575 | |
| 2661 |
선택과집중
|
4개월 전 | 508 | |
| 2660 | 4개월 전 | 588 | ||
| 2659 |
Modify
|
4개월 전 | 654 | |
| 2658 |
선택과집중
|
4개월 전 | 415 | |
| 2657 | 4개월 전 | 452 | ||
| 2656 |
|
4개월 전 | 964 | |
| 2655 |
선택과집중
|
4개월 전 | 549 | |
| 2654 | 5개월 전 | 404 | ||
| 2653 |
선택과집중
|
5개월 전 | 585 | |
| 2652 | 5개월 전 | 394 | ||
| 2651 | 5개월 전 | 446 | ||
| 2650 |
선택과집중
|
5개월 전 | 327 | |
| 2649 |
선택과집중
|
5개월 전 | 423 | |
| 2648 | 5개월 전 | 441 | ||
| 2647 |
welcome
|
5개월 전 | 545 | |
| 2646 |
디지털홍익인간
|
5개월 전 | 453 | |
| 2645 | 5개월 전 | 467 | ||
| 2644 |
선택과집중
|
5개월 전 | 514 | |
| 2643 | 5개월 전 | 457 | ||
| 2642 | 5개월 전 | 372 | ||
| 2641 | 5개월 전 | 359 | ||
| 2640 | 5개월 전 | 394 | ||
| 2639 | 5개월 전 | 1359 | ||
| 2638 |
|
5개월 전 | 513 | |
| 2637 |
세르반데스
|
5개월 전 | 400 | |
| 2636 |
선택과집중
|
6개월 전 | 569 | |
| 2635 |
선택과집중
|
6개월 전 | 683 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기