2014-07-24 2 views
2

이상한 문제가 있습니다. 사용자가 휴대 전화를 약 30 분 동안 잠자기 상태로두고 웹 사이트를 다시 사용하려고하면 내 모바일 사이트에서 세션이 손실 된 것처럼 보입니다.모바일 브라우저가 잠자기에서 깨어날 때 세션이 손실됩니다.

변경 session.cookie_lifetime은 이에 영향을 미치지 않는 것으로 보입니다.

session.gc_maxlifetime의 값을 늘리면이 문제를 해결할 수 있습니까? 여기

내가 기본 세션 저장소를 사용한다고 가정하여 제공된 코드에서 전체 코드

header("Access-Control-Allow-Origin: http://www.private.net"); 
header("Access-Control-Allow-Credentials: true"); 
ini_set("session.gc_maxlifetime", 60*60*24); 
session_set_cookie_params(60*60*24*7, "/", COOKIE_DOMAIN); 
session_start(); 
+1

나는 데이터베이스에 세션 세부 정보를 저장하려고 생각하는 것과 동일한 문제가 있습니다. – Sundar

+0

쿠키를 사용하여 사용자 정보를 유지하고 세션이 손실되면 다시 로그인하기 위해 중간 단계를 밟았습니다. 매우 안전한 방법은 아닙니다. IMHO. 나는이 문제에 사용되는 표준 방법이 무엇인지 궁금하다. – DevZer0

+0

동일한 가비지 컬렉터가 실행되면 다른 곳에 저장해도 도움이되지 않습니다. 더 긴 세션 수명이 필요하다면 예를 들어 gc_maxlifetime을 늘리십시오. 공유 호스팅을 사용하는 경우 session.save_dir이 다른 사이트와 공유되지 않도록하십시오. '가장 낮은'구성 수명은 조기에이기거나 정리되기 때문입니다. – Wrikken

답변

1

이며,이 세션 데이터가 파일 시스템에 저장되고 쿠키 만 PHPSESSID (세션이 포함되어 의미 신분증). 파일 시스템을 사용할 때 세션 데이터를 더 오래 저장하려면 적절하게 session.gc_maxlifetime 구성을 설정해야합니다. 당신은 php.ini 또는 ini_set()으로이 작업을 수행 할 수 있습니다 :

ini_set("session.gc_maxlifetime", 60*60*24*7);

당신이 쿠키의 수명을 늘리려면 (0으로 기본값을, 브라우저를 닫을 때 삭제되는 것을 의미)을 설정할 수 있습니다 session.cookie_lifetime을 사용하거나 ini_set()을 다시 사용하거나 예제에서 수행하는 것처럼 수행하십시오.

관련 문제