Pour créer un cookie en php il faut utiliser la fonction setcookie.
Paramètres de la fonction setcookie
Voici le détail des principaux arguments de setcookie, pour les autres paramètres je vous renvoie à la page du manuel php.
/**
* Dépose un cookie sur le navigateur client
*
* @param string $name Nom du cookie
* @param string $value Valeur du cookie
* @param int $expire Durée de validité en seconde du cookie
* @param string $path Chemin de validité du cookie
* @param string $domain Domaine de validité du cookie
* @return bool Vrai en cas de succès de la création du cookie et false en cas d'échec
*/
function setcookie($name,$value,$expire,$path,$domain)
Création d'un cookie de session
Pour déposer un cookie de session sur le navigateur il faut appeler la fonction setcookie avec une valeur de 0 pour le paramètre expire.
<?php
setcookie('moncookie','1',0,'/');
?>
L'appel précédent crée un cookie de session accessible depuis l'ensemble des pages du domaine.
Création d'un cookie valide sur tous les sous domaines
L'appel suivant crée un cookie valide accessible sur tous les sous-domaines de petitchevalroux.net pour une journée.
<?php
setcookie('moncookie','1',86400,'/','.petitchevalroux.net');
?>
Problème avec Headers already sent
Tout comme la fonction session_start, la fonction setcookie peut lever l'erreur headers already sent lorsque des données ont été envoyées au navigateur avant l'appel à la fonction.
Pour éviter ce genre de problème je vous conseille d'activer la bufferisation de la sortie au début de tous vos scripts avec l'appel à la fonction ob_start.
En activant la bufferisation le code suivant doit fonctionner sans déclencher l'erreur headers already sent :
<?php
ob_start();
echo 'toto';
setcookie('moncookie','1',0,'/',);
?>
A propos du tampon de sortie, je vous conseille la lecture de mon article activer la compression gzip sur les pages php qui présente l'utilisation du buffer de sortie pour compresser les pages php et accélérer leurs téléchargements.
Article en relation : Effacer un cookie en php
Image : Roboppy