이런류의 사용방법 문의좀
본문
위 이미지 보면 우측에 알림 숨김 체크 누르면 왼쪽에 긴급알림 공지가 숨겨지고
메뉴1 에서 메뉴2 이동해도 저 체크가 풀리지가 않더라구요.
체크 해제하면 다시 공지내용 보이고 메뉴간에 이동해도 내용이 보이던데
혹시 이런방법은 어떻게 하는건가요?
해보고싶은데 뭘참고해야할지 모르겠네요
답변 2
쿠키와 세션을 활용한 안내 방법입니다.
그누보드 팝업창에서 오늘하루 보지않기 이 부분도 쿠키를 활용하여
사용자의 설정을 브라우저에 저장하는 방식인데요.
아래 예제는 세션을 활용한 예제입니다. 한번 참고해보세요~
프로세스 동작순서
1. A에서 최초 로그인시 해당 세션값 DB저장
3. B에서 두번째 로그인
4. A에서 다른 페이지 이동 or 새로고침 시 다른 기기에서 로그아웃됨을 알리고 로그아웃 프로세스 동작
DB 구조
id | 테이블 인덱스(AUTO_INCREMENT) |
type | 활성화타입(A:활성화, B:비활성화) |
sesstion | 세션값 |
mem_idx | 사용자 구분 인덱스 |
(로그인 시간 계산이 필요한 경우는 추가로 넣어주면 된다)
개발 프로세스
1. 로그인시 세션값 가져오기
$sesstion = session_id();
id | type | session | mem_idx |
1 | A | 가나다 | 99 |
↑ A에서 최초로그인한 데이터
2. 기존 DB에 있는 사용자세션 비활성화 시키기
UPDATE session_table SET type='B' WHERE mem_idx='$mem_idx'
id | type | session | mem_idx |
1 | B | 가나다 | 99 |
3. DB에 현재 사용자세션 저장
INSERT INTO session_table ('session', 'type', 'mem_idx') VALUES ('$sesstion', 'A', '$mem_idx')
id | type | session | mem_idx |
1 | B | 가나다 | 99 |
2 | A | 라마바 | 99 |
↑ 기존 세션 비활성화 처리 후 B에서 로그인한 데이터 삽입
4. 사이트 내 모든 페이지 헤더영역에서 DB에 있는 세션정보+활성화타입 비교 후 로그아웃 시켜주기
SELECT type FROM session_table WHERE mem_idx='$mem_idx' AND sesstion = '$session'
if(type == 'B')
{
alert('중복로그인이 감지되었습니다.');
// 로그아웃 동작 코드삽입
}
이렇게 작업이 끝나고 다시 A에서 로그인한다면 B사이트에서는 로그아웃되고 DB 데이터는 다음과 같다.
id | type | session | mem_idx |
1 | B | 가나다 | 99 |
2 | B | 라마바 | 99 |
3 | A | 가나다 | 99 |
DB에 기존정보를 삭제해도 되지만
혹시나 서비스중에 중복로그인 접속여부를 알고싶어하는 클라이언트가 발생할수도 있으니
일단 저장해놓기로 했다.
도움이 될만한 좌표들이니, 공부해 보세요.