2013-07-21 68 views
1

我們正在建立一個基於Codeigniter的網上商店。在Codeigniters的購物車類的幫助下,產品保存在購物車中。如何在登錄後保持會話存活(Codeigniter)

當訪問者登錄它的帳戶,它已經在其車中的所有產品都刪除,因爲一個新的會話開始,當用戶登錄。

我們如何才能讓產品在購物車在這一點上?

if($query->num_rows() == 1) 
    { 
     $user = $query->row_array(); 
     $data = array(
       'userid' => $user['id'], 
       'email' => $user['email'], 
       'validated' => true 
       ); 
     $this->session->set_userdata($data); 

     return true; 
    } 
+0

我不確定,但可以保存在臨時表中並使用user_id保存... – 2013-07-21 20:58:30

+0

這很奇怪,添加自定義會話數據不會刪除舊會話。你能證明邏輯與登錄過程有關嗎? –

+0

使用user_id很難保存它,因爲在用戶登錄之前需要進行保存。 –

回答

1

你必須在基地創建新表,像shoppingcarts,並通過在該表從圖表類的所有項目,和用戶ID,那麼當用戶登錄只是查詢該表與他的ID和ID行,現在你得到了所有products.But當用戶輪空直接刪除,在基地和取消購物車類行

$data = array(
        'id'  => 'sku_123ABC', 
        'qty'  => 1, 
        'price' => 39.95, 
        'name' => 'T-Shirt', 
        'options' => array('Size' => 'L', 'Color' => 'Red' 
        'user_id => '45') 
       ); 

    $this->cart->insert($data); 
    $chart = $this->cart->contents(); 
    $this->db->insert('shoppingcarts',$chart); 

這僅僅是簡單的例子,如何做到這一點:)

+0

我明白在數據庫中保存購物車物品的原則。但仍然認爲我沒有澄清正確的情況。問題在於,當訪問者在網站上時,購物車被清空:訪問者登錄網站(未登錄),將某些產品放入購物車(我們不知道用戶是誰),然後決定登錄(現在我們知道它是哪個用戶),並且此時購物車被清除。我如何知道哪些購物車項目屬於此用戶? –

+0

不允許用戶添加到圖表,直到他被吸引進來。 –

1

如果用戶帳戶,您需要將數據保存在數據庫中。

如果用戶沒有帳戶,並且想要保留他的圖表(基於瀏覽器),那麼在用戶關閉窗口時不需要銷燬會話。你需要保持會話,直到他清除他的圖表。你可以在config.php文件中完成。