Tôi làm theo các câu trả lời từ đây nhưng nó đã không làm việc cho tôi:
Is possible to keep session even after the browser is closed?Làm thế nào để giữ một phiên mở sau khi trình duyệt đóng trong PHP?
Đây là mã tôi đã cố gắng:
$session_life = 2592000; // 30 days
session_set_cookie_params($session_life);
session_name('my_cart');
session_start();
// update the session_life
setcookie(session_name(),session_id(),time()+$session_life);
Vấn đề ở đây là rằng mỗi khi trình duyệt Tôi vẫn nhận được một session_id mới, không phải là session_id cũ.
Tôi đang sử dụng cơ sở dữ liệu để lưu trữ các mục trong 'my_cart' và session_id chỉ được sử dụng để xác định người dùng hiển thị cho họ giỏ hàng của riêng họ.
Cách tốt nhất để giữ cho giỏ hàng của người dùng tồn tại trong 30 ngày là gì?
Đây là mã tôi đã kết thúc với:
$cart_name = "my_cart";
$cart_life = 2592000; // 30 days
session_start();
if (isset($_COOKIE[$cart_name])) {
session_id($_COOKIE[$cart_name]);
}
setcookie($cart_name, session_id(), time()+$cart_life);
Có lẽ đây là một công việc cho cookie chứ không phải phiên. – mawburn
Phiên của bạn cũng có thể hết hạn trên máy chủ. Tham số php [session.gc_maxlifetime] (http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime) xác định thời gian tối đa mà thông tin phiên được giữ xung quanh trước khi nó là rác được thu thập. –