>백엔드 개발 >PHP 튜토리얼 >오래된 PHP 버그: 중복된 Set-Cookie 헤더가 수신되었나요?

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

藏色散人
藏色散人앞으로
2022-10-18 16:53:474899검색

오래된 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으로 문의하시기 바랍니다. 삭제