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