Les $_SESSIONvariables sont-elles stockées sur le client ou le serveur?
Les $_SESSIONvariables sont-elles stockées sur le client ou le serveur?
Réponses:
L'emplacement du $_SESSIONstockage variable est déterminé par la session.save_pathconfiguration de PHP . Il s'agit généralement /tmpd'un système Linux / Unix. Utilisez la phpinfo()fonction pour afficher vos paramètres particuliers si ce n'est pas sûr à 100% en créant un fichier avec ce contenu dans le DocumentRootde votre domaine:
<?php
phpinfo();
?>
Voici le lien vers la documentation PHP sur ce paramètre de configuration:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
Comme mentionné déjà, le contenu est stocké sur le serveur. Cependant, la session est identifiée par un identifiant de session, qui est stocké chez le client et envoyé avec chaque requête. Habituellement, l'identifiant de session est stocké dans un cookie, mais il peut également être ajouté aux URL. (C'est le PHPSESSIDparamètre de requête que vous voyez parfois)
Ils sont généralement stockés sur le serveur. L'endroit où ils sont stockés dépend de vous en tant que développeur. Vous pouvez utiliser la session.save_handlervariable de configuration et le session_set_save_handlerpour contrôler la manière dont les sessions sont enregistrées sur le serveur. La méthode d'enregistrement par défaut consiste à enregistrer les sessions dans des fichiers. L'endroit où ils sont enregistrés est contrôlé par la session.save_pathvariable.
Un ajout: il convient de noter que, dans le cas où "/ tmp" est le répertoire où les données de session sont stockées (qui semble être la valeur par défaut), les sessions ne persisteront pas après le redémarrage de ce serveur Web, comme "/ tmp "est souvent purgé lors du redémarrage. Le concept de persistance du côté client tient et tombe avec la persistance du stockage sur le serveur - qui peut échouer si le répertoire "/ tmp" est utilisé pour les données de session.
J'utilise Ubuntu et mes sessions sont stockées dans / var / lib / php5.
Comme M. Taylor l'a souligné, cela est généralement défini dans php.ini. Ils sont généralement stockés sous forme de fichiers dans un répertoire spécifique.
Pour ubuntu 16.10, les sessions sont enregistrées dans / var / lib / php / session / ...
Comment ça marche? Comment sait-il que c'est moi?
La plupart des sessions définissent une clé utilisateur (appelée sessionid) sur l'ordinateur de l'utilisateur qui ressemble à ceci: 765487cf34ert8dede5a562e4f3a7e12. Ensuite, lorsqu'une session est ouverte sur une autre page, il scanne l'ordinateur pour une clé utilisateur et s'exécute sur le serveur pour obtenir vos variables.
Si vous effacez par erreur le cache, votre clé utilisateur sera également effacée. Vous ne pourrez plus récupérer vos variables du serveur car vous ne connaissez pas votre identifiant.
Dans ma machine Ubuntu, les sessions sont stockées sur
/var/lib/php/sessions
et vous devez sudo lsdans ce répertoire seulement lsil lancera
ls: impossible d'ouvrir le répertoire '.': Autorisation refusée
Et sur mon serveur Windows Wamp, les sessions php sont stockées dans
C:\wamp64\tmp
et si vous installez php autonome sur Windows, aucune valeur n'est définie par défaut
session.save_path => no value => no value
Bon nombre des réponses ci-dessus sont opaques. À mon avis, l'auteur de cette question veut simplement savoir où les variables de session sont stockées par défaut. Selon ceci: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions ils sont simplement stockés sur le serveur par défaut . J'espère que d'autres trouveront cette contribution significative.