PHP
Biscuits
Recherche…
Introduction
Un cookie HTTP est un petit morceau de données envoyé depuis un site Web et stocké sur l'ordinateur de l'utilisateur par le navigateur Web de l'utilisateur pendant que l'utilisateur navigue.
Syntaxe
bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
Paramètres
paramètre | détail |
---|---|
prénom | Le nom du cookie. C'est aussi la clé que vous pouvez utiliser pour récupérer la valeur du super global $_COOKIE . C'est le seul paramètre requis |
valeur | La valeur à stocker dans le cookie. Ces données sont accessibles au navigateur, ne stockez donc rien de sensible ici. |
expirer | Un horodatage Unix représentant le moment où le cookie doit expirer. Si défini à zéro, le cookie expirera à la fin de la session. S'il est défini sur un nombre inférieur à l'horodatage Unix actuel, le cookie expirera immédiatement. |
chemin | La portée du cookie. Si défini sur / le cookie sera disponible dans tout le domaine. Si défini sur /some-path/ alors le cookie ne sera disponible que dans ce chemin et les descendants de ce chemin. Par défaut, le chemin d'accès actuel du fichier dans lequel le cookie est défini. |
domaine | Le domaine ou le sous-domaine sur lequel se trouve le cookie S'il est défini sur le domaine nu stackoverflow.com le cookie sera disponible pour ce domaine et tous les sous-domaines. S'il est défini sur un sous-domaine meta.stackoverflow.com le cookie ne sera disponible que sur ce sous-domaine et sur tous les sous-sous-domaines. |
garantir | Lorsqu'il est défini sur TRUE le cookie ne sera défini que si une connexion HTTPS sécurisée existe entre le client et le serveur. |
httponly | Indique que le cookie ne doit être mis à disposition que via le protocole HTTP / S et ne doit pas être disponible pour les langages de script côté client tels que JavaScript. Disponible uniquement en PHP 5.2 ou ultérieur. |
Remarques
Il convient de noter que la simple invocation de la fonction setcookie
ne se limite pas à placer des données dans le tableau $_COOKIE
superglobal.
Par exemple, il est inutile de faire:
setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value
La valeur n'est pas encore là, pas avant le chargement de la page suivante. La fonction setcookie
dit simplement " avec la prochaine connexion http, dites au client (navigateur) de définir ce cookie ". Ensuite, lorsque les en-têtes sont envoyés au navigateur, ils contiennent cet en-tête de cookie. Le navigateur vérifie alors si le cookie n'a pas encore expiré et, dans le cas contraire, il envoie le cookie au serveur dans http request et PHP le reçoit et place le contenu dans le tableau $_COOKIE
.
Définir un cookie
Un cookie est défini à l'aide de la fonction setcookie()
. Comme les cookies font partie de l'en-tête HTTP, vous devez définir tous les cookies avant d'envoyer une sortie au navigateur.
Exemple:
setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params
La description:
- Crée un cookie avec un nom d'
user
- (Facultatif) La valeur du cookie est
Tom
- (Facultatif) Le cookie expirera dans 1 jour (86400 secondes)
- (Facultatif) Cookie est disponible sur tout le site Web
/
- (Facultatif) Cookie est uniquement envoyé via HTTPS
- (Facultatif) Cookie n'est pas accessible aux langages de script tels que JavaScript
Un cookie créé ou modifié ne peut être accédé que sur les requêtes suivantes (où
path
etdomain
correspondent), car la nouvelle variable$_COOKIE
n'est pas immédiatement remplie avec les nouvelles données.
Récupérer un cookie
Récupérer et générer un user
nommé Cookie
La valeur d'un cookie peut être récupérée à l'aide de la variable globale $_COOKIE
. exemple, si nous avons un cookie nommé user
nous pouvons le récupérer comme ça
echo $_COOKIE['user'];
Modifier un cookie
La valeur d'un cookie peut être modifiée en réinitialisant le cookie
setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already
Les cookies font partie de l'en-tête HTTP, donc
setcookie()
doit être appelé avant que toute sortie ne soit envoyée au navigateur.
Lors de la modification d'un cookie, assurez-vous que le
path
etdomain
paramètres dedomain
desetcookie()
correspondent au cookie existant ou qu'un nouveau cookie sera créé à la place.
La partie valeur du cookie sera automatiquement encodée lors de l'envoi du cookie et, une fois reçue, elle sera automatiquement décodée et affectée à une variable du même nom que le nom du cookie.
Vérifier si un cookie est défini
Utilisez la fonction isset()
sur la variable superglobal $_COOKIE
pour vérifier si un cookie est défini.
Exemple:
// PHP <7.0
if (isset($_COOKIE['user'])) {
// true, cookie is set
echo 'User is ' . $_COOKIE['user'];
else {
// false, cookie is not set
echo 'User is not logged in';
}
// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in';
Retirer un cookie
Pour supprimer un cookie, définissez l'horodatage d'expiration sur une heure antérieure. Cela déclenche le mécanisme de suppression du navigateur:
setcookie('user', '', time() - 3600, '/');
Lors de la suppression d'un cookie, assurez-vous que le
path
etdomain
paramètres dedomain
desetcookie()
correspondent au cookie que vous tentez de supprimer ou qu'un nouveau cookie, qui expire immédiatement, sera créé.
C'est aussi une bonne idée de $_COOKIE
valeur $_COOKIE
au cas où la page en cours l'utilise:
unset($_COOKIE['user']);