【问题标题】:Compare cookie on site load比较网站负载上的 cookie
【发布时间】:2012-08-20 05:21:52
【问题描述】:

我正在使用 Code Igniter,并且正在实现记住用户功能。

基本上,从另一个堆栈溢出帖子中,我以正确的方式实现了这一点,即为该用户生成随机字符串,将其保存在数据库和 cookie 中。在站点加载时,我检查该 cookie,如果找到该 cookie,我将在数据库中检查它。如果在数据库中找到它,则为该用户重新创建会话。

我遇到的问题是加载网站时。我得到了 cookie 的值,也得到了 AJAX 调用的正确响应。但是,我必须单击一个链接才能重新创建会话(例如为登录用户显示菜单等)。

我想在调用主控制器的 index 方法之后重新创建会话。如何在 Code Igniter 中解决这个问题?我在哪里可以把这个最好在每个页面上运行的代码放在哪里?例如,如果用户进入网站的联系我们页面而不是主页,我还想重新创建会话。

非常感谢。

【问题讨论】:

    标签: php codeigniter cookies


    【解决方案1】:

    CodeIgniter 允许开发人员创建在调用控制器方法之前的不同时刻调用的钩子。

    下面是如何使用钩子的简短描述:

    http://codeigniter.com/user_guide/general/hooks.html

    如果你想访问会话,我建议使用post_controller_constructor 钩子,它在控制器构造函数执行后、action 方法被调用之前调用。 (access the CI session in a pre controller codeigniter hook)

    【讨论】:

    • 感谢您的帮助,我设法让它工作了。然而,cookie的值仍然没有在站点加载时被读取,但是在我点击其他链接之后。任何想法为什么会发生这种情况?如果 cookie 存储在客户端的机器上,如果我没记错的话,PHP 应该能够在站点加载时获取它。
    • 它应该在站点加载时加载可用的 cookie。您可以使用Firebug 或一些工具来检查标题并尝试查找更多信息。另外,如果您使用 CI cookie 库,您可以尝试使用常规 PHP 函数进行测试,看看是否有效。
    • 没关系它完美无缺。问题是我使用我的无 IP 地址从任何地方访问该站点,但它仍在本地主机上。因此,当通过 localhost 访问它时,它不起作用。一旦我点击一个链接,我就会被重定向到存在 cookie 的实际无 IP URL。基本上,如果我不使用 localhost,它可以完美运行。赞一个!
    猜你喜欢
    • 2010-10-21
    • 1970-01-01
    • 2012-10-05
    • 2013-12-30
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多