>  기사  >  백엔드 개발  >  php $_cookie 값이 저장된 값과 다른 이유에 대한 간략한 분석

php $_cookie 값이 저장된 값과 다른 이유에 대한 간략한 분석

PHPz
PHPz원래의
2023-03-22 16:54:221292검색

쿠키 값을 얻기 위해 PHP $_COOKIE를 사용할 때, 때때로 얻은 값이 저장된 값과 다른 상황이 발생할 수 있습니다. 이때 코드를 디버깅하고 검사해야 합니다.

다음은 획득한 쿠키 값이 저장된 값과 다를 수 있는 몇 가지 이유를 소개합니다.

  1. 일관되지 않은 변수 이름

쿠키 자체는 표준 HTTP 프로토콜의 요청 헤더이므로 쿠키를 저장할 때 사용하는 변수 이름은 쿠키를 검색할 때 사용하는 변수 이름과 일치해야 합니다. 변수 이름이 일치하지 않으면 얻은 값은 저장된 값과 다릅니다.

예:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 获取cookie时
$test = $_COOKIE['Test'];

이 예에서는 쿠키를 저장할 때 사용한 변수 이름이 'test'인데, 가져올 때 'Test'를 사용하므로 얻은 값과 저장된 값이 다릅니다.

  1. 쿠키 작업 경로가 일관성이 없습니다

변수 이름과 마찬가지로 쿠키 작업 경로도 일관성이 있어야 합니다. 쿠키를 저장할 때 작업 경로를 지정했지만 검색할 때는 지정하지 않은 경우 얻은 값과 저장된 값이 다릅니다.

예:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/test');
 
// 获取cookie时
$test = $_COOKIE['test'];

이 예에서는 쿠키를 저장할 때 작업 경로를 '/test'로 지정하지만, 쿠키를 가져올 때는 지정하지 않아 값이 달라집니다.

  1. 쿠키 만료 시간이 일치하지 않습니다

쿠키를 저장할 때 만료 시간을 지정했지만 쿠키를 얻을 때 만료 시간이 지나면 얻은 값은 null이 됩니다.

예:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 过了过期时间再获取cookie时
sleep(3605);
$test = $_COOKIE['test'];

이 예에서는 저장된 쿠키의 만료 시간이 1시간 늦었지만 쿠키를 얻을 때 만료 시간이 지나서 얻은 값이 null이 됩니다.

  1. 쿠키 크로스 도메인 문제

쿠키가 저장된 도메인 이름과 쿠키를 얻은 도메인 이름이 일치하지 않으면 얻은 쿠키 값도 저장된 쿠키 값과 다릅니다.

예:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/', '.example.com');
 
// 在另一个域名上获取cookie时
$test = $_COOKIE['test'];

이 예에서는 쿠키를 저장할 때 도메인 이름 '.example.com'을 지정했지만, 다른 도메인 이름에서 쿠키를 얻은 경우 쿠키를 얻지 못하거나 다른 값이 표시됩니다. 얻을 수 있습니다.

요약:

교차 도메인 쿠키 문제를 방지하려면 변수 이름, 작업 경로, 만료 시간 및 도메인 이름이 일치하는지 확인하세요. 획득한 쿠키 값이 저장된 값과 다른 이유는 다음과 같습니다. 코드를 디버깅할 때 불필요한 오류를 방지하려면 이러한 문제에 주의해야 합니다.

위 내용은 php $_cookie 값이 저장된 값과 다른 이유에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.