CI 묻고 답하기

제목 세션관련 질문입니다.
글쓴이 codeignite 작성시각 2011/11/08 18:00:58
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 20982   RSS
안녕하세요~~

코드이그나이터 처음 다뤄보는 초보자입니다

아래와 같이 로그인화면에서 로그인 성공했을 경우 
몇가지 정보를 세션에 저장하고...

login_form.php

// validation check
if ($this->form_validation->run() == TRUE) {
//login check
if ($this->_db_check($username, $password)) {
//login OK
$this->session->sess_destroy();
$this->session->sess_create();
$this->session->set_userdata(array('is_login' => TRUE));
$this->session->set_userdata(array('username' => $username));
redirect('admin');
}
else {
$this->session->set_flashdata('message', 'Incorrect id/password.');
redirect('user/auth/login');
}
}


어드민 페이지에서 아래와 같은 체크를 하여 로그인 인증을 하고 있습니다.

admin.php

if($this->session->userdata('is_login') != TRUE) {
  // 로그인페이지로 이동
  redirect('login_form' )
}
else {
  echo "Login ok";
}


현재 문제점은 로그인 성공했을경우   "Login ok" 메세지가  표시되는 경우는 
파이어폭스 브라우저로 실행했을 경우이고
익스플로러나 크롬에서는 제대로 동작하지 않습니다.
DB테이블(ci_sessions)을 확인하면 
파이어폭스에서는 새로고침하면 session_id가 추가로 생성안되고 유지되는데
크롬이나 익스에서는 화면을 새로고침하면 session_id가 계속 새로 생성됩니다.

서버설정이나 코드이그나이터의 환경설정 등의 문제가 있는 것일까요?
조언 부탁드립니다.

참고로 현재 config.php의 세션관련 환경입니다.(세션을 DB로 운영하고 있습니다.)
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
 
 다음글 jquery 유효성검사 문의좀드립니다. (3)
 이전글 컨트롤러단에서 config.php 값 조작? (2)

댓글

변종원(웅파) / 2011/11/08 18:17:33 / 추천 0
일단 $config['sess_match_useragent'] 을 false로 하고 테스트 해보세요.
useragent 비교하는 것은 제대로 작동하지 않는 것 같더군요.
codeignite / 2011/11/09 09:20:56 / 추천 0
웅파님 답변 감사합니다.
$config['sess_match_useragent'] 을 false로 바꿔보았지만..
파이어폭스만 세션이 유지가 되네요...
yishero / 2011/11/23 18:26:58 / 추천 0
저도 같은 고민을 안고 있습니다. 어서 해결이 되어야 할텐데요.