Thiết lập cookie ngay lập tức trong PHP
Để một cookie vừa được thiết lập có thể xuất hiện ngay lập tức trong mảng $_COOKIE, bạn có thể sử dụng một thủ thuật thông minh.
Bản chất của thủ thuật như sau: đầu tiên thiết lập cookie bằng setcookie, sau đó thủ công ghi nó vào mảng $_COOKIE:
<?php
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
var_dump($_COOKIE['str']); // sẽ xuất ra 'eee' ngay lập tức
?>
Để cookie không bị gửi đến trình duyệt mỗi lần, có thể đặt việc ghi cookie bên trong một điều kiện. Nếu cookie đó không tồn tại, thì hãy ghi nó:
<?php
if (!isset($_COOKIE['str'])) { // nếu không có cookie
setcookie('str', 'eee');
$_COOKIE['str'] = 'eee';
}
echo $_COOKIE['str']; // sẽ xuất ra 'eee'
?>
Hãy cùng thảo luận cách thức hoạt động của nó. Ở lần truy cập đầu tiên vào trang, chúng ta sẽ rơi vào if,
thiết lập cookie trong trình duyệt và ngay lập tức ghi vào $_COOKIE. Sau đó, thông qua echo
sẽ xuất ra giá trị chúng ta đã ghi thủ công.
Ở những lần truy cập tiếp theo vào trang, chúng ta sẽ không rơi vào if, nhưng trong $_COOKIE sẽ chứa
cookie của chúng ta, lúc này đã được gửi từ trình duyệt.
Bằng cách này, cả ở lần truy cập đầu tiên và những lần sau, trong $_COOKIE sẽ luôn có cookie của chúng ta.
Hãy thử nghiệm thủ thuật đã mô tả.