Tôi muốn biết liệu có cách nào ngăn PHP gửi cookie khi gọi session_start()
hay không.Ngăn chặn php session_start() gửi cookie
trường hợp sử dụng của tôi là cho một tối ưu hóa trang web:
- (1a) đầu tiên tôi mở một phiên/gửi tiêu đề.
- (1b) Sau đó tạo và xuất một số nội dung văn bản.
- (1c) Để tăng cường đọc/ghi phiên, tôi gọi "session_write_close" ngay sau khi tôi không cần phải viết trong phiên nữa.
- (2) Cuối cùng tôi có quy trình hiển thị hậu trang (đối với số liệu thống kê) yêu cầu phải có quyền ghi vào phiên. Phiên làm việc đã bị đóng, tôi không thể gọi session_start() nữa vì nó gửi một cookie và nó đến muộn cho điều đó. Đây là một quá trình tính toán nặng, vì vậy tôi phải làm điều đó sau khi trang được gửi cho khách hàng.
Khách hàng đã nhận được cookie phiên. Vì vậy, tôi không cần session_start()
để gửi một (và dự phòng) mới.
Có ai đó biết cách chặn cookie hoặc nội dung tương tự không? Tất nhiên tôi muốn tránh "Không thể gửi cookie phiên - tiêu đề đã được gửi". Lỗi này không hiển thị đối với người dùng vì trang đã được hiển thị nhưng có vẻ xấu xí trong nhật ký.
Câu hỏi của tôi có vẻ là dự phòng, nhưng không phải như vậy. Tôi biết cách đầu trang và nội dung hoạt động (gửi tiêu đề đầu tiên, nội dung sau). Nó chỉ là PHP không cho phép tôi làm những gì tôi muốn.
Tuyệt vời, giải pháp đầu tiên làm việc 'ini_set ('session.use_cookies', 0) '. Giải pháp thứ hai dường như không có bất kỳ hiệu ứng nào (tôi đã thử nó ngày hôm qua) nhưng nó có thể liên quan đến cấu hình php của tôi. Tôi sẽ dành nhiều thời gian hơn cho giải pháp thứ hai này. Cảm ơn ! – Mat
Tôi đã chạy một số thử nghiệm với '$ _COOKIE'. Nó thực sự hoạt động nhưng điều này sẽ giống như sử dụng 'ini_set();' và với 'ini_set()' rõ ràng hơn nó làm gì. Tôi sẽ thêm một kịch bản vào câu trả lời tôi đã sử dụng để chơi xung quanh, một số mã về '$ _COOKIE' được nhận xét. Bỏ ghi chú để tạo id phiên mới cho phiên đầu tiên. Điều này cũng cho thấy cách '$ _COOKIE' có liên quan đến' session_start() '. – hakre
'ini_set ('session.use_cookies', '0');' hoạt động hoàn hảo cho tiêu đề cookie, nhưng không hoạt động cho tiêu đề bộ nhớ cache sẽ hết hạn cookie SID. Xem câu trả lời từ @ techdude để sử dụng 'session_start (['use_cookies' => '0', 'cache_limiter' => '']);' – Code4R7