Codeigniter falshdata中有最大长度吗?

时间:2012-08-05 21:49:16

标签: php codeigniter session error-handling

我之所以这么说是因为我想要传递给下一个视图的小愚蠢信息。所以,如果我这样做:

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的错误消息提取到我的错误处理视图中。 感谢

2 个答案:

答案 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