Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TOUT SUR LES COOKIES


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 26/03/2003 Date de mise à jour : 26/03/2003 22:40:54 Vu : 9 947

Note :
7,8 / 10 - par 5 personnes
7,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (68)
Ajouter un commentaire et/ou une note


Description

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

  • - 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.
- 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 !!
 

Commentaires et avis

signaler à un administrateur
Commentaire de Kirua le 27/03/2003 07:44:26

est-ce que c'est vrai qu'on ne peut pas lire un cookie depuis la page qui l'a écrit ?
J'ai lu ça sur chai°plus°quel°site et ça s'est vérifié sur le mien, puisque j'ai dû créer une page intermédiaire :(

signaler à un administrateur
Commentaire de wonesek le 27/03/2003 12:15:29

Réponse Kirua:
Non ce n'est pas que tu peux pas lire les cookies sur la page qui l'a creer mais lorsque que tu fais un setcookie() les header informations de la page ont deja été chargé et donc les cookies que tu viens de définir ne peuvent pas etre pris en compte, c'est pour ca qu'il faut que tu recharge ta page pour que modifications soient effectives

signaler à un administrateur
Commentaire de Kirua le 27/03/2003 23:04:32

très juste, ça m'avait échappé.
merci vieux ;-)

signaler à un administrateur
Commentaire de Tortuegeniale le 27/03/2003 23:16:52

C'est le meme probleme pour les sessions

signaler à un administrateur
Commentaire de wonesek le 29/03/2003 11:08:56

Quoi qu'il en soit, y a une technique pour que des le premier chargement de la page (celui qui initialise les cookies) tu puisse avoir acces a tous tes cookies: en effet, $HTTP_COOKIE_VARS['foo'] = $val fonctionne (bah oui c'est un tableau comme un autre a priori!)

signaler à un administrateur
Commentaire de gogo.prog le 11/05/2003 12:46:44

je ne comprend pas quand je dois creer mon cookie :(

signaler à un administrateur
Commentaire de pyroflo le 15/05/2003 23:58:39

gogo.prog &gt;&gt;&gt; tu le crées avant la balise &lt;html&gt; parce que, comme il est indiqué dans ce tuto, on crée les cookies avant d'envoyer le header de la page (ça donne pleins d'infos...).

Corrigez moi si je me trompe !

Tiens, Kirua ! On est toujours au même endroit lol ;)

Pyroflo
http://www.abcpyro.fr.st

signaler à un administrateur
Commentaire de Kirua le 17/05/2003 12:50:50

t'as plus de 40 jours de retard... (H) t'es pas aware

signaler à un administrateur
Commentaire de mathieumg le 21/06/2003 12:21:25

Est-il possible de mettre admettons la date d'expiration d'un cookie à une date fixe (et non une date relative au moment de la création) ????

Merci d'avance

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Tortuegeniale le 21/06/2003 12:32:45

bah ouais c expliqué dans le tuto

mktime() + 3600 = 1h
mktime() + (3600*24) = 1 jours
mktime() + ((3600*24)*30) = 1 mois

signaler à un administrateur
Commentaire de mathieumg le 21/06/2003 12:35:22

Oui je sais mais ça c'est relatif à la date de création !

Admettons je veux que pour tous les visiteur il se détruise dimanche peu importe la date de création, je fais comment ???

Merci d'avance

Mathieu M-G

signaler à un administrateur
Commentaire de wonesek le 21/06/2003 13:00:27

tu prends le timestamp de la date fixe que tu le soustrait à time() et puis voila

signaler à un administrateur
Commentaire de wonesek le 21/06/2003 13:01:43

je parle pas bien francais.... escusez moi :) lol

signaler à un administrateur
Commentaire de StarflaM le 21/06/2003 15:35:39

lol C'est dommage lol de mettre des "lol" des tes lol commentaires de ton code.... lol :/

signaler à un administrateur
Commentaire de Tortuegeniale le 21/06/2003 16:52:03

pas content tu vas voir d'autre tutorial :-D

signaler à un administrateur
Commentaire de mathieumg le 21/06/2003 20:01:19

