PHP에서 세션은 사용자 ID 식별 및 데이터 보유와 같은 기능을 실현하는 일반적인 메커니즘입니다. 기본적으로 세션의 수명주기 및 만료 시간은 서버의 구성 파일 (예 : php.ini )에 의해 제어되지만 세션 _start () 이전에 관련 설정을 통해 세션 수명주기를 사용자 정의 할 수도 있습니다.
이 기사는 세션 _start () 를 통해 세션의 수명주기 및 만료 시간을 설정하는 방법과 관련 예방 조치를 자세히 설명합니다.
세션 수명주기는 두 부분으로 구성됩니다.
클라이언트 쿠키의 만료 시간 : 브라우저가 닫힌 후에도 세션 ID가 여전히 유지되는지 여부.
서버 세션 데이터의 저장 시간 : 즉, 서버에 저장된 세션 데이터의 생존주기.
예상하는 세션 수명주기를 달성하려면 둘 다 올바르게 설정해야합니다.
Session_Start ()을 호출하기 전에 다음 두 기능을 사용하여 세션 라이프 사이클을 설정할 수 있습니다.
session_set_cookie_params () : 클라이언트 쿠키의 만료 시간을 설정합니다.
ini_set ( 'session.gc_maxlifetime', 초) : 서버 세션 데이터의 최대 생존 시간을 설정합니다.
다음은 세션 수명주기를 1 시간 (3600 초)으로 설정하는 예입니다.
<code> & lt;? php // 서버 측 세션 수명주기를 1 시간 INI_SET ( 'session.gc_maxlifetime', 3600)으로 설정합니다. // 클라이언트 쿠키 수명주기를 1 시간으로 설정합니다.
session_set_cookie_params ([
'수명'=> 3600,
'path'=> '/',
'도메인'=> 'm66.net',
'secure'=> true, // https에서만 쿠키를 보냅니다 (필요에 따라 활성화)
'httponly'=> true, // js를 비활성화하여 쿠키에 액세스하기 위해 보안을 향상시킵니다.
'Samesite'=> 'lax'// CSRF 공격 방지, 선택적 값 : lax, 엄격한, 없음
]);
// 세션을 시작합니다
session_start ();
// 세션 변수를 설정합니다
$ _session [ 'user_id'] = 1234;
?>
</코드>
SESSION.GC_MAXLIFETIME : 서버가 세션 데이터를 유지하는 시간을 제어합니다. 기본값은 일반적으로 1440 초 (24 분)입니다.
Session_SET_COOKIE_PARAMS () 의 수명 매개 변수는 클라이언트 쿠키의 만료 시간을 결정합니다. 0 인 경우 "브라우저가 닫히고 유효하지 않음"을 의미합니다.
GC_MAXLIFETIME 이 설정 되더라도 PHP의 쓰레기 수집 메커니즘은 요청할 때마다 만료 된 세션을 지우지 않습니다. 청소 확률은 다음 구성 항목에 의해 결정됩니다.
session.gc_probability = 1
session.gc_divisor = 100
세션 정리를 수행 할 확률이 1%임을 나타냅니다. 필요에 따라 조정할 수 있습니다.
여러 하위 도메인 (예 : API.M66.NET , admin.m66.net )을 실행하는 경우 도메인을 .m66.net 으로 설정하여 교차 보관 공유 세션을 달성하는 것이 좋습니다.
HTTPS를 사용할 때는 세션 보안을 향상시키기 위해 안전 하고 HTTPonly 매개 변수를 설정해야합니다.
만료 된 세션 파일을 정기적으로 정리하여 서버 공간을 차지하고 점유하지 않습니다.
합리적으로 session_set_cookie_params 및 session.gc_maxlifetime 을 구성함으로써 PHP 세션의 수명주기를 유연하게 제어하고 사용자 상태를보다 안전하고 효율적으로 관리 할 수 있습니다. Session_Start ()를 호출하기 전에 이러한 설정을 작성하는 것은 맞춤형 세션 동작을 구현하는 데 중요한 단계입니다.