CI 묻고 답하기

제목 system/libraries 에 sess_expire_on_close설정관련 질문입니다~
글쓴이 babyvocie 작성시각 2016/07/08 13:28:59
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 15111   RSS

안녕하세요. 초보질문하나 드립니다.

 

사용자가 정상적인 로그아웃을 거치지 않고 브라우저를 종료했을때 DB에 히스토리를 남기려 합니다.

config.php 파일에 sess_expire_on_close = true로 셋팅했고 세션파기되는것도 확인했습니다.

session라이브러리에 해당 내용을 찾아보고 확장을 통해서 구현해 보려 하는데 가능한건지 모르겠습니다..

sess_destroy 함수안에서 테스트를 해보았는데 정상적인 로그아웃을 거쳤을때만 적용이 되더라구요..

session라이브러리에서 sess_expire_on_close관련 내용을 보면

쿠키를 생성하는 부분에서 sess_expire_on_close를 확인 하는거 같은데요..

정확히 어떤부분에서 브라우저 강제종료시 세션이 파기되는건지 잘 모르겠습니다.. 

제가 터무니 없는 질문글을 올리는건지 모르겠지만..조언부탁드리겠습니다~

 

감사합니다.

 다음글 namespace 사용이 불가능한가요? (3)
 이전글 redirect 질문드립니다. (3)

댓글

kaido / 2016/07/08 13:40:43 / 추천 0

기본적으로 로그아웃을 거치지 않은 로그아웃 체크 방법은 없습니다. [웹상에서는]

제가 13년 전에도 찾아 봤었고, 지금까지도 해법을 본적이 없습니다.

만일 시간 오버에 의한 로그아웃을 기록 하시겠다면, 별도로 세션이 죽었는지 살았는지 체크하는 프로세스가 돌아야 합니다.

다만 이게 부하가 장난 아닐거 같네요.

 

더불어서 좀비세션이라는 것이 있는데, 크롬이 세션 유지를 위해 사용합니다.

PC의 전원을 끄고 다시 들어와도 세션 복원 버튼으로 복원 되는것이 이것 때문입니다.

세션의 비정상[로그아웃을 거치지 않은] 종료의 체크는 사실상 불가능 합니다.

kaido / 2016/07/08 13:47:44 / 추천 0

@babyvocie

우선 웹의 기본 생태계를 생각해 보세요.

웹사이트 접근(호출) 하지도 않았는데, 세션을 체크 하나요?

즉 일정 시간마다 생성된 세션들의 전체 내용을 파악해야 합니다.

 

요약하면 ci db 세션을 사용 할 경우 db에 유지 시간도 기록 됩니다.

일정 시간마다 현재 사용된 모든 데이터를 전부 비교해서 히스토리에 저장 하는 크론을 돌리시면 됩니다.

 

babyvocie / 2016/07/08 13:50:13 / 추천 0

@kaio 님의 댓글이 수정된걸 보고 제 댓글을 지웠는데 그새 또 답변 주셨네요..^^; 

감사합니다~