질문
Q #10808
session 질문입니다.
궁금해
2013-09-12 15:03:20
ci에 내장되어있는 기능중
세션을 디비에 저장하는 기능을 사용하고 있습니다.
페이지를 닫거나 로그아웃을 했을 경우
DB에 저장된 세션이 삭제 되는건가요?
세션이 삭제됐었던 것 같은데 ...
오늘 다시 보니 계속해서 쌓이고 있네요..
답변
3
#1
수야디벨
2013-09-12 15:38:05
config 폴더의 config.php에
$config['sess_expire_on_close']
= FALSE;
라는 설정값이 있습니다.
이 값이 true면 창이 닫힐시에 모든 세션이 자동 삭제 됩니다.
그리고 로그아웃을 했다고 해서 저절로 세션이 삭제 되는 건 아닙니다.
뭐, 외부 로그인 라이브러리를 가져와서, 그 라이브러리에 로그아웃시 세션이 삭제되는 코드가 들어잇다면
이야기는 달라지지만, 보통은 직접 세션을 삭제해줘야 합니다.
세션 삭제에 대해서는 다음 메뉴얼을 참고해주세요
http://codeigniter-kr.org/user_guide_2.1.0/libraries/sessions.html
#2
궁금해
2013-09-12 16:06:11
댓글 감사합니다.
일단 config에서 expire on close는 TRUE로 해놨습니다.
그리고 로그아웃이 세션 디스트로이하게 해놨습니다.
웹상에선 정상적으로 세션이 삭제됩니다.
헌데 DB의 세션 테이블의 데이터가 남아있는데 그게 정상인지 비정상인지 궁금합니다.
#3
궁금해
2013-09-12 17:54:44
세션에 데이터가 남는건 비정상 이네요.
라이브러리에 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);
}
요렇게 되야 정상이네요.
제건 왜 이걸 타지 않는건지..참..
$config['sess_expire_on_close'] = FALSE;
라는 설정값이 있습니다.
이 값이 true면 창이 닫힐시에 모든 세션이 자동 삭제 됩니다.
그리고 로그아웃을 했다고 해서 저절로 세션이 삭제 되는 건 아닙니다.
뭐, 외부 로그인 라이브러리를 가져와서, 그 라이브러리에 로그아웃시 세션이 삭제되는 코드가 들어잇다면
이야기는 달라지지만, 보통은 직접 세션을 삭제해줘야 합니다.
세션 삭제에 대해서는 다음 메뉴얼을 참고해주세요
http://codeigniter-kr.org/user_guide_2.1.0/libraries/sessions.html