Comment je suis supposé faire ça wonesek (P.S. je suis un newbie !)

Merci

Mathieu M-G

signaler à un administrateur
Commentaire de eax le 21/06/2003 21:51:35

StarflaM&gt; ben t'as pas le sens de l'humour ou quoi?

signaler à un administrateur
Commentaire de eax le 27/06/2003 17:15:43

euh excuse moi (désolé d'être lourd), mais g du mal avec les cookies alors g crée une page toute simple:

&lt;? setcookie("test","c_bon"); ?&gt;
&lt;html&gt;
&lt;body&gt;
&lt;?=$_COOKIE[test]?&gt;
&lt;/body&gt;
&lt;/html&gt;

et il affiche c_bon que si je fais réactualiser et qd je relance le navigateur, il met + rien lol
pourtant g activé les cookies, c un bug de iexplore ou c moi qui ai du mal?

signaler à un administrateur
Commentaire de pyroflo le 27/06/2003 18:55:35

eax &gt;&gt;&gt; quelques remarques : je ne comprends pas (je ne connais pas) pourquoi tu mets =$_COOKIE[test] ?
Moi j'aurai mis echo $_COOKIE['test']; (avec les simple quotes).

Voilà je t'aide pas vraiment là mais bon le = me surrpend :)

signaler à un administrateur
Commentaire de eax le 27/06/2003 23:24:37

ben en fait
&lt;?=$blabla?&gt;
c pareil que
&lt;? echo $blabla; ?&gt;
mais c plus court et + rapide à taper :)

signaler à un administrateur
Commentaire de eax le 28/06/2003 11:39:18

en fait, g compris mon erreur:
quand on ne met pas de limite de validité, le cookie n'est valide que pour la session courante, donc il faut obligatoirement fixer une date limite

signaler à un administrateur
Commentaire de pyroflo le 28/06/2003 13:20:26

Oui oui tu as tout à fait raison !
Mais ce que je comprends pas c'est que lorsque tu reload une page, la session ne se termine pas. Mais quand tu fermes er relances le navigateur la oui bien sûr.

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 16:45:27

Ça marche po et les cookies sont activés !!!!!

Mon code :

if($_COOKIE[zpt]=="oui")
{
print("Vous avez déja voté !");
}

else
{
setcookie("zpt","oui");
}

signaler à un administrateur
Commentaire de Kirua le 29/06/2003 16:53:09

$_COOKIE['zpt']

signaler à un administrateur
Commentaire de pyroflo le 29/06/2003 16:58:26

mathieumg &gt;&gt;&gt; même erreur que eax, tu n'as pas mis la  durée d'expiration donc dès que tu recherches là page au revoir le cookie donc ta condition n'est pas respectée donc pas d'affichage.

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 17:52:22

Marche pas plus :'(

if($_COOKIE['zpt']=="oui")
{
print("Vous avez déja voté !");
}

else
{
setcookie("zpt","oui" ,mktime()+3600 );
}

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 17:57:20

Bon ça marche !

C'est parce que y avait &lt;html&gt;&lt;head&gt; avant mon affaire de cookie mais puisque cette page était dans un frame de 0 X 0 je ne voyais pas l'erreur Header already sent de PHP.

Maintenant je ne sais pas comment faire pour soustraire la date de lundi ademttons à celle d'aujourd'hui pour le mettre dans l'expiration du cookie ???

Merci

Mathieu M-G

signaler à un administrateur
Commentaire de pyroflo le 29/06/2003 18:08:07

Si je comprends bien tu veux interdire un autre vote pendant un laps de temps. Voilà une solution qui n'est peut être pas la meilleure mais je propose :

Lors de l'envoie du cookie tu stockes la date() dans une table puis tu la compares avec la date() actuelle lorsque le visieur revient sur ton site.
MAIS la valeur du cookie ne doit pas être "oui" ou "non" mais la date() qui aura été stockée...

Je vois que ça :)

Bon courage !

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 18:13:22

