【发布时间】:2020-01-13 19:37:03
【问题描述】:
我有这两个控制器方法都设置会话数据
//Profile
public function profile()
{
$this->session->set_userdata('title', 'some_value');
}
//KYC
public function kyc()
{
$this->session->set_userdata('title', 'KYC');
$this->load->view('basic/basic_app_views/kyc');
}
我首先加载函数kyc 并在我的视图中使用会话
<title><?php echo $this->session->userdata('title'); ?></title>
然后我在浏览器中加载profile 并刷新kyc,但kyc 中的值仍然是KYC,就像我在kyc 函数中设置的那样。
为什么title 的值在另一个控制器函数中重置后仍然有KYC 的值?。
【问题讨论】:
-
在第二次设置之前尝试
unset($_SESSION['title']) -
您好,感谢您的评论。我知道我可以像你说的那样取消设置,但这就是我感兴趣的原因。会话变量是函数独有的,这就是问题所在。
-
您的个人资料方法中没有视图,因此您什么也看不到。每次加载 kyc 时,您都将标题设置为 KYC,这将始终显示在您正在使用的视图中。在您提供的代码中,仅 kyc 显示任何内容,并且标题将始终为 KYC。所以我不确定你期望发生什么?您的个人资料使用什么视图?
-
@TimBrownlaw 我正在测试一个函数中设置的会话变量是否可以修改另一个函数中的现有数据集。到目前为止,情况似乎并非如此。
-
您可以用 100 种不同的方法设置标题会话值,但是每次调用/刷新 kyc 时,标题将始终设置为 KYC,这正是代码所做的。您需要做的是检查是否已经设置了标题会话,如果是,请忽略 kyc 方法中的那个。会话变量与其他任何变量一样,但它们是“持久的”。您的测试代码完全按照您的要求执行。除非我遗漏了什么,否则我不确定您为什么会期望它有所不同。
标签: php codeigniter