Tôi đang làm việc trên một trang web có nhiều tên miền phụ, một số trong đó phải có phiên riêng của họ.PHP: Kiểm soát miền tên miền/tên miền phụ
Tôi nghĩ rằng tôi đã có nó làm việc ra, nhưng đã nhận thấy một cái gì đó về xử lý cookie mà tôi không hiểu. Tôi không thấy bất cứ điều gì trong các tài liệu giải thích nó, vì vậy nghĩ rằng tôi sẽ thấy nếu bất cứ ai ở đây có một số ánh sáng để đổ vào câu hỏi.
Nếu tôi chỉ làm:
session_start();
tôi kết thúc với một cookie phiên như thế này:
subdomain.example.net
Tuy nhiên, nếu tôi thực hiện mọi nỗ lực để thiết lập cookie tên miền của tôi, hoặc giống như
ini_set('session.cookie_domain', 'subdomain.example.net');
hoặc như
session_set_cookie_params(0, "/", "subdomain.example.net", false, false);
Tôi kết thúc bằng cookie cho .subdomain.example.net (lưu ý dấu chấm mở), điều tôi tin là "khớp với tất cả các tên miền phụ (hoặc trong trường hợp phụ tên miền phụ này).
Điều này dường như xảy ra với tất cả cookie của tôi thực sự, không chỉ phiên. Nếu tôi tự đặt tên miền cookie, nó sẽ tự động có chấm được thêm vào trước, có nghĩa là miền này và tất cả các miền phụ của nó. Nếu tôi không đặt tên miền, thì nó sẽ làm cho nó đúng bằng cách chỉ sử dụng miền hiện tại.
Bất kỳ ý tưởng nào gây ra điều này và những gì tôi có thể làm để kiểm soát dấu chấm trước đó?
Cảm ơn!
Bạn không phải kiểm soát dấu chấm hàng đầu bởi vì nó chỉ bị * bỏ qua * bởi trình duyệt, theo RFC 6265, đó là những gì mọi trình duyệt hiện đại thực hiện. Vì vậy, chỉ cần không nghĩ về dấu chấm đầu. Ngoài ra, đặt tên miền cookie một cách rõ ràng hoặc đặt nó thành một chuỗi rỗng để giới hạn nó cho máy chủ yêu cầu hiện tại. Thư viện https://github.com/delight-im/PHP-Cookie có một số điều khiển thuận tiện cho điều đó. – caw