Tôi hiểu rằng PHP lưu trữ id phiên của người dùng trong cookie được gọi là "PHPSESSID" được lưu trữ trong trình duyệt của khách hàng và được khớp với phiên trên máy chủ để có thể liên quan đến 2. Sau khi đóng trình duyệt thông tin phiên biến mất nhưng cookie trên máy khách vẫn còn. Có thể sử dụng cookie này để khôi phục phiên cũ không? Hay tất cả dữ liệu phiên bị xóa khỏi máy chủ vào lúc máy khách đóng trình duyệt của họ?Làm cách nào để khôi phục phiên PHP?
Tôi có điều này trên trang của mình đầu tiên:
session_start();
$_SESSION['message'] = 'Hello';
echo $_SESSION['message']; // outputs hello
sau đó tôi đã thay đổi trang để:
$old_session = session_id();
session_id($old_session);
session_start();
echo $_SESSION['message'];
Sau đó, tôi đóng trình duyệt và mở lại nó vào trang này và nhận được các lỗi này:
Warning: session_start() [function.session-start]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\xampp\htdocs\localhost\test.php on line 5
Notice: Undefined index: message in C:\xampp\htdocs\localhost\test.php on line 7
Làm cách nào để truy xuất thông tin phiên cũ sau khi đóng trình duyệt, thậm chí có thể thực hiện được không?
'Sau khi đóng trình duyệt, thông tin phiên sẽ biến mất nhưng cookie trên máy khách vẫn còn.' --- nó không chính xác. Trong hầu hết các trường hợp, cookie phiên id được đặt thành "trước khi trình duyệt không được đóng". '$ old_session = session_id(); session_id ($ old_session); '--- mã này không có ý nghĩa – zerkms
http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime – j08691
Trừ khi bạn đang nhìn qua cửa sổ của người dùng, máy chủ của bạn sẽ không có ý tưởng khi anh ta đóng trình duyệt của mình (AJAX cũng sẽ không đảm bảo điều đó). Máy chủ chỉ xóa dữ liệu phiên được coi là "cũ". – webbiedave