CI 묻고 답하기

제목 CI 2.1 환경에서 DB 세션의 user_data가 사라지는 원인을 모르겠습니다.
카테고리 CI 2, 3
글쓴이 CI2MANIA 작성시각 2019/08/10 03:33:41
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 12392   RSS

개발 환경

PHP 5.6 / CI 2.1.0 ( 아직도 구버전을 .. ㅠㅠ )

 

현재 상황

쿠키가 초기화/만료 되지 않고, 로그아웃 버튼을 누르지 않는다면

계속해서 로그인이 유지되는 페이지를 구현하려고 합니다.

 

헌데, 만료시간을 넉넉하게 주었음에도 불구하고

페이지 이동시 간헐적으로 로그인이 풀리고 있습니다.

( 짧게는 수 분 ~ 길게는 수 시간 )

 

원인을 찾아보려고 구글링도 열심히 해보고

CI System - Session 파일 등도 천천히 읽어봤지만

도저히 이유를 모르겠습니다 ...

 

시도한 내용

1) config.php 값을 변경했습니다.

       - sess_cookie_name = 'sess_cookie'

       - sess_expiration = 86400 * 30

       - sess_expire_on_close = FALSE

       - sess_encrypt_cookie = FALSE

       - sess_use_database = TRUE

       - sess_match_ip = FALSE

       - sess_match_useragent = FALSE

       - sess_time_to_update = 86400 * 30

 

       - cookie_prefix = 'sitename_'

       - cookie_diomain = '.site-domain.com'

       - cookie_path = '/'

       - cookie_secure = FALSE

 

2) 로그인 시 10분 주기로 AJAX 콜이 발생하기 때문에

    AJAX 콜이 발생 됐을 때는 sess_update 함수를 실행하지 않게 했습니다.

       if( ! $CI->input->is_ajax_request())

       {

              parent::sess_update();

       }

 

3) php.ini 설정을 바꾸었습니다.

       - session.cookie_lifetime = 86400

       - session.gc_probability = 0

       - session.gc_divisor = 1000

       - session.gc_maxlifetime = 86400

       - session.cache_expire = 1440

 

4) /system/libraries/Session.php 에서 로그를 찍어보았습니다.

       - 쿠키에 있는 session_id 값으로 DB 세션이 조회는 되었습니다.

       - 허나, $row->user_data는 비어있었습니다 ...

 

5) 글 작성 후 ci_sessions 테이블을 모니터링 하고 있었는데

    기존 session_id 값이 삭제되고

     user_data 항목이 빈 채로 새로운 session_id가 생겨난 것을 확인했습니다 ...

 

 

읽어 주셔서 감사합니다 (__)

태그 ci2,dbsession,expiration
 다음글 captcha 이미지를 음성으로 듣기 (1)
 이전글 CKEDitor로 업로드한 이미지를 불러오질 못합니다. (6)

댓글

변종원(웅파) / 2019/08/12 11:18:24 / 추천 0

해당 상황이 나타날때 db를 보시면 기존 세션이외에 한개가 더 생성되는데 그게 비어 있어서 그렇습니다.

세션쿠키명을 _가 들어가지 않은 다른 것으로 바꿔보세요. 포럼 검색해보시면 몇가지 방밥이 나옵니다. 하나씩 시도해보세요.