2

nettuts による CI を使用した「ショッピング カートの作成」チュートリアルに従っています。最初の5分すら入っていないし、問題が発生している。

セッション システムが機能しておらず、データが渡されていないようです。いくつか読んだところ、CIは通常のphpセッションを使用せず、セッションIDを識別子として使用してデータベースに保存していることがわかります。

それで、すべてのデータベース設定が正しいことを確認し、見つけたスタックの回答に従ってセッションテーブルとフィールドを設定しました。CI がセッション テーブルにデータを書き込んで保存しているのがわかりますが、カートはページ全体にアイテムを保持していません。

オートローディングしています

    $autoload['libraries'] = array('database', 'cart');
    $autoload['helper'] = array('form', 'html', 'url'); 

これを設定しました

    $config['encryption_key'] = ''; 

^ 私の暗号化キーは文字と数字で構成されていますが、それを使用しても問題ありません。

これがfalseに設定されているのを見たので、trueに設定しました

    $config['sess_use_database'] = TRUE; 

これがカートコントローラーの始まりです…</p>

     class Dazcart extends CI_Controller

      {
       //adds item to shopping cart

       function Addtocart() 
        {
         $item = array(
             'id' => '42',
             'name' => 'Octane Lean Build Fast',
             'qty' => 1,
             'price' => 347,
             'options' => array ('flavor' => 'chocolate')
            );

         $return = $this->cart->insert($item);
         echo "<pre>";
         print_r($this->cart->contents());
         echo "</pre>";
        }


       function Showcart()
           {
         $cartcontents = $this->cart->contents(); 
         echo "<pre>";
         print_r($cartcontents);
         echo "</pre>";

        }




      }  

/Dazcart/Addtocart をロードするたびに、print_r ステートメントを介してアイテムがカートに正常に保存されたことを確認します。

しかし、/dazcart/Showcart をロードすると、print_r ステートメントは空の配列を表示するだけで、セッションを介してデータが渡されていないことがわかります。>: (

これが初心者のものであることは知っていますが、今では何時間も費やしており、Code Igniter は初めてです。これを理解して先に進みたいので、もっと学び、サイトを立ち上げて実行できるようにします. #欲求不満

あなたの助けに感謝。

アップデート:

確かにここに設定ファイルの私のセッション設定があります

    $config['sess_cookie_name']     = 'cisession';
    $config['sess_expiration']      = 7200;
    $config['sess_expire_on_close'] = FALSE;
    $config['sess_encrypt_cookie']  = FALSE;
    $config['sess_use_database']    = TRUE;
    $config['sess_table_name']      = 'ci_sessions';
    $config['sess_match_ip']        = FALSE;
    $config['sess_match_useragent'] = TRUE;
    $config['sess_time_to_update']  = 300;

$config['sess_use_database'] が最初は false であることに気付きました。これを true に設定しました。

CI が通常の php セッションを使用しない場合、セッション ダンプを行うにはどうすればよいですか?

4

1 に答える 1