185 votes

Où sont stockées les variables $_SESSION ?

Sont $_SESSION variables stockées sur le client ou le serveur ?

2 votes

Sur le serveur où vous exécutez l'application php, pour le chemin spécifique vous devez vérifier avec phpinfo()

196voto

rjamestaylor Points 1610

L'emplacement de la $_SESSION Le stockage des variables est déterminé par les paramètres de PHP session.save_path configuration. Il s'agit généralement /tmp sur un système Linux/Unix. Utilisez le phpinfo() pour visualiser vos paramètres particuliers si vous n'êtes pas sûr à 100 %, en créant un fichier avec ce contenu dans le fichier DocumentRoot de 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

146voto

troelskn Points 51966

Comme nous l'avons déjà mentionné, 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é à chaque demande. Habituellement, l'identifiant de session est stocké dans un cookie, mais il peut aussi être ajouté aux urls (c'est le principe de l'identifiant de session). PHPSESSID paramètre de requête que vous voyez parfois)

43 votes

+1 parce que vous avez laissé entendre que les cookies ne stockent pas le contenu de $_SESSION (ce contenu est stocké sur le serveur, et n'est donc pas vulnérable à une modification par le client).

13 votes

Excellente réponse ! Je cherchais la question suivante : "Pourquoi les sessions expirent-elles après la suppression du cache du navigateur ?". Et vous avez sauvé ma journée.

2 votes

Le serveur crée le fichier sess_7nu9p0fvidvva6ouaugqcc8292 nd sur le navigateur alert(getCookie('PHPSESSID'));//7nu9p0fvidvva6ouaugqcc8292

24voto

Rob Kennedy Points 107381

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 le session.save_handler et la variable de configuration session_set_save_handler pour contrôler la façon dont les sessions sont enregistrées sur le serveur. La méthode de sauvegarde par défaut consiste à enregistrer les sessions dans des fichiers. L'endroit où elles sont enregistrées est contrôlé par l'option session.save_path variable.

21voto

Gero Points 91

Un ajout : Il faut noter que, dans le cas où "/tmp" est le répertoire où les données de session sont stockées (ce qui semble être la valeur par défaut), les sessions ne persisteront pas après le redémarrage de ce serveur web, car "/tmp" est souvent purgé lors du redémarrage. Le concept de persistance à l'échelle du client dépend de la persistance du stockage sur le serveur, qui peut échouer si le répertoire "/tmp" est utilisé pour les données de session.

14voto

Hans Points 539

Sous 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X