>백엔드 개발 >PHP 튜토리얼 >30분 PHP 세션 만료를 안정적으로 구현하려면 어떻게 해야 합니까?

30분 PHP 세션 만료를 안정적으로 구현하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-20 11:41:08750검색

How Can I Reliably Implement a 30-Minute PHP Session Expiration?

30분 후 PHP 세션 만료 구현

문제 설명:

종료 전 30분 동안 활성 세션 유지

답변:

PHP에 내장된 세션 설정(예: session.gc_maxlifetime, session.cookie_lifetime)에만 의존하면 안정적인 세션 만료가 보장되지 않을 수 있습니다. 대신, 사용자 정의 만료 메커니즘을 구현하는 것이 좋습니다.

session.gc_maxlifetime:

  • 세션 데이터가 "쓰레기"로 간주되는 간격과 제목을 결정합니다.
  • 그러나 가비지 수집기가 세션이 시작될 때마다 실행된다는 보장은 없습니다. 데이터 제거가 지연될 수 있습니다.
  • 또한 기본 세션 핸들러를 사용하면 파일 수정 타임스탬프에 따라 세션 데이터가 제거되어 불일치가 발생할 수 있습니다.

세션. cookie_lifetime:

  • 쿠키 만료를 제어합니다. 브라우저의 세션 쿠키이지만 서버측 세션 유효성에 직접적인 영향을 미치지는 않습니다.
  • 이 값을 0으로 설정하면 실제 세션 쿠키가 생성되며 브라우저 종료 시 만료됩니다.

사용자 정의 만료 핸들러:

신뢰할 수 있는 세션 만료를 보장하려면 타임스탬프를 사용하여 추적하는 사용자 정의 만료 핸들러를 구현하십시오. 사용자 활동.

코드:

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // Session inactive for over 30 minutes
    session_unset(); // Delete session data
    session_destroy(); // Terminate session
}
$_SESSION['LAST_ACTIVITY'] = time(); // Update timestamp

추가 고려 사항:

  • session.gc_maxlifetime을 사용자 정의 만료 간격보다 크거나 같은 값(예: 1800 초).
  • (시작 시간이 아닌) 활동 시간을 기준으로 세션을 만료하려면 setcookie()를 사용하여 마지막 요청 후 30분으로 쿠키 만료를 설정합니다.

위 내용은 30분 PHP 세션 만료를 안정적으로 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.