web-dev-qa-db-fra.com

Quelle est la différence entre une variable de session Drupal et un cookie?

Lorsque vous définissez une variable de session Drupal (c'est-à-dire une variable "magique" que vous pouvez définir comme ceci):

$_SESSION['mymodule'] = array('key' => 'value');

la valeur disparaît lorsque l'utilisateur se déconnecte.

Si vous définissez un cookie, en utilisant la fonction

user_cookie_save(array('key'=>'value'))

la valeur enregistrée survit à la session utilisateur.

Cependant, je me demande s'ils ne sont que deux (par exemple, une variable de session Drupal n'est qu'un cookie, mais avec la durée de vie limitée à la durée d'une session).

Ou est une variable de session Drupal pas implémentée à l'aide d'un cookie de session?

5
Free Radical

Voyant que cela a deux votes, je vais essayer de l'expliquer.

Drupal utilise le mécanisme de session intégré PHP, qui, comme vous le soupçonnez à juste titre, est basé sur un cookie. Le nom du cookie est SESS suivi d'une longue chaîne de caractères, et sa valeur est une autre longue chaîne de caractères. PHP détecte ce cookie et le rend disponible à l'implémentation de session de Drupal, qui utilise par défaut la table de base de données sessions pour le stockage, avec la valeur du cookie comme clé sid.

L'entrée de session enregistre également l'ID utilisateur: au début de la séquence Drupal bootstrap la session est chargée, puis l'objet utilisateur correspondant, qui est ensuite utilisé pour régir l'accès aux ressources, en fonction des rôles de l'utilisateur et d'autres attributs.

Les données stockées dans le PHP tableau global $ _SESSION sont automatiquement enregistrées dans l'entrée de base de données de la session en cours par Drupal à la fin d'une demande de page. Ceci est généralement utilisé pour stocker des données relativement transitoires telles que des articles dans un panier.

D'autres cookies peuvent être enregistrés et récupérés dans le code (y compris JavaScript) et ils ne seront pas affectés par la déconnexion, sauf si vous écrivez spécifiquement du code pour les supprimer lorsque cela se produit. De manière confuse, les cookies dont le délai d'expiration est de 0 sont également souvent appelés "cookies de session" - ils sont supprimés lorsque vous fermez votre navigateur.

Il y a beaucoup plus à dire et j'ajouterai de bonnes références quand j'en aurai l'occasion.

5
Alfred Armstrong