web-dev-qa-db-fra.com

Quand devrais-je utiliser des variables de session au lieu de cookies?

Les variables de session et les cookies me semblent très similaires. Je comprends les différences techniques, mais comment décidez-vous quand utiliser l'un par rapport à l'autre?

53
sprugman
  • Les sessions sont stockées sur le serveur, ce qui signifie que les clients n’ont pas accès aux informations que vous stockez à leur sujet. Les données de session étant stockées sur votre serveur, il n'est pas nécessaire de les transmettre intégralement à chaque page. les clients doivent simplement envoyer un identifiant et les données sont chargées à partir du serveur.

  • D'autre part, les cookies sont stockés sur le client. Ils peuvent durer longtemps et vous permettre de travailler plus facilement lorsque vous avez un cluster de serveurs Web. Cependant, contrairement aux Sessions, les données stockées dans les cookies sont intégralement transmises à chaque demande de page. 

  • Éviter de stocker des données dans des cookies

    • il peut être vu, lu et manipulé par l'utilisateur final, ou intercepté par ceux qui ont une intention néfaste. Vous ne pouvez faire confiance à aucune donnée dans les cookies, à l'exception du "id_session".
    • Si vous ajoutez 1 ko de données par demande de page par utilisateur, votre bande passante augmente de 10 à 15%. Cela n’est peut-être pas coûteux du point de vue de l’argent, mais du point de vue des performances. Cela réduirait effectivement votre bande passante sur un serveur de 10 à 15%, autrement dit, vous pourriez avoir besoin de plus de serveurs.
  • Ce que vous pouvez stocker dans les données de session dépend de la quantité de données et du nombre d'utilisateurs que vous avez. no_of_users * size_of_session_data doit être inférieur à la mémoire disponible sur votre serveur.

52
Daniel Vassallo
  • toujours utiliser la session
  • utilisez le cookie uniquement si vous avez besoin de sessions connectées plus longues. Ajoutez ensuite un cookie avec un ID utilisateur crypté.
9
Bozho

La plupart du temps, l'état de la session est conservé à l'aide de cookies. Donc, ce n'est pas vraiment une question de l'un ou de l'autre, mais comment les utiliser ensemble.

L'utilisation de l'infrastructure de session de votre infrastructure peut vous faciliter la tâche, mais le suivi manuel de l'état à l'aide de cookies vous donne généralement un contrôle plus fin. La bonne solution dépend de ce que vous essayez d'accomplir.

7
Daniel Pryden

Les cookies peuvent persister plus d'une session. Toutefois, les cookies peuvent également être supprimés par l'utilisateur ou vous pouvez avoir un utilisateur dont le navigateur n'accepte pas les cookies (dans ce cas, seule une session côté serveur fonctionnera).

5
danben

