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

时间:2015-07-01 06:32:20

标签: php codeigniter session

当我尝试在我的某个控制器中设置Codeigniter(PHP)会话时,如果已经设置了另一个会话,则不会设置它。

总共3个会话集,我试图设置另一个未设置的会话,并假设销毁一个已设置的会话3然后尝试会话设置。

问题是什么?我试过但没有找到任何解决方案。

这是我的会话数组:

[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个会话。

1 个答案:

答案 0 :(得分:0)

较早的CodeIgniter版本(3.0之前版本)将会话数据的所有存储在cookie中,其大小限制为4KB - 这是协议限制,无法更改。

根据说明判断,您的lead_db_sessionlivewire_lead_user_sessionproperty_details_sortsearchpage_data相当大,当您将更多数据放在一起时,您的Cookie超出了4KB大小限制且无法发送。

你可以而且应该做两件事(两者都是):

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