2011-10-06 4 views
1
내 루트 디렉토리에 PHP에서 두 개의 쿠키를 설정하고

중복 쿠키

setcookie ("st", "$todays_system_date" ); 
    setcookie ("en", "$tomorrow"); 

내 문제는 내가 깊은 폴더 예에 스크립트에서 다시 설정해야합니다/일기/ 쿠키를 설정하고 읽거나 쿠키 세트를 보려고하면 2x en 및 2x st 쿠키가 있음을 발견했습니다.

제 질문은 어떻게 하나의 쿠키 집합에 대한 참조를 만들 수 있습니까? 읽고 읽습니까? 사전에

감사

+0

"쿠키 경로"도 설정 하시겠습니까? "root"에있는 스크립트의 경우 "/"또는 하위 폴더가 "/ diary"여야합니다. –

답변

4

쿠키는 키/값 쌍 - 그들은 오직 주어진 범위에서 하나의 값을가집니다.

그러나, (그것이 여전히 주어진 범위 내에서 하나 개의 실효 값을 갖더라도)

  • 가 동일한 영역에 대해 동일한 키 값이 다른 하나 개 이상의 쿠키를 가질 수있다.

예를 들어, 값 1와 루트 (/)에서 쿠키 st을 설정 한 경우 값 2/diary/에서 두 쿠키는 그 자체에 존재합니다. / 디렉토리 (또는 의 서브 디렉토리가 /diary/이 아니거나 서브 디렉토리가 /diary/이 아닌 경우)의 값은 1입니다.

Directory   Cookie Value 
/     1 
/somedir/    1 
/diary/    2 
/diary/subdir   2 
/somedir/diary/  1 


  • 동일한 범위에 두 번 같은 쿠키를 설정할 수 있지만 나중에 값은 다음과 같습니다 당신이 /diary/에 있거나하면 /diary/의 하위 디렉토리는 경우 2 될 것입니다 effective - 나중 값이 이전 값보다 우선합니다. 예를 들어

:

당신이 키 헤더를 볼 수 PHP에 의해 전송되는 HTTP 응답 메시지를 보면
setcookie('st',1); // st is now 1 for the current path 
setcookie('st',2); // st is now 2 for the current path 

.그러나 쿠키 범위 내의 다음 요청에서는 나중에 값 2 만 서버로 다시 보냅니다.

+0

이 게시물에 "쿠키가 조금 이상 할 수 있습니다."대신 "쿠키가 조금 이상 할 수 있습니다."라고 +1하시면됩니다. +1 – CD001

1

쿠키 될 수 조금 이상한 - 당신이 매개 변수의 이상을 설정하면 그것은 일 ... 시도해야합니다 :

setcookie('st', "{$todays_system_date}", 0, '/', '.yourdomain.ext'); 
setcookie('en', "{$tomorrow}", 0, '/', '.yourdomain.ext'); 

그것은 이후의 쿠키 것을 수 있습니다 복제로 이어지는 다른 경로 또는 도메인으로 설정됩니다.

n.b. '.yourdomain.ext' (도메인 앞의.에주의하십시오)을 사용하면 사이트의 모든 하위 도메인을 통해 쿠키에 액세스 할 수 있으므로 www.yourdomain.ext 또는 badger.yourdomain.ext 등의 쿠키를 사용할 수 있습니다.

은 더 자세한 정보는 아래를 참조하십시오 http://uk3.php.net/manual/en/function.setcookie.php