Si vous avez déjà développé un site web en PHP, vous avez forcément utilisé les cookies, ces petits fichiers déposés sur le navigateur de vos visiteurs. Ils servent à tout : conserver une session, mémoriser un panier, suivre une connexion… bref, ils sont l’ADN du web interactif. Mais avec le PHP 8.5, voici l’arrivé du cookie partitionné !
Depuis quelques années, le vent tourne. Entre la fin des cookies tiers, les nouvelles politiques de confidentialité et la montée en puissance du « Privacy by Design », les développeurs ont dû revoir leur copie. Google Chrome, Safari et Firefox ont commencé à restreindre les cookies inter-sites, provoquant parfois des comportements étranges dans les applications qui reposaient sur ce partage de données.
C’est dans ce contexte que PHP 8.5 a introduit une fonctionnalité moderne et bienvenue : le support des cookies partitionnés (ou Partitioned Cookies). Cette nouveauté s’inscrit dans la tendance actuelle du web sécurisé et respectueux de la vie privée, tout en laissant aux développeurs un moyen propre de maintenir certaines fonctions essentielles, comme l’authentification entre domaines liés.
Dans ce guide complet, nous allons découvrir ensemble ce que sont ces cookies partitionnés, pourquoi ils existent, et surtout comment les utiliser pas à pas avec PHP 8.5, même si vous débutez totalement.
- Avant tout, qu’est-ce qu’un cookie ?
- Les cookies partitionnés : une nouvelle approche
- Pour résumé simplement ce qu'est un cookie partitionné
- Créer un cookie partitionné en PHP 8.5
- Cas concrets d’utilisation des cookies partitionnés
Avant tout, qu’est-ce qu’un cookie ?
Avant d’attaquer les nouveautés, faisons un petit retour aux bases.
Un cookie est un petit morceau d’information envoyé par un serveur web au navigateur du visiteur. Ce dernier le stocke localement, puis le renvoie automatiquement au serveur à chaque nouvelle requête vers le même domaine. Cela permet au site de « se souvenir » de l’utilisateur d’une page à l’autre.
Prenons un exemple simple : Vous créez un site où les utilisateurs peuvent choisir un thème sombre ou clair. Quand ils sélectionnent le thème sombre, vous enregistrez ce choix dans un cookie. Ainsi, la prochaine fois qu’ils reviennent, leur préférence est automatiquement appliquée.
Voici le code PHP classique :
setcookie("theme", "sombre", time() + 3600, "/");Ici :
"theme"est le nom du cookie,"sombre"sa valeur,time() + 3600indique qu’il expirera dans une heure,- et
"/"signifie qu’il est valable pour tout le site.
Pour récupérer ce cookie, il suffit ensuite d’écrire :
echo $_COOKIE["theme"];Simple, non ? Mais cette simplicité a aussi un revers.
Pendant longtemps, les cookies ont pu être lus et envoyés entre différents domaines. C’est ce qu’on appelle les cookies tiers (third-party cookies).
Par exemple, si un site A intégrait une bannière publicitaire venant d’un domaine B, ce dernier pouvait déposer un cookie sur votre navigateur, et vous reconnaître plus tard sur un site C. C’est ce mécanisme qui a permis à la publicité ciblée de devenir aussi omniprésente… et aussi intrusive.
La fin annoncée des cookies tiers
Pour comprendre l’arrivée des cookies partitionnés, il faut connaître le problème qu’ils cherchent à résoudre.
Pendant des années, les cookies tiers ont été la base du suivi publicitaire. Chaque fois que vous visitiez un site avec des éléments externes (Google Ads, Facebook Pixel, etc.), ces services plaçaient un cookie sur votre navigateur. Résultat : ils pouvaient vous suivre d’un site à l’autre, sans votre accord explicite.
Cela n’a évidemment pas plu à tout le monde. Sous la pression du RGPD en Europe, du CCPA aux États-Unis, et d’une opinion publique de plus en plus méfiante, les navigateurs ont commencé à bloquer ces cookies tiers.
Safari a ouvert le bal dès 2017, Firefox a suivi, et Google Chrome – pourtant acteur central de la publicité – a annoncé leur suppression progressive, repoussée plusieurs fois mais désormais inévitable.
Pour les développeurs, cela a eu des conséquences immédiates :
- Des sessions partagées entre domaines ne fonctionnaient plus.
- Les outils d’authentification SSO devenaient capricieux.
- Certaines intégrations techniques (comme les widgets ou les systèmes de paiement externes) cessaient tout simplement de retenir les utilisateurs.
Imaginez un internaute qui se connecte sur votre boutique shop.example.com, puis passe sur payment.example.com pour régler sa commande. Si les cookies sont bloqués entre ces deux sous-domaines, il peut se retrouver « déconnecté » en plein paiement. Pas très pratique… ni rassurant.
Les ingénieurs des grands navigateurs ont donc cherché une solution de compromis : préserver la confidentialité sans casser les fonctionnalités essentielles du web moderne. Et c’est ainsi qu’est née la notion de cookie partitionné.
Les cookies partitionnés : une nouvelle approche
Un cookie partitionné, c’est un cookie tiers… mais cloisonné.
Autrement dit, il est toujours stocké par le navigateur, mais il est isolé par contexte d’origine. Cela signifie qu’un cookie déposé par un service tiers n’est plus global, mais unique pour chaque site sur lequel il est utilisé.
Pour illustrer, prenons un exemple concret :
- Le domaine
cdn.example.comfournit un script commun à plusieurs sites partenaires. - Avant, un cookie déposé par ce CDN était partagé sur tous ces sites, ce qui permettait un suivi global.
- Avec les cookies partitionnés, ce même cookie sera désormais séparé pour chaque site d’intégration.
Ainsi, si un utilisateur visite siteA.com et siteB.com, les cookies stockés par cdn.example.com seront différents dans chaque contexte. Le CDN pourra donc toujours garder des informations nécessaires (comme une préférence de langue ou un jeton de sécurité), mais il ne pourra plus relier les deux visites entre elles.
C’est un peu comme si le navigateur créait un petit “compartiment” de cookies par site parent. D’où le terme partitionné.
Cette évolution apporte une solution équilibrée :
- les développeurs gardent la possibilité d’utiliser des cookies inter-sites pour des besoins légitimes,
- les utilisateurs bénéficient d’une meilleure confidentialité.
Et c’est ici que PHP 8.5 entre en scène, avec le support natif de ce nouveau type de cookie via le paramètre Partitioned.
Pour résumé simplement ce qu’est un cookie partitionné
Un cookie partitionné, souvent appelé CHIPS (Cookies Having Independent Partitioned State), est un type de cookie web conçu pour améliorer la confidentialité des utilisateurs.
En termes simples, au lieu qu’un cookie puisse être lu par n’importe quel site web d’un fournisseur (ce qui permet le suivi intersite), ce cookie est désormais associé uniquement au site spécifique qui l’a « déposé » pour la première fois.
Imaginez que chaque site web ait son propre tiroir à cookies : le cookie de Site A ne peut pas être vu ou utilisé par Site B, même s’ils partagent le même fournisseur de contenu intégré (comme un service de commentaires ou de publicité).
Cela limite la capacité des tiers à suivre vos activités sur différents sites web, tout en permettant au contenu intégré de fonctionner correctement sur le site principal.
Créer un cookie partitionné en PHP 8.5
C’est ici que les choses deviennent intéressantes. Depuis PHP 8.5, la fonction setcookie() accepte un nouvel attribut : Partitioned. Cet attribut correspond à une extension de la norme SameSite définie par les navigateurs récents.
Mais avant d’ajouter ce nouveau paramètre, revoyons un instant comment la gestion des cookies a évolué au fil du temps.
Dans les versions plus anciennes, la fonction setcookie() utilisait une longue série de paramètres positionnels, souvent source d’erreurs :
setcookie("nom", "valeur", time() + 3600, "/", "exemple.com", true, true);Il fallait s’y retrouver entre le domaine, la sécurité, le HTTPS, le SameSite… Un simple oubli et tout tombait à l’eau.
Heureusement, depuis PHP 7.3, on peut passer un tableau d’options beaucoup plus lisible. Voici comment on déclare désormais un cookie moderne, compatible avec les standards récents :

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?setcookie("user_token", "12345abc", [
"expires" => time() + 3600,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "None"
]);Notez que "samesite" => "None" est obligatoire si vous voulez que votre cookie soit utilisé dans un contexte inter-site, c’est-à-dire sur plusieurs domaines liés.
Eh bien, à partir de PHP 8.5, vous pouvez désormais ajouter une clé supplémentaire : "partitioned" => true.
Cela donne :
setcookie("user_token", "12345abc", [
"expires" => time() + 3600,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "None",
"partitioned"=> true
]);Grâce à cette option, votre cookie sera stocké dans un « compartiment » unique pour chaque site appelant, empêchant qu’il soit partagé au-delà du contexte légitime.
Autrement dit :
- Si votre service d’authentification est partagé entre
login.example.cometshop.example.com, le navigateur isolera le cookie pour chacun, mais l’application pourra continuer à fonctionner correctement sans fuite inter-site. - Si un autre domaine externe tente d’accéder à ce même cookie, il obtiendra une version vide ou distincte.
C’est une véritable avancée en termes de sécurité et de respect de la vie privée.
Beaucoup de développeurs ont eu une mauvaise surprise en 2023 : des sessions qui se fermaient toutes seules sur Safari ou Chrome. Après des heures de débogage, ils découvraient que le navigateur refusait simplement les cookies sans attribut SameSite=None; Secure.
Les cookies partitionnés ont été pensés justement pour éviter ce genre de casse-tête : ils s’adaptent à la logique des navigateurs modernes sans sacrifier la compatibilité.
Cas concrets d’utilisation des cookies partitionnés
Les cookies partitionnés ne sont pas une simple curiosité technique. Ils répondent à des cas très précis que l’on rencontre souvent en développement web.
1. Authentification partagée entre sous-domaines
Imaginons que vous gériez un écosystème complet :
- un site vitrine
www.monsite.fr, - une boutique
shop.monsite.fr, - et un tableau de bord utilisateur
app.monsite.fr.
Avant, vous pouviez définir un cookie sur le domaine .monsite.fr pour partager les sessions entre ces sous-domaines. Mais avec les nouvelles restrictions, cela devient délicat.
Le cookie partitionné vient sauver la mise : il permet à chaque sous-domaine d’utiliser son propre espace isolé tout en restant reconnu par votre serveur principal.
Concrètement :
setcookie("session_id", "abc123", [
"expires" => time() + 86400,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "None",
"partitioned" => true
]);Vous pouvez alors gérer vos connexions de manière cloisonnée sans exposer les données des utilisateurs d’un sous-domaine à l’autre.
2. Intégration d’un service externe ou widget embarqué
Autre exemple typique : vous créez un petit widget PHP hébergé sur widget.mon-site.fr que vos partenaires intègrent sur leurs sites pour afficher leurs devis ou fiches techniques.
Avant, impossible de garder une trace utilisateur entre deux sites intégrant le même script : les cookies étaient rejetés. Désormais, grâce au partitionnement, le navigateur crée un espace isolé pour chaque domaine hôte (siteA.fr, siteB.fr, etc.), et votre widget peut fonctionner normalement sans suivi inter-domaines.
C’est une révolution silencieuse : le code continue de marcher, mais sans risque d’espionnage.
3. Suivi interne sans publicité
Certaines entreprises utilisent des outils maison pour mesurer les performances de leur site ou le comportement des utilisateurs sans recourir à Google Analytics. Ces scripts internes sont parfois chargés depuis un domaine technique (comme cdn.monsite.fr).
En définissant des cookies partitionnés, vous pouvez continuer à mesurer des données essentielles – nombre de visites, connexions, taux de rebond – sans pour autant sortir du cadre de la vie privée imposé par les navigateurs modernes.
Compatibilité, bonnes pratiques et pièges à éviter
Comme toute nouveauté, les cookies partitionnés ne sont pas encore universellement supportés. Au moment de la sortie de PHP 8.5, Chrome, Edge et Opera étaient déjà compatibles, Safari suivait de près, et Firefox préparait le terrain.
Il est donc important de prévoir une solution de secours.
Par exemple, vous pouvez vérifier la version de PHP et n’activer le paramètre partitioned que si elle est suffisante :
$options = [
"expires" => time() + 3600,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "None"
];
if (PHP_VERSION_ID >= 80500) {
$options["partitioned"] = true;
}
setcookie("test_cookie", "ok", $options);Ainsi, votre code reste rétrocompatible.
Autre point crucial : utilisez toujours HTTPS
Les cookies partitionnés nécessitent le drapeau Secure, ce qui signifie qu’ils ne seront transmis qu’en connexion chiffrée. Si vous développez en local, activez un certificat auto-signé ou un proxy HTTPS pour vos tests.
Pour allez plus loin, découvrez Comment installer un certificat SSL avec Let’s Encrypt.
Enfin, attention au stockage excessif
Chaque “partition” crée un espace supplémentaire sur le navigateur. Si vous multipliez les cookies partitionnés inutilement, vous risquez d’alourdir la gestion côté client. Réservez-les aux cas vraiment justifiés.
Vers un web plus sûr et plus humain
Le cookie partitionné symbolise un tournant : celui d’un web qui cherche à concilier fonctionnalité et respect de la vie privée.
Pendant longtemps, les développeurs ont été pris entre deux feux : d’un côté les besoins métier (authentification, suivi, personnalisation), et de l’autre la pression croissante des lois et navigateurs. PHP 8.5 apporte enfin un outil clair, standardisé, et surtout simple à utiliser.
En quelques lignes, vous pouvez continuer à proposer des expériences utilisateur cohérentes, sans tomber dans les travers du pistage.
Et pour la petite histoire, cette innovation est aussi le fruit de longues discussions entre ingénieurs de Google, Apple et Mozilla : preuve qu’il est encore possible d’obtenir un consensus technique dans un monde où chaque navigateur tire souvent la couverture à soi !
PHP 8.5 : un pas vers l’avenir des cookies
Si vous avez lu ce guide jusqu’ici, vous avez désormais une vision claire de ce qu’est un cookie partitionné, pourquoi ils ont été créés, et surtout comment les utiliser dans PHP 8.5.
L’objectif n’est pas seulement technique. Il s’agit d’une évolution philosophique : le web devient plus compartimenté, plus sûr, et plus respectueux des visiteurs.
Pour vous, développeur ou futur créateur de sites, c’est aussi une belle occasion d’apprendre à coder différemment :
- en pensant la confidentialité dès la conception,
- en réduisant la dépendance à des services tiers,
- et en construisant des expériences où la confiance de l’utilisateur n’est plus une option, mais une valeur centrale.
Alors, la prochaine fois que vous poserez un cookie dans votre code PHP, demandez-vous : « Ce cookie a-t-il vraiment besoin de sortir de sa partition ? »
C’est peut-être la plus belle preuve qu’un langage aussi ancien que PHP peut encore évoluer avec son temps.

