PHP 세션은 어떻게 작동합니까?('사용방법'이 아닙니다.")
세션 파일은 보통 다음과 같이 저장됩니다./tmp/
서버 및 이름 지정sess_{session_id}
내용을 보고 있는데, 실제로 어떻게 작동하는지 알 수 없습니다.
파일에서 변수 이름 및 내용을 쉽게 가져올 수 있습니다.하지만 PHP는 어떤 세션이 누구의 것인지 어떻게 알 수 있을까요?
session_id는 완전히 랜덤으로 보이며, 1개의 IP 주소로 여러 명의 사용자를 가질 수 있습니다.또한 여러 브라우저 창이 열려 있는 경우 각 사용자에게 여러 개의 세션을 설정할 수 있습니다.
그렇다면, 어떻게 사람을 구조할까요?
일반적인 상황에서:
- 세션 ID 는 세션 생성 시 사용자에게 전송됩니다.
- 쿠키에 저장됩니다(디폴트로는
PHPSESSID
) - 이 쿠키는 브라우저에 의해 각 요청과 함께 서버로 전송됩니다.
- 서버(PHP)는 session_id가 포함된 쿠키를 사용하여 해당 사용자에 대응하는 파일을 확인합니다.
세션 파일 내의 데이터는 다음 콘텐츠입니다.$_SESSION
serialize(즉, serialize 등의 함수를 사용하여 문자열로 표시됨), 파일이 PHP에 의해 로드될 때 serialize가 해제되어 파일을 채웁니다.$_SESSION
어레이를 설정합니다.
세션 ID가 쿠키에 저장되지 않고 URL로 전송되는 경우도 있지만, 요즘은 거의 없습니다.
자세한 내용은 매뉴얼의 세션 처리 섹션을 참조하십시오. 이 섹션에서는 유용한 정보를 제공합니다.
예를 들어, 세션 ID 전달에 대한 페이지가 있습니다. 이 페이지는 세션 ID가 페이지 간에 전달되는 방법, 쿠키 또는 URL에서 전달되는 방법 및 여기에 영향을 미치는 구성 선택사항을 설명합니다.
PHP 세션 작동 방식
먼저 PHP는 16바이트 길이의 고유 식별자 번호(예: 32개의 16진수 문자로 구성된 문자열로 저장됨)를 만듭니다.
a86b10aeb5cd56434f8691799b1d9360
를 참조해 주세요.PHPSESSID 쿠키는 고유 식별 번호를 사용자의 브라우저에 전달하여 해당 번호를 저장합니다.
서버에 sess_prefix와 같은 이름의 고유 식별 번호를 사용하여 새 파일이 생성됩니다(즉,
sess_a86b10aeb5cd56434f8691799b1d9360
.)브라우저는 각 요청과 함께 해당 쿠키를 서버로 보냅니다.
PHP가 PHPSESSID 쿠키에서 고유 식별 번호를 얻으면 PHP는 임시 디렉토리를 검색하여 해당 번호를 파일 이름과 비교합니다.두 세션이 동일한 경우 기존 세션을 가져오고 그렇지 않은 경우 해당 사용자의 새 세션을 만듭니다.
사용자가 브라우저를 닫거나 사이트를 나가면 세션이 파기됩니다.또한 서버는 미리 정해진 세션 시간이 경과한 후 세션을 종료합니다.다음은 PHP가 세션을 처리하기 위해 사용하는 간단한 메커니즘 단계입니다.PHP SESSION이 어떻게 작동하는지 이해하는데 도움이 되었으면 합니다.
세션 ID는 실제로 랜덤이며 설정에 따라 쿠키 또는 URL로 전달됩니다.이 PHPSESSID=xxxx는 일부 URL에서 이미 확인되었을 수 있으며, 해당 이름의 쿠키도 있습니다.
PHP session_start() 세션 시작setcookie() session_start() HTML을 사용합니다.예요.<?php session_start( );?><html><head>
는 임의의 의 컴퓨터에되어 있는 입니다). ........etc session_start()는 ID입니다. PHP 할 수 회사는 cookie는 PHPSESSID를 사용합니다.따라서 PHP 코드에서 세션 ID를 참조하려면 변수 $PHPSESSID를 참조해야 합니다(쿠키 이름인데 쿠키에서 기억하십니까?).
언급URL : https://stackoverflow.com/questions/1535697/how-do-php-sessions-work-not-how-are-they-used
'sourcecode' 카테고리의 다른 글
python을 사용하여 csv에 mysql 쿼리를 쓰는 경우 필드 이름을 표시해야 합니다. (0) | 2022.12.26 |
---|---|
소스 및 JavaDoc을 사용하여 Snapshot을 도입하는 방법 (0) | 2022.12.26 |
MySQL-Server 설치 시 MariaDB 설치를 방지하는 방법 (0) | 2022.12.26 |
도커에서 MariaDB를 사용하는 방법 (0) | 2022.12.26 |
짝수인지 홀수인지 확인 (0) | 2022.12.26 |