CI 묻고 답하기

제목 세션 sess_expire_on_close 같은 쿠키도 브라우저 종료시 삭제가 되는 기능이 있나요?
글쓴이 beop 작성시각 2016/06/01 13:01:29
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 26569   RSS

http://www.codeigniter-kr.org/bbs/view/lecture?idx=7072&page=1&view_category=&lists_style=

['sess_expire_on_close'] = false

브라우저 종료시 세션을 삭제할수 있게 설정 할수 있었던 것으로 기억합니다.

현재 CI 버전은 3.0.0 이라 confing에는 없어졌더군요.

궁금 한것은 CI 기능중 브라우저 종료시 저장된 쿠키를 삭제하는 기능이 있는지 궁금합니다...

 

감사합니다.

 

연달아 두번의 질문 죄송합니다.

 

 다음글 controller의 $data 변수 내용이 view에... (4)
 이전글 쿠키 사용시 prefix 접두어 사용시 오류. (2)

댓글

한대승(불의회상) / 2016/06/01 13:15:11 / 추천 0

3.0 버젼 부터서는 php 네이티브 세션이 기본 으로 되어 있어서 그럴 겁니다.

쿠키 삭제는 php 쿠키 함수를 사용하셔도 되고, CI에서 제공하는 쿠키 헬퍼를 사용하셔도 됩니다.

CI 쿠키 관련 정보는 아래 URL을 확인 하세요.

http://www.ciboard.co.kr/user_guide/kr/helpers/cookie_helper.html

beop / 2016/06/03 09:31:50 / 추천 0

@한대승

답변감사합니다^^. 저 쿠키헬퍼 메뉴얼을 읽어봤었는데 쿠키는 안되는거 같더군요. 직접 짜는수밖에요 ㅠ 답변감사합니다.

tuyitu719 / 2026/03/14 11:15:23 / 추천 0

CI 3.0에서는 예전의
$config['sess_expire_on_close']
항목이 config.php 기본 설정에서 빠진 것이 맞습니다. 다만 업그레이드 안내에서는 이 옵션이 하위 호환용으로만 남아 있고, 같은 효과는 $config['sess_expiration'] = 0 으로 처리하라고 되어 있습니다.

즉, CI 3에서 “브라우저 종료 시 세션 끊기”는 별도의 새 기능으로 쿠키를 직접 지우는 방식이 아니라, 만료시간이 0인 세션 쿠키를 발급해서 브라우저가 종료되면 그 쿠키를 더 이상 보존하지 않도록 하는 방식으로 이해하시면 됩니다. 포럼 답변에서도 브라우저 종료 자체는 서버가 감지할 수 없고, 쿠키 만료를 0으로 두어 브라우저 메모리에만 보관하게 만드는 방식이라고 설명합니다.

그래서 질문하신 “CI 기능 중 브라우저 종료 시 저장된 쿠키를 삭제하는 기능이 있느냐”에 대한 답은, 서버가 브라우저 종료 순간을 감지해서 삭제하는 기능은 없고, 대신 세션 쿠키 방식으로 브라우저 종료 후 재사용되지 않게 만드는 설정은 있다가 가장 정확합니다.

설정은 보통 이렇게 하시면 됩니다.


 
 
$config['sess_expiration'] = 0;
 

이렇게 두면 CI 3 문서 기준으로 세션은 브라우저가 닫힐 때까지 유지됩니다. 예전의 sess_expire_on_close를 굳이 다시 넣지 않아도 같은 효과를 기대할 수 있습니다.

다만 한 가지는 주의하셔야 합니다. 이 동작은 결국 브라우저 쪽 쿠키 처리 방식에 좌우됩니다. 브라우저의 “이전 세션 복원”, 종료 시 상태 보존, 특수한 탭 복구 기능 등이 있으면 사용자가 체감하기에 완전히 종료되지 않은 것처럼 보일 수 있습니다. 그래서 “브라우저 종료 즉시 서버에서 완전 삭제” 같은 개념으로 기대하시면 안 됩니다.

게시판 답변용으로는 이렇게 쓰시면 자연스럽습니다.


 
 
아닙니다. 연달아 질문 주셔도 괜찮습니다. :)

CI 3.0에서는 예전의
$config['sess_expire_on_close']
설정이 기본 config 에서 빠졌습니다.

업그레이드 문서 기준으로는
이 옵션은 하위호환용으로만 남아 있고,
동일한 효과는

$config['sess_expiration'] = 0;

으로 처리하라고 되어 있습니다.

즉, CI가 브라우저 종료 순간을 감지해서
서버에서 쿠키를 직접 삭제하는 기능이 있는 것은 아니고,

세션 쿠키를 브라우저 메모리에만 유지시켜서
브라우저를 닫으면 그 쿠키가 더 이상 유지되지 않도록 하는 방식입니다.

그래서 브라우저 종료 시 세션이 끊기게 하려면
CI 3에서는 보통 sess_expiration 을 0으로 설정하시면 됩니다.

다만 이 부분은 브라우저의 세션 복원 기능 등에 따라
체감이 다를 수 있으니,
“종료 즉시 서버에서 강제 삭제” 개념으로 보시면 안 됩니다.