Les cookies sont côté client, les sessions sont côté serveur. Utilisez des cookies pour de petites données auxquelles vous pouvez faire confiance (comme les paramètres de police, le thème du site, etc.) et pour les identifiants opaques des données côté serveur (tels que l'identifiant de session). Attendez-vous à ce que ces données puissent être perdues à tout moment et qu’elles ne puissent plus être fiables (c’est-à-dire qu’elles doivent être nettoyées) . Utilisez les données de session pour des blocs de données plus importants (de nombreux systèmes peuvent stocker des objets, des structures de données, etc.) vous devez faire confiance - comme le statut d'autorisation, etc. En général, utilisez les données de session pour stocker des données d'état plus volumineuses.

Vous pouvez également stocker des informations telles que le statut d'autorisation dans les cookies, si cela est nécessaire pour l'interface graphique, la mise en cache, etc. - mais ne jamais y faire confiance et ne jamais compter sur sa présence. Les cookies sont faciles à supprimer et à simuler. Les données de session sont beaucoup plus difficiles à simuler, car votre application les contrôle.

5
StasM

Les cookies sont envoyés au serveur à chaque demande. Ainsi, si vous prévoyez de stocker une quantité importante de données, stockez-les en session. Sinon, si vous stockez de petites quantités de données, un cookie suffira. Toutes les données sensibles doivent être stockées en session, car les cookies ne sont pas sécurisés à 100%. Un avantage des cookies est que vous pouvez économiser de la mémoire sur votre serveur qui stockerait normalement les données de session.

2
JonoW

Les sessions sont stockées sur le serveur. Si vous stockez quelque chose dans un cookie, le navigateur de l'utilisateur envoie ces informations à chaque demande, ce qui ralentit potentiellement votre site du point de vue de l'utilisateur. J'essaie d'éviter d'utiliser des cookies quand je peux.

1
Brandon Montgomery

Un des inconvénients des sessions PHP est le fonctionnement de la gestion de session. Plus précisément, un seul processus/demande peut avoir une session ouverte en écriture à la fois. Sur

session_start() 

le fichier de session est verrouillé. Si davantage de processus se présentent, les autres s'entassent et attendent leur tour. 

En d’autres termes, si vous utilisez AJAX sur une page pour mettre à jour plusieurs éléments - vous ne souhaitez pas que les demandes AJAX ouvrent la même session - elles seront forcées dans une file d'attente et si l'une d'entre elles les demandes sont bloquées - la session ne sera pas libérée -, ce qui entraînera un blocage du navigateur lorsque l'ouverture d'un nouvel onglet ou d'une nouvelle fenêtre ne fera que placer une autre demande non remplissable dans la file d'attente du serveur. En utilisant 

session_write_close()

dès que possible, la fin de la session est une solution partielle.

Une longue requête avec un utilisateur ennuyé et ouvrant plus de fenêtres pourrait avoir le même effet suspendu de navigateur.

Je recommande d'éviter les sessions PHP.

1
Dieter Donnert

Les sessions sont stockées côté serveur. Si un visiteur enregistre quelque chose dans un cookie, le navigateur envoie les informations relatives à l'utilisateur pour chaque requête effectuée. Cela a tendance à consommer beaucoup de temps d'ordinateur et de ralentir l'expérience utilisateur.Certains navigateurs également supportez les cookies en donnant plus d'avantages aux sessions par rapport aux cookies .. Je recommande fortement les sessions.Ce site pourrait aider http://php.net/manual/fr/features.cookies.php merci

0
Nekta Point

Utilisez sessions uniquement si les données sont trop volumineuses pour cookies ou si elles sont si grandes que cela réduirait les performances si vous utilisiez cookies.

Par exemple, si vous enregistrez des données plus petites, la taille d'un session id dans votre cookie, par exemple 2 jetons de connexion ou quelque chose de similaire ... Je ne vois pas pourquoi vous utiliseriez sessions sur cookies.

Notez également que les fichiers de session PHP sont enregistrés sur le disque par défaut, par rapport aux cookies, qui ne sont enregistrés que du côté des clients.

0
Jo Smo

Votre guide défini

N.B - Cookie est stocké sur les navigateurs des utilisateurs, Session est stocké sur votre ordinateur serveur d'hébergement.

Quand utiliser

  1. Utilisez un cookie lorsque vous souhaitez que votre application garde toujours en mémoire les données des utilisateurs, même lorsqu'ils ont fermé leur navigateur. Par exemple, chaque fois que vous tapez www.Facebook.com, votre compte est affiché, même lorsque votre navigateur a été fermé et rouvert.

    Parce que toutes les données conservées dans une session sont effacées lorsque vous fermez votre navigateur.

  2. Utilisez un cookie lorsque les informations utilisateur à stocker sont beaucoup plus volumineuses que la normale .... Avec session si vous avez une base d'utilisateurs plus importante comme Facebook, imaginez à quoi ressemblera le stockage de toutes les sessions utilisateur sur l'hébergement machine.

  3. Utiliser une session lorsque les informations utilisateur à stocker ne sont pas supérieures à la normale et que vous ne souhaitez pas que le public ait accès à vos variables utilisateur ...

0
Emeka Obianom