E' normale che PHP protesti. L'esempio che riporti è il numero tre (setcookie() ) presente nel manuale in php.net
Sempre nel manuale è spiegato che
quindi, fin tanto che non viene caricata la pagina successiva, o la stessa pagina, non puoi accedere a $_COOKIE['cookie'] perchè l'indice 'cookie' non esiste. Non a caso nell'esempio verificano la sua esistenza con isset()Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE
In più essendo i cookie trasferiti con gli header, occorre che la funzione setcookie() sia invocata prima che sia prodotto un qualunque output.
![]()