Oui mais il n'es pas possible de préalablement calculer l'intervale entre la date voulue et la présente date(en secondes) et affecter cette valeur à l'expiration du cookie ???

Merci

Mathieu M-G

signaler à un administrateur
Commentaire de pyroflo le 29/06/2003 18:18:20

Je vois pas trop ce que tu veux dire mais regarde ça :

Si tu veux soustraire la data de hier notée x à la date d'aujourd'hui notée y, tu fais simplement y - x ! Puis tu assignes le résultat à la valeur du cookie.
Si c'est ce que tu cherches je vois pas le problème mais je ne suis pas sûr que ça soit ça...

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 18:20:17

Euréka ! (Comme le dirait si bien mon ami Einstein)

$an = "2003";
$mois = "06";
$jour = "29";
$date = mktime();
$date2 = mktime(0, 0, 0, $mois, $jour, $an);
$diff = floor($date2 - $date);

if($_COOKIE['zpt']=="oui")
{
print("Vous avez déja voté !");
}

else
{
setcookie("zpt","oui",$diff);
}

Je devine les 3 "0" devant les trosi variables en ordre : seconde, minute et jour.

Si je veux rajouter pour 7h30 PM (19H30) quel "0" je remplace par la dite variable et quelle syntaxe à cette dernière : 19h30 ou 7j30 pm ou 19:30 ou 7:30 P ou 7.5 P ou 19.5 P ??? Ou un autre je sais pas trop comment le marquer.

Merci

Mathieu M-G

signaler à un administrateur
Commentaire de Tortuegeniale le 29/06/2003 18:20:38

faut faire ça avec le timestamp :

date prévu - date aujourd'hui = date qu'on veut

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 18:21:59

Je viens de le trouver lis mon message précédent j'ai d'autres questions.

Merci

Mathieu M-G

signaler à un administrateur
Commentaire de Kirua le 29/06/2003 18:27:06

mais si, faut pas compliquer.
Bon, tu fais comme suit:

