CI 묻고 답하기

제목 쿠키 질문이요~
글쓴이 앙마 작성시각 2013/05/23 10:23:43
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 18440   RSS
 if($login_chk == 'on'){
set_cookie('cook_user_id', $id, 356 * 24 * 60 * 60);
set_cookie('cook_user_pass', $pass, 356 * 24 * 60 * 60);
set_cookie('cook_save_id', 'on', 356 * 24 * 60 * 60);
set_cookie('cook_save_login', 'on', 356 * 24 * 60 * 60);
}else if($login_chk == '' && $id_chk == 'on'){
set_cookie('cook_user_id', $id, 356 * 24 * 60 * 60);
set_cookie('cook_save_id', 'on', 356 * 24 * 60 * 60);
delete_cookie('cook_user_pass');
delete_cookie('cook_save_login');
}else if($login_chk == '' && $id_chk == ''){
delete_cookie('cook_user_pass');
delete_cookie('cook_user_id');
delete_cookie('cook_save_login');
delete_cookie('cook_save_id');
}

로그인을 할 때 로그인 입력 폼에는 아이디/비밀번호/아이디저장/자동로그인   이렇게 네가지가 있습니다

물론 로그인 버튼과 회원가입 버튼도 있고요 그런 상황에서 정보를 입력한 다음에 아이디 저장을 한 다음 로그인을 했을 경우

위쪽

else if($login_chk == '' && $id_chk == 'on'){
set_cookie('cook_user_id', $id, 356 * 24 * 60 * 60);
set_cookie('cook_save_id', 'on', 356 * 24 * 60 * 60);
delete_cookie('cook_user_pass');
delete_cookie('cook_save_login');

이 부분에서 유저 아이디하고 아이디저장 체크박스를 쿠키에 저장합니다

문제는 뒤쪽에 있는 시간으로 해놓을 경우 1년동안 쿠키가 유지되어야 한다는 말인데...

하루 정도 지나면 지워지는 것 같더군요;;

조언좀 부탁드립니다.

지금은 웹으로 어플 같이 자동로그인 같은 것을 만들려고 하는데ㅠㅠ 혹시 다른 좋은 방법이 있으면 그것도좀..
 다음글 file헬퍼 - file삭제 에대한문의 (1)
 이전글 uri 라우터 시 질문 (4)

댓글

배강민 / 2013/05/23 10:30:15 / 추천 0
쿠키가 날라가는건 보여주신 상황만으로는 잘 모르겠고요..

자동로그인은

CI의 기본 세션(쿠키)를 이용하는 TapBBS의 경우

                    if($keep_login=='off'){

                        $this->session->sess_expire_on_close = TRUE;
                    }
                    $this->session->set_userdata(array('user_cookie' => $result->user_cookie));
 

위 처럼 자동로그인을 체크하고 넘어왔을때 sess_expire_on_close 를 TRUE 로 바꿔서

config.php 의 설정을 변경합니다. 기본은 다음과 같이 되어있습니다.
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 3600*48;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;

자동로그인이라면 48시간 자동 로그인을 유지하고요, 아니라면 브라우져 닫을때 쿠키가 날라가는 방식입니다.
앙마 / 2013/05/23 10:39:28 / 추천 0
백강민//

조언 감사합니다 

그런데 세션쿠키는 브라우져창이 닫히면 끝나는거 아닌가요??

만약 브라우져가 닫혀도 사라지지 않는다면 다시 켰을 경우 무엇으로 그 PC에서 접속했다는

것을 인식하는지도 좀^^;;

쿠키 관련 자료를 더 찾아봐야겠네요... 좋곳 알고 계시면 정보좀;; ㅎ

그리고 위의 자료에서요 $keep_login은 자동로그인이 체크되어 있지 않을 때를 뜻하는 건가요??
risa / 2013/05/23 10:39:29 / 추천 0
CI 쿠키가 믿음직 스럽지 못하다면 Jquery Cookie 쓰는 것도 한가지 방법. [간단 설치 간단 사용 눈에 익은 스크립트]

프레임워크에 쿠키 함수가  있는데도 따로 쓴적도 있었습니다.

CI 쿠키는 별도로 CI 관련된 인증작업이나 잠시 저장할 데이터를 저장 했다가  CI 종료시 날려버리고
JC 는 계속 저장 하고 말이죠. 


그런데 CI든 날코딩으로 하든 다른 라이브러리를 쓰든 결국 같은걸로 알고있습니다.

앙마 / 2013/05/23 10:44:35 / 추천 0
risa//

저도 처음에는 jquery로 했었는데- _-;; 시간 조절이 안되더군요;;

js받아서 사용도 해봤는데 에러만ㅠ_ㅠ 초보의 한탄입니다
risa / 2013/05/23 10:50:31 / 추천 0
쿠키 시간 조절이 안되고 CI에서도 날라가고 한다면 서버셋팅을 한번 의심 해봐야 하지 않을까요?

PHP 날코딩으로 쿠키 만들어 보시고 테스트 해보세요.

어차피 뭘 이용하든 쿠키를 만드는건 PHP에 정의된 함수를 사용 합니다.

phpschool 에 가서 쿠키 만 쳐도 한무더기 나옵니다.

혹은 CI 안쪽을 뜯어보세요.

자신이 찾는건 언젠가 다시 CI 안에서 발견 하게 된답니다 ( ..)
답 을 앞에 두고 멀리 돌고 돌아 찾아내 신나 하다 CI 안에서 발견 할때의 그 허망함이란...
앙마 / 2013/05/23 12:50:54 / 추천 0
 risa//

조언 감사합니다^^
배강민 / 2013/05/23 14:45:03 / 추천 0
CI에서 세션은 기본적으로 2가지를 제공합니다.

쿠키, DB

세션이라고 네이밍되어있지만, 일반적으로 생각하는 PHP native session 은 아니고요.

저 위의 config 부분에서 sess_expire_on_close 부분이 쿠키를 브라우저 닫을때 유지할것이냐 말것이냐입니다.

CI 1.7 대까지는 위 옵션이 없었습니다. 맞나...흠.. 즉, 기본적으로 설정된 시간만큼 자동로그인이었죠.

근래 추가된 옵션으로 국내정서에 맞는 자동로그인 on/off 를 쉽게 구현할 수 있게 된것이고요.

ID 저장과 같은 쿠키 액션은 실제 생성된 쿠키의 expire 를 한번 봐보셔도 좋을 것 같네요.