PHP 5.6 SESSION 유지 및 시간 늘리기 및 자동 로그인 방법

300x250

이 글을 보시는 분들은 다른사이트에서 

session.cookie_lifetime  

session.cache_expire 

관련 변수를 변경하였는데 세션유지가 안되서 이 글을 보고있을 껍니다.

 

 

세션 설정 외에도 GC(c#의 garbage collection) 이라고 하는 동작이 있습니다.

관련 설정 변수는 아래 3개 입니다. 아마 아래와 같은 기본값으로 설정되어 있을껍니다.

session.gc_probability = 0

session.gc_divisor = 1000    <-- 1/1000 으로 0.1% 확률로 쿠키파일이 청소 됩니다.

session.gc_maxlifetime = 0

 

 

아래와같이 수정해보세요

저는 etc/php/5.6/apache2 경로에 있는 php.ini를 수정하겠습니다.

 

아래와 같이 vi 편집기로 php.ini 파일을 열어줍니다.

 

session.cookie_lifetime = 0

session.cache_expire = 14400  (분단위)

session.gc_maxlifetime = 65535    <-- 대략 16시간 마다 쿠키파일이 청소되게 하였습니다. (초단위)

 

 

:wq! 로 수정 후 나와서

아래와 같이 꼭 아파치를 재시작 해줘야 합니다.

service apache2 restart

 

 

세션 30일 저장 만든 php 설정 값 입니다.

 

 

 

자동 로그인 처리(저장된 세션 쿠키 사용)

 

로그인 시 savesession 이라는 쿠키를 만들어서 PHPSESSIONID 값을 저장 합니다.

이후 브라우저를 다시 켰을때 만약 savesession 쿠키 값이 있으면
저장했던 savesessino 쿠키 값으로 PHPSESSIONID 필드를 만들어서 값을 넣습니다.

이렇게 되면 서버에 세션(30일)이 남아있는한 무한 자동 로그인이 됩니다.

 

 

 

 

 

세션정보는 파일관리로 했을경우 아래 경로에 저장 됩니다.

/var/lib/php/sessions 

만약 세션설정이 실패 했다면, 이 경로의 파일들의 수정날짜를 보면 30분전 파일은 다 지워진걸 확인 할 수 있습니다.

 

php 소스에서 수정시에는 session_start 하는 코드에 입력되어야 합니다.

session_cache_limiter('private');
ini_set("session.cookie_lifetime", "0");
ini_set("session.cache_expire", "14400");
ini_set("session.gc_maxlifetime", "2592000");

session_start();

 

300x250

댓글()