CI 묻고 답하기

제목 CI DB session 사용 중인데요. 이상 현상.
글쓴이 이멀렉 작성시각 2009/11/04 00:56:52
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 41724   RSS
이전엔 그냥 세션 쓰다가, 보안도 좋다고 해서 최근에 db 세션을 사용하기 시작했는데요.
특정 환경에서 로그인 하지도 않았는데, 리프레쉬만 해도 세션 ID가 매번 달라집니다.

그리고 이 때문인지 로그인이 않됩니다. 로그인 당시의 id가 아닌 다른 id로 바뀌어 버리기 때문이겠죠.
그래서 F5를 누를 때 마다 DB에 매번 다른 세션id의 레코드가 증식합니다.ㅋ


테스트 한 환경은 두군데 입니다.

1. Windows APM
- http://localhost 접속 시 문제 없음
- http://도메인.org 접속(리눅스로..). 세션id가 매번 새로 발급됨.

2. Ubuntu
- http://localhost 접속 과, http://도메인.org 접속 시 세션id 유지하고 문제 없음.




같은 소스 코드인데 왜 환경에 따라 다른지...
어느 쪽을 봐야할지 갈피를 못 잡고 있습니다요.


##config.php 세션 부분##
$config['sess_cookie_name']		= 'ks_session';
$config['sess_expiration']		= 7200;
$config['sess_encrypt_cookie']	= FALSE;
$config['sess_use_database']	= TRUE;
$config['sess_table_name']		= 'dbsessions';
$config['sess_match_ip']		= FALSE;
$config['sess_match_useragent']	= TRUE;
$config['sess_time_to_update'] 	= 300;
 다음글 tank_auth에서 activated?? (3)
 이전글 아직도 개념정리가 잘 안되는 초보질문(다중게시판) (3)

댓글

변종원(웅파) / 2009/11/04 11:29:07 / 추천 0
Window APM이라면 권한 문제일 수 있습니다. 쿠키 생성 디렉토리의 권한을 보시고
쓰시는 브라우저의 임시인터넷파일(캐시파일)도 삭제하고 접속해보세요.
ci세상 / 2009/11/04 15:16:09 / 추천 0
php.ini에서 session.auto_start = 1 로 바꾸고 해보세요 ..
이멀렉 / 2009/11/04 20:59:00 / 추천 0

웅파님, ci세상님 감사합니다.
php설정을 바꿨더니 세션 아이디가 매번 새로 발급되는 문제가 해결된 것 같아요.
(그런데 사실 다시 session.auto_start = 0 으로 해도 정상인거;;;;)
ci세상님의 블로그에서 아래와 같은 내용을 봤는데요. 이게 도대체 왜 생기는 문제인거죠?
ci세션에 문제가 좀 있나요?

-------------------------------------------------------
codeigniter에서는 아래 php.ini 설정에서 세션 오토스타트를 활성화 시켜두는것이 좋은데

이렇게 켜두면 다른 시스템에 영향을 주기 때문에 계정별로 필요할때 설정을 하는것이 좋을것 같다. ~~

 

php.ini에서

 

; Initialize session on request startup.
session.auto_start = 1

 

로 해두고 일반 시스템을 작동시켰을때 ~~ 세션 오류 부분

 

Notice: A session had already been started - ignoring session_start()

ci세상 / 2009/11/05 10:40:40 / 추천 0

MS의 p3p정책에 일부 영향을 받는것 같습니다. codeigniter는 세션이 아닌 쿠키로 생성이 되면서 IE6 같은데서 프레임 이동시 쿠키가 지워진다는 얘기인데요 ..

세션을 강제로 스타트 시켜서 p3p를 해결하는(? 추정일뿐) ~~ 전 이렇게 이해를 하고 있습니다.^^

<해결방안들중>
1. php.ini에서 session.auto_start = 1
2. .htaccess파일에서 php_flag session.auto_start ON
3. index.php 에서 session_start(); 맨윗줄 추가
4. 특정 컨트롤러에서 ini_set('session.auto_start','1'); 추가
5. p3p 정책에 의거해서
@Header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
와 같이 해결등등

 

벨리 / 2009/11/14 14:36:57 / 추천 0
저는 Window APM 이 아니라 서버호스팅 환경에서 동일 문제점이 발생되서 ci세상님/웅파님 말씀대로 해도 문제가 해결되지 않았습니다.

포럼소스를 그대로 올려서 테스트해도 같은 증상이라 ...
서버측 문제점 인줄알고 찾던중우 "서버 시간이  클라이언트 시간보다 3시간 빠르게 설정"되어 있어 시간 동기화로 바로 해결했습니다.

파이어폭스 에서는 정상 로그인이 되서 서버시간을 체크해볼 생각을 못했습니다.
서버 시간때문에 ci 세션오류가 발생하는 경우가 생기네요

저랑 동일하게 고생하실분이 있을것 같아 다른 해결점이지만 댓글 남깁니다.



변종원(웅파) / 2009/11/14 22:48:05 / 추천 0
헉. 맞네요. 저도 동일한 증상이 있었는데 어떻게 해결했는지 기억이 안났었습니다. ^^;
제 경우에는 윈도우에서 개발을 완료하고 테스트까지 완료하고 서버에 올렸는데
로그인이 계속 풀리더군요. 어딘가에 자료를 남겨놨어야 했는데 간단한 이유라서
안남겨놨는데 앞으로는 사소한 것도 남겨놔야겠네요.