0

私がそれを尋ねている理由は、次のビューに渡したい小さなばかげたメッセージに腹を立てているからです。だから私は:

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');
    }

うまくいきません。

ここでは、 main/form に falshdata を表示しています:

<?php if($this->session->flashdata('flashError')):?>
        <div class='flashError'>
    <?php   
        print_r($this->session->flashdata('flashError'));
    ?>
        </div>
    <?php endif?>

エラー処理のビューに Payal のエラー メッセージをプルしようとしていると推測できます。ありがとう

4

2 に答える 2

2

Codeigniter では、セッション データ全体の一般的なサイズは制限されています。これには、フラッシュ メッセージも含まれます。

これは、デフォルトで Cookie を使用して動作し、Cookie のサイズが制限されているためです。

これを防ぐ簡単な方法は、データベース ベースのセッションまたは PHP ネイティブ セッション アダプターのいずれかを使用することです。

于 2012-08-05T22:08:13.073 に答える
1

セッションに多くの問題がありました (データベースに保存しない限り、これは基本的に Codeigniter のデフォルトで Cookie です)。セッションのサイズ (または Cookie のサイズ) はブラウザーによって異なりますが、標準は約 3k だと思います。

セッションの詳細を db に保存する方法がよくわからなかったので、ネイティブ セッション ライブラリを追加したところ、はるかに簡単になりました (そしてバグも少なくなりました)。このライブラリで引き続き CI フラッシュデータ機能を使用できます (また、$this->session->set_userdata('foo', $foo) のようにセッション データを設定することもできますが、ネイティブ PHP を使用していたのと同じようにセッションを使用できます)。つまり、print_r($_SESSION) を実行できます。これは、CI のデフォルトのセッション機能では実行できないと思います。

詳細については、次の投稿を参照してください: CodeIgniter セッションと PHP セッション

于 2012-08-06T09:29:33.817 に答える