Hướng dẫn php setcookie not working - php setcookie không hoạt động

Tôi có trang này đặt cookie và lặp lại một chuỗi nếu bạn kiểm tra hộp kiểm. Chuỗi in chính xác, nhưng cookie không bao giờ được đặt và tôi không biết tại sao.


"; } else { setcookie("cookie", "off", time()+3600*24); echo "You didn't check the checkbox and a cookie was set with a value of:
"; } echo $_COOKIE['cookie']; ?>

Có ai biết tại sao mã trên không hoạt động không?

hỏi ngày 9 tháng 7 năm 2014 lúc 19:48Jul 9, 2014 at 19:48

Hướng dẫn php setcookie not working - php setcookie không hoạt động

Tim timTim

2.0954 Huy hiệu vàng26 Huy hiệu bạc43 Huy hiệu đồng4 gold badges26 silver badges43 bronze badges

Php Superglobal được điền vào thời gian khởi động tập lệnh, và sau đó không được sửa đổi hoặc chạm vào PHP một lần nữa cho cuộc sống của kịch bản. Điều đó có nghĩa là $_COOKIE đại diện cho các cookie được gửi đến máy chủ trong yêu cầu HTTP đã kích hoạt tập lệnh. Nó sẽ không hiển thị bất kỳ cookie nào bạn đã thêm/thay đổi/xóa trong suốt vòng đời của kịch bản. Những thay đổi đó sẽ chỉ hiển thị trên yêu cầu tiếp theo.

Ngoại lệ duy nhất cho điều này là $_SESSION, được điền khi bạn gọi session_start().

Nếu bạn cần các giá trị đó có trong $ _Cookie ngay lập tức, bạn sẽ phải thêm chúng theo cách thủ công, ví dụ:

setcookie('cookie', $value, ....);
$_COOKIE['cookie'] = $value;

Đã trả lời ngày 9 tháng 7 năm 2014 lúc 19:53Jul 9, 2014 at 19:53

Marc Bmarc bMarc B

351K42 Huy hiệu vàng404 Huy hiệu bạc488 Huy hiệu đồng42 gold badges404 silver badges488 bronze badges

Theo hướng dẫn sử dụng PHP tại http://php.net/manual/en/function.setcookie.php:

Nếu đầu ra tồn tại trước khi gọi hàm này, setCookie () sẽ thất bại và trả về sai. Nếu setcookie () chạy thành công, nó sẽ trả về đúng. Điều này không cho biết người dùng có chấp nhận cookie hay không.setcookie() will fail and return FALSE. If setcookie() successfully runs, it will return TRUE. This does not indicate whether the user accepted the cookie.

Nói cách khác, hàm setcookie() không hoạt động vì nó nằm trong trang. Nếu bạn muốn nó hoạt động, bạn sẽ cần đặt chức năng đó trước trang, cụ thể trước bất kỳ tiêu đề nào.

Làm cái này:

";
  } else {
     setcookie("cookie", "off", time()+3600*24);
     echo "You didn't check the checkbox and a cookie was set with a value of:
"; } echo $_COOKIE['cookie']; ?> ...

Đã trả lời ngày 2 tháng 1 năm 2015 lúc 4:12Jan 2, 2015 at 4:12

JDOTJDOTJDot

1752 Huy hiệu bạc8 Huy hiệu Đồng2 silver badges8 bronze badges

1

Cookie không khởi động cho đến khi chúng được đặt và yêu cầu trang mới được gửi. Điều này là do cookie được gửi với các yêu cầu trang, chúng không xuất hiện một cách kỳ diệu cho máy chủ.

Giải pháp của bạn là làm một trang làm mới sau khi đặt cookie.

// set cookie
setcookie("cookie", "off", time()+3600*24);
// not available because this cookie was not sent with the page request.
echo $_COOKIE['cookie'];

Đã trả lời ngày 9 tháng 7 năm 2014 lúc 19:49Jul 9, 2014 at 19:49

John Condejohn CondeJohn Conde

215K98 Huy hiệu vàng447 Huy hiệu bạc490 Huy hiệu Đồng98 gold badges447 silver badges490 bronze badges

2