 
Admettons un fichier http://www.info-3000.com/test/testcookie.php crée un cookie. Pour pouvoir le relire, ce DOIT être depuis un fichier quelconque contenu directement dans le dossier http://www.info-3000.com/test. Même un fichier qui se trouverait dans un sous-dossier du dossier test ne pourrait pas l'appeler. A fortiori, un fichier se trouvant directement dans http://www.info-3000.com, ou dans n'importe quel autre sous-dossier ne pourrait pas y accéder.
C'est le visiteur, sur son propre PC, dans son navigateur, qui va donner ou non l'autorisation aux sites web de créer et/ou lire les cookies
L'endroit ou vous pouvez déterminer l'acceptation, le refus, ou le refus conditionnel des cookies dans Internet Explorer 6 est :
Sous Windows XP, les cookies sont calfeutrés dans le dossier :
C:\Documents and Settings\NomUtilisateurCourant\Cookies
setcookie() définit un cookie qui sera envoyé avec le reste des en-têtes. Les cookies doivent passer avant toute autre en-tête (c'est une restriction des cookies, pas de PHP). Cela vous impose d'appeler cette fonction avant toute balise <HTML> ou <HEAD>.
Par contre, la lecture peut s'effectuer n'importe où.
Nous allons créer un cookie appelé MonCookie, qui va contenir la chaîne de caractères Tralala, et directement après le lire (time()+86400veut dire que le cookie est valable pendant 1 jour - 86400 secondes):
<?php
    setcookie("MonCookie","Tralala",time()+86400);
    echo $HTTP_COOKIE_VARS["MonCookie"];
  ?>
  <html>
  <head>
  <title>Test de cookies</title>
  </head>
  <body>
  </body>
  </html>
Le code suivant va générer une erreur puisque une valeur est attribuée au cookie après l'affichage :
<?php
    setcookie("Compteur",1,time()+86400); // OK
    echo $HTTP_COOKIE_VARS["Compteur"]; // Toujours 
  OK
    setcookie("Compteur",2,time()+86400); 
  // Oops ! ERROR
    echo $HTTP_COOKIE_VARS["Compteur"]; // Et donc erreur 
  encore
  ?>
<?php
    setcookie("Compteur",1,time()+86400);
    $Truc = $Machin + $Bidule; // Ne génère pas 
  d'erreur
    setcookie("Compteur",2,time()+86400); // et donc OK
    echo $HTTP_COOKIE_VARS["Compteur"]; // et tout va bien
  ?>
Il est possible d'assigner des chaînes de caractères pourvues d'espaces. Les espaces seront remplacés par des +, et d'une manière globale, les tags HTML seront utilisés.
setcookie("MonCookie","La 
  tarte aux pommes",time()+86400); 
  Donne
   La+tarte+aux+pommes
setcookie("MonCookie","L'hébergement 
  est-il sécurisé+fiable ?",time()+86400); 
  Donne
  L%27h%E9bergement+est-il+s%E9curis%E9%2Bfiable+%3F
Par contre, la récupération des contenus à caractères spéciaux seront réaffichés quasi-correctement, sauf les apostrophes. L'exemple suivant ajoute encotre du piment en utilisant un nom de variable de Cookie avec des caractères spéciaux (L'hébergement)
 setcookie("L'hébergement","L'hébergement 
  est-il sécurisé & fiable ?",time()+86400);
  echo $HTTP_COOKIE_VARS["L'hébergement"];
Affiche :
   L\'hébergement 
  est-il sécurisé & fiable ?
Remarque préléminaire : Si on ne précise pas le 3ème paramètre (la durée de validité), le fichier cookie n'est apparemment pas créé, mais setcookie("MonCookie","Tralala");
echo $HTTP_COOKIE_VARS["MonCookie"];
Renvoie bien Tralala, mais il est probable que si on ferme et rouvre le navigateur, le cookie soit perdu.
A la fin de l'exécution de cette page PHP, un cookie sera donc créé sur C:\Documents and Settings\NomUtilisateurCourant\Cookies, qui s'appellera :
nomutilisateur@nomdudossierdanslequellefichierphpsetrouve.txt
Exemple : Admettons que mon nom d'utilisateur soit jean, et que j'ai un fichier PHP appelant un cookie dans http://www.info-3000.com/testcookie/trucmuche.php, le cookie s'appellera :
jean@testcookie.txt
Ainsi, quel que soit le fichier accédant à n'importe quel nom de cookie, du moment qu'il est placé dans le même dossier testcookie, il fera toujours référence à jean@testcookie.txt.
Remarque : En faisant quelques tests successifs, j'ai constaté qu'en 
  réalité, c'est plutôt un fichier
  jean@testcookie[1].txt
  Qui était généré. Et si je recharge la même 
  page de création d'un seul bête cookie, c'est tout à coup
  jean@testcookie[2].txt
  qui apparait, faisant disparaître jean@testcookie[1].txt 
  du même coup.
Bon, de toute manière, peu importe le nom physique du fichier puisqu'on en a pas réellement besoin avec setcookie ni HTTP_COOKIE_VARS.
Soit un fichier :
   http://www.info-3000.com/testdecookie/monbeaufichier.php
qui contient :
  <?php
  setcookie("Couleur","vert",time()+86400);
  setcookie("Taille","1800",time()+86400); 
  
  ?>
  <html><head> <title>Test de 
  cookies</title> </head> <body> </body> </html> 
   
Alors, le dossier
  C:\Documents and Settings\NomUtilisateurCourant\Cookies
Se garnira d'un fichier cookie supplémentaire
  nomutilisateurcourant@testdecookie[2].txt
qui contiendra :
Couleur
  vert
  www.info-3000.com/testdecookie/
  1024
  4045600768
  08544927
  3429581061
  27532776
  *
  Taille
  1800
  www.info-3000.com/testdecookie/
  1024
  9003603378
  29542927
  3400187292
  29629821
  *
On voit alors aisément comment la vérification de l'endroit depuis lequel a été posé le cookie s'effectue (www.info-3000.com/testdecookie/). Les différentes variables sont manifestement délimitées par des étoiles (*), et j'ignore la signification des chiffres apparentés. Cet exemple provient de l'utilisation d'Internet Explorer 6. Il est possible (probable?) que l'utilisation d'un autre navigateur génère des cookies d'une autre structure.
Attention : Si c'est la première fois qu'on arrive sur cette page telle qu'elle est décrite dans l'exemple, le cookie est bien initialisé par le setcookie, mais, comme si c'était trop rapide, l'affichage avec $HTTP_COOKIE_VARS["MonCookie"] renvoie un résultat vide. Mais si on réactualise simplement la page, Tralala est bien affiché, et ce même si on lui "laisse un peu de temps" :
<?php
  setcookie("MonCookie","Patrouchon",time()+86400); 
  
  ?>
  <html>
  <head>
  <title>Test de cookies</title>
  </head>
  <body>
  <?
  echo $HTTP_COOKIE_VARS["MonCookie"];
  ?>
  </body>
  </html>
setcookie("MonCookie","Tralala",time()+86400);
Le 3ème paramètre (time()+86400) représente la durée de validité du cookie exprimée en secondes (24 heures = 86400 secondes). Ce cookie sera donc valide pendant 24 heures.
Dans commentcamarche.net, ils parlent d'une valeur de time()+2592000, qui pourrait être une limite supérieure.
Voici un code qui va permettre d'incrémenter une variable de 1 à chaque chargement de la page :
<?php
    setcookie("Compteur",$HTTP_COOKIE_VARS["Compteur"]+1,time()+86400);
    echo $HTTP_COOKIE_VARS["Compteur"]; 
  ?>
Ce n'est pas complet : Il nous faut définir si c'est la première fois que le visiteur vient sur la page. Pour ce faire, il s'agit de déterminer si la variable Compteur existe déjà, à l'aide de isset (isset vu dans les variables). On commence donc par demander si la variable du cookie existe bien (if (isset($HTTP_COOKIE_VARS["CompteurDeVisite"]))). Si c'est le cas, on augmente cette valeur de 1 (setcookie("CompteurDeVisite",$HTTP_COOKIE_VARS["CompteurDeVisite"]+1,time()+86400);) on affiche la combientième fois que la page est vue (echo "visite numéro ".$HTTP_COOKIE_VARS["CompteurDeVisite"];). Et si la variable CompteurDeVisite n'existait pas (else), on la crée, et l'initialise à 1 (setcookie("CompteurDeVisite",1,time()+86400);), et on affiche au nouveau visiteur que c'est sa première visite (echo "Première visite";).
<?php
    if (isset($HTTP_COOKIE_VARS["CompteurDeVisite"]))
      {
      setcookie("CompteurDeVisite",$HTTP_COOKIE_VARS["CompteurDeVisite"]+1,time()+86400);
      echo "visite numéro ".$HTTP_COOKIE_VARS["CompteurDeVisite"];
      }
    else
      {
      setcookie("CompteurDeVisite",1,time()+86400);
      echo "Première visite";
      }
  ?>
  <html><head> <title>Test de 
  cookies</title> </head> <body> </body> </html>