CI 묻고 답하기

제목 session 질문입니다.
글쓴이 궁금해 작성시각 2013/09/12 15:03:20
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 15869   RSS
ci에 내장되어있는 기능중

세션을 디비에 저장하는 기능을 사용하고 있습니다.

페이지를 닫거나 로그아웃을 했을 경우 

DB에 저장된 세션이 삭제 되는건가요?

세션이 삭제됐었던 것 같은데 ... 

오늘 다시 보니 계속해서 쌓이고 있네요.. 
 다음글 hook를 사용하면 될까요? (5)
 이전글 페이지네이션 질문 있습니다. (2)

댓글

수야디벨 / 2013/09/12 15:38:05 / 추천 0
 config 폴더의 config.php에 

$config['sess_expire_on_close'] = FALSE;

라는 설정값이 있습니다.

이 값이 true면 창이 닫힐시에 모든 세션이 자동 삭제 됩니다.

그리고 로그아웃을 했다고 해서 저절로 세션이 삭제 되는 건 아닙니다.

뭐, 외부 로그인 라이브러리를 가져와서, 그 라이브러리에 로그아웃시 세션이 삭제되는 코드가 들어잇다면

이야기는 달라지지만, 보통은 직접 세션을 삭제해줘야 합니다.

세션 삭제에 대해서는 다음 메뉴얼을 참고해주세요 

http://codeigniter-kr.org/user_guide_2.1.0/libraries/sessions.html




궁금해 / 2013/09/12 16:06:11 / 추천 0
댓글 감사합니다.

일단 config에서 expire on close는 TRUE로 해놨습니다.
그리고 로그아웃이 세션 디스트로이하게 해놨습니다.

웹상에선 정상적으로 세션이 삭제됩니다.

헌데 DB의 세션 테이블의 데이터가 남아있는데 그게 정상인지 비정상인지 궁금합니다.
궁금해 / 2013/09/12 17:54:44 / 추천 0
세션에 데이터가 남는건 비정상 이네요.

 라이브러리에 session을 읽어보니 sess_destroy 할 경우
if ($this->sess_use_database === TRUE && isset($this->userdata['session_id']))
{
$this->CI->db->where('session_id', $this->userdata['session_id']);
$this->CI->db->delete($this->sess_table_name);
}
요렇게 되야 정상이네요. 
제건 왜 이걸 타지 않는건지..참..