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 .

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 et domain correspondent), car la nouvelle variable $_COOKIE n'est pas immédiatement remplie avec les nouvelles données.

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'];

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 et domain paramètres de domain de setcookie() 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.

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'; 

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 et domain paramètres de domain de setcookie() 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']);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow