2013-07-08 29 views
5

Ứng dụng web PHP của tôi hiện có tên miền cookie phiên được đặt thành example.com. Tôi muốn đổi nó thành .example.com. Đối với khách truy cập mới, ini_set('session.cookie_domain', '.example.com') hoạt động. Đối với những khách truy cập đã có cookie PHPSESSID trước khi thay đổi này được thực hiện, tên miền vẫn giữ nguyên giá trị cũ. Làm cách nào để thay đổi tên miền trên cookie phiên mà không yêu cầu người dùng hiện tại xóa cookie của họ?Cách thay đổi tên miền cookie phiên cho người dùng hiện tại

  • Tôi không thể sử dụng JavaScript để cập nhật cookie vì đó là HTTPChỉ vì lý do bảo mật.
  • Xóa các phiên trên máy chủ không đặt lại toàn bộ cookie, nó chỉ cập nhật giá trị cookie (giữ nguyên tên miền).
  • Trình duyệt hiện đại bảo toàn phiên trong quá trình khởi động lại, vì vậy ngay cả khi cookie được đặt hết hạn vào cuối phiên trình duyệt, phiên trình duyệt không bao giờ kết thúc hiệu quả.

Khả năng duy nhất tôi có thể đưa ra là đặt cookie hết hạn trong quá khứ và sau đó chuyển hướng để nhận cookie mới. Nhưng tôi không thể biết khách truy cập nào đã đặt tên miền cookie không chính xác.

+0

Sẽ tệ đến mức nào nếu bạn chỉ cần chuyển sang máy chủ qua cookie mới, có thể xóa bất kỳ người dùng "cũ" nào? –

+0

Xóa tất cả các phiên trên máy chủ sẽ ghi lại mọi người và cập nhật giá trị cookie, nhưng các thông số cookie khác vẫn giữ nguyên vì cookie không bị xóa trên máy khách. –

+0

tốt, trừ khi bạn đã đặt thời lượng cookie lâu dài lố bịch, cuối cùng các trình duyệt sẽ hết hạn cookie cũ. –

Trả lời

3

Đặt session_name() mới trước khi bạn bắt đầu phiên. Bằng cách đó tên của các thay đổi cookie, và bất kỳ cookie cũ sẽ bị bỏ qua. Chỉ các cookie mới sẽ được gửi đi và hoạt động cho phiên.

+0

Brilliant! Công trinh! Không thể tin rằng tôi không nghĩ về điều này ... –

Các vấn đề liên quan