1

CodeIgniter v2.1.3 を使用していますが、CI Cart と Session の使用に問題があります。要素をカートに挿入すると、すべてうまくいきました。しかし、ページを更新すると、保存されていたカートのアイテムがすべて消えてしまいました。Session Class を使用すると、同じ問題が発生しました。

しかし、すべてが私のローカルホストでうまく機能します。私のサーバーで問題が発生しました。

現在、私のサーバーにはいくつかの Web サイトがあり、セッションに問題はありません。したがって、CIが原因であるに違いないと思います。

application/config/config.php のセッション構成は次のとおりです。

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

session_id を出力しようとしましたが、何も返されませんでした。したがって、Session クラスは session_id を生成しなかったと思います。session_start() を使用して手動でセッションを開始しようとすると、session_id が生成されました。

また、$_SESSION を使用して何かを保存しようとしましたが、問題なく保存されます。

CI_Session と Cart ライブラリが自動ロードされなかったということですか?

どうすれば修正できますか?または、現在のものを置き換えることができる Session クラスはありますか?

PS: 私のサーバーは CentOS 5、PHP v 5.2.17、Apache 2.2.23、および MySQL 5.0.96 を実行しています。

更新しました

以下は、コントローラーでアイテムをカートに追加するために使用する関数です。データ ($params) は、AJAX 要求 (jquery AJAX を使用) を介して投稿されます。返されるデータは HTML ビューです。

public function add_to_cart(){
        $this->layout->set_template('ajax');
        if ($this->is_post()){
            $params = $this->get_all_post_data();
            //Debug::dump($this->cart);die;
            if (isset($params['id']) && (int)$params['id']>0){
                $product = $this->_product_model->get_record_by_id((int)$params['id']);
                if (!is_null($product)){
                    if (count($this->cart->contents())>0){
                        foreach ($this->cart->contents() as $item){
                            if ($item['id']==$product->id){
                                $data = array('rowid'=>$item['rowid'],'qty'=>++$item['qty']);
                                $this->cart->update($data);
                            }else{
                                $data = array('id'=>$product->id,'qty'=>1,'price'=>$product->price,'name'=>$product->id,'options'=>array('image'=>$product->thumb,'product_name'=>$product->title));
                                $this->cart->insert($data);
                            }
                        }
                    }else{
                        $data = array('id'=>$product->id,'qty'=>1,'price'=>$product->price,'name'=>$product->id,'options'=>array('image'=>$product->thumb,'product_name'=>$product->title));
                        $this->cart->insert($data);
                    }
                    $this->session->set_userdata(array('test'=>'Session test'));

                    $this->layout->load('cart/topmenu_cart', $this->data);
                }
            }
        }
    }
4

1 に答える 1