it 언어 노트/ci3

ci3 세션 디비에 저장하기

윤비버 2024. 8. 22. 16:21
728x90
반응형

안녕하세요. 비버팩토리입니다.

세션을 디비에 저장하는 방법에 대해서 설명 합니다.

 

https://ciboard.co.kr/user_guide/kr/libraries/sessions.html#session-drivers

 

Session Library ‐ 코드이그나이터 3.0 한글매뉴얼

The requested session data item, or NULL if it doesn’t exist

ciboard.co.kr

 

여기 참고하면 됩니다.

 

그리고 덧붙어서 설명하자면 아래 드라이버와 save_path를 ci_session 으로 수정하면됩니다.

씨아이 보드를 사용한다면 아래 처럼 그대로 따라하면됩니다.

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'cb_session';
$config['sess_save_path'] = 'cb_session';

 

 

 

혹시나 기본적으로 파일경로로 수정한다면 아래 처럼 하면됩니다.

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_save_path'] =  FCPATH.'upload/session/';

 

ci3에서는 경로를 좀 다르게 변경하고 싶다면 uploads/session/ 이렇게 변경해도 됩니다.

 

아래 경로 또한 퍼미션을 지정합니다.

mkdir /<path to your application directory>/sessions/
chmod 0700 /<path to your application directory>/sessions/
chown www-data /<path to your application directory>/sessions/

 

 

우선 경로가 잘 안잡히면 FCPATH 부터 디버깅해서 경로를 확인합니다.

$relative_path = str_replace('public/', '', FCPATH);

이 변수를 이용해서 경로를 잡아주면됩니다. 

 

$config['sess_save_path'] =  $relative_path.'upload/session/';

 

경로는 절대경로로 잡아줘야됩니다. 예시) /home/ciboard/..... 이렇게 전체적인 경로를 잡아주면 정상적으로 작동됩니다. 

 

 

mysql 쿼리는 이렇습니다.

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);

// When sess_match_ip = TRUE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id, ip_address);

// When sess_match_ip = FALSE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id);

// To drop a previously created primary key (use when changing the setting)
ALTER TABLE ci_sessions DROP PRIMARY KEY;

 

여기서 아이피랑 매칭한다면 ip_address 까지 프라이머리 키를 설정합니다.

안한다면 id만  프라이머리 키 설정합니다.

 

 

만약에도 풀리지 않는다면 댓글 남겨주세요.

728x90
반응형