Tout sur les cookies

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 462 fois - Téléchargée 27 fois

Contenu du snippet

Beaucoup de gens ont du mal avec les cookies, ils les envois avant les headers ou certaines conditions leur échappe (faire que 1 cookie ne soit valable que pour 1 dossier ...)

Donc voila une petite aide ...

Source / Exemple :


- Conditions de la création de cookie :

  • Le client doit les accepter ( lol )
  • Un cookie ne peut pas faire plus de 4Ko (4 Ko c'est quand meme trés gros pour un fichier texte lol, essayez sur note pad vous verez, donc pas la peine de raconter sa life dans le cookie lol)
  • Vous ne pouvez pas avoir plus de 20 cookies sur votre site (limitation de 20 cookies créé par client)
- Syntaxe de la création de cookie : setcookie (nom, valeur , expiration , répertoire , domaine , sécurité ) - Explication des variables de la création : Nom : Le nom du cookie (nan menteur lol). Valeur : La valeur du cookie. Expiration : date à laquel le cookie s'efface. Il doit être timestamp Unix. A créer avec time() ou mktrime().(Si il n'y a pas d'expiration mettre Null) Répertoire : Désigne le répertoire où le cookie est actif dans votre site. Si il est actif pour tout le site mettez Null Domaine : Désigne le domaine où le cookie est actif (votre site quoi). Si vous ne spécifiez pas de domaine mettez Null (c'est généralement le cas). Sécurité : Désigne si vous souhaitez que le cookie ne soit communiqué que lors de connexions sécurisées (SSL). Valeur possible : TRUE ou FALSE. - Condition de création d'un cookie : Pour créer un cookie la seul condition (qui pose problème à un grand nombre de personne) c'est que la création du cookie doit être éffectuée AVANT L'ENVOIS DU HEADER DE LA PAGE. Le header contient toutes les infos sur la page (protocol, valeur des cookies ... ) donc vous ne pouvez logiquement pas créer un cookie alors que vous avez déjà envoyé ce qui le contient. Vous pouvez tester si le header a été envoyé en utilisant la fonction headers_sent(). Exemple : If (headers_sent()) { echo "Trop tard pour la création ..."; } else { echo "C partiii !!"; } - Création du cookie :
  • Cookie simple sans date de validité : setcookie("Mycookie","Coucou");
// ici le cookie s'appele Mycookie et contient Coucou
  • Cookie qui ne dure que 1 heure : setcookie("Mycookie","Coucou", mktime()+3600); // 3600 >> SECONDES << donc si vous voulez 1 jour par exemple mettez 86400 secondes.
// ici le cookie s'appele Mycookie, contient Coucou et s'effacera dans 1 heure
  • Cookie valide dans le dossier membre du site http://www.phpcs.com pour 1 heure : setcookie("Mycookie","Coucou", mktime()+3600, "/membre/",".phpcs.com");
