Почему чтобы использовать суперглобальный массив $_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 шт):
А вообще в примере у вас кука просто самоуничтожается, вам нужно прописать хотя больше, допустим time() + 3600
<?php
session_start();
setCookie('start', 'ok', time() + 3600);
echo $_COOKIE['start'];
Суперглобальный массив $_COOKIES хранит ассоциативный массив (array) значений, переданных скрипту через HTTP Cookies: документация
метод setcookie() - задает cookie, которое будет передано клиенту вместе с другими HTTP-заголовками.
Соответственно, при установке куков вы отправляете браузеру заголовок, и браузер сохряняет куку себе. При последующем запросе браузер отправит серверу эту куку, и теперь она будет доступна в $_COOKIES.