2012-08-05 93 views
0

我之所以这么问,就是因为我想传递给下一个观点的一个小愚蠢的消息而变得生气。所以,如果我做的:Codeigniter falshdata中是否有最大长度?

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

不,我已经看了过来并且我看不出这两个代码示例之间的区别,它是不是像[魔眼](http://en.wikipedia.org/wiki/Magic_Eye)呢?我什么也不能做。 .. *编辑*等等我现在看到它,它只是一个任意的数据差异。所以我的猜测是这个问题的答案是“不,这个问题可能存在于这个单一的现实中te。“ - 虽然为什么这会导致基于上述代码的问题,我不知道。 – DaveRandom 2012-08-05 21:53:56

+0

好吧,差异只是$ message ['flashError'] [$ row] ['test']变量中的几个字母。它显然来自这里,因为当我有一个小的变量时,它的工作原理和时间超过20个字符左右,它不工作.. – 2012-08-05 22:47:54

回答

1

我有很多与会话的问题(实质上cookies by default在Codeigniter中,除非你存储在数据库中)。会话大小(或cookie的大小)取决于浏览器,但我认为规范是3k左右 - 所以不会处理你打算做的事情。

我不太确定将会话详细信息存储在数据库中,因此添加了native sessions library,它已经变得更容易(并且更少错误)。你仍然可以在这个库中使用CI flashdata特性(以及设置会话数据,例如$ this-> session-> set_userdata('foo',$ foo),但它可以让你像使用原生PHP一样使用会话即你可以的print_r($ _ SESSION) - 我不认为你可以在CI与默认会话功能做

这里有一些更多的信息,一个帖子:CodeIgniter sessions vs PHP sessions

2

在Codeigniter中,整个会话数据的一般大小是有限的,是的。这也包括闪光消息。

这是因为默认情况下它适用于Cookie和Cookie的大小有限。

防止这种情况的简单方法是使用基于数据库的会话或其中一个PHP本机会话适配器。

+0

是的,但我的会议不是那么大,我可能有20会话vriables ,所有人都在争论少量的信息。在CI中是否有基于本机数据库的会话? – 2012-08-05 22:49:26

+0

是的,您可以使用会话配置启用基于数据库的会话。有关会议,请参阅Codeiginiter用户指南,http://codeigniter.com/user_guide/libraries/sessions.html – hakre 2012-08-05 23:08:11