Où sont $_SESSION les variables stockées?
Sont $_SESSION
les variables stockées sur le client ou le serveur?
- sur le serveur sur lequel vous exécutez l'application en php, pour le chemin d'accès spécifique, vous devez vérifier avec phpinfo()
Vous devez vous connecter pour publier un commentaire.
L'emplacement de la
$_SESSION
de stockage variable est déterminée par PHPsession.save_path
de configuration. Habituellement, cela est/tmp
sur un système Linux/Unix. Utiliser lephpinfo()
fonction pour afficher vos paramètres si pas sûr à 100% par la création d'un fichier avec le contenu duDocumentRoot
de votre domaine: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 déjà mentionné, les contenus sont stockés sur le serveur. Toutefois, la session est identifiée par un identifiant la session, qui est stocké sur le client et l'envoyer avec chaque demande. Généralement de la session-id est stocké dans un cookie, mais il peut également être ajouté à l'url. (C'est la
PHPSESSID
requête-paramètres vous quelques fois voir)Ils sont généralement stockés sur le serveur. Où ils sont stockés jusqu'à vous en tant que développeur. Vous pouvez utiliser le
session.save_handler
variable de configuration et lesession_set_save_handler
pour contrôler la façon dont les sessions sont enregistrés sur le serveur. La valeur par défaut enregistrer méthode consiste à enregistrer les sessions de fichiers. Où ils sont enregistrés est contrôlée par lesession.save_path
variable.Un plus: Il convient de noter que, dans le cas de "/tmp" est le répertoire où les données de session sont stockées (ce qui semble être la valeur par défaut), les séances ne persistera pas après le redémarrage de serveur web, comme "/tmp" est souvent effacés lors d'un redémarrage. Le concept de client-sage persistance se lève et tombe avec la persistance de la capacité de stockage sur le serveur, qui peut échouer si le "/tmp" est utilisé pour les données de session.
Sur Debian (n'est-ce pas le cas pour la plupart des distributions Linux?), il est enregistré dans /var/lib/php5/. Comme mentionné ci-dessus, il est configuré dans votre php.ini.
J'utilise Ubuntu et mes séances sont stockés dans /var/lib/php5.
Que M. Taylor a souligné ce est généralement défini dans le php.ini. Habituellement, ils sont stockés sous forme de fichiers dans un répertoire spécifique.
Pour ubuntu 16.10 sont des séances d'enregistrer dans /var/lib/php/session/...
Comment ça fonctionne? Comment sait-elle que c'est moi?
La plupart des séances de définir un mot-clé(appelé le sessionid) sur l'ordinateur de l'utilisateur qui ressemble à quelque chose comme ceci: 765487cf34ert8dede5a562e4f3a7e12. Ensuite, lorsqu'une session est ouverte sur une autre page, l'analyse de l'ordinateur pour un utilisateur de la clé et s'exécute sur le serveur pour obtenir vos variables.
Si vous avez par erreur effacer le cache, puis l'utilisateur de votre clé sera aussi effacé. Vous ne serez pas en mesure d'obtenir vos variables à partir du serveur de plus puisque vous ne connaissez pas votre identifiant.