Tôi đang gặp một số vấn đề lạ với biến SESSION trên giỏ hàng trực tuyến PHP/Ajax của mình.
Khi tôi lần đầu tiên xem trang, SESSION được tạo và hoạt động trong trang. Sau đó, khi tôi điều hướng đến một trang PHP khác trong cùng thư mục thì SESSION hoàn toàn bị mất. Điều kỳ lạ là điều này chỉ xảy ra sau khi. Khi người dùng trải qua quá trình này hoàn toàn mất SESSION của họ khi thay đổi trang, SESSION hoạt động toàn bộ trên toàn bộ giỏ hàng.
Tôi bắt đầu gửi thư cho bản thân mình var_exports cả hai dữ liệu $ _SESSION và $ _SERVER trên mỗi lần xem trang. Dường như khi một trang được xem lần đầu tiên, SESSION tồn tại và chứa dữ liệu. Tuy nhiên, không có PHPSESSID được tạo trong biến $ _SERVER ['HTTP_COOKIE']. Khi điều hướng đến một trang khác, PHPSESSID được tạo và SESSION sẽ bắt đầu hoạt động, nhưng dữ liệu SESSION ban đầu của chế độ xem trang đầu tiên sẽ bị mất.
Có cách nào để tạo PHPSESSID nếu một chưa được tạo cho SESSION không? Hoặc là hành vi điển hình này và không liên quan đến vấn đề mất mát SESSION ngẫu nhiên của tôi? Tôi đang sử dụng PHP 5.2.
Mỗi trang trong giỏ hàng bắt đầu theo cùng một cách chính xác:
$title="Title";
$keywords="keywords";
$description="description";
@include('../header_cart.php');
Và sau đó ở phía trên cùng của header_cart.php có:
session_start();
if(!isset($_SESSION['active'])){
$_SESSION['active']=$_SERVER['REMOTE_ADDR'];
}
Tất cả các loại đọc thú vị tại đây (http://php.net/manual/en/function.session-id.php). Tôi không biết bạn đã kiểm tra điều đó chưa. Bạn có chắc chắn 'session_start()' của bạn không bị thất bại trong lần gọi đầu tiên? – afuzzyllama
Mọi trang trong giỏ hàng đều sử dụng cùng một tệp tiêu đề, vì vậy tôi không nghĩ đó là nó. Có thể sử dụng session_regenerate_id() nếu PHPSESSID không được đặt có thể hữu ích. – unsunghero
Nhưng sau đó bạn có thể mất thông tin giỏ hàng của mình vì phiên thay đổi? =/ – afuzzyllama