📖
그누보드5 중복로그인(동시접속) 방지 코드(IP관계없이 ID 한개만 접속)

페이지 정보

본문

아래 소스를 skin/member/login_check.skin.php 에 추가[code]<?php
$mb_id = $_POST['mb_id'];
$mb = get_member($mb_id);

$session_dir = session_save_path();  // PHP 실제 세션 저장 경로
$d = dir($session_dir);
$dup_killed = false; // 중복 로그인 세션 제거 여부

while (false !== ($entry = $d->read())) {
    if (substr($entry, 0, 1) == '.' || $entry == 'index.php') continue;

    $file = $session_dir . '/' . $entry;
    if (!is_file($file)) continue;

    $temp = file_get_contents($file);
    if (!$temp) continue;

    // PHP 직렬화 세션 내 아이디 확인 (문자열/배열 모두 대응)
    if (
        preg_match('`ss_mb_id\|s:\d+:\"' . preg_quote($mb['mb_id'], '`') . '\";`', $temp) ||
        preg_match('`ss_mb_id\|a:\d+:\{.*\"' . preg_quote($mb['mb_id'], '`') . '\".*\}`s', $temp)
    ) {
        unlink($file);      // 기존 로그인 세션 삭제
        $dup_killed = true;  // 플래그 기록
    }
}

if ($dup_killed) {
    echo "<script>
        alert('회원님의 아이디 {$mb['mb_id']} 는 기존 접속이 종료되고 새로운 접속으로 로그인 되었습니다.');
    </script>";
}
?>[/code]📊 동작 시나리오
1. 회원이 로그인 중임 → 세션 존재
2. 같은 아이디로 다른 브라우저에서 로그인 → 기존 세션 파일 삭제됨
3. 새 로그인 성공 + 안내 알림창 표시
4. 기존 로그인 브라우저는 자동 로그아웃 처리됨

댓글목록

등록된 댓글이 없습니다.

🔍 검색

회사소개 개인정보처리방침 서비스이용약관
Copyright © rainbowgarden.shop All rights reserved.