尝试访问PHP时,PHP Cookie始终为空

时间:2014-02-25 23:38:10

标签: javascript php jquery wordpress cookies

所以我在这里设置cookie。他们完全正常工作,因为当我进入我的firefox隐私事物时,我可以看到那里的cookie及其价值,但是当我试图阅读它或回应它时,它总是给我一个空白的结果... < / p>

我正在使用Wordpress,只需点击一下按钮就可以通过ajax请求调用setcookie。我在这里如何做到这一点:

此脚本位于templateDirectory / js

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

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

在php文件list.php中,我们有:

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

到目前为止,我说我可以在浏览器中看到cookie,但是当我尝试调用它时,它只是继续给我空白结果,如下所示:

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

这个脚本位于templateDirectory的主文件(homepage.php)中。任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:2)

确保在预期的路径上设置了cookie。

如果您的脚本位于:

/templates/MyTemplate/js/list.php

将为路径/templates/MyTemplate/js/设置Cookie。

要为整个域设置Cookie,请使用:

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

答案 1 :(得分:1)

请记住,无法在同一页面上设置和调用Cookie。您必须在两者之间加载页面。这就是人们倾向于倾向于会话的原因,这些会话可以在同一页面上设置和调用(会话数据不存储在cookie中)

答案 2 :(得分:0)

来自PHP documentation,常见的陷阱:

在下次加载可以看到Cookie的网页之前,Cookie才会显示。要测试cookie是否已成功设置,请在cookie过期前检查下一个加载页面上的cookie。