[Powered by Google Translate] [Sessions PHP] [Tommy MacWilliam, l'Université de Harvard] [C'est CS50.] [CS50.TV] Sessions de PHP peuvent être utilisés pour mettre en œuvre la fonctionnalité, comme les connexions des utilisateurs, dans votre application Web. les sessions PHP vous permettent d'associer des informations avec toute la session de navigation de l'utilisateur plutôt que de simplement une seule page. Cela signifie donc que tant que l'utilisateur visite plusieurs pages PHP qui composent votre site Web, toute information à la session va persister. Cela signifie donc que les données stockées dans la session par une page peut ensuite être consulté par une autre page. Stocker des informations dans une session est facile, et nous le faisons par le signe dollar, souligner, variable SESSION du capital. Signe du dollar, soulignent, SESSION-comme signe de dollar, souligner, GET et le signe dollar, souligner, POST- est un tableau associatif de paires clé-valeur. Donc, nous pouvons utiliser le signe de la syntaxe comme dollar, souligner, SESSION, support, citation, foo, citation, support, est égal, citation, bar, citation- pour stocker la valeur "bar" dans la clé "foo". Toutefois, avant que nous puissions écrire ou de lire à partir du tableau de session, nous aurons besoin d'appeler une fonction spéciale session, soulignent, démarrer () - et ce sera initialiser la session. Donc, nous allons jeter un oeil à un exemple. Notre première page, hello.php, utilise la session de sortie des données à l'utilisateur. Rappelez-vous, nous aurons besoin d'utiliser session_start avant que nous puissions accéder à toutes les données de session. Maintenant, nous sommes en utilisant la fonction isset de PHP afin de déterminer si une clé existe dans le tableau $ _SESSION. Si cette clé existe, cela signifie que l'utilisateur s'est connecté, si nous affichons le nom de l'utilisateur. Si cette clé n'est pas définie, cela signifie que l'utilisateur n'a pas encore connecté, si nous affichons un lien vers login.php. Donc, nous allons jeter un oeil à login.php. Ici, nous avons un formulaire HTML simple avec une seule entrée. L'attribut action du formulaire est $ _SERVER ['PHP_SELF'], et cela signifie simplement que nous voulons que la forme qui sera soumis à l'image actuelle, qui, dans ce cas, est login.php. Donc, revenons au début de ce fichier. Si l'utilisateur qui a soumis le formulaire, puis $ _POST ['nom'] doit être réglé. Pour plus d'informations sur les formulaires HTML et après, regardez la vidéo de Développement Web PHP. Dans le cas où l'utilisateur a fait envoyer le formulaire, nous aimerions écrire la valeur qui ils ont tapé dans dans la session. Maintenant, nous pouvons rediriger l'utilisateur vers hello.php. Parce que nous avons stocké l'entrée de l'utilisateur dans la session, hello.php pourront accéder à la valeur qui a été mis en login.php. Donc, nous allons vérifier cela dans un navigateur Web. Tout d'abord, nous naviguons à http://localhost/bonjour.php. Nous pouvons voir ici que nous n'avons pas encore connecté, nous allons donc cliquez sur le lien de connexion, ce qui nous rediriger vers login.php. D'accord, je vais taper dans mon nom, qui sera ensuite stockée dans la session. Super! Maintenant, nous pouvons voir mon entrée de login.php sur hello.php via la session. Alors, qu'en est-il de le connecter à? Eh bien, afin de connecter l'utilisateur à, nous avons simplement stocké une valeur dans le nom de la session. Donc, pour déconnecter l'utilisateur, nous avons simplement besoin de supprimer ce nom de clé à partir de la matrice de session. Donc, nous allons jeter un oeil à ce dernier fichier, logout.php. Une fois de plus, nous aurons besoin d'appeler session_start () avant que nous puissions faire quoi que ce soit lié session. Maintenant, nous pouvons simplement appeler session_destroy (), qui prendra soin de se débarrasser de toutes les données de la session et puis rediriger l'utilisateur vers hello.php. Donc, si je clique sur le lien Déconnexion, nous pouvons voir que le serveur a oublié qui je suis, et je ne suis plus connecté po Alors qu'est-ce qui se passe ici sous le capot? Afin d'obtenir le comportement que nous venons de voir, notre serveur doit faire 2 choses. Tout d'abord, le serveur doit stocker les données d'une certaine manière à la session. Les différents fichiers PHP qui composent un site Web sont exécutées comme des invocations distinctes de l'interpréteur PHP variable de façon locale ne peut pas être partagé entre eux. Au lieu de cela, le serveur doit stocker nos données de session dans un endroit que plusieurs. fichiers php peuvent accéder. Deuxièmement, le serveur doit associer les données de session avec seulement ma session de navigation. Lorsque je me connecte à Facebook, il ya probablement des millions d'autres personnes ont également connectés à Facebook en même temps. Mais le serveur a besoin d'une façon d'associer mes données avec ma session en cours et les données de quelqu'un d'autre avec une autre session. Heureusement, les auteurs de PHP pensé à tout cela pour nous, donc nous n'avons pas besoin de mettre en œuvre tout cela nous-mêmes. Mais jetons un oeil à ce que PHP fait par défaut. Lorsque je visite une page PHP contenant session_start pour la première fois, PHP va générer une grande valeur aléatoire. Jusqu'à session_destroy est appelé ou je ne visitent pas les pages PHP sur ce site pendant un certain temps- que la valeur aléatoire et probablement unique sera associé avec moi. De cette façon, le serveur dispose d'une certaine façon d'identifier ma session de navigation par opposition à quelqu'un d'autre. Nous pouvons jeter un oeil à l'ID de session en cours en utilisant la fonction PHP, session_ID. Ici, nous sommes tout simplement sortie de la valeur de notre identifiant de session. Donc, si nous connecter à nouveau à l'exemple de l'application Web, et maintenant naviguer à sessid.php, nous verrons cette longue chaîne de caractères, et c'est l'identifiant courant de ma session, et c'est ainsi que le serveur est de garder la trace de qui je suis. D'accord, mais nous avons seulement résolu la moitié du problème. Bien sûr, le serveur dispose maintenant d'une certaine façon de m'identifier, mais quand je visite une autre page, le serveur doit réutiliser le même identifiant au lieu de générer une nouvelle. Rappelez-vous, si je déclare une variable locale dans foo.php puis visiter bar.php, bar.php a aucun moyen de savoir ce qui s'est passé dans foo.php. Ainsi, la mise en œuvre de la session PHP par défaut nécessite que le navigateur rappeler le serveur qui l'ID de session à utiliser. Ceci est mis en œuvre sous la forme d'un cookie. Un cookie-en plus d'être une délicieuse collation- est tout simplement un petit fichier texte sur votre ordinateur qu'un serveur peut écrire via le navigateur Web. Ainsi, après PHP génère mon ID de session unique via session_start, il va dire au navigateur Web pour stocker cet identifiant dans un fichier texte local, ou un cookie. Ensuite, le navigateur va inclure cet identificateur à chaque demande qu'il fait avec le serveur. Alors, vraiment, le serveur Web n'est pas de se rappeler qui je suis. Au lieu de cela, le navigateur web est tout simplement de se rappeler l'identificateur unique qui a été généré par PHP et rappelant constamment le serveur ce qui est l'identificateur. De cette façon, des informations comme mon nom d'utilisateur est stocké sur le serveur n'est pas mon navigateur. Le navigateur indique simplement au serveur sur lequel PHP stocké ces informations que PHP puisse le récupérer. Alors que soulève la question, où est PHP stocke effectivement cette information? Par défaut, PHP va stocker vos données de session dans un fichier à l'intérieur de / tmp, ou le dossier "temp". Le nom de ce fichier comprendra l'ID de session que PHP puisse déterminer le fichier à lire et à écrire à partir de l'intermédiaire que l'ID de session. Très bien. Alors ouvrons jusqu'à l'onglet Réseau dans le débogueur Chrome via l'icône de la clé en haut à droite. Maintenant nous allons la tête à hello.php nouveau. Cliquons sur la requête HTTP à hello.php puis cliquez sur Têtes. Ici, nous pouvons voir que la tête de cookie contient une clé nommée PHPSESSID, ou session PHP ID-avec une valeur qui est la même longue série, nous avons vu quand nous avons visité sessid.php. C'est exactement la façon dont le navigateur est le serveur rappelle que ID session, doit être utilisé. C'est notamment dans un en-tête HTTP. Très bien. Dirigeons-nous vers le terminal. Disons accédez au répertoire / tmp, où PHP est de stocker les informations de session par défaut. Effectivement, à l'intérieur de ce dossier temporaire, voici un fichier qui contient la même exacte ID de session. Si nous ouvrons ce fichier, nous pouvons voir comment PHP représente ma session sur disque. Ici, la chaîne "Tommy" est stocké à la touche «nom», ce qui est exactement ce que nous attendions. Et c'est un aperçu des sessions en PHP. Ce que nous avons vu n'était que l'implémentation par défaut de sessions. En fait, de nombreux sites modifier ce comportement par défaut pour stocker les sessions PHP plus efficacement dans l'intérêt de l'amélioration des performances. Mon nom est Tommy, et c'est CS50. [CS50.TV]