probleme de cookie

Eléphanteau du PHP | 41 Messages

07 mai 2008, 14:48

Bonjour,

Je travail sur un petit système de panier, pour cela je créé un cookie dans lequel je voudrais stocker sous forme de tableau associatif.

Mais lorsque je fais un print_r je ne vois que le dernier enregistrement !!

Voici mon code, je voudrais donc cumuler tous mes enregistrement à la position 0, 1 .... de mon tableau.
<?php

if(isset($_GET['test']))
{

if(!isset($_COOKIE['panier']))
{
setcookie("panier");
}

$_COOKIE['panier'][]=array("id" => "dfdfd",'nom'=>"fdfd",'model'=>"dfdfdfdfd");	

print_r($_COOKIE);
}


?>

Eléphant du PHP | 224 Messages

07 mai 2008, 15:00

Bonjour :)

Je crois que le système de Cookies n'accepte pas des "array", il lui faut du "string", pour ce faire, regarde du côté des fonctions "serialize" et "unserialize"...

à+ :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 mai 2008, 15:13

Pourquoi avoir un panier en cookie ?

Un tuto sur les paniers..

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 41 Messages

08 mai 2008, 07:57

Bonjour,

je cherche à comprendre surtout comment stocker des infos dans le cookie.

Salutations

Petit nouveau ! | 8 Messages

08 mai 2008, 12:07

Premièrement on ne peux définir des cookie qu'avec la fonction "setcookie", $_COOKIE ne permeet que l'accès au contenu d'un cookie.

Ensuite, pour stocker un array, il faut le transformer en chaîne de caractères, pour ce faire, la fonction "serialize" ou encore "json_encode" pourront t'aider. Ensuite il te suffit d'utiliser les fonctions qui font le contraire, et ça roule. Par contre j'ai lu qu'il était déconseillé de faire une sérialization avec des cookies, à toi de voir. Mais les session seront plus pratique pour la gestion d'un panier.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 mai 2008, 12:19

Pour aller dans la même idée que M.Jerome, il faudrait que tu comprennes que le cookie est une information stockée sur le poste client.

Si tu stockes un panier dedans, tu t'exposes à plusieurs problèmes :
- possibilité de piratage (ce n'est pas compliqué de modifier un prix ou un total une fois que le cookie est découvert)
- tu augmentes le volume de données transmis entre le poste client et le serveur
- si les cookies sont désactivés par le client, ton système ne fonctionne plus du tout

Il est beaucoup plus intéressant de passer par les sessions
- le panier est stockée sur le serveur, sans possibilité pour le client d'y accéder directement ( => sans passer par ton code PHP)
- la seule information envoyée au client est l'identifiant de la session (moins de volume)
- si le client n'accepte pas les cookies, les serveurs sont configurés pour transmettre cet identifiant en GET, et ce, automatiquement, donc sans ajouter de code dans ton programme.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 8 Messages

08 mai 2008, 12:24

- possibilité de piratage (ce n'est pas compliqué de modifier un prix ou un total une fois que le cookie est découvert)
Oui, mais je pense qu'un minimum de réflexion aura abouti à ne stocker que les IDs des articles, le client peut faire ce qu'il veut avec les IDs, si il le change manuellement, il aura un autre produit avec le prix qui lui correspond, en espérant qu'il tombe sur moins chère . :D

Mais tu as tout de même raison, les sessions, c'est le mieux.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 mai 2008, 13:13

bah, en arriver à stocker le panier en cookie montre, selon moi, une mauvaise réflexion. (c'est pas à prendre comme une critique méchante)

Donc, je préfère être complet et donner un aperçu générale ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer