CI 묻고 답하기

제목 DB 자동삭제에 대한 조언 부탁드립니다.
글쓴이 예나아범 작성시각 2014/09/19 14:51:46
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14983   RSS
정말 CI라는 걸 접한지 이제 10일 정도 되네요 ㅠㅠ

로그인을 구현하면서 중복로그인 방지를 위해 현재 로그인되어 있는 아이디와 현재 세션ID값을 저장하는 userlog라는 테이블을 하나 만들었습니다.

작동 순서는

1) 최초 로그인 시 -> userlog에 아이디, 세션ID, 로그인시간이 저장
2) 다른 세션ID가 동일한 아이디로 접근 시 -> userlog의 아이디와 현재 입력 아이디를 비교 만약 userlog에 아이디가 있다면, userlog에 저장된 세션ID를 기준으로 세션DB에서 삭제, userlog에서 삭제 후 현재 세션ID값을 저장

이런식으로 해서 다른 PC나 다른 브라우저로 접근할 경우 기존 로그인된 것을 강제로 로그아웃시키려고 이렇게 했습니다.

여기서 하나 문제가 발생하는데.... user가 그냥 브라우저만 종료한 경우 해당 테이블의 데이터는 그대로 살아있게 됩니다. 그대로 살아있다가 사용자가 다시 로그인하면 세션ID만 바뀌겠죠....

그래서 방법을 좀 생각했는데...

1) 메인페이지가 열릴때마다 userlog에 등록된 세션ID를 불러옴. 세션ID값으로 세션DB의 last_activity 값을 가져온다.
2) 만약 해당 세션 ID가 존재하지 않는다면, 현재 데이터를 삭제.
3) 세션DB의 last_activity값이 일정시간을 넘은 경우, 현재 데이터를 삭제.

이런 식으로 구현을 해보려는데.... 이러면 계속 DB에 접속이 되는 경우가 발생할거 같아서.... 맞는 답인지 모르겠네요.

조언 좀 부탁드립니다.
 다음글 4장 게시판만들기 질문 (4)
 이전글 CSS 경로 설정 문제 질문드립니다. (3)

댓글

한대승(불의회상) / 2014/09/19 15:05:04 / 추천 0
음.. 저는 복잡하게 생각안하고 크론으로 하루 한번 돌리면서 특정기간 이외의 세션은 삭제하고 있습니다.
들국화 / 2014/09/19 15:16:53 / 추천 0
expire date를 두는 것도 방법 이구요. 그래서 정기적으로 삭제 하거나..
로그아웃 할때 한번씩 정리해도 됩니다.
CI_ORL / 2014/09/19 18:14:57 / 추천 0
session DB에 id 값을 가지고 있고,
로그인 마다 id 값을 검색 하면 되지 않나요? ㅎㅎ
이론 상으론...
회사에선 쓰고 있지만서도...
제가 만든 소스가 아니므로, 구현 불가 ㅎㅎ