Les fichiers de session sont généralement stockés, par exemple, /tmp/
sur le serveur et nommés sess_{session_id}
. J'ai regardé le contenu et je ne peux pas comprendre comment ils fonctionnent vraiment.
La récupération du nom et du contenu de la variable à partir du fichier est facile. Mais comment PHP sait-il quelle session appartient à qui?
Le session_id semble totalement aléatoire et une adresse IP peut avoir plusieurs utilisateurs, et chaque utilisateur peut avoir plusieurs sessions s'il a plus d'une fenêtre de navigateur ouverte.
Alors, comment ça marche?
Réponses:
Dans la situation générale:
PHPSESSID
)Les données dans les fichiers de sessions sont le contenu de
$_SESSION
, sérialisées (c'est-à-dire représentées sous forme de chaîne - avec une fonction telle que sérialiser ) ; et n'est pas sérialisé lorsque le fichier est chargé par PHP, pour remplir le$_SESSION
tableau.Parfois, l'identifiant de session n'est pas stocké dans un cookie, mais également envoyé dans des URL - mais c'est assez rare, de nos jours.
Pour plus d'informations, vous pouvez jeter un œil à la section Gestion de session du manuel, qui donne quelques informations utiles.
Par exemple, il existe une page sur la transmission de l'ID de session , qui explique comment l'ID de session est transmis de page en page, à l'aide d'un cookie ou dans les URL - et quelles options de configuration affectent cela.
la source
Comment fonctionne la session PHP
Premièrement, PHP crée un numéro d'identification unique de 16 octets (stocké sous forme de chaîne de 32 caractères hexadécimaux, par exemple
a86b10aeb5cd56434f8691799b1d9360
) pour une session individuelle.Le cookie PHPSESSID transmet ce numéro d'identification unique au navigateur des utilisateurs pour enregistrer ce numéro.
Un nouveau fichier est créé sur le serveur avec le même nom de numéro d'identification unique avec le préfixe sess_ (ie
sess_a86b10aeb5cd56434f8691799b1d9360
.)Le navigateur envoie ce cookie au serveur à chaque demande.
Si PHP obtient ce numéro d'identification unique du cookie PHPSESSID (à chaque requête), alors PHP recherche dans le répertoire temporaire et compare ce numéro au nom du fichier. Si les deux sont identiques, il récupère la session existante, sinon il crée une nouvelle session pour cet utilisateur.
Une session est détruite lorsque l'utilisateur ferme le navigateur ou quitte le site. Le serveur met également fin à la session après l'expiration de la période prédéterminée de temps de session. Ce sont les étapes simples du mécanisme que PHP utilise pour gérer la session. J'espère que cet article vous aidera à comprendre comment fonctionne PHP SESSION.
Consultez cet article pour plus de détails. Comment fonctionne la session PHP
la source
mysite.com/cart
. Je recevrai également mon "Bonjour Joe Doe, 5 messages, voici votre liste de panier ..." aka les informations de session. - Mais pourquoi le navigateur concernant cet onglet vide enverrait-il un identifiant de session avec la demande GET? mise à jour rapide: Ah, j'ai trouvé la réponse: +)L'ID de session est en effet aléatoire, et est passé dans un cookie ou dans l'URL, selon la configuration. Vous avez peut-être déjà vu ce PHPSESSID = xxxx dans certaines URL, il existe également un cookie portant ce nom.
la source
Les sessions en PHP sont démarrées en utilisant la fonction session_start (). Comme la fonction setcookie (), la fonction session_start () doit précéder tout HTML, y compris les lignes vides, sur la page. Cela ressemblera à ceci:
<?php session_start( );?><html><head>
....... etc La fonction session_start () génère un identifiant de session aléatoire et le stocke dans un cookie sur l'ordinateur de l'utilisateur (c'est la seule information de session réellement stockée côté client. ) Le nom par défaut du cookie est PHPSESSID, bien que cela puisse être modifié dans les fichiers de configuration PHP sur le serveur (la plupart des hébergeurs le laisseront cependant seul.) Pour référencer l'identifiant de session dans votre code PHP, vous référeriez donc le variable $ PHPSESSID (c'est un nom de cookie; vous vous en souvenez de Cookies?)la source