1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Sessions PHP] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam, l'Université de Harvard] 3 00:00:04,000 --> 00:00:07,000 [C'est CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,920 Sessions de PHP peuvent être utilisés pour mettre en œuvre la fonctionnalité, 5 00:00:10,920 --> 00:00:13,440 comme les connexions des utilisateurs, dans votre application Web. 6 00:00:13,440 --> 00:00:16,920 les sessions PHP vous permettent d'associer des informations 7 00:00:16,920 --> 00:00:19,680 avec toute la session de navigation de l'utilisateur 8 00:00:19,680 --> 00:00:22,290 plutôt que de simplement une seule page. 9 00:00:22,290 --> 00:00:27,330 Cela signifie donc que tant que l'utilisateur visite plusieurs pages PHP qui composent votre site Web, 10 00:00:27,330 --> 00:00:30,630 toute information à la session va persister. 11 00:00:30,630 --> 00:00:34,770 Cela signifie donc que les données stockées dans la session par une page 12 00:00:34,770 --> 00:00:37,580 peut ensuite être consulté par une autre page. 13 00:00:37,580 --> 00:00:40,080 Stocker des informations dans une session est facile, 14 00:00:40,080 --> 00:00:48,790 et nous le faisons par le signe dollar, souligner, variable SESSION du capital. 15 00:00:48,790 --> 00:00:52,620 Signe du dollar, soulignent, SESSION-comme signe de dollar, souligner, GET 16 00:00:52,620 --> 00:00:54,710 et le signe dollar, souligner, POST- 17 00:00:54,710 --> 00:00:58,690 est un tableau associatif de paires clé-valeur. 18 00:00:58,690 --> 00:01:07,980 Donc, nous pouvons utiliser le signe de la syntaxe comme dollar, souligner, SESSION, 19 00:01:07,980 --> 00:01:16,000 support, citation, foo, citation, support, est égal, citation, bar, citation- 20 00:01:16,000 --> 00:01:20,440 pour stocker la valeur "bar" dans la clé "foo". 21 00:01:20,440 --> 00:01:24,030 Toutefois, avant que nous puissions écrire ou de lire à partir du tableau de session, 22 00:01:24,030 --> 00:01:26,770 nous aurons besoin d'appeler une fonction spéciale 23 00:01:26,770 --> 00:01:34,690 session, soulignent, démarrer () - 24 00:01:34,690 --> 00:01:37,060 et ce sera initialiser la session. 25 00:01:37,060 --> 00:01:39,850 Donc, nous allons jeter un oeil à un exemple. 26 00:01:39,850 --> 00:01:46,570 Notre première page, hello.php, utilise la session de sortie des données à l'utilisateur. 27 00:01:46,570 --> 00:01:53,920 Rappelez-vous, nous aurons besoin d'utiliser session_start avant que nous puissions accéder à toutes les données de session. 28 00:01:53,920 --> 00:01:59,010 Maintenant, nous sommes en utilisant la fonction isset de PHP afin de déterminer si une clé existe 29 00:01:59,010 --> 00:02:03,230 dans le tableau $ _SESSION. 30 00:02:03,230 --> 00:02:07,250 Si cette clé existe, cela signifie que l'utilisateur s'est connecté, 31 00:02:07,250 --> 00:02:10,410 si nous affichons le nom de l'utilisateur. 32 00:02:10,410 --> 00:02:14,110 Si cette clé n'est pas définie, cela signifie que l'utilisateur n'a pas encore connecté, 33 00:02:14,110 --> 00:02:17,880 si nous affichons un lien vers login.php. 34 00:02:17,880 --> 00:02:21,380 Donc, nous allons jeter un oeil à login.php. 35 00:02:21,380 --> 00:02:26,260 Ici, nous avons un formulaire HTML simple avec une seule entrée. 36 00:02:26,260 --> 00:02:32,720 L'attribut action du formulaire est $ _SERVER ['PHP_SELF'], 37 00:02:32,720 --> 00:02:37,440 et cela signifie simplement que nous voulons que la forme qui sera soumis à l'image actuelle, 38 00:02:37,440 --> 00:02:41,040 qui, dans ce cas, est login.php. 39 00:02:41,040 --> 00:02:43,010 Donc, revenons au début de ce fichier. 40 00:02:43,010 --> 00:02:50,100 Si l'utilisateur qui a soumis le formulaire, puis $ _POST ['nom'] doit être réglé. 41 00:02:50,100 --> 00:02:53,750 Pour plus d'informations sur les formulaires HTML et après, 42 00:02:53,750 --> 00:02:56,510 regardez la vidéo de Développement Web PHP. 43 00:02:56,510 --> 00:02:59,330 Dans le cas où l'utilisateur a fait envoyer le formulaire, 44 00:02:59,330 --> 00:03:03,970 nous aimerions écrire la valeur qui ils ont tapé dans dans la session. 45 00:03:03,970 --> 00:03:08,540 Maintenant, nous pouvons rediriger l'utilisateur vers hello.php. 46 00:03:08,540 --> 00:03:11,800 Parce que nous avons stocké l'entrée de l'utilisateur dans la session, 47 00:03:11,800 --> 00:03:18,240 hello.php pourront accéder à la valeur qui a été mis en login.php. 48 00:03:18,240 --> 00:03:21,010 Donc, nous allons vérifier cela dans un navigateur Web. 49 00:03:21,010 --> 00:03:27,520 Tout d'abord, nous naviguons à http://localhost/bonjour.php. 50 00:03:27,520 --> 00:03:30,220 Nous pouvons voir ici que nous n'avons pas encore connecté, 51 00:03:30,220 --> 00:03:35,040 nous allons donc cliquez sur le lien de connexion, ce qui nous rediriger vers login.php. 52 00:03:35,040 --> 00:03:41,760 D'accord, je vais taper dans mon nom, qui sera ensuite stockée dans la session. 53 00:03:41,760 --> 00:03:48,950 Super! Maintenant, nous pouvons voir mon entrée de login.php sur hello.php via la session. 54 00:03:48,950 --> 00:03:52,270 Alors, qu'en est-il de le connecter à? 55 00:03:52,270 --> 00:03:58,510 Eh bien, afin de connecter l'utilisateur à, nous avons simplement stocké une valeur dans le nom de la session. 56 00:03:58,510 --> 00:04:03,040 Donc, pour déconnecter l'utilisateur, nous avons simplement besoin de supprimer ce nom de clé 57 00:04:03,040 --> 00:04:05,040 à partir de la matrice de session. 58 00:04:05,040 --> 00:04:09,130 Donc, nous allons jeter un oeil à ce dernier fichier, logout.php. 59 00:04:09,130 --> 00:04:12,080 Une fois de plus, nous aurons besoin d'appeler session_start () 60 00:04:12,080 --> 00:04:15,260 avant que nous puissions faire quoi que ce soit lié session. 61 00:04:15,260 --> 00:04:19,240 Maintenant, nous pouvons simplement appeler session_destroy (), 62 00:04:19,240 --> 00:04:22,460 qui prendra soin de se débarrasser de toutes les données de la session 63 00:04:22,460 --> 00:04:26,790 et puis rediriger l'utilisateur vers hello.php. 64 00:04:26,790 --> 00:04:30,700 Donc, si je clique sur le lien Déconnexion, 65 00:04:30,700 --> 00:04:34,690 nous pouvons voir que le serveur a oublié qui je suis, 66 00:04:34,690 --> 00:04:36,970 et je ne suis plus connecté po 67 00:04:36,970 --> 00:04:39,910 Alors qu'est-ce qui se passe ici sous le capot? 68 00:04:39,910 --> 00:04:42,250 Afin d'obtenir le comportement que nous venons de voir, 69 00:04:42,250 --> 00:04:44,760 notre serveur doit faire 2 choses. 70 00:04:44,760 --> 00:04:48,980 Tout d'abord, le serveur doit stocker les données d'une certaine manière à la session. 71 00:04:48,980 --> 00:04:51,910 Les différents fichiers PHP qui composent un site Web 72 00:04:51,910 --> 00:04:56,500 sont exécutées comme des invocations distinctes de l'interpréteur PHP 73 00:04:56,500 --> 00:05:00,550 variable de façon locale ne peut pas être partagé entre eux. 74 00:05:00,550 --> 00:05:04,030 Au lieu de cela, le serveur doit stocker nos données de session 75 00:05:04,030 --> 00:05:08,440 dans un endroit que plusieurs. fichiers php peuvent accéder. 76 00:05:08,440 --> 00:05:13,940 Deuxièmement, le serveur doit associer les données de session avec seulement ma session de navigation. 77 00:05:13,940 --> 00:05:15,940 Lorsque je me connecte à Facebook, 78 00:05:15,940 --> 00:05:20,460 il ya probablement des millions d'autres personnes ont également connectés à Facebook en même temps. 79 00:05:20,460 --> 00:05:24,200 Mais le serveur a besoin d'une façon d'associer mes données 80 00:05:24,200 --> 00:05:28,340 avec ma session en cours et les données de quelqu'un d'autre avec une autre session. 81 00:05:28,340 --> 00:05:32,380 Heureusement, les auteurs de PHP pensé à tout cela pour nous, 82 00:05:32,380 --> 00:05:35,170 donc nous n'avons pas besoin de mettre en œuvre tout cela nous-mêmes. 83 00:05:35,170 --> 00:05:39,540 Mais jetons un oeil à ce que PHP fait par défaut. 84 00:05:39,540 --> 00:05:44,070 Lorsque je visite une page PHP contenant session_start pour la première fois, 85 00:05:44,070 --> 00:05:47,930 PHP va générer une grande valeur aléatoire. 86 00:05:47,930 --> 00:05:53,970 Jusqu'à session_destroy est appelé ou je ne visitent pas les pages PHP sur ce site pendant un certain temps- 87 00:05:53,970 --> 00:05:59,050 que la valeur aléatoire et probablement unique sera associé avec moi. 88 00:05:59,050 --> 00:06:02,780 De cette façon, le serveur dispose d'une certaine façon d'identifier ma session de navigation 89 00:06:02,780 --> 00:06:05,710 par opposition à quelqu'un d'autre. 90 00:06:05,710 --> 00:06:08,780 Nous pouvons jeter un oeil à l'ID de session en cours 91 00:06:08,780 --> 00:06:12,380 en utilisant la fonction PHP, session_ID. 92 00:06:12,380 --> 00:06:17,250 Ici, nous sommes tout simplement sortie de la valeur de notre identifiant de session. 93 00:06:17,250 --> 00:06:20,580 Donc, si nous connecter à nouveau à l'exemple de l'application Web, 94 00:06:20,580 --> 00:06:25,530 et maintenant naviguer à sessid.php, 95 00:06:25,530 --> 00:06:27,850 nous verrons cette longue chaîne de caractères, 96 00:06:27,850 --> 00:06:31,180 et c'est l'identifiant courant de ma session, 97 00:06:31,180 --> 00:06:35,410 et c'est ainsi que le serveur est de garder la trace de qui je suis. 98 00:06:35,410 --> 00:06:37,670 D'accord, mais nous avons seulement résolu la moitié du problème. 99 00:06:37,670 --> 00:06:40,910 Bien sûr, le serveur dispose maintenant d'une certaine façon de m'identifier, 100 00:06:40,910 --> 00:06:46,060 mais quand je visite une autre page, le serveur doit réutiliser le même identifiant 101 00:06:46,060 --> 00:06:48,910 au lieu de générer une nouvelle. 102 00:06:48,910 --> 00:06:52,760 Rappelez-vous, si je déclare une variable locale dans foo.php 103 00:06:52,760 --> 00:06:55,190 puis visiter bar.php, 104 00:06:55,190 --> 00:07:00,980 bar.php a aucun moyen de savoir ce qui s'est passé dans foo.php. 105 00:07:00,980 --> 00:07:07,450 Ainsi, la mise en œuvre de la session PHP par défaut nécessite que le navigateur rappeler le serveur 106 00:07:07,450 --> 00:07:09,740 qui l'ID de session à utiliser. 107 00:07:09,740 --> 00:07:12,710 Ceci est mis en œuvre sous la forme d'un cookie. 108 00:07:12,710 --> 00:07:15,370 Un cookie-en plus d'être une délicieuse collation- 109 00:07:15,370 --> 00:07:18,630 est tout simplement un petit fichier texte sur votre ordinateur 110 00:07:18,630 --> 00:07:21,780 qu'un serveur peut écrire via le navigateur Web. 111 00:07:21,780 --> 00:07:27,300 Ainsi, après PHP génère mon ID de session unique via session_start, 112 00:07:27,300 --> 00:07:34,210 il va dire au navigateur Web pour stocker cet identifiant dans un fichier texte local, ou un cookie. 113 00:07:34,210 --> 00:07:38,490 Ensuite, le navigateur va inclure cet identificateur à chaque demande 114 00:07:38,490 --> 00:07:40,780 qu'il fait avec le serveur. 115 00:07:40,780 --> 00:07:44,280 Alors, vraiment, le serveur Web n'est pas de se rappeler qui je suis. 116 00:07:44,280 --> 00:07:48,780 Au lieu de cela, le navigateur web est tout simplement de se rappeler l'identificateur unique 117 00:07:48,780 --> 00:07:52,730 qui a été généré par PHP et rappelant constamment le serveur 118 00:07:52,730 --> 00:07:55,120 ce qui est l'identificateur. 119 00:07:55,120 --> 00:08:00,760 De cette façon, des informations comme mon nom d'utilisateur est stocké sur le serveur n'est pas mon navigateur. 120 00:08:00,760 --> 00:08:05,190 Le navigateur indique simplement au serveur sur lequel PHP stocké ces informations 121 00:08:05,190 --> 00:08:07,750 que PHP puisse le récupérer. 122 00:08:07,750 --> 00:08:12,150 Alors que soulève la question, où est PHP stocke effectivement cette information? 123 00:08:12,150 --> 00:08:14,910 Par défaut, PHP va stocker vos données de session 124 00:08:14,910 --> 00:08:19,540 dans un fichier à l'intérieur de / tmp, ou le dossier "temp". 125 00:08:19,540 --> 00:08:24,450 Le nom de ce fichier comprendra l'ID de session que PHP puisse déterminer 126 00:08:24,450 --> 00:08:28,620 le fichier à lire et à écrire à partir de l'intermédiaire que l'ID de session. 127 00:08:28,620 --> 00:08:32,280 Très bien. Alors ouvrons jusqu'à l'onglet Réseau dans le débogueur Chrome 128 00:08:32,280 --> 00:08:34,890 via l'icône de la clé en haut à droite. 129 00:08:34,890 --> 00:08:38,409 Maintenant nous allons la tête à hello.php nouveau. 130 00:08:38,409 --> 00:08:42,270 Cliquons sur la requête HTTP à hello.php 131 00:08:42,270 --> 00:08:44,680 puis cliquez sur Têtes. 132 00:08:44,680 --> 00:08:50,390 Ici, nous pouvons voir que la tête de cookie contient une clé nommée PHPSESSID, 133 00:08:50,390 --> 00:08:55,980 ou session PHP ID-avec une valeur qui est la même longue série, nous avons vu 134 00:08:55,980 --> 00:08:59,290 quand nous avons visité sessid.php. 135 00:08:59,290 --> 00:09:04,660 C'est exactement la façon dont le navigateur est le serveur rappelle que ID session, doit être utilisé. 136 00:09:04,660 --> 00:09:08,180 C'est notamment dans un en-tête HTTP. 137 00:09:08,180 --> 00:09:10,500 Très bien. Dirigeons-nous vers le terminal. 138 00:09:10,500 --> 00:09:16,450 Disons accédez au répertoire / tmp, où PHP est de stocker les informations de session par défaut. 139 00:09:16,450 --> 00:09:19,160 Effectivement, à l'intérieur de ce dossier temporaire, 140 00:09:19,160 --> 00:09:23,550 voici un fichier qui contient la même exacte ID de session. 141 00:09:23,550 --> 00:09:28,990 Si nous ouvrons ce fichier, nous pouvons voir comment PHP représente ma session sur disque. 142 00:09:28,990 --> 00:09:32,870 Ici, la chaîne "Tommy" est stocké à la touche «nom», 143 00:09:32,870 --> 00:09:35,750 ce qui est exactement ce que nous attendions. 144 00:09:35,750 --> 00:09:38,850 Et c'est un aperçu des sessions en PHP. 145 00:09:38,850 --> 00:09:42,590 Ce que nous avons vu n'était que l'implémentation par défaut de sessions. 146 00:09:42,590 --> 00:09:45,600 En fait, de nombreux sites modifier ce comportement par défaut 147 00:09:45,600 --> 00:09:48,280 pour stocker les sessions PHP plus efficacement 148 00:09:48,280 --> 00:09:50,390 dans l'intérêt de l'amélioration des performances. 149 00:09:50,390 --> 00:09:52,800 Mon nom est Tommy, et c'est CS50. 150 00:09:52,800 --> 00:09:56,000 [CS50.TV]