2011-06-26 35 views
17

Nếu tôi gọi setcookie() hai lần với cùng một tên cookie, tôi nhận được hai cookie được tạo.Làm cách nào để cập nhật cookie trong PHP?

Làm cách nào để cập nhật cookie hiện tại?

+3

Làm cách nào bạn xác nhận rằng bạn nhận được hai cookie? – deceze

+0

Tôi nhấp chuột phải -> chỉnh sửa tùy chọn trang web -> cookie (Opera) và ở đó tôi thấy rất nhiều cookie có cùng tên – Cookie

Trả lời

16

Bạn không thể cập nhật cookie mỗi lần, tuy nhiên bạn có thể ghi đè lên nó. Nếu không, đây là những gì bạn đang tìm kiếm: http://php.net/manual/en/function.setcookie.php

Nó hoạt động. Hãy chắc chắn để đọc "Những cạm bẫy phổ biến" từ trang đó.

Bạn cũng có thể sử dụng siêu toàn cầu $_COOKIE['cookie_name'] để đọc/ghi cookie.

+5

nhưng không hoạt động: (('set_cookie ('fuuuuu', rand (0, 3434543) , $ exp_date); ', sau khi làm mới, tôi nhận được một cookie khác có cùng tên, giá trị khác nhau: | – Cookie

+1

Họ có phải từ cùng một tên miền không? www hoặc không có www. – Francisc

+0

hmm Tôi không đặt đối số tên miền. Nhưng các cookie được đặt từ các trang của một tên miền – Cookie

4

Vì vậy, mặc dù PHP sẽ gửi hai Set-Cookie: tiêu đề nếu được hướng dẫn như vậy, chỉ người cuối cùng nên duy trì trong trình duyệt.
Netscape Cookie đặc tả http://curl.haxx.se/rfc/cookie_spec.html nói:

Instances của con đường cùng và tên sẽ ghi đè lên nhau, với các trường hợp mới nhất tham gia được ưu tiên. Các cá thể của cùng một đường dẫn nhưng các tên khác nhau sẽ thêm ánh xạ bổ sung.

Tuy nhiên, có thể nên tránh các điều kiện cạnh như vậy. Tái cấu trúc ứng dụng của bạn để nó không cần ghi đè lên cookie đã gửi.

16

Bạn có thể cập nhật giá trị cookie bằng hàm setcookie() nhưng bạn nên thêm '/' vào đối số thứ 4 là đối số 'đường dẫn', để tránh tạo cookie khác có cùng tên.

ví dụ setcookie('cookie_name', 'cookie_value', $exp_date, '/');

0

gọi COOKIE và xóa giá trị tên setcookie ("username", '', 0, "/");

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