【问题标题】:Can't get cookie expiration to set无法设置 cookie 过期时间
【发布时间】:2014-05-02 06:20:50
【问题描述】:

无法设置 cookie 过期时间

我正在使用 php 在 wordpress 网站上设置 cookie,但是由于每次加载页面时都会显示内容而不是仅在用户第一次访问该网站时显示(过期一次),因此有点困难一天)。

如果这很明显,请原谅我,我还在学习;)

这是函数,我的functions.php页面中有这个:

function set_newuser_cookie() {
    if ( !is_admin() && !isset($_COOKIE['jtc_newvisitor'])) {
        setcookie('jtc_newvisitor', 1, time()+60*60*24, COOKIEPATH, COOKIE_DOMAIN, false);
    }
}
add_action( 'init', 'set_newuser_cookie');

我是这样称呼它的:

<?php if (isset($_COOKIE['jtc_newvisitor'])) { ?>
    <div id="modal-notices">content</div>
<?php } else { } ?>

这是我的 js,我用来在页面加载时显示内容:

$(window).load(function(){
    $('#modal-notices').modal('show');
});

如果用户在 24 小时内第一次访问该页面,我希望加载内容,但到目前为止,它只是每次都加载。

如果有人能在这里指出正确的方向或解释我做错了什么,将不胜感激。

谢谢!

【问题讨论】:

  • 您是否检查以确保设置了 cookie?我也不清楚你想要的结果是什么。您希望 ID 为 modal-notices 的 div 仅在第一次访问时输出,还是在第二次及后续访问时输出?
  • 谢谢@vvanasten 我希望表单只在第一次出现。如何检查 cookie 是否已设置?
  • 在每个浏览器上检查 cookie 的方式都不同,try this resource。看起来您仅在 cookie 存在时才显示 modal-notices div (if (isset($_COOKIE['jtc_newvisitor'])))。尝试将isset 更改为!isset
  • 谢谢@vvanasten 就是这样!如果您想将其作为答案,我可以接受。
  • 谢谢 - @vvanasten 已经回答了这个问题,尽管在评论中。

标签: javascript php wordpress cookies


【解决方案1】:

看起来您正在检查 cookie 是否已设置,而不是未设置。试试这个作为你的 if 声明:

if (!isset($_COOKIE['jtc_newvisitor']))

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多