PHP 세션 제어: 쿠키와 세션 간의 차이점과 사용법에 대한 심층적인 이해
세션 제어에 관해 말하면 대부분의 사람들은 간단하지 않다고 생각할 것입니다. 그냥 COOKIE와 SESSION 아닌가요?
쿠키와 세션인데, 실제로 어떻게 사용하는지 알고 계시나요?
몇 년 전 인터뷰에서 다음과 같은 질문을 받았습니다.
세션이 1시간 후에 만료되도록 하는 방법은 무엇입니까?
당시에는 gc_maxlifetime을 3600으로 설정하는 것이 간단하지 않다고 생각했습니다. 당시 면접관은 답변이 틀렸으며, 1시간이 지나면 무효가 된다는 보장이 없다고 말했다. 물론 그 사람은 나에게 이유를 알려주지 않았다. 나중에 돌아와서 꼼꼼히 검색해서 알아냈어요.
이 질문에 대답하기 전에 쿠키와 세션에 대한 지식을 대중화합시다.
저장 위치의 차이:
쿠키는 클라이언트 측에 저장됩니다
세션은 서버 측에 저장됩니다
사이의 연결 them:
서버가 세션을 열면, 즉
session_start();
이후 고유 ID(session_id)를 생성하고 응답 헤더를 통해 클라이언트에 알립니다. 클라이언트가 이를 얻은 후에는 쿠키에 저장됩니다. 클라이언트가 요청을 다시 시작하면 이 정보를 가져옵니다. 이 정보를 받은 후 서버는 세션 파일이 저장된 디렉터리로 이동하여 해당 파일을 찾고, 찾은 후 세션 정보를 추출합니다. 서버는 이 메커니즘을 통해 클라이언트의 신원을 식별합니다.
그러므로 쿠키가 없으면 세션은 의미가 없습니다.
쿠키와 세션의 관계를 소개한 후, 세션의 유효기간에 대해 이야기해보겠습니다.
SESSION의 가비지 수집
일반적으로 PHP의 기본 세션 유효 기간은 24분입니다. 클라이언트가 이 시간을 초과한 후에도 요청을 발행하지 않으면 가비지 수집 메커니즘을 트리거하고 만료된 세션 파일을 삭제할 수 있습니다. 왜 가능합니까? 이것은 쓰레기 메커니즘의 원리에 관한 것입니다.
PHP의 세션 가비지 수집은 확률적이며 확률은 session.gc_probability 및 session.gc_diviso에 의해 결정됩니다. 확률은
session.gc_probability/session.gc_diviso
php의 기본 gc_probability는 1이고, gc_diviso의 기본값은 100입니다. 즉, 각 요청에 대해 가비지 수집이 실행될 확률은 1/100입니다. 일반적으로 당사 웹 사이트의 방문 수가 많은 경우 이 확률을 1/1000과 같이 높여서 IO 작업을 줄일 수 있습니다.
또 한 가지 주의할 점이 있습니다. 예를 들어 클라이언트 A는 이때 새 세션을 생성했습니다(세션은 10분 동안 유효함). 8분 후 A가 다른 요청을 보냈습니다. 이때 그의 세션이 2분 후에 만료됩니까, 아니면 10분 후에 만료됩니까?
답변은 10분 안에 입니다. 두 번째 요청 이후에는 서버 측 세션 파일의 수정 시간도 변경되었기 때문입니다. 가비지 수집은 세션 파일의 마지막 수정 시간을 살펴봅니다. 하지만 다시 생각해 보세요. 해당 쿠키 유효 기간도 업데이트되나요? 아쉽게도 쿠키 유효 기간은 업데이트되지 않습니다.
세션 파일이 1시간 안에 확실히 만료되도록 하는 방법
이제 원래 질문인 세션 파일이 1시간 안에 확실히 만료되도록 하는 방법을 살펴보겠습니다. 세션 가비지 수집은 확률적 이벤트이므로 기대할 수 없습니다.
그러면 쿠키의 유효기간을 설정하고, cookie_lifetime을 설정하면 되나요?
대답은 아직 '아니오'입니다. 쿠키가 클라이언트 측에 있습니다. 다음 요청에서는 쿠키를 가져올 수 없지만 해당 세션 파일은 여전히 존재합니다.
사실 이 문제를 해결하는 가장 간단한 방법은 Redis에 세션을 저장하고 Redis 키의 만료 시간을 사용하여 1시간 이내에 만료되도록 하는 것입니다. 이 방법도 추천하는 방법이에요
그런데 PHP만 사용할 수 있다면 어떻게 완성할 수 있을까요?
각 세션마다 타임스탬프를 설정하고 각 액세스 전에 타임스탬프를 결정할 수 있습니다. 코드 붙여넣기:
<?php session_start([ 'cookie_lifetime' => 3600, 'gc_maxlifetime' => 3600 ]); if (isset($_SESSION['lifetime']) && $_SESSION['lifetime'] > time()) { // 未过期,更新session的lifetime及cookie的有效期 $_SESSION['lifetime'] += 3600; $tmpVal = $_COOKIE[session_name()]; setcookie(session_name(), $tmpVal, time() + 3600, '/'); } else { // 过期删除 $_SESSION = []; if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 100, '/'); } session_destroy(); }
이 콘텐츠를 읽은 후에는 모든 사람이 PHP 세션에 대해 더 깊이 이해해야 한다고 믿습니다.
위 내용은 PHP 세션 제어: 쿠키와 세션 간의 차이점과 사용법에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











컴퓨터의 쿠키는 사용된 브라우저 및 운영 체제에 따라 브라우저의 특정 위치에 저장됩니다. 1. Google Chrome, C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default\Cookies에 저장됨 등.

쿠키는 일반적으로 브라우저의 쿠키 폴더에 저장되며, 브라우저의 쿠키 파일은 일반적으로 바이너리 또는 SQLite 형식으로 저장됩니다. 쿠키 파일을 직접 열면 일부 왜곡되거나 읽을 수 없는 내용이 나타날 수 있으므로 사용하는 것이 가장 좋습니다. 쿠키를 보고 관리하기 위해 귀하의 브라우저에서 제공하는 쿠키 관리 인터페이스.

세션 실패는 일반적으로 세션 수명 만료 또는 서버 종료로 인해 발생합니다. 해결 방법은 다음과 같습니다. 1. 세션 수명을 연장합니다. 3. 쿠키를 사용합니다. 4. 세션 관리 미들웨어를 사용합니다.

PHPSession의 도메인 간 문제 해결 프런트엔드와 백엔드 분리 개발에서 도메인 간 요청이 표준이 되었습니다. 도메인 간 문제를 처리할 때 일반적으로 세션 사용 및 관리가 포함됩니다. 그러나 브라우저 원본 정책 제한으로 인해 기본적으로 도메인 간에 세션을 공유할 수 없습니다. 이 문제를 해결하려면 도메인 간 세션 공유를 달성하기 위한 몇 가지 기술과 방법을 사용해야 합니다. 1. 도메인 간 세션을 공유하기 위한 쿠키의 가장 일반적인 사용

휴대폰의 쿠키는 모바일 장치의 브라우저 애플리케이션에 저장됩니다. 1. iOS 장치의 경우 쿠키는 Safari 브라우저의 설정 -> Safari -> 고급 -> 웹사이트 데이터에 저장됩니다. 2. Android 장치의 경우 쿠키가 저장됩니다. 설정 -> 사이트 설정 -> 크롬 브라우저의 쿠키 등에서

JavaScript쿠키 JavaScript 쿠키를 사용하는 것은 선호도, 구매, 커미션 및 기타 정보를 기억하고 추적하는 가장 효과적인 방법입니다. 더 나은 방문자 경험이나 웹사이트 통계를 위해 필요한 정보입니다. PHPCookieCookies는 클라이언트 컴퓨터에 저장되고 추적 목적으로 보관되는 텍스트 파일입니다. PHP는 HTTP 쿠키를 투명하게 지원합니다. JavaScript 쿠키는 어떻게 작동하나요? 귀하의 서버는 쿠키 형태로 방문자의 브라우저에 일부 데이터를 보냅니다. 브라우저는 쿠키를 허용할 수 있습니다. 존재하는 경우 방문자의 하드 드라이브에 일반 텍스트 기록으로 저장됩니다. 이제 방문자가 사이트의 다른 페이지에 도달하면

쿠키의 작동 원리에는 쿠키를 보내는 서버, 쿠키를 저장하는 브라우저, 쿠키를 처리하고 저장하는 브라우저가 포함됩니다. 자세한 소개: 1. 서버는 쿠키를 보내고, 서버는 쿠키가 포함된 HTTP 응답 헤더를 브라우저에 보냅니다. 2. 브라우저는 쿠키 등을 저장합니다.

인터넷의 대중화로 인해 우리는 브라우저를 사용하여 인터넷 서핑을 하는 것이 생활 방식이 되었습니다. 브라우저를 일상적으로 사용하다 보면 온라인 쇼핑, 소셜 네트워킹, 이메일 등 계정 비밀번호를 입력해야 하는 상황에 자주 직면하게 됩니다. 이 정보는 다음에 방문할 때 다시 입력할 필요가 없도록 브라우저에 기록되어야 합니다. 이때 쿠키가 유용합니다. 쿠키란 무엇입니까? 쿠키는 서버가 사용자의 브라우저에 전송하고 로컬에 저장되는 작은 데이터 파일을 말하며 일부 웹사이트의 사용자 행동을 포함합니다.
