특정 시간 동안 세션을 유지한 후 종료해야 하는 필요성 웹 개발에서 일반적입니다. PHP는 세션 시간 초과 설정 옵션을 제공하지만 항상 신뢰할 수 있는 결과를 제공하는 것은 아닙니다. 기존 PHP 메커니즘의 단점을 이해하고 신뢰할 수 있는 솔루션을 살펴보겠습니다.
PHP는 세션 설정을 위한 두 가지 옵션을 제공합니다. timeouts:
신뢰할 수 있는 세션을 설정하려면 세션 시간 초과, 자체 솔루션을 구현하십시오. 이는 마지막 사용자 활동을 나타내는 타임스탬프를 유지함으로써 달성할 수 있습니다.
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { // Last request was more than 30 minutes ago session_unset(); // Unset $_SESSION variable session_destroy(); // Destroy session data in storage } $_SESSION['LAST_ACTIVITY'] = time(); // Update last activity timestamp
각 요청으로 세션 데이터를 업데이트하면 세션 파일의 수정 날짜가 수정됩니다. , 가비지 수집기는 세션을 조기에 제거하지 않습니다.
보안을 강화하려면 세션 ID를 주기적으로 다시 생성하는 것이 좋습니다. 세션 하이재킹 시도를 완화하려면:
if (!isset($_SESSION['CREATED'])) { $_SESSION['CREATED'] = time(); } else if (time() - $_SESSION['CREATED'] > 1800) { // Session started more than 30 minutes ago session_regenerate_id(true); // Change session ID and invalidate old one $_SESSION['CREATED'] = time(); // Update creation time }
위 내용은 30분 후 PHP 세션 만료를 안정적으로 관리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!