30분 후 PHP 세션을 효과적으로 만료하는 방법
PHP는 세션 만료를 위해 session.gc_maxlifetime 및 session.cookie_lifetime과 같은 옵션을 제공하지만, 그것들은 완전히 신뢰할 수는 없습니다. 다음은 자체 세션 시간 초과 메커니즘을 구현하기 위한 포괄적인 접근 방식입니다.
PHP 내장 옵션 관련 문제:
사용자 정의 세션 시간 초과 구현:
특정 기간 동안 활동이 없으면 세션을 종료하는 것은 자체 시간 초과 메커니즘을 구현하는 것입니다. 여기에는 마지막 활동(요청)의 타임스탬프를 유지하고 각 요청마다 업데이트하는 작업이 포함됩니다. 마지막 활동이 30분 이상 지난 경우 세션 설정을 해제하고 삭제할 수 있습니다.
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { // last request was more than 30 minutes ago session_unset(); // unset $_SESSION variable for the run-time session_destroy(); // destroy session data in storage } $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
세션 데이터를 지속적으로 업데이트하면 세션 파일의 수정 날짜가 가비지 수집기에 의해 조기에 제거되는 것을 방지할 수 있습니다.
추가 보안 조치:
세션 등 공격 방지 수정하려면 $_SESSION['CREATED'] 타임스탬프를 업데이트하여 주기적으로 세션 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 for the current session and invalidate old session ID $_SESSION['CREATED'] = time(); // update creation time }
참고:
위 내용은 30분 동안 활동이 없으면 PHP 세션을 안정적으로 만료하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!