웹모아
웹모아[가입] 로그인 / 회원가입   검색     


  
환경설정
 

브라우져를 종료해도 세션이 그대로 살아있어요
2007-07-15 22:16:01 댓글:(0)   조회:2747
 

php.ini에서도 
session.lifetime = 0 
session.cookie_lifetime = 0 
session.gc_maxlifetime = 0 


이렇게 했거든요.. 
근데 브라우져를 종료하고 나서 
다시 서비스에 접속하면 세션 값이 그대로 살아있어서 
자동으로 로그인이 되어버립니다.. 
어떻게 하면 되죠? 

===============================================================
A:
원인은 클라이언트의 쿠키가 제때 제거되지 않고, 서버의 활동이 적은 경우가 
더해저 생기는 문제입니다. 



서버는 세션이 시작되면 - 보통 session_start()호출을 말합니다 - 가비지(쓸모없어 보이는 세션)를 
정리하는데 session_start()를 약100번 호출해야 한번 정리합니다. 
그러니 서버이용이 적은 경우 가비지가 제때 정리안되 유효시간이 지난 세션이 못 지워지고 
그대로 사용됩니다. 

이때 필요한게 한가지 더 있는데 $_COOKIE["PHPSESSID"] 값이 클라이언트에 있어야 합니다. 
정상이라면 부라우저 종료시 사라저야 하는 쿠키값이 계속남아 있는 오류죠. 

이 오류는 어디서 잘못인지 모르겠더군요. 익스의 버그인지 아니면 php, apache의 버그인지.. 


관련있는 설정들은 
session.cookie_lifetime = 0 쿠키의 유효시간 설정으로 0이면 브라우저 종료시 삭제입니다. 
그러나 이게 안되서 문제가 발생하는 것이지요. 



session.gc_probability = 1 
session.gc_divisor    = 100 
이런경우 1/100 의 확률로 가비지를 정리합니다. 
위에서 말한 100번 호출해야 한번정리한다는 건 이설정때문입니다. 
서버이용자가 적어 가비지가 제때 호출되지 못하는경우 이확률을 높여 해결이 가능하지요. 

session.gc_maxlifetime = 1440 
이건 가비지 호출시 1440초 동안 쓰이지 않은 세션을 정리한다는 것으로 
0으로 하면 안되겠죠. 


session.lifetime = 0  ㅡ..ㅡ 이런 설정값은 제가 알기론 없습니다. 
버전이 몇인지 몰라도 php4에서도 없었던듯 한데...
. 


[이전글]  세션을 DB로 관리하기 + 쪽지 확인하기
[다음글]  PHP에서 세션 사용하기


 
댓글쓰기는 회원(로그인 하신분) 이상 가능합니다.


 댓글 (0)

  
환경설정
페이지: 1 / 5   

 PHP.INI에서의 세션 관련 설정
열람:9475   2016.07.04


 [PHP] $_SERVER
열람:4234   2016.06.12


 php 에서 세션시간설정
열람:2098   2011.04.20


 업로드 용량과 관련한 php.ini 파일 설정
열람:2665   2010.04.29


 mbstring - PHP 확장모듈을 추가하는 방법
열람:2199   2008.02.22


   [RE] mbstring - PHP 확장모듈을 추가하는 방법
열람:2149   2008.02.22


 타도메인간 쿠키 공유하기
열람:2299   2007.10.27


 home 데이타 백업 스크립트
열람:1930   2007.10.24


 cron 이용 일정시간마다 php문실행
열람:2902   2007.10.24


 cron, crontab, PHP 소스 자동실행, 쉘 스크립트
열람:2353   2007.10.24



[1]  [2]  [3]  [4]  [5]  

복수단어 검색은 공백(space)로 구분해 주세요.




 
최근 글 [손님]
 
인기 글 [손님]
[홈마스타] (1) 아이피포워팅이란?