如果设置了另一个会话,则未设置其中一个Codeigniter会话


One of Codeigniter session is not set if another session is set

当我试图在我的一个控制器中设置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_sessionlivewire_lead_user_sessionproperty_details_sortsearchpage_data相当大,当您将更多数据放在它们旁边时,您的cookie超过了4KB大小限制,无法发送。

你可以也应该做两件事(两者都有):

  • 升级到CodeIgniter 3,它只在cookie中放入一个小ID,而实际数据存储在您的服务器上
  • 不要在会话变量中放入如此大的数组。。。这是一个暴力的解决方案,不是一个好的做法