【问题标题】:basic cookie question基本的 cookie 问题
【发布时间】:2011-05-04 13:46:40
【问题描述】:

对于某个项目,我希望在用户首次访问页面时出现一个警报/通知框,然后假设用户点击“x”关闭通知,然后它将停止出现在后续访问——我想这需要设置一个 cookie(通过 PHP),也许包含警报 div 通过 jQuery 响应 cookie 的存在或不存在?任何关于如何开始的基本方向都非常感谢......

【问题讨论】:

  • 到目前为止我什么都没有 :) 问题是(至少最初是)最好的通用方法

标签: php jquery cookies


【解决方案1】:

您可以使用浏览器端的 cookie 来做到这一点:查看 jquery cookie 插件 http://plugins.jquery.com/project/Cookie

编辑:这是我使用它的方式。

保存有用的通知会保留我的 helpfulnotices 对象,因此我不会显示任何超过应显示的有用通知。

if(!helpfulnotices.multiupload){
            helpfulnotices.multiupload = true;
            top.flicsy.notify_user(flicsy_lang.message_upload_multiple, "", true);
            self.save_helpful_notices();
        }

这是使用 jquery JSON cookie 扩展保存结构的代码:

save_helpful_notices: function()
    {
        var date = new Date();
        date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000));  // expire in a week or thereabouts
        jQuery.JSONCookie('helpfulnotices', helpfulnotices, {path: '/', expires: date });
    },

在页面加载时,我会重新水合它:

helpfulnotices = jQuery.JSONCookie('helpfulnotices');

【讨论】:

  • 嗯,所以通过这种方法,我可以单独使用 jQuery,而不使用 PHP?并通过通知,也许会在检测到 cookie 时更改 div 的可见性?
  • 是的。根本不涉及 PHP。我现在用一些浏览器“提示”来做到这一点。
  • 谢谢 Femi——你有没有偶然分享的链接,所以我可以看到你的实现?
  • 该应用程序仍在开发中,但我已经编辑了答案以包含几个代码 sn-ps。
【解决方案2】:

您应该可以使用 cookie 进行设置。但是,它并不能保证用户下次不会看到它。它也不能保证新用户会看到它(如果他们在共享计算机上)。

这些事情总是最好与“用户登录系统”结合使用,这样您就可以单独跟踪每个用户。然后您可以将设置存储在数据库中,并在后续访问时为每个用户调用设置。

【讨论】:

    【解决方案3】:

    您可以将信息保存在 cookie 中,但这意味着您将始终从客户端到服务器来回发送此 cookie。

    如果你想防止这种情况发生,你可以使用名为 localStorage 的新 HTML5 变量

    http://www.bing.com/search?q=html5+localStorage&src=ie9tr

    所以基本上,如果 localStorage 存在于浏览器中,如果它不使用 cookie 回退,则可以使用它。这将是最佳解决方案。

    【讨论】:

    • 很好,不知道这个 HTML5 功能...我会研究一下,谢谢。
    猜你喜欢
    • 2011-08-10
    • 2011-04-11
    • 2011-07-13
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多