📖
그누보드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. 기존 로그인 브라우저는 자동 로그아웃 처리됨
$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. 기존 로그인 브라우저는 자동 로그아웃 처리됨
댓글목록
등록된 댓글이 없습니다.
![]() ![]() |