세션을 중국어로 번역하면 "대화"라고 하며 원래 의미는 시작과 끝이 있는 일련의 동작/메시지를 의미합니다. 예를 들어 전화를 걸 때 전화를 받는 것부터 전화를 받는 것까지의 일련의 과정을 의미합니다. 전화를 걸고 전화를 끊는 것을 세션이라고 부를 수 있습니다. 현재 사회에서 세션에 대한 이해는 매우 혼란스럽습니다. 때때로 "브라우저 세션 중..."이라는 단어를 볼 수 있습니다. 여기서 세션은 브라우저 창이 열리는 순간부터 닫힐 때까지의 기간을 의미합니다. "세션 중 사용자(클라이언트)"라는 문장을 참조하면, 사용자의 일련의 행위(보통 로그인부터 상품 구매, 결제까지 특정 목적과 관련된 일련의 행위)를 의미할 수 있습니다. 그러나 이러한 온라인 쇼핑 프로세스는 때로는 연결만을 의미할 수도 있습니다.
그러나 세션이라는 단어가 네트워크 프로토콜과 연관되어 있는 경우에는 "연결"을 의미하는 경우가 많습니다. 및/또는 "상태 유지"에는 두 가지 의미가 있습니다. "연결 지향"은 상대방이 전화를 걸기 전에 먼저 통신 채널을 설정해야 함을 의미합니다. "보류". " 상태"란 통신 당사자가 일련의 메시지를 연결하여 메시지가 서로 의존할 수 있음을 의미합니다. 예를 들어 웨이터는 다시 찾아온 오래된 고객을 인식하고 고객이 지난번에 매장에 1달러를 빚졌음을 기억할 수 있습니다. 이 예는 "TCP 세션" 또는 "POP3 세션"입니다.
이러한 혼란은 되돌릴 수 없으므로 세션을 정의하는 통일된 표준을 갖는 것은 어렵고 세션에 대해 읽을 때는 하나만 있습니다. 예를 들어 전화를 걸 때부터 전화를 끊는 순간까지 전화는 계속 연결되어 있으므로 이 연결된 상태를 세션(Session)이라고 합니다. 방문자와 전체 웹사이트 간의 상호작용 중에 항상 존재하는 변수입니다. 클라이언트가 COOKIE를 지원하지 않는 경우 데이터의 정확성과 보안을 보장하기 위해 웹사이트를 방문하는 방문자에게 세션 변수가 할당됩니다. 소위 세션 ID는 클라이언트의 쿠키에 저장되거나 URL을 통해 전달됩니다.
세션의 발명은 HTTP 프로토콜의 한계를 보완합니다. HTTP 프로토콜은 상태 비저장 프로토콜로 간주되며 사용자의 탐색 상태를 알 수 없습니다. 서버가 응답을 완료하면 서버와 브라우저의 연결이 끊어집니다. 이는 HTTP 프로토콜의 원래 목적과 일치합니다. 클라이언트는 클라이언트도 아니고 서버에 특정 파일을 다운로드하도록 요청하기만 하면 됩니다. 서버는 서로의 과거 행위를 기록하는 것이 필요하며, 각 요청은 고객과 자판기 또는 일반(비회원) 대형마트와의 관계와 마찬가지로 독립적입니다.
따라서 세션(쿠키)을 통해 또 다른 서비스를 제공합니다. 솔루션)은 사용자가 웹 서버에 다시 요청할 때 확인을 위해 사용자의 관련 정보를 기록합니다. 이러한 경험을 통해 사용자는 여러 페이지 사이를 전환할 때 자신의 정보를 저장할 수 있습니다. 다음 페이지에서는 사용할 수 없으며(form 및 url도 구현할 수 있지만 이는 매우 만족스럽지 못한 방법임) Session에 등록된 변수를 전역 변수로 사용할 수 있습니다.
그렇다면 세션의 용도는 무엇입니까? 누구나 온라인 쇼핑을 할 때 장바구니를 사용해 본 적이 있을 것입니다. 언제든지 선택한 제품을 장바구니에 추가하고 마지막으로 결제 카운터로 가서 결제할 수 있습니다. 전체 과정에서 장바구니는 선택한 상품을 임시로 저장하는 역할을 담당해 왔으며, 이는 웹사이트에서 사용자의 활동을 추적하는 데 사용되며 이는 사용자 신원 인증, 프로그램 상태 등에 사용될 수 있습니다. 녹음, 페이지 간 매개변수 전달 등
COOKIE 기술은 Session 구현에 사용됩니다. Session은 클라이언트 측에 Session_id(세션 번호)를 포함하는 COOKIE를 저장하고, Session_name 등과 같은 다른 세션 변수를 서버 측에 저장합니다. 사용자가 서버에 요청하면 Session_id도 서버로 전송됩니다. Session_id를 통해 서버측에 저장된 변수를 추출하면 사용자가 누구인지 식별할 수 있습니다. 동시에 세션이 때때로 실패하는 이유를 이해하는 것은 어렵지 않습니다.
클라이언트가 COOKIE를 비활성화한 경우(IE에서 "도구" - "인터넷 옵션" 클릭, 팝업 대화 상자에서 "보안" - "사용자 정의 수준" 항목 클릭, "대화별 COOKIE 허용"을 비활성화로 설정), Session_id 통과되지 않으며 현재 세션이 유효하지 않습니다. 그러나 php5는 Linux/Unix 플랫폼에서 쿠키 상태를 자동으로 확인할 수 있습니다. 클라이언트가 비활성화된 경우 시스템은 자동으로 Session_id를 URL에 추가하고 이를 전달합니다. Windows 호스트에는 이 기능이 없습니다.
세션 공통 기능 및 사용법
Session_start(): 세션을 시작하거나 기존 세션을 반환합니다.
참고: 이 함수에는 매개변수가 없으며 반환 값은 true입니다. 쿠키 기반 세션을 사용하는 경우 Session_start()를 사용하기 전에 브라우저에 출력이 없어야 합니다. 그렇지 않으면 다음 오류가 발생합니다.
경고: 세션 캐시 제한기를 보낼 수 없습니다. 헤더가 이미 전송되었습니다(출력은 /usr/local/apache/에서 시작됨). htdocs/cga/member/1.php:2)...
php.ini에서 Session.auto_start=1을 시작할 수 있으므로 Session을 사용하기 전에 매번 Session_start()를 호출할 필요가 없습니다. 그러나 이 옵션을 활성화하는 데는 몇 가지 제한 사항이 있습니다. Session.auto_start가 실제로 활성화된 경우 세션에서 개체를 다시 생성하려면 세션을 시작하기 전에 클래스 정의를 로드해야 하기 때문에 개체를 세션에 넣을 수 없습니다.
등록된 모든 변수는 요청이 완료된 후 직렬화됩니다. 등록되었으나 정의되지 않은 변수는 정의되지 않음으로 표시됩니다. 이러한 변수는 사용자가 나중에 정의하지 않는 한 후속 액세스 시 세션 모듈에 의해 정의되지 않습니다.
일부 데이터 유형은 직렬화할 수 없으므로 세션에 저장할 수 없습니다. 순환 참조가 있는 리소스 변수 또는 개체를 포함합니다(즉, 개체가 자신에 대한 참조를 다른 개체에 전달함).