Fonction PHP setcookie()
Exemple
L'exemple suivant crée un cookie nommé "user" avec la valeur "John Doe". Le cookie expirera après 30 jours (86400 * 30). Le "/" signifie que le cookie est disponible sur tout le site (sinon, sélectionnez le répertoire que vous préférez).
On récupère alors la valeur du cookie "user" (grâce à la variable globale $_COOKIE). Nous utilisons également la fonction isset() pour savoir 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 day
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
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. Un cookie 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 cookies.
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 encodée en URL lors de l'envoi du cookie et automatiquement décodée lors de sa réception (pour empêcher l'encodage d'URL, utilisez plutôt setrawcookie() ).
Syntaxe
setcookie(name, value, expire, path, domain, secure, httponly);
Valeurs des paramètres
Parameter | Description |
---|---|
name | Required. Specifies the name of the cookie |
value | Optional. Specifies the value of the cookie |
expire | Optional. Specifies when the cookie expires. The value: time()+86400*30, will set the cookie to expire in 30 days. If this parameter is omitted or set to 0, the cookie will expire at the end of the session (when the browser closes). Default is 0 |
path | Optional. Specifies the server path of the cookie. If set to "/", the cookie will be available within the entire domain. If set to "/php/", the cookie will only be available within the php directory and all sub-directories of php. The default value is the current directory that the cookie is being set in |
domain | Optional. Specifies the domain name of the cookie. To make the cookie available on all subdomains of example.com, set domain to "example.com". Setting it to www.example.com will make the cookie only available in the www subdomain |
secure | Optional. Specifies whether or not the cookie should only be transmitted over a secure HTTPS connection. TRUE indicates that the cookie will only be set if a secure connection exists. Default is FALSE |
httponly | Optional. If set to TRUE the cookie will be accessible only through the HTTP protocol (the cookie will not be accessible by scripting languages). This setting can help to reduce identity theft through XSS attacks. Default is FALSE |
Détails techniques
Valeur de retour : | VRAI en cas de succès. FAUX 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!";
// cookie will expire when the browser close
setcookie("myCookie", $value);
// cookie will expire in 1 hour
setcookie("myCookie", $value, time() + 3600);
// cookie will expire in 1 hour, and will only be available
// within the php directory + all sub-directories of php
setcookie("myCookie", $value, time() + 3600, "/php/");
?>
<html>
<body>
...some code...
</body>
</html>
Exemple
Pour modifier un cookie, il suffit de définir (à nouveau) le cookie à l'aide de 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 "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
Exemple
Pour supprimer un cookie, utilisez la fonction setcookie() avec une date d'expiration dans le passé :
<?php
// set the expiration date to one hour ago
setcookie("user", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>
Exemple
Créez un petit script qui vérifie si les cookies sont activés. Essayez d'abord 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 "Cookies are enabled.";
} else {
echo "Cookies are disabled.";
}
?>
</body>
</html>
❮ Référence réseau PHP