| 제목 | CI 2.1 환경에서 DB 세션의 user_data가 사라지는 원인을 모르겠습니다. | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | CI2MANIA | 작성시각 | 2019/08/10 03:33:41 | 
|  | |||
| 개발 환경 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를 보시면 기존 세션이외에 한개가 더 생성되는데 그게 비어 있어서 그렇습니다.
세션쿠키명을 _가 들어가지 않은 다른 것으로 바꿔보세요. 포럼 검색해보시면 몇가지 방밥이 나옵니다. 하나씩 시도해보세요.