我之所以这么说是因为我想要传递给下一个视图的小愚蠢信息。所以,如果我这样做:
if(!$this->paypal_pro->APICallSuccessful($PayPalResult['ACK']))
{
var_dump($PayPalResult['ERRORS']);
$message=array();
foreach ($PayPalResult['ERRORS'] as $row => $error){
// $message['flashError'][$row]['L_SHORTMESSAGE'] = $error['L_SHORTMESSAGE'];
$message['flashError'][$row]['test'] = "The Session class permits you maintain a user's";
// $message['flashError'][$row]['L_ERRORCODE'] = $error['L_ERRORCODE'];
// $message['flashError'][$row]['L_LONGMESSAGE'] = $error['L_LONGMESSAGE'];
}
// print_r($message);
$this->session->set_flashdata($message);
redirect('main/Form');
}
效果很好,但如果我这样做:
if(!$this->paypal_pro->APICallSuccessful($PayPalResult['ACK']))
{
var_dump($PayPalResult['ERRORS']);
$message=array();
foreach ($PayPalResult['ERRORS'] as $row => $error){
// $message['flashError'][$row]['L_SHORTMESSAGE'] = $error['L_SHORTMESSAGE'];
$message['flashError'][$row]['test'] = "The Session class permits you maintain a user's and track their activity while";
// $message['flashError'][$row]['L_ERRORCODE'] = $error['L_ERRORCODE'];
// $message['flashError'][$row]['L_LONGMESSAGE'] = $error['L_LONGMESSAGE'];
}
// print_r($message);
$this->session->set_flashdata($message);
redirect('main/Form');
}
它不起作用。
我在这里以主/表格显示falshdata:
<?php if($this->session->flashdata('flashError')):?>
<div class='flashError'>
<?php
print_r($this->session->flashdata('flashError'));
?>
</div>
<?php endif?>
您可以猜测我正在尝试将Payal的错误消息提取到我的错误处理视图中。 感谢
答案 0 :(得分:2)
在Codeigniter中,整个会话数据的一般大小是有限的,是的。这也包括flash消息。
这是因为默认情况下它适用于Cookie,而Cookie的大小有限。
防止这种情况的简单方法是使用基于数据库的会话或其中一个PHP本机会话适配器。
答案 1 :(得分:1)
我在会话中遇到了很多问题(在Codeigniter中基本上是cookies by default,除非您存储在数据库中)。会话大小(或cookie大小)取决于浏览器,但我认为规范大约是3k - 所以不会处理你提议做的事情。
我不太确定在数据库中存储会话详细信息,因此添加了native sessions library并且它更容易(并且更少的错误)。您仍然可以在此库中使用CI flashdata功能(以及设置会话数据,如$ this-&gt; session-&gt; set_userdata('foo',$ foo),但它允许您像使用时一样使用会话本机PHP即你可以print_r($ _ SESSION) - 我认为你不能用CI中的默认会话功能。
这是一篇包含更多信息的帖子:CodeIgniter sessions vs PHP sessions