오래된 PHP 버그: 중복된 Set-Cookie 헤더가 수신되었나요?

藏色散人
풀어 주다: 2023-04-11 08:18:01
앞으로
4865명이 탐색했습니다.

오래된 PHP 버그: 중복된 Set-Cookie 헤더가 수신되었나요?

PHP에서 중복된 Session Set-Cookie 헤더를 출력하는 문제를 해결하는 방법은 무엇입니까?

오늘 이전에 발견한 적이 없는 오래된 버그를 발견했습니다. 프런트 엔드 응답은 두 개의 중복된 Set-Cookie 헤더를 받았습니다.

오랫동안 의아해했고, 오랜 시간의 문제 해결 끝에 결국 session_start() 함수에 대한 반복적인 호출로 인한 문제라는 것을 확인했습니다.

session_start() 함수가 호출될 때마다 Set-Cookie 헤더가 출력됩니다.

해결책:

session_start();
session_abort();
header_remove('Set-Cookie'); // 移除 Set-Cookie 头
로그인 후 복사

확장:

session_start() 후에 해당 세션 파일이 잠기고 현재 스크립트가 끝날 때까지 잠금이 해제되지 않습니다.

잠금 기간 동안 프로세스가 동일한 세션 ID에 액세스하면 파일 잠금이 해제될 때까지 session_start()가 시작되지 않습니다.

session_start();                               //starts the session,独占对应session id的文件
$_SESSION['user']="Me";               将变量写入对应的session 文件
session_write_close();                   // close write capability   ,关闭对文件 的 写独占
echo $_SESSION['user'];              // you can still access it  ,依然可以对文件进行 写操作
로그인 후 복사

session.cookie_lifetime 기본값은 0입니다. 이는 브라우저가 닫힐 때 쿠키가 유효하지 않음을 의미합니다.

php.ini에서 cookie_lifetime을 구성하는 것 외에도 session_set_cookie_params 함수를 통해 설정할 수도 있습니다. gc_maxlifetime 기본값은 1440초입니다. 즉, 사용자의 두 요청 사이의 시간 간격이 1440초를 초과하면

서버측 세션 파일은 PHP에서 가비지로 처리됩니다. gc_probability/gc_divisor가 1이면 세션이 종료됩니다.

세션 쿠키 설정 및 세션 파일은 86400초(1일) 후에 만료됩니다.

session.cookie_lifetime=86400
session.gc_maxlifetime=86400
session.gc_probability=1
session.gc_divisor=1
로그인 후 복사

권장 학습: "

PHP 비디오 튜토리얼

"

위 내용은 오래된 PHP 버그: 중복된 Set-Cookie 헤더가 수신되었나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yurunsoft.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