PHP setcookie() Fonction

❮ Référence du réseau PHP

Exemple

L'exemple suivant crée un cookie nommé "user" avec la valeur "John Doe". Ce cookie expirera après 30 jours (86400 * 30). Le "/" signifie que le cookie est disponible sur l'ensemble du site web (sinon, sélectionnez le répertoire de votre choix).

Nous récupérons ensuite la valeur du cookie "user" (en utilisant la variable globale $_COOKIE). Nous utilisons également la fonction isset() pour vérifier si le cookie est défini :

<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 jour
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Le cookie nommé '" . $cookie_name . "' n'est pas défini !";
} else {
echo "Le cookie '" . $cookie_name . "' est défini !<br>";
echo "La valeur est : " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>
Essayez-le vous-même »

Définition et Utilisation

La fonction setcookie() définit un cookie à envoyer avec le reste des en-têtes HTTP.

Un cookie est souvent utilisé pour identifier un utilisateur. C'est un petit fichier que le serveur intègre sur l'ordinateur de l'utilisateur. Chaque fois que le même ordinateur demande une page avec un navigateur, il enverra également le cookie. Avec PHP, vous pouvez à la fois créer et récupérer des valeurs de cookie.

Le nom du cookie est automatiquement attribué à une variable du même nom. Par exemple, si un cookie a été envoyé avec le nom "user", une variable est automatiquement créée appelée $user, contenant la valeur du cookie.

Remarque : La fonction setcookie() doit apparaître AVANT la balise <html>.

Remarque : La valeur du cookie est automatiquement URLencodée lors de l'envoi, et automatiquement décodée lors de la réception (pour éviter l'URLencoding, utilisez setrawcookie() à la place).

Syntaxe

setcookie( name, value, expire, path, domain, secure, httponly );

Valeurs des Paramètres

Paramètre Description
name Obligatoire. Spécifie le nom du cookie
value Optionnel. Spécifie la valeur du cookie
expire Optionnel. Spécifie quand le cookie expire. La valeur : time()+86400*30, définira le cookie pour expirer dans 30 jours. Si ce paramètre est omis ou défini sur 0, le cookie expirera à la fin de la session (lorsque le navigateur se ferme). La valeur par défaut est 0
path Optionnel. Spécifie le chemin du serveur du cookie. S'il est défini sur "/", le cookie sera disponible dans l'ensemble du domaine. S'il est défini sur "/php/", le cookie ne sera disponible que dans le répertoire php et tous les sous-répertoires de php. La valeur par défaut est le répertoire actuel dans lequel le cookie est défini
domain Optionnel. Spécifie le nom de domaine du cookie. Pour rendre le cookie disponible sur tous les sous-domaines de example.com, définissez le domaine sur "example.com". Le définir sur www.example.com rendra le cookie disponible uniquement dans le sous-domaine www
secure Optionnel. Spécifie si le cookie doit être transmis uniquement sur une connexion HTTPS sécurisée. TRUE indique que le cookie ne sera défini que si une connexion sécurisée existe. La valeur par défaut est FALSE
httponly Optionnel. S'il est défini sur TRUE, le cookie ne sera accessible que par le protocole HTTP (le cookie ne sera pas accessible par les langages de script). Ce paramètre peut aider à réduire le vol d'identité par le biais d'attaques XSS. La valeur par défaut est FALSE


Détails Techniques

Valeur de Retour : TRUE en cas de succès. FALSE en cas d'échec
Version PHP : 4+
Journal des Modifications PHP : PHP 5.5 - Un attribut Max-Age a été inclus dans l'en-tête Set-Cookie envoyé au client
PHP 5.2 - Le paramètre httponly a été ajouté

Plus d'Exemples

Exemple

Plusieurs dates d'expiration pour les cookies :

<?php
$value = "Hello world!";

// le cookie expirera lorsque le navigateur se fermera
setcookie("myCookie", $value);

// le cookie expirera dans 1 heure
setcookie("myCookie", $value, time() + 3600);

// le cookie expirera dans 1 heure, et ne sera disponible que
// dans le répertoire php + tous les sous-répertoires de php
setcookie("myCookie", $value, time() + 3600, "/php/");
?>
<html>
<body>

...du code...

</body>
</html>
Essayez-le vous-même »

Exemple

Pour modifier un cookie, il suffit de le redéfinir en utilisant la fonction setcookie() :

<?php
$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Le cookie nommé '" . $cookie_name . "' n'est pas défini !";
} else {
echo "Le cookie '" . $cookie_name . "' est défini !<br>";
echo "La valeur est : " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>
Essayez-le vous-même »

Exemple

Pour supprimer un cookie, utilisez la fonction setcookie() avec une date d'expiration dans le passé :

<?php
// définir la date d'expiration à une heure auparavant
setcookie("user", "", time() - 3600);
?>
<html>
<body>

<?php
echo "Le cookie 'user' a été supprimé.";
?>

</body>
</html>
Essayez-le vous-même »

Exemple

Créez un petit script qui vérifie si les cookies sont activés. Tout d'abord, essayez de créer un cookie de test avec la fonction setcookie(), puis comptez la variable de tableau $_COOKIE :

<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>

<?php
if(count($_COOKIE) > 0) {
echo "Les cookies sont activés.";
} else {
echo "Les cookies sont désactivés.";
}
?>

</body>
</html>
Essayez-le vous-même »

❮ Référence du réseau PHP