저의 config입니다.
$config['sess_driver'] = 'database'; $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE;
db는 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`)
);
그대로 사용하였습니다.
로그인 할 때 성공하면 세션 정보를 아래와 같이 저장하게 하였는데요.
$sessionData = array(
'nickname' => $nickname,
'email' => $email,
'logged_in' => TRUE
);
$this->session->set_userdata($sessionData);
redirect('/');
redirect해서 var_dump($this->session->all_userdata());을 하면 세션 정보가 불러와집니다..
그런데 이게 db에는 저장이 안됩니다.
리다이렉트 성공한 후, phpmyadmin으로 테이블을 다시 조회해봐도 결과값이 없습니다.
다른 db와의 연결은 정상적으로 작동이 되는데, 이 ci_sessions의 테이블에는 적용이 안됩니다.
config.php에서만 설정하면 다 되는거 같은데 안되네요. 답변 기다리겠습니다.
리다이렉트후에 값이 있다는 것은 세션이 생성되었다는 건데요?
값이 아예 없는건가요? 아니면 중복 생성되서 해당 값이 없는 것처럼 보이는 건가요?
한대승님, 변종원님 댓글 감사합니다. 변종원님 말씀대로 테이블 명 언더바를 제거하고 config의 sess_save_path도 같이 변경해서 테스트 해보았지만, 동일했습니다. 의심되는 걸 두서없이 적어야할거 같습니다. 제가 초보라 어디서 문제인지 잘 모르겠습니다..
일단 저는 autoload로 database와 session을 사용하고 있습니다.
그리고 controller에서는 글에서 설명한 것과 같이 db와의 로직을 처리. view에서는 세션에 관련된 정보들만 처리하고 있습니다.
이런식으로요.
$this->session->all_userdata() 했을 때, 뷰에 보여지는 정보입니다.
array (size=3) 'nickname' => string 'admin' (length=5) 'email' => string 'admin@admin.com' (length=15) 'logged_in' => boolean true'
var_dump(session_id)를 뷰에 보여주었을 때 나오는 정보입니다. (이 값은 페이지가 변해도 변하지가 않더군요 세션 값을 줬든, 주지 않았든, 똑같습니다.)
E:\Apache24\htdocs\bookshare2\application\views\templates\header.php:19:string 'p7cauqffbglk0ichusckrhg89v' (length=26)
이렇게 정보가 불러와지지만, ci_sessions 테이블에는 아무런 정보가 입력되지 않습니다.
view는 header, main, footer를 쪼개서 불러와 씁니다. $this->load->view('header'), $this->load->view('login')...
그런데 live server에서는
array(1) { ["__ci_last_regenerate"]=> int(1593491061) } string(32) "k2j2o80narh8rjrd1004fqcvbs679n44"
이런식으로 view에 표시가 되더군요.
질문드립니다. 어떤 경우에 세션 값이 중복으로 생성이 되고, 그것을 해결하려면 어떻게 해야될까요? 로컬에서도 memcached를 사용해야되는 걸까요?
@쌀먹는펭귄 수고하셨습니다.
코드이그나이터 이전 버전이 php 버전과 관련 이슈가 좀 있는것 같구요.
좋은 정보 감사드립니다.