2012-01-17 16 views
5

Tôi đang sử dụng Codeigniter và Auth Tank cho trang web thương mại điện tử. Tôi thấy rằng nếu một khách hàng đặt hàng vào giỏ hàng (sử dụng Codeigniter được xây dựng trong giỏ hàng) và sau đó đăng ký trên trang web, phiên bị mất cùng với giỏ hàng của họ (tôi cho rằng nó tạo phiên mới vì lý do nào đó thay thế giữ cùng một phiên).Cách giữ dữ liệu phiên bằng Codeigniter và Tank Auth

Có ai gặp vấn đề này trước đây không? và có một giải pháp đơn giản mà tôi đã bỏ qua.

Cảm ơn

+0

Được thăng hạng, bởi vì tôi mệt mỏi khi thấy các trang web làm điều đó –

Trả lời

3

Theo như mã mới nhất có vẻ như, nơi duy nhất phiên lỗ sẽ bị xóa là trong logout() chức năng, Tank_auth.php Dòng 118: https://github.com/ilkon/Tank-Auth/blob/master/application/libraries/Tank_auth.php#L118

Ví dụ sử dụng xe tăng Auth sử dụng logout() trong activate()reset_email() - kiểm tra mã của bạn để biết các phương pháp đó. Bạn cũng có thể thay đổi chức năng đăng xuất Tank Auth thành một cái gì đó như thế này:

function logout($keep_session = false) 
{ 
    $this->delete_autologin(); 

    // See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line 
    $this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => '')); 

    if(!$keep_session) 
     $this->ci->session->sess_destroy(); 
} 

... và sử dụng nó như thế này: $ this-> tankauth-> logout (true);

+0

Ahhh vâng, tôi đã bỏ lỡ câu trả lời này hoàn hảo! Mã bổ sung là một trợ giúp tuyệt vời. Cảm ơn bạn rất nhiều !! – BlueFox

+0

Lưu ý thêm cho điều này, nên thiết lập của userdata cũng là bên trong của câu lệnh IF? Vì nó là tại thời điểm nó sẽ unset dữ liệu phiên quan trọng – BlueFox

+0

Trong thực tế, tôi đã loại bỏ chức năng đăng xuất hoàn toàn từ auth.php Line 310 [link] (https://github.com/ilkon/Tank-Auth/blob/master/application/controllers/auth.php#L310) Thử nghiệm và thử nghiệm các công trình tuyệt vời – BlueFox