【发布时间】:2018-04-04 05:31:41
【问题描述】:
我有一个方法可以检索之前在方法中创建的会话。此方法从 AJAX 调用,类似于:
public function Confirmar() {
print_r($this->session->userdata);
}
会话之前是通过同一控制器中的一种方法创建的,即:
public function Token($token) {
$params = array('tokenvalido' => true, 'token_de_cambio' => $token, 'user_mail' => $TokenValido->user_mail);
$this->session->set_userdata($params);
}
当我在Token 方法中创建var_dump($this->session->userdata) 时,我得到了这个响应:
Array ( [__ci_last_regenerate] => 1522819707 [tokenvalido] => 1 [token_de_cambio] => 5ac44d3e7dc5cd0d11e2edbdb34ae13f05d60c3b64978 [user_mail] => babasonicofernando@gmail.com )
但是当我调用 Confirmar() 方法(存在于我创建会话的同一控制器中)时,它显示的是一个空数组。
我做错了什么?
【问题讨论】:
-
你不要在
Comfirmar中调用$param。你试过使用$this->session->set_userdata($params);吗?或者您可以将其作为控制器中的公共变量放入构造函数中。 -
嗨。我编辑了我的问题,修改了我在 var_dump 响应中得到的内容
-
Tbh 我以前听说过这个问题(几周前在堆栈上两次 - 类似的问题)并且 真的 真的很难找出根本原因这不是一个普遍的问题。我建议尝试将您的会话保存在数据库中,看看是否可以缓解问题。您也可以尝试更改会话 cookie 名称。由于某种原因,我还听说过 AJAX 发挥了作用,但据说这在 CI 3.0 中已修复。奇怪的问题,你试过不同的浏览器吗?
-
感谢您的回答。我还没有在其他浏览器中尝试过,但我会的。所以,我也会尝试将会话保存在表格中的解决方案,我希望它有效。
标签: php codeigniter session codeigniter-3