@Артур Пантелеев, куки хранятся на клиенте. Для того, чтобы куки записались, они должны вернуться в Responce Headers (заголовки ответа) вместе с остальными данными (например, HTML). Только тогда они будут реально созданы.
Например, следующий код будет нерабочий при первом запуске:
setcookie('asd', 5, 0, '/'); //функция для задания кук
echo $_COOKIE['asd'];
Но при второй запуске выведет 5. Как это работает:
До вывода любых данных мы формируем заголовки ответа, используя функцию setcookie, указываем, что нужно создать переменную, хранящуюся на клиенте. Далее идет остальной код, например, вывод HTML. В браузере в заголовках ответа сервера будет вот такая строка Set-Cookie:asd=5; path=/
, когда она пришла - браузер запоминает переменную. При втором запросе на сервер, браузер отправляет данные о хранимых куках в Request Headers (заголовки запроса): asd=5;
- т.е. он отправляет эти данные на сервер. Только тогда сервер может обработать данную переменную в массиве $_COOKIE
.