CI 묻고 답하기

제목 IE 세션 오류 질문입니다.[자답+추가질문]
글쓴이 수야디벨 작성시각 2013/11/24 21:42:43
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 27199   RSS

안녕하세요 !

ie세션문제 ... 이거때문에 이틀간을 고민했는데 도저히 원인을 모르겠습니다 ㅠ

(http://www.codeigniter-kr.org/qna/view/9191/page/1/q/session_id 이 게시글의 문제와 똑같은거 같습니다.)

일단 증상은 이렇습니다 .

1. 홈페이지의 로그인 프로세스는 다음과 같습니다 .

* 홈페이지 로그인 버튼 클릭 -> 팝업창 오픈 (window.open) -> 아이디/패스워드 입력 -> 컨트롤에서 세션 저장후 ,

부모페이지 리로드 후 팝업창 종료 소스로 나타내보면 ..
 
(echo '<script>window.opener.location.href=window.opener.location.href</script>';  다음에 echo '<script>window.close();</script>';)


이렇게하면 , 세션이 팝업창에는 저장되어 있는데, 부모창에는 세션이 저장이 안되요 ;;

정말 한없이 테스트하고 원인을 찾아보려고 해도 도저히 안되는데

오늘 그 실마리를 잡았습니다 .



부모창 홈페이지에 print_r($this->session->all_userdata()); 로, 모든 세션을 찍어보고 세션의 추이를 살펴봤는데요 .

이상하게 , 크롬에서는 Array ( [session_id] => df49d69df51bb14a1a06ac94a477f0d3 값이 F5 새로고침을 눌러도 ,

항상 그 값이 일정하네요 .

그런데 ie에서는 f5를 누를때마다 이 Array ( [session_id] => df49d69df51bb14a1a06ac94a477f0d3 값이 달라집니다.

아무리 생각해봐도 원인은 F5누를때 Array ( [session_id] => df49d69df51bb14a1a06ac94a477f0d3) 값이 계속 바뀌는 거 때문에

정상적인 세션 처리가 안되는거 같아요 .

도대체 왜 이런 증상이 나오는걸까요?ㅠ



내용 요약 :

IE 에서는 F5를 누를때마다 Array ( [session_id] => df49d69df51bb14a1a06ac94a477f0d3)의 값이 계속 변경됩니다.

그래서 세션이 제대로 저장되지 않는거 같은데 도대체 왜 Array ( [session_id] => df49d69df51bb14a1a06ac94a477f0d3)이

왜 바뀌는지 모르겠습니다.


config.php  - 세션부분

$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'] = FALSE;
$config['sess_table_name']  = 'ci_sessions';
$config['sess_match_ip']  = FALSE;
$config['sess_match_useragent'] = FALSE;//TRUE
$config['sess_time_to_update'] = 300;




///// * 위 질문의 과정은 토요일 일요일 , 작업 후에 , 드디어 원인을 발견. 해결책에 대해 조언 받고자 올린글입니다. */

//* 위 원인을 발견후에 20 여분 후에 해답을 찾았는데, 과연 이게 올바른 해답인지 의심이 갑니다 */


위에처럼 질문 올린지 20여분만에 증상을 해결했습니다만,

아직도 제 머리속에서는 납득을 하지 못합니다 .

우선 납득하지 못하는 가장 큰 이유는 .. 

똑같은 소스를 서버만 다른 곳에 올리고 테스트를 하는데 ,

한 서버에서는 잘되는데 , 다른 서버에서는 안되기 때문입니다만 ..



우선 해결 방법은 .. 그 config의 세션설정 부분입니다.

$config['sess_cookie_name'] = 'ci_session';
$config['sess_table_name'] = 'ci_sessions';

에서 언더바( _ ) 를 제거했더니 정상적으로 됩니다 .

$config['sess_cookie_name'] = 'sssss;
$config['sess_table_name'] = 'sssss';

근데 더욱 황당한건 ,
$config['sess_cookie_name'] = 'sssss; 만 언더바를 제거하면 해결되지 않고,
반드시
$config['sess_table_name'] = 'sssss'; 까지 ..




$config['sess_cookie_name'] = 'sssss;
$config['sess_table_name'] = 'sssss';

이 두 옵션 모두 언더바를 제거해야만 해결이 된다는 겁니다;

그런데 의문점은 여기서 발생합니다.

전 코드이그나이터 교재처럼 , CI 세션 DB를 따로 사용하지는 않습니다.
(교재에 나와 있는 테이블에 저장되는 세션방식을 말하는거지요?)

그래서 $config['sess_table_name'] = 'sssss'; 이 옵션 자체가 의미가 없을터였습니다.

$config['sess_cookie_name'] = 'sssss; 이 옵션은 pc에저장되는 이름 값이기 때문에

_ 언더바가 문제가 되는구나.. 라고 생각해도 납득은 가지만요 ;

왜 $config['sess_cookie_name']  옵션이 아닌 , 두개를 다 바꿔야만 문제가 해결 되는걸까요?

그리고, 왜 똑같은 소스인데 다른 서버에서는 언더바가 있어도, IE에서 로그인이 잘되는걸까요 ?;

 다음글 업로드에서 파일명이 한글이면 안됩니다 ㅠ,ㅠ (2)
 이전글 CI를 IoC 방식으로 구현하려면 (3)

댓글

변종원(웅파) / 2013/11/25 08:10:47 / 추천 0
쿠키네임은 db에 저장하던 안하던 상관이 없습니다. 사용자pc에 저장되는 이름이구요. ^^ 세션 소스에서 쿠키네임과 테이블네임이 연관이 있나 보면 될것 같은데요?