2013-06-13 6 views
1

CodeIgniter v2.1.3을 사용하고 CI 장바구니 및 세션 사용에 문제가 있습니다. 장바구니에 요소를 삽입하면 모든 것이 잘됩니다. 그러나 페이지를 새로 고침하면 저장된 장바구니 항목이 모두 사라졌습니다. 세션 클래스를 사용할 때도 같은 문제가 발생했습니다.CodeIgniter 페이지 새로 고침시 장바구니 및 세션이 손실 됨

하지만 모든 것이 내 로컬 호스트에서 잘 작동합니다. 문제는 내 서버에서 발생합니다.

내 서버에 일부 웹 사이트가 있으며 세션에 문제가 없습니다. 그래서 그것은 CI에 의해 야기 된 것 같아요.

다음은 응용 프로그램/설정/config.php 파일에 세션 configuarations입니다 :

$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 라이브러리가 자동으로로드되지 않았습니까?

어떻게 해결할 수 있습니까? 아니면 어떤 세션 클래스가 현재 클래스를 대체 할 수 있습니까?

PS : 내 서버에 CentOS 5 실행, 5.0.96

아래는

업데이트 아파치 2.2.23와 MySQL PHP의 V 5.2.17가있다 내가 컨트롤러에서 사용하는 기능은을 추가 항목을 장바구니에 넣습니다. 데이터 ($ 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); 
       } 
      } 
     } 
    } 
+0

세션 쿠키 이름의 이름을 바꾸고 밑줄을 삭제 하시겠습니까? – tomexsans

+0

@tomexsans : 나는 그것을했지만 행운이 없었습니다 –

+0

어떻게 카트를 사용하고 있습니까? 여기에 코드를 게시하고 싶을 수도 있습니다. – tomexsans

답변

4

대신 세션 데이터를 저장하기 위해 데이터베이스를 사용해 보았습니까? 귀하의 설정을 기반으로, 귀하의 데이터가 4KB의 쿠키를 보유하기 위해 큰 것 같아요.

+1

이 답변을 많이 주셔서 감사합니다! – SomethingOn

관련 문제