web-dev-qa-db-fra.com

Pour le panier, utilisez une session ou un cookie?

Mon site actuel utilise une session pour stocker tous les articles dans le panier d'un client. Bien sûr, une session ne durera que si longtemps, donc si les visiteurs revenaient peut-être dans quelques heures, ou même le lendemain, leurs articles de panier seraient oubliés.

Si j'ai utilisé un cookie, je pourrais garder les articles dans le panier pendant environ un mois. De sorte que s'ils reviennent, ils sauront les articles qu'ils souhaitaient commander, sans avoir à essayer de s'en souvenir et à les rechercher.

Alors vaut-il mieux utiliser un cookie? Existe-t-il une norme de l'industrie et une bonne raison pour les personnes utilisant une session? Je sais que vous pouvez stocker plus de données à l'aide d'une session, mais ce n'est qu'un tableau de quelques éléments, donc il ne devrait pas y avoir beaucoup de données de toute façon.

4
Source

La session est stockée sur le serveur tandis que les cookies sont stockés sur le bureau de l'utilisateur.

Dans la session, vous n'avez aucun moyen de récupérer les informations du panier après la fin de la session (généralement 30 minutes au maximum). Vous perdrez 2 heures de Paula, qui a eu du mal à choisir cette chemise rouge sur la chemise verte.

La taille et le nombre des cookies sont en effet limités et il serait frustrant de n'avoir enregistré que la moitié de votre panier.

Une autre différence est que certaines personnes n'acceptent pas les cookies. La solution de session fonctionnerait n'importe où.

Vous avez deux autres options équitables:

  1. base de données: pour pouvoir envoyer des e-mails le poussant à acheter des trucs. Ou si vous ne souhaitez pas que l'utilisateur accède à son panier sur n'importe quel appareil.

  2. localstorage: qui est essentiellement un cookie 2.0. Cependant, cela ne fonctionne pas sur les très anciens navigateurs.

Si vous n'avez pas de besoins spéciaux, les cookies ou le stockage local sont une bonne affaire.

7
Foucha

Vous n'êtes pas limité à ces deux options, vraiment.

Tout d'abord, permettez-moi de clarifier une certaine confusion.

Chaque session a un identifiant utilisé pour faire correspondre un navigateur particulier avec un ensemble de données stockées sur le serveur. Cet identifiant doit être stocké sur l'appareil d'un utilisateur d'une manière ou d'une autre - en utilisant cookies ou trans_sid . Notez que le session.use_trans_sid L'approche utilise les URL des ressources pour transmettre l'ID de session et n'est pas un moyen très populaire de gérer cela. Dans la plupart des cas, les sessions utilisent de toute façon des cookies. Cela signifie que vous ne pouvez pas être sûr que:

Une autre différence est que certaines personnes n'acceptent pas les cookies. La solution de session fonctionnerait n'importe où.

PHP, par exemple, utilise des cookies pour les sessions par défaut. Cela signifie que si les utilisateurs ont désactivé les cookies, les sessions ne fonctionneront probablement pas non plus.

Vous avez des moyens de contrôler le délai d'expiration de la session - regardez comment les sites de réseaux sociaux se souviennent de vous pendant des mois. La durée de vie de la session se compose de deux parties:

  1. pendant combien de temps un appareil utilisateur se souvient de la session, c'est-à-dire stocke l'ID de session et l'utilise pour l'authentification; et
  2. pendant combien de temps le serveur stocke-t-il les données associées, c'est-à-dire qu'il est capable de faire correspondre l'ID de session fourni avec un ensemble de données générées et stockées lors d'une visite correspondante

Si vous utilisez des cookies pour stocker l'identifiant de session, augmentez leur durée de vie - comme vous l'avez dit, pendant environ un mois. Configurez ensuite le processus de nettoyage automatique du serveur pour conserver les sessions pendant ce mois environ.

Si vous passez l'ID dans l'URL, il sera stocké aussi longtemps que l'utilisateur aura cette URL, mais encore une fois, la configuration du serveur devra également être ajustée en conséquence.

Comme suggéré ci-dessus, une bonne idée serait d'associer le panier à un compte d'utilisateur ou à un e-mail réel, de cette façon si une session expire ou se perd (un utilisateur a nettoyé les cookies ou réinstallé le navigateur ou tout simplement connecté à partir d'un autre appareil) vous pouvez toujours le redémarrer en utilisant l'e-mail ou le nom d'utilisateur du client et précharger les données.

Un autre point sur les cookies est que leur contenu est visible par les utilisateurs, par ex. si vous y stockez des informations de suivi, elles peuvent être consultées ou modifiées par les utilisateurs.

Quoi qu'il en soit, il semble que la question appartient à Stackoverflow

1
aexl