2014-02-25 3 views
0

그래서 여기에 쿠키를 설정하고 있습니다. 그들은 파이어 폭스 개인 정보 보호에 관한 일을 할 때부터 완전히 일하고 있습니다. 나는 그 쿠키와 그 가치를 볼 수 있습니다. 그러나 그걸 읽으려고하거나 순간을 되풀이하려고 할 때, 항상 빈 결과를 내고 있습니다 ...PHP 쿠키는 액세스하려고 할 때 항상 비어 있습니다.

저는 Wordpress를 사용하고 있습니다. 버튼 클릭으로 아약스 요청으로 setcookie를 호출합니다. 여기에 나는 여기에서 그것을 할 방법 :

이 스크립트는 PHP 파일 list.php 내부 templateDirectory/JS

$('.bucket-list').on("click", function() { 

    $.ajax({ 
     url: templateDir + '/js/list.php' 
    }); 

안에, 우리는이 있습니다로 여기까지

setcookie("displaymode", "list" , time() + 3600 * 24 * 30); 

를 내가 내 브라우저에서 쿠키를 볼 수 있다고했지만, 전화를 걸면 다음과 같이 빈 결과를 계속 표시합니다.

if ($_COOKIE["displaymode"] == "list") 
     echo '<div class="class1">' ; 
     else { 
     echo '<div class="class2">' ; 
     echo '<script>'; 
     echo 'alert('.$_COOKIE["displaymode"].')'; 
     echo '</script>'; 
     } 
?> 

이 스크립트는 templateDirectory의 메인 파일 (homepage.php)에 있습니다. 어떤 도움이 될 것이며 크게 감사하겠습니다.

+0

아약스 호출이 실행되기 전에 페이지가 처음로드 될 때'if ($ _ COOKIE ...)'코드가 작동 할 것으로 기대하십니까? –

답변

2

쿠키가 예상 경로에 설정되어 있는지 확인하십시오.

은 당신의 스크립트가 된 경우 :

/templates/MyTemplate/js/list.php 

쿠키는 경로 /templates/MyTemplate/js/ 설정됩니다. 일반적인 함정에 PHP documentation에서

setcookie("displaymode", "list", time() + 3600 * 24 * 30, "/"); 
             set path to "/" --^ 
+0

고마워요. 제 문제에 대한 올바른 대답이었습니다. 나는 쿠키가 웹 사이트의 모든 것에 사용되었지만 모든 것을 알지 못하기 때문에 나쁘다! – Stacknerd

1

동일한 페이지에서 쿠키를 설정하고 호출 할 수 없습니다. 그 사이에 페이지로드가 있어야합니다. 그렇기 때문에 사람들은 동일한 페이지에서 설정하고 호출 할 수있는 세션쪽으로 끌리는 경향이 있습니다. 세션 데이터는 쿠키에 저장되지 않습니다.

+0

그것이 내가 찾던 것이 아니었지만, 이것은 내가 알기에 중요한 정보이며,이 사실을 나에게 알려 주셔서 감사합니다. 나는 그것을주의 깊게 지킬 것이고, 도와 줘서 고맙다! – Stacknerd

0

:

전체 도메인 사용을 위해 쿠키를 설정하려면

쿠키 페이지의 로딩하기 전까지는 작동되지 않는다 쿠키가해야 눈에 보이다. 쿠키가 성공적으로 설정되었는지 테스트하려면 쿠키가 만료되기 전에 다음 로딩 페이지에서 쿠키를 확인하십시오.

관련 문제