Codeigniter - 会话变量神秘消失

4
我正在使用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中编写了代码,将 $this->session->userdata 的内容保存并记录到日志中,然后重定向到页面B。日志显示在会话中设置的值存在。
但是,在页面B上使用 var_dump() 对 $this->session->userdata 进行检查时,发现这些值不存在。
我不知道这可能是什么原因。我已经仔细检查过,在页面B中没有取消设置值。就像CI_Session在幕后某种方式上取消设置它们一样。
有任何想法吗?
编辑:是的,我正在使用数据库保存会话数据。字段类型为TEXT。

你是否将会话数据保存到数据库中?如果没有,请尝试将会话数据保存到数据库中... $config['sess_use_database'] = TRUE;...然后检查一下... - bipen
它发生在所有浏览器中吗? - Code Prank
当您加载页面A时,您的数据库会话数据表是否发生任何更改? - Sergey Telshevsky
你在使用Ajax调用后是否正在使用JS重定向页面? - damko
展示你的代码,也许你错了什么。 - itsme
显示剩余10条评论
1个回答

1
据我所了解,网络中的 cookies 和 sessions 存储在客户端机器上而不是服务器上。因此,HTTP 基本上会将 cookies 和 sessions 添加到您的请求头并发送请求。
但在这种情况下,您正在设置会话,然后从同一页面在服务器上进行重定向。普通的 PHP 可能会以不同的方式处理此问题,但 CodeIgniter 不使用原生的 PHP 会话。(请参阅 http://ellislab.com/codeigniter/user-guide/libraries/sessions.html
这是我的猜测。但如果我看一下您的代码会更有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接