2012-08-05 2 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) 또는 그와 비슷한 것인가? 나는 결코 그런 것들을 할 수 없다. .. * 편집 * 오, 잠깐. 지금은 그것을 볼 수 있습니다. 그것은 단지 임의의 데이터 차이입니다. 그래서 내 추측은 질문에 대한 대답은 "아니오, 그 문제는 아마도 그 단일 한두 어딘가에있을 것입니다 테 ". - 왜 이것이 위의 코드를 기반으로하는 문제를 일으킬 지 모르지만 나는 잘 모른다. – DaveRandom

+0

글쎄, 차이점은 $ message [ 'flashError'] [$ row] [ 'test'] 변수에있는 문자가 거의 없다는 것입니다. 그리고 그것은 분명히 여기에서 온다. 왜냐하면 작은 변수가있을 때부터 20 글자가 넘을 때 작동하지 않는다. –

답변

1

세션에 많은 문제가있었습니다 (db에 저장하지 않는 한 Codeigniter에서는 본질적으로 cookies by default입니다). 세션 크기 (또는 쿠키 크기)는 브라우저에 따라 다르지만 표준은 3k 정도라고 생각합니다. 그래서 당신이 제안한 것을 처리하지 못합니다.

나는 세션 세부 정보를 db에 저장하는 것에 대해 확신하지 못했기 때문에 native sessions library을 추가했으며 훨씬 쉽고 (덜 버그가 있음). 이 라이브러리 ($ this-> session-> set_userdata ('foo', $ foo)와 같은 세션 데이터 설정은 물론 CI 플래시 데이터 기능을 사용할 수도 있지만 네이티브 PHP를 사용하는 것처럼 세션을 사용할 수 있습니다 즉, 당신은 ($ _ SESSION)을 print_r의 수 - 당신이 CI의 기본 세션 기능을 할 수 있다고 생각하지 않는 다음

는 좀 더 많은 정보와 함께 포스트 :. CodeIgniter sessions vs PHP sessions

2

Codeigniter에서 전체 세션 데이터의 일반적인 크기는 제한되어 있습니다 (예). 플래시 메시지도 포함됩니다.

기본적으로 쿠키와 함께 작동하며 쿠키의 크기가 제한되어 있기 때문입니다.

쉽게 방지 할 수있는 방법은 데이터베이스 기반 세션이나 PHP 원시 세션 어댑터 중 하나를 사용하는 것입니다.

+0

그래도 내 세션이 그리 크지는 않지만, 20 세션 vriables , 모두 작은 양의 정보를 수렴합니다. CI에서 원시 데이터베이스 기반 세션이 있습니까? –

+0

예 세션 구성을 사용하여 데이터베이스 기반 세션을 사용할 수 있습니다. 세션에 대한 Codeiginiter 사용자 가이드, http://codeigniter.com/user_guide/libraries/sessions.html을 참조하십시오. – hakre

관련 문제