// ici le cookie s'appele Mycookie, contient Coucou, n'est valable que pour le dossier php de phpcs.com et s'effacera dans 1 heure
  • Cookie valide juste pour le dossier achat sur un serveur SSL (http://www.rueducommerce.fr par exemple) : setcookie("Mycookie","Coucou", mktime()+3600, "/achat/", ".rueducommerce.fr",TRUE);
// ici le cookie s'appele Mycookie, contient Coucou, n'est valable que pour le dossier achat du site rueducommerce.fr en mode sécurisé et s'effacera dans 1 heure - Comment récupérer la valeur d'1 cookie :
  • Vous pouvez récupérer sa valeur de 2 façons :
+ $nomducookie (cette méthode est à bannir car elle n'est pas sur. Utilisez la juste pour vérifier la valeur du cookie quand vous débuggez) + $_COOKIE[nomducookie] La valeur est récupérée dans le tableau de register global des cookies. Ce tableau contient toutes les valeurs de cookies que vous créez dans le site. A utiliser OBLIGATOIREMENT !! (sinon je me fache lol) - Effacement du cookie : Pour effacer un cookie, rien de plus simple il suffit de le recréer. Dans les exemples plus haut nous avons créé un cookie qui s'appele Mycookie et qui a comme valeur Coucou avec setcookie("Mycookie","Coucou");. Et bien pour l'effacer il y a juste à faire : setcookie("Mycookie"); Et c'est tout, pas de commande delcookie() ou autre.

Conclusion :


Voila je crois ne pas avoir oublié grand chose mais si j'ai oublié quelque chose dite ça peut servir lol

@++
bon coding !!

A voir également

Ajouter un commentaire

Commentaires

longshot41
Messages postés
16
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
25 mars 2010
-
Pour Kirua et les autres aussi lol.
Ce que je fais c'est un truc du genre.
Parfois on ne peut pas ce permettre de recharger la page pour raison XY.
Je fais une copie d'un code d'exemple pour une variable de langue.

*****codeur: Longshot le: 22-12-2005
$expire = 10; // 10 sec avant l'expiration, c'est pratique pour tester sans avoir besoin de redemarer le nav. a chaque fois. A changer lors de l'exploitation.

if ($_COOKIE["lang_cookie"]) // si le coookie existe l'attribuer à la $lang_var
$lang_var = $_COOKIE["lang_cookie"];
elseif (isset($_GET['lang'])) { // sinon si $_GET['lang'] existe (pour mon cas le cookie = une var(lang) d'url)
$lang_var = $_GET['lang'];
setcookie("lang_cookie","$lang_var",time()+$expire);} // et créer le cookie
else
$lang_var = "default";
// pour testons en appelant la page, puis en la rappelant
echo "Mon cookie = " . $_COOKIE["lang_cookie"];
echo "
Ma var =" . $lang_var;
include("include/traduction.php");
//et dans le include un truc genre if ($lang_var "fr") $ville "en français";
// if ($lang_var "default") $ville "rien";
// else
echo "
$ville";
**** FIN

Bon un if/else aurrais suffit, mais j'aime bien savoir ce qui passe dans mes variables.
elseif (isset($_GET['lang'])) doit pouvoir ce remplacer par elseif ($_GET['lang']) question d'habitude.

Voilà en résumer, plutot que de tout miser sur le cookie que de toute façon il va falloir rap. a chaque page j'utlise une varible normale.

Au départ je voulais utilisé les sessions, mais si pour une raison XY elle tombait (fermeture du navigateur, plantage etc.. le visiteur ce retrouverai certainement avec la langue par defaut.
Pour les malins (lol) récupérer la langue du navigateur et aussi une solution, mais par ex. si le visiteur travail avec un ordi en espagnol et que sa langue natale et le français je pense qu'il serai plus à l'aise si celà s'affiche dans celle-ci.

Bon c'est une proposition, je suis ptre a coter completement, mais cette solution me convient.

ATTENTION ne jamais stocker de cookie login/pass trop dangereux le mieu c'est une session.
Si jamais pour ceux qui serai interressé, j'ai aussi un petit code pour éviter ceux qui piquerai la connection.
mathieumg
Messages postés
558
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
18 février 2006
-
La valeur du cookie sera vide. Donc c'est une façon de vérifier si l'utilisateur accepte les cookies, tu met une valeur dans un cookie et ensuite si le cookie ne contient rien c'est que le cookie n'y est pas (Refuse cookies).

Mat
cs_Solo
Messages postés
10
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
6 octobre 2004
-
Oh grand maitre du cookie ! une petite question bete... Que se passe t-il si je tente de lire un cookie qui n'existe pas ? Par exemple dans le cas ou un cookie a expiré, ou si l'internaute a effacé ses cookies, ou si l'internaute est parano et qu'il refuse les cookies, ou enfin, si des cookies ne sont créés que pour certains internautes autentifiés...
geranium7
Messages postés
1
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
9 juin 2004
-
salut et merci bcp pour ce tuto. je débute totalement, et je voudrais savoir qui (quelles entreprises) vient sur mon site. Je pense que c'est grace aux cookies.
Mais je n'arrive pas , avec le script, à récupérer les cookies : ou sont -ils ? Faut il créer un fichier de récupération ?
merci @+
CaBBaLe
Messages postés
5
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
1 juin 2004
-
slt,

Merci tortue t'es génial ;)
Donc je passais par là pour parfaire toujours mon apprentissage de php, et j'ais vu des histoire de date dans les commentaire de ce tuto, dont la reponse peut être autre.
Donc pour ceux qui veulent un cookie qui expire à une date précise, il existe une solution avec mktime() directement dans la déclaration du cookie.

------
code:
---------------------------------------------
setcookie("$nom_du_cookie","$valeur_du_cookie",mktime(0,0,0,1,1,2005));
---------------------------------------------
Le cookie ici expire le 1ier janvier 2005.

Voila cela à surement été dis alleur depuis le temps, mais cela pourra surement servir à celui qui passe par ce tuto.

@++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.