【问题标题】:Codeigniter - Session variables mysteriously disappearingCodeigniter - 会话变量神秘消失
【发布时间】:2012-12-02 03:17:13
【问题描述】:

我正在使用 Codeigniter 2.1.0 和 CI_session 进行会话处理。

我认为这是

  1. 页面 A 使用 $this->session->set_userdata() 在会话中设置一些变量。
  2. 页面 A 重定向到页面 B
  3. 页面 B 应保留页面 A 中设置的会话变量。

这就是发生在我身上的事

  1. 页面 A 使用 $this->session->set_userdata() 在会话中设置一些变量。
  2. 页面 A 重定向到页面 B
  3. 页面 B 不保留页面 A 中设置的会话变量。

我在页面 A 中有代码,用于在重定向到页面 B 之前将 $this->session->userdata 的内容保存并记录在日志中。日志显示会话中设置的值存在。

但是,在页面 B 上的 $this->session->userdata 上使用 var_dump() 表明这些值不存在。

我真的不知道这是怎么回事。我已经仔细检查了我没有取消设置页面 B 中的值。就像 CI_Session 以某种方式在幕后取消了它们。

有什么想法吗?

编辑:是的,我正在使用数据库来保存会话数据。字段类型为 TEXT。

【问题讨论】:

  • 您是否将会话数据保存到数据库...如果不尝试将会话数据保存到数据库...$config['sess_use_database'] = TRUE;.. 并检查...
  • 所有浏览器都会出现这种情况吗?
  • 都是会话数据吗?或者只是其中的一部分?如果您的会话数据超出了 cookie 限制的大小,则不会全部传递。如果您还没有,请尝试将它们保存到数据库中。
  • @bipen 我已经更新了我的问题来回答你的问题
  • @ShayanHusaini 是的。所有浏览器都会发生这种情况。

标签: codeigniter session codeigniter-2


【解决方案1】:

根据我对网络的了解,cookie 和会话存储在客户端计算机中,而不是服务器中。所以 HTTP 基本上将 cookie 和会话添加到您的请求标头并发送请求。

但在这种情况下,您正在设置会话,然后从服务器中的同一页面重定向。普通 PHP 可能会以不同方式处理此问题,但 codeIgniter 不使用原生 PHP 会话。 (参考http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

这是我的猜测。但是如果我看看你的代码会很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-18
    • 2015-02-23
    • 2012-09-02
    • 2014-06-05
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多