개발! 딱 깔끔하고 센스있게!

PHP 세 션 을 어떻게 회복 합 니까? 본문

개발 스크랩 메모/PHP

PHP 세 션 을 어떻게 회복 합 니까?

렉사이 2020. 11. 22. 02:36

사용자 의 세 션 id 를 'PHPHPSSID' 라 는 쿠키 에 저 장 했 습 니 다.

이 쿠키 는 클 라 이언 트 브 라 우 저 에 저장 되 고 서버 에 있 는 세 션 과 일치 하여 2 와 연결 되도록 합 니 다.

브 라 우 저 종료 후세 션 정보 가 사 라 졌 지만 클 라 이언 트 의 쿠키 는 존재 합 니 다.

이 쿠키 를 사용 하여 오래된 세 션 을 복원 할 수 있 습 니까?혹은 모든 세 션 데이터 가 클 라 이언 트 가 브 라 우 저 를 닫 을 때 서버 에서 삭 제 됩 니까?

나 는 이것 을 나의 첫 페이지 에 놓 았 다.

session_start(); $_SESSION['message'] = 'Hello'; echo $_SESSION['message']; // outputs hello 

그리고 나 서 나 는 페이지 를 바 꾸 었 다.

$old_session = session_id(); session_id($old_session); session_start(); echo $_SESSION['message']; 

그리고 나 서 나 는 브 라 우 저 를 닫 고 이 페이지 를 다시 엽 니 다.

다음 과 같은 오 류 를 받 습 니 다:

Warning: session_start() [function.session-start]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\xampp\htdocs\localhost\test.php on line 5 Notice: Undefined index: message in C:\xampp\htdocs\localhost\test.php on line 7 

브 라 우 저 를 닫 은 후, 어떻게 이전 세 션 정 보 를 정확하게 검색 합 니까? 이것 이 가능 합 니까?

대답 하 다.

세 션 은 tin 에서 말 한 대로 실 행 됩 니 다.

- 클 라 이언 트 세 션 기간 에 존재 합 니 다.

브 라 우 저 를 닫 을 때 정의 에 따라 탐색 세 션 (예: 세 션 이 하나 있다) 이 종 료 됩 니 다.

쿠키 기반 세 션 은 쿠키 를 설정 해서 작 동 합 니 다.

이 쿠키 의 생명 주기 가 PHP 에서 0 으로 정의 되 어 있 습 니 다.

브 라 우 저 를 닫 을 때 쿠키 를 없 애 는 것 을 의미 합 니 다.

쿠키 가 소멸 되면 세 션 ID 는 어떠한 후속 서버 요청 에 도 보 내지 않 기 때문에 PHP 스 크 립 트 에서 사용 할 수 없습니다.

하지만 사용자 가 브 라 우 저 를 닫 는 순간 서버 에 있 는 세 션 데 이 터 는 사라 지지 않 습 니 다.

이 는 불가능 합 니 다.

클 라 이언 트 가 서버 가 이미 종료 되 었 음 을 알 리 지 않 기 때 문 입 니 다.

반면 서버 쪽 세 션 데 이 터 는 TL (생존 시간) 이 있 습 니 다.

기본 값 은 15 분 입 니 다.

시간 이 지나 면 세 션 쓰레기 수집 기 는 수시로 데 이 터 를 삭제 할 수 있 습 니 다.

이론 적 으로 는 상당히 오 랜 시간 이 걸 릴 수 있 지만, 실제로 바 쁜 서버 에 서 는 TTL 이 만 료 된 후 몇 분 안에 데이터 가 삭 제 될 것 입 니 다.

단, PHP 로 세 션 데 이 터 를 사용 할 수 없습니다.

세 션 ID 가 있 거나 쿠키 가 없 으 면 세 션 ID 가 없습니다.

제 말 처럼 사용자 가 브 라 우 저 를 닫 을 때 발생 합 니 다.

그래서 이 질문 에 대한 짧 은 답 은 PHP 회 복 량 이 어떻게 되 나 요?is: 너 못 해

Comments