Почему чтобы использовать суперглобальный массив $_COOKIE недостаточно только функции setcookie()?

Допустим нужно задать cookie page_visit:

setcookie("page_visit", 1, time() + 5);

Почему не получается после задания cookie использовать массив $_COOKIE?

Если попробовать обратиться к $_COOKIE["page_visit"], то выдаст ошибку Undefined index: page_visit.

Почему приходится вручную задавать значение элементу массива $_COOKIE?

$_COOKIE["page_visit"] = 1;

Ответы (2 шт):

Автор решения: uberchel

А вообще в примере у вас кука просто самоуничтожается, вам нужно прописать хотя больше, допустим time() + 3600

<?php
session_start();
setCookie('start', 'ok', time() + 3600);
echo $_COOKIE['start'];
→ Ссылка
Автор решения: Максим Степанов

Суперглобальный массив $_COOKIES хранит ассоциативный массив (array) значений, переданных скрипту через HTTP Cookies: документация

метод setcookie() - задает cookie, которое будет передано клиенту вместе с другими HTTP-заголовками.

Соответственно, при установке куков вы отправляете браузеру заголовок, и браузер сохряняет куку себе. При последующем запросе браузер отправит серверу эту куку, и теперь она будет доступна в $_COOKIES.

→ Ссылка