Pour récupérer la date du lundi qui suit, (sache que c'est le jour 1 de 0 à 6), tu regarde le n° du jour actuel comme ceci:

$nd = date('w')

Tu sais qu'il va falloir avancer de ce nombre jusqu'au premier 1 qu'on trouve. donc $nd+1 +1 +1 ... = 1
à savoir que si on arrive à 6, il faut revenir à 0 (puisqu'il n'y a que 7 jours, de 0 à 6). bien ça donne du genre:

$avance = 7 - $nd + 1;

regarde bien pour toutes les valeurs on obtiendra bien le nombre de jours voulu (teste pour un dimanche (0) un samedi (6) un lundi (1) etc...

après tu crée une date:

$nvlle_date = time() + $avance * 24 * 60 * 60; // avance de $avance jours

et puis tu passes ton beau timestamp au cookie

signaler à un administrateur
Commentaire de Kirua le 29/06/2003 18:30:06

non pas pr le dimanche en fait. au début j'avais une switch et puis je l'ai viré.
tu n'as qu'à le mettre dans une if:

if($nd &gt;= 1)
//ce que j'ai dit
elseif($nd &lt; 1)
$avance = 1-$nd;

et comme ça ça marchera pour tous les jours, suffit de remplacer 1 par le code du jour quetu veux

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 18:34:07

Le code que j'ai mis en haut fonctionne tout ce que je veux savoir c'est la syntaxe de timestamp(); et comment marquer à 19:30 ??

Merci quand même

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Kirua le 29/06/2003 18:36:47

utilise ma classe de date, ça fonctionne pasmal pour ce genre de chose et il y a un vrai fichier d'aide structuré (chm).

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 18:41:12

Oui mais c'est quoi la syntaxe de timestamp(koi, koi ,koi, mois, jour, an) et comment je marque 7h30 du soir la dedans ?????

MERCI

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Kirua le 29/06/2003 18:53:45

WWW.PHP.NET je comprends pas que vous n'y alliez pas, on y fait tt le temps référence pffffffff

signaler à un administrateur
Commentaire de Tortuegeniale le 29/06/2003 19:04:48

kirua&gt; c bien plus facile de demander a quelqu'un de faire le code voyons lol, comme ça ils cherchent pas, c rapide (si les gens sont gentils), ils disent pas merci et aprés ils disent "Vous aimez ? c moi ki l'ai fé sans aucune aide" lol

Bon ok c pas tous ki le font mais y a un grand nombre de personnes ki font ça, c dailleur pour ça ke je fais que des tuto avec des morceaux de code et pas des sources entieres, j'aime pas me casser le cul pour ke des gens disent ke c eux ki l'ont fé lol

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 19:18:26

C bo j'ai trouvé merci de votre aide tout au long de mes difficultés et c'est pas parce que ça me tentait pas de le faire c'est que je suis un beginner en PHP.

Merci

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Kirua le 29/06/2003 19:22:24

tu n'as pas eu de difficultés, tu n'as pas cherché. désolé mais demander comment fonctionne une fonction c'est la dernière chose à faire puisqu'un coup de google et tu l'as en 2 nanosecondes.

ce qui confirme bien que quand les gens ont trouvé un endroit ou on les aide charitablement ils ne réfléchissent plus et à la moindre erreur ils sont eprdus. c pas la première fois que je vois ça, on va dire que c humain (d'ailleurs je pense bien que ça m'est arrivé aussi)

honnêtement y a des questions que tu aurais pu éviter aussi débutant que tu es, et puis tu dis merci après avoir posé les questions mais pas après qu'on ait répondu (t'imagines que j'ai du prendre une feuille et un crayon pr trouver comment calculer la date du lundi qui suit, mais tu aurais pu le faire aussi non? à moins que tu aies 4 ans) c pas des maths très poussés


sur ce, bonne continuation comme d'hab hein :)

signaler à un administrateur
Commentaire de mathieumg le 29/06/2003 19:25:33

Désolé pour tout ce que j'ai pu faire de mal. Je vais me retirer de cette discussion avant que sa tourne au rouge.

Merci et excuse

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Kirua le 29/06/2003 22:41:47

c'est pas bien grave tu sais, rassure toi :-)
et php.net doit être ton meilleur allié dans ta course contre l'empire du Mal ;-)

signaler à un administrateur
Commentaire de mathieumg le 30/06/2003 00:51:49

J'y suis allé et je trouvais pas ou étais la liste des fonctions j'ai trouvé un Manuel mais pas les fonctions et tout ça a fini par une recherche dans Google.

Encore merci et désolé

@+

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de mathieumg le 30/06/2003 15:33:53

Désolé c'est encore moi, je veux juste savoir s'il est possible de paramétrer un cookie qui n'expire pas parce que si on met pas d'expiration il est valide seulement pour la session courante et on peut quand même pas mettre uyn chiffre infini. Peut-être 0 je ne sais pas. Si c'est trop compliqué commencez pas à calculer ça sur des bouts de papier SVP Kirua dites-moi quoi je dois faire et je le ferai moi-même mes intentions n'étant point paresseuses.

Merci d'avance de votre aide.

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Kirua le 30/06/2003 16:57:57

Salut!

t pas obligé de me vouvoyer mdr :) j'avais utilisé un "vous" dans un de mes messages mais c t par accident, :-)

en effet tu ne peux pas demander l'imputrécibilité d'un cookie, mais tu peux le configurer pr qu'il soit effacé après 10, 20, 30, 1000 ans si tu veux. Mais souvent les utilisateurs pr une raison ou pour une autre voint leurs cookies effacés donc ce n'est pas garanti. Le mieuxétant je pense de créer le cookie pour mettons un an, et le recréer à chaque visite, comme ça il est tjs valide pendant "un an depuis la dernière visite"

signaler à un administrateur
Commentaire de mathieumg le 30/06/2003 17:13:09

D'accord merci beaucoup, ça en fait des secondes ça !

Et ton vous d'un des messages précédent ne me vouvoyait pas il parlais en général. Et puis qu'est-ce que ça peut bain faire qu'on se vouvoient c pas grave moi je m'en rend pas compte quand j'écris et vous c'est plus poli à moins que tu préfère absolument que je te tutoie et le monde peuvent écrire selon leur désir. Je ne dis pas ça pour être méchant je dis juste ça parce que je vouvoie presque tout le monde parce que j'y suis habitué.

Merci encore

@+

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Kirua le 30/06/2003 19:05:16

- On peut se tutoyer
- Si vous voulez

ça te rappelle rien? :-) (un peu de politique française ^^ je suis belge mais j'en ai entendu parler ^^)

signaler à un administrateur
Commentaire de mathieumg le 30/06/2003 19:06:57

Ah moi ça me dis rien je suis Canadien Québécois !

@+

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de mathieumg le 02/07/2003 22:17:06

Maintenant sur un autre site j'ai un login et je me suis arrangé pour que lors de la prochaine visite le username et le password sois automatiquement inscrit dans la form. Avec un cookie évidemment.

Mais cela ne marche pas ! Pas parce que je ne sais pas comment mais bien pour une raison que j'ignore, voici mon code :

dans la page de vérification si le user est john et le mot de passe mdp ça donnerait ceci :

setcookie("usr","john",mktime()+31536000);
setcookie("pswd","mdp",mktime()+31536000);

et dans la page de connexion

&lt;input value="&lt;? print("$usr"); ?&gt;" type="text" name="username"&gt;
&lt;input value="&lt;? print("$pswd"); ?&gt;" type="password" name="password"&gt;

si je prend $_COOKIE['usr'] i l y a une erreur de syntaxe en plus.

Ceux que ça leur tente et dont ils sont capables merci beaucoup de m'aider.

Mathieu M-G
http://www.maxicom.ca.tc

signaler à un administrateur
Commentaire de Aspect le 04/07/2003 01:21:47

hmm c'est pa top de garder des identififaint de connection non encrypter dans un cookie qui va durée en plus de cela 31536000 secndes :)
Tu dis qu'il y a une erreur de yntaxe, mais elle se trouve probablement autrepart dans ton code, enfin sa s'avère difficile de t'aider avec ce peu d'infos :/

signaler à un administrateur
Commentaire de vbtom le 03/08/2003 23:54:14

"TOUT SUR LES COOKIES "
tas tout simplement oublie de dire comment on testait si le browser du client acceptait les cookies... C'est pas négligeable :)

signaler à un administrateur
Commentaire de Tortuegeniale le 04/08/2003 12:05:11

j'ai rien oublié, mon tuto c sur les cookies pas sur les clients

signaler à un administrateur
Commentaire de vbtom le 04/08/2003 14:51:24

Le prend pas comme une attaque... Ca me semble juste un points essentiel dans l'utilisation des cookies.

signaler à un administrateur
Commentaire de Tortuegeniale le 04/08/2003 21:31:58

je prend pas ça comme une attaque, ça a juste rien a faire ici lol moi ça montre comment créer un cookie, pas comment tester le client

signaler à un administrateur
Commentaire de Mumuri le 17/08/2003 17:42:39

et y'a pas une source "tester le client"

signaler à un administrateur
Commentaire de Mumuri le 17/08/2003 17:51:01

a si je sais quand le browser est redirigé on vérifie le contenu du cookie si il est vide c'est que les cookies sont pas activé

y'a des fois je m"tonne moi méme lol

signaler à un administrateur
Commentaire de praystation le 23/08/2003 20:17:43

par respect, je te remercie de ce tuto q;)

