2012-09-21 2 views
0
내가 PHP에서 쿠키의 사용을 이해하는 어려움에 직면하고있다

, 다음과 같은 코드PHP - 쿠키의 작업은

public function preExecute() { 

setcookie("testCookie", "Hello123", time() + 31536000, "/", WebServer::getServerName()); 
echo "Before Value of cookine in decommission::".$_COOKIE["testCookie"]; 
setcookie("testCookie", "Hello456", time() + 31536000, "/", WebServer::getServerName()); 
echo "After Value of cookine in decommission::".$_COOKIE["testCookie"]; 
} 

내가 전에이 코드

에 대해 기대하고 출력을 고려하시기 바랍니다 서비스 해제에 cookine의 가치 후 서비스 해제 :: Hello123

에서 cookine의 가치 :: Hello456

하지만 위의 코드에 대해 무엇입니까 출력은 서비스 해제 :: Hello456

에 cookine의 가치 후 서비스 해제 :: Hello456

에 cookine의 가치 전에

입니다 누군가가 저에게 일을 설명하고, 인터넷에서 사용할 수있는 자원을 통해 갔지만 여전히 명확하지 않다면 감사 할 것입니다.

미리 감사드립니다.

답변

3

$_COOKIE은 현재 요청에 수신 된 쿠키가 입니다. 응답시 쿠키를 설정하기 위해 setcookie으로 전화하면 자동으로 업데이트되지 않습니다. setcookie을 통해 설정 한 쿠키는 쿠키가 서버로 다시 전송 될 때 다음 요청의 $_COOKIE에만 표시됩니다.

그래서 두 번째 쿠키가 첫 번째 쿠키를 덮어 쓰게되므로 나중에 값만 서버로 다시 보내집니다. 이미 여러 번 페이지를 새로 고쳐서 쿠키를 보았을 것입니다. 쿠키를 청소하고 다시 실행하면 첫 번째로이 표시됩니다. setcookie 번 호출에 관계없이 $_COOKIE은 비어 있으며 전체 요청에 대해 비어 있기 때문에 어떤 출력도 표시되지 않습니다.

+0

고맙다 deceze, 잘 말한 .. 귀하의 explaination 주셔서 감사합니다 Logged –

0

이 사용을 변경하지 않으려면 세션을 사용하십시오. $ _SESSION은 전역 배열입니다. 어디에서나 (클래스, 기능 내부) 어디에서나 접근하고 즉시 사용할 수 있습니다 (다음 요청/페이지로드를 기다릴 필요 없음).