2012-05-22 5 views
0
<?php 
    setcookie("name", "abc"); 
    echo $_COOKIE["name"]; 
?> 

이 페이지를 새로 고침하면 화면에 아무 것도 표시되지 않습니다. 왜?PHP - setcookie가 적용되지 않습니다.

다시로드하면 abc가 표시됩니다.

왜?

+2

두 번째로 페이지를로드하거나 세 번째로로드 할 때 처음 표시됩니까? – robert

+1

가능한 [동일한 페이지에 PHP 쿠키를 설정할 수 없습니다] (http://stackoverflow.com/questions/7455214/cant-set-php-cookie-on-the-same-page) –

답변

11

쿠키를 설정하면 다음 페이지가로드 될 때까지 쿠키를 사용할 수 없습니다.

이것은 매우 명확하게 에 있으며, 반드시 읽어보십시오. 쿠키가 설정되고 나면

는, 그들이는 $ _COOKIE 나 $ HTTP_COOKIE_VARS 배열 의 다음 페이지로드를 액세스 할 수 있습니다. $ _COOKIE와 같은 superglobals는 PHP 4.1.0에서 사용 가능합니다. 쿠키 값은 $ _REQUEST에도 존재합니다.

쿠키는 쿠키를 유효하게하기 위해 페이지의 로딩하기 전까지는 작동되지 않는다. 쿠키가 성공적으로 설정되었는지 테스트하려면 쿠키가 만료되기 전에 다음 로딩 페이지에서 쿠키를 확인하십시오. 만료 시간은 만료 매개 변수를 통해 설정됩니다. 쿠키의 존재를 디버그하는 좋은 방법은 단순히 print_r ($ _ COOKIE);를 호출하는 것입니다. 그들은 후 응답이 전송됩니다 까지 존재하지 않도록

+0

와 (과) 관련이 있습니다 HTTP 요청 헤더와 같은 것? – sc1013

+2

@Steven 쿠키가 응답으로 브라우저에 전송됩니다. '$ _COOKIE'는 요청으로부터 설정됩니다. 그래서 2 단계가 필요합니다. –

0

쿠키는 페이지의 HTTP 응답의 일부로 전송됩니다. 그래서 값을보기 위해 페이지를 다시로드해야합니다.

관련 문제