signaler à un administrateur
Commentaire de farben le 02/10/2003 02:50:06

Sympa les tutorials quand on débute, c'est une vraie mine d'or ici. Juste une ou deux remarques pour ceux qui, comme moi, n'arrivent pas à faire marcher ces sources tel quel sur leur serveur:

1/ sous peine de parse error en pagaille, il faut virer les blancs ou les tabs de début de ligne.

Ecrire par exemple:
if (condition) {
action;
}
et non pas:
if (condition) {
      action;
}



2/ sur le serveur que j'utilise pour tester (hebergementgratuit, pour ne pas le nommer), $_COOKIE ne marche pas pour lire les cookies existants, on ne peut les récupérer qu'avec le nom de la variable ou avec $HTTP_COOKIE_VARS.
Voilou un petit bout de code pour tester avec les trois méthodes si cet enfoiré de cookie existe ou pas.

&lt;?
$recu = $TestCookie;
if (!isset($recu)) {
$recu = $_COOKIE["TestCookie"];
}
if (!isset($recu)) {
$recu = $HTTP_COOKIE_VARS["TestCookie"];
}
if (!isset($recu)) {
echo "Ben ? Où kil est le cookie à son papa ?";
} else {
echo "cookie=",$TestCookie;
}
?&gt;

Remarques:
isset($var) vérifie, comme son nom l'indique si $var est vide ou pas. Je suppose que if (!$recu$) doit faire la même chose, mais isset existant, pourquoi ne pas s'en servir, hein ?

