Fonction PHP setcookie() : Tout ce que vous devez savoir
En tant que développeur PHP, vous devrez peut-être définir des cookies pour stocker des informations côté client. La fonction setcookie() est une fonction intégrée de PHP qui gère cela. Dans cet article, nous couvrirons sa syntaxe moderne, son utilisation, ainsi que la manière de lire ou de supprimer des cookies.
Qu'est-ce que la fonction setcookie() ?
La fonction setcookie() est une fonction intégrée de PHP qui vous permet de définir un cookie côté client.
Comment utiliser la fonction setcookie()
L'utilisation de la fonction setcookie() est simple. La syntaxe basée sur un tableau pour les options a été introduite dans PHP 7.3. Dans PHP 8.1, l'ancienne syntaxe positionnelle à sept paramètres a été dépréciée. Voici la syntaxe moderne :
La syntaxe PHP de la fonction setcookie()
setcookie($name, $value, $options);Le paramètre $options est un tableau associatif qui accepte les clés suivantes :
expires: Le délai d'expiration du cookie (horodatage Unix).path: Le chemin sur le serveur où le cookie sera disponible.domain: Le domaine sur lequel le cookie sera disponible.secure: Indique si le cookie doit être transmis uniquement via HTTPS.httponly: Indique si le cookie doit être accessible uniquement via HTTP.samesite: Restreint le cookie aux requêtes de même site. Accepte'Strict','Lax'ou'None'.
Voici un exemple d'utilisation de la fonction setcookie() pour définir un cookie :
Comment utiliser la fonction setcookie() ?
<?php
$options = [
'expires' => time() + (86400 * 30), // 30 jours
'path' => '/',
'domain' => '.example.com',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax'
];
setcookie('username', 'john', $options);Dans cet exemple, nous utilisons la fonction setcookie() pour définir un cookie nommé username avec la valeur john. Nous spécifions également le délai d'expiration à 30 jours à partir de l'heure actuelle, le chemin sur le serveur à /, le domaine à .example.com, et nous définissons les indicateurs secure, httponly et samesite pour garantir que le cookie est uniquement transmis via HTTPS, n'est pas accessible via un script côté client et est restreint aux requêtes de même site, respectivement.
Lecture des cookies
Les cookies définis avec setcookie() sont automatiquement disponibles dans le tableau superglobal $_COOKIE lors des requêtes de page suivantes. Vous pouvez vérifier leur existence et lire leurs valeurs comme suit :
if (isset($_COOKIE['username'])) {
echo "Welcome, " . htmlspecialchars($_COOKIE['username']);
}Suppression des cookies
Pour supprimer un cookie, vous devez définir son délai d'expiration sur un horodatage passé. La valeur peut être laissée vide ou définie sur null.
setcookie('username', '', [
'expires' => time() - 3600,
'path' => '/',
]);Notes importantes
- Valeur de retour :
setcookie()retournetrueen cas de succès etfalseen cas d'échec (y compris lorsque les en-têtes ont déjà été envoyés). - En-têtes déjà envoyés : Les cookies doivent être définis avant tout envoi de sortie au navigateur (y compris HTML, espaces blancs ou
echo). Sinon, PHP générera un avertissement « En-têtes déjà envoyés ». - Encodage automatique :
setcookie()encode automatiquement les valeurs des cookies au format URL, un encodage manuel est donc généralement inutile.
Conclusion
La fonction setcookie() est un outil utile pour définir des cookies dans votre application web PHP. En comprenant la syntaxe moderne et l'utilisation de la fonction, vous pouvez facilement gérer les données côté client. Nous espérons que cet article vous a été informatif et utile pour comprendre comment définir, lire et supprimer des cookies en PHP.
Pratique
Quels facteurs peuvent affecter la fonction setcookie en PHP ?