当我试图在我的一个控制器中设置Codeigniter(PHP)会话时,如果已经设置了另一个会话,它就不会设置。
总共设置了3个会话,我试图将另一个会话设置为未设置,并假设销毁一个已设置的3个会话然后设置try会话。
问题出在哪里?我试过了,但没有找到任何解决方案。
这是我设置的会话数组:
[session_id] => 8ba811200928e06710e970335a7498ea
[ip_address] => 192.168.0.17
[user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
[last_activity] => 1435730720
[lead_db_session] => Array
(
/* Session array */
)
[livewire_lead_user_session] => Array
(
/* Session array */
)
[property_details_sortsearchpage_data] => Array
(
/* Session array */
)
现在我尝试设置另一个会话。
$data
是我的会话值数组。
$this->session->set_userdata('valuation_session', $data);
但是无论如何都没有设置这个(valuation_session
)会话。如果我破坏了任何一个设置的会话,那么上面的会话就被设置了。我一次只能设置3个会话。
较早的CodeIgniter版本(3.0之前)将所有会话数据存储在cookie中,cookie的大小限制为4KB-这是协议限制,不能更改。
根据描述判断,您的lead_db_session
、livewire_lead_user_session
和property_details_sortsearchpage_data
相当大,当您将更多数据放在它们旁边时,您的cookie超过了4KB大小限制,无法发送。
你可以也应该做两件事(两者都有):
- 升级到CodeIgniter 3,它只在cookie中放入一个小ID,而实际数据存储在您的服务器上
- 不要在会话变量中放入如此大的数组。。。这是一个暴力的解决方案,不是一个好的做法