2012-08-05 94 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