La variable TestCookie a été envoyé dans une précédente page avec:
&lt;?
$value="tagada";
setcookie("TestCookie",$value,time()+3600); 
?&gt;




3/ Effacer le cookie juste en écrivant par dessus ne marche pas non plus setcookie("TestCookie"); ou plutôt ne l'efface pas tout de suite. Pour virer la chose tout de suite, faut lui donner un temps de vie négatif.

&lt;?
setcookie ("TestCookie","", time() - 3600);
?&gt;

Là, vue qu'il n'existe plus depuis une heure, a pu le cookie, mortibus.



Voilou, j'espère que j'ai pas trop dit de conneries, je ne m'y suis mis qu'hier au php, je suis pas encore un gourou :)

signaler à un administrateur
Commentaire de farben le 02/10/2003 03:25:30

Ooops, petite erreur de copier/coller du code précédent, voilà le bon, avec la dernière ligne qui est echo "cookie=",$recu; et non pas echo "cookie=",$TestCookie;

&lt;?php
$recu = $TestCookie;
if (!isset($recu)) {
$recu = $_COOKIE["TestCookie"];
}
if (!isset($recu)) {
$recu = $HTTP_COOKIE_VARS["TestCookie"];
}
if (!isset($recu)) {
echo "a pas cookie";
} else {
echo "cookie=",$recu;
}
?&gt;

Je me suis aperçu de la boulette en testant sur un serveur local où $_COOKIE fonctionne et pas $HTTP_COOKIE_VARS, comme sur deux autres serveurs distants que j'ai  testé. Ca vient de quoi ? De la config du serveur ou c'est le bordel dans les versions ?

signaler à un administrateur
Commentaire de BoulyFamily le 27/03/2004 16:14:16

Un tuto fort utile... En effet, je m'étais lancé dans les SESSSION mais il me manquait l'utilisation des COOKIES afin que lesgens n'aient pas à saisir de nouveau leur login ni mot de passe.

Le reste de la discussion était trop longue à lire bien que des bouts de réflexionssont présents un peu par-ci par-là !

En résumé... Merci !

SEE U SOON
BoulyFamily

signaler à un administrateur
Commentaire de daerlnaxe le 07/04/2004 14:41:19

Un truc que je pige pas en fait et qui m'a fait bloquer un ptit moment... Ils sont créés ou ces cookies ? j'ai fouillé dans le repertoire utilisateur cookies (jesuis sous xp) je m'attendais a les voir sous la forme utilisateur@nomducookies.txt ...

thx pour ton tuto j'ai eu du mal un moment mais pour une connerie lol... j'avais foutu des "." dans le nom de mon cookies.

signaler à un administrateur
Commentaire de CaBBaLe le 01/06/2004 21:22:19

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.

@++

signaler à un administrateur
Commentaire de geranium7 le 09/06/2004 16:47:55

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 @+

signaler à un administrateur
Commentaire de Solo le 23/06/2004 11:57:34

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...

signaler à un administrateur
Commentaire de mathieumg le 25/06/2004 04:39:33

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

signaler à un administrateur
Commentaire de longshot41 le 22/12/2005 16:25:56

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 "<br>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 "<br>$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.

Ajouter un commentaire