세션 처리 소개

PHP의 세션 지원은 후속 액세스에서 특정 데이터를 보존하는 방법으로 구성됩니다.

귀하의 웹 사이트에 액세스하는 방문자에게는 소위 세션 ID라는 고유 ID가 할당됩니다. 이것은 사용자 측의 쿠키에 저장되거나 URL로 전파됩니다.

세션 지원을 통해 $_SESSION 슈퍼글로벌 배열의 요청 간에 데이터를 저장할 수 있습니다. 방문자가 사이트에 액세스하면 PHP는 자동으로(session.auto_start가 1로 설정된 경우) 또는 요청 시(명시적으로 session_start()를 통해) 특정 세션 ID가 요청과 함께 전송되었는지 여부를 확인합니다. 이 경우 이전에 저장한 환경이 다시 생성됩니다.

주의 session.auto_start를 켜면 객체를 세션에 넣는 유일한 방법은 auto_prepend_file을 사용하여 클래스 정의를 로드하는 것입니다. 그렇지 않으면 객체를 serialize()하고 나중에 unserialize() 해야 합니다.

$_SESSION(및 모든 등록된 변수)은 요청이 완료된 후 session.serialize_handler ini 설정에 지정된 직렬화 핸들러를 사용하여 PHP에 의해 내부적으로 직렬화됩니다. 정의되지 않은 등록된 변수는 정의되지 않은 것으로 표시됩니다. 후속 액세스에서는 사용자가 나중에 정의하지 않는 한 세션 모듈에 의해 정의되지 않습니다.

경고 세션 데이터는 직렬화되기 때문에 리소스 변수는 세션에 저장할 수 없습니다.

직렬화 처리기(phpphp_binary)는 register_globals 제한을 상속합니다. 따라서 숫자 인덱스 또는 문자열 인덱스에 특수 문자(|!)가 포함된 경우 사용할 수 없습니다. 이것을 사용하면 스크립트 종료 시 오류가 발생합니다. php_serialize에는 이러한 제한이 없습니다.

메모:

세션으로 작업할 때 session_register() 함수를 사용하거나 $_SESSION 슈퍼글로벌 배열에 새 키를 추가하여 변수를 등록할 때까지 세션의 레코드가 생성되지 않는다는 점에 유의하십시오. 이것은 session_start() 함수를 사용하여 세션이 시작되었는지 여부에 관계없이 적용됩니다.