세션 처리 Examples 기본 사용법

세션은 고유한 세션 ID에 대해 개별 사용자의 데이터를 저장하는 간단한 방법입니다. 이것은 페이지 요청 간에 상태 정보를 유지하는 데 사용할 수 있습니다. 세션 ID는 일반적으로 세션 쿠키를 통해 브라우저로 전송되며 ID는 기존 세션 데이터를 검색하는 데 사용됩니다. ID 또는 세션 쿠키가 없으면 PHP가 새 세션을 생성하고 새 세션 ID를 생성하도록 알립니다.

세션은 간단한 워크플로를 따릅니다. 세션이 시작되면 PHP는 전달된 ID(일반적으로 세션 쿠키에서)를 사용하여 기존 세션을 검색하거나 전달된 세션이 없으면 새 세션을 생성합니다. PHP는 세션이 시작된 후 $_SESSION 슈퍼글로벌을 세션 데이터로 채웁니다. PHP가 종료되면 자동으로 $_SESSION 슈퍼글로벌의 내용을 가져와 직렬화하고 세션 저장 핸들러를 사용하여 저장을 위해 보냅니다.

기본적으로 PHP는 session.save_handler에 의해 설정된 내부 파일 저장 핸들러를 사용합니다. 이것은 session.save_path 구성 지시문에 의해 지정된 위치에 서버의 세션 데이터를 저장합니다.

session_start() 함수를 사용하여 세션을 수동으로 시작할 수 있습니다. session.auto_start 지시문이 1로 설정되어 있으면 요청 시작 시 세션이 자동으로 시작됩니다.

세션은 일반적으로 PHP가 스크립트 실행을 마치면 자동으로 종료되지만 session_write_close() 함수를 사용하여 수동으로 종료할 수 있습니다.

예제 #1 $_SESSION에 변수 등록.

                  
<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
?>
                  
                

예제 #2 $_SESSION으로 변수 등록을 취소합니다.

                  
<?php
session_start();
unset($_SESSION['count']);
?>
                  
                

주의 unset($_SESSION)으로 전체 $_SESSION을 설정 해제하지 마십시오. 이렇게 하면 $_SESSION 슈퍼글로벌을 통한 세션 변수 등록이 비활성화됩니다.

경고 다른 변수에 대한 참조를 복원할 수 있는 실행 가능한 방법이 없기 때문에 세션 변수에 참조를 사용할 수 없습니다.

메모:

파일 기반 세션(PHP의 기본값)은 session_start()를 통해 또는 암시적으로 session.auto_start를 통해 세션이 열리면 세션 파일을 잠급니다. 일단 잠기면 session_write_close()를 종료하거나 호출하는 첫 번째 스크립트에 의해 닫힐 때까지 다른 스크립트는 동일한 세션 파일에 액세스할 수 없습니다.

이것은 AJAX를 많이 사용하고 동시 요청이 여러 개 있는 웹 사이트의 문제일 가능성이 높습니다. 이를 처리하는 가장 쉬운 방법은 세션에 필요한 변경이 이루어진 즉시, 가급적이면 스크립트 초기에 session_write_close()를 호출하는 것입니다. 또는 동시성을 지원하는 다른 세션 백엔드를 사용할 수 있습니다.