CI 세션 처리 문제
CodeIgniter는 세션을 PHP session을 사용하지 않고 자체적으로 쿠키를 구워서 사용하고 있는데,
자동로그인 같이 기존의 expire타임과 다르게 처리를 하려면 자체 라이브러리를 고치지 않으면 불가능 하다.
페이지를 읽을 때마다 매번 쿠키데이터를 검증하고/업데이트 할때 config.php안에 있는 sess_expiration 을 참조하기 때문에 처음에 expire 시간을 다르게 설정하더라도,
업데이트 할때 다시 config안에 데이터러 덮어쓰는 상황이 발생한다.
결국 libraries/session.php 파일을 조금 수정해서 해결.
set_userdata로 값을 넣을때 expire란 항목을 추가해서 넣고 이 값이 있으면 아래처럼 sess_update와 sess_read 부분에서 처리하도록 수정했다.
//sess_read
if ((($session[‘last_activity’] + $this->sess_expiration) < $this->now) && (!isset($session[‘expire’]) || $session[‘expire’] > 0 ))
//sess_update
if ((($this->userdata[‘last_activity’] + $this->sess_time_to_update) >= $this->now) ||
(isset($this->userdata[‘expire’]) && $this->userdata[‘expire’] == 0 ) )
