[Powered by Google Translate] [Semaine 9] [David J. Malan - Université de Harvard] [C'est CS50. - CS50.TV] Très bien. Bienvenue à nouveau. C'est CS50, et c'est le début de la semaine 9. Aujourd'hui, nous mettons l'accent en particulier sur la conception, non plus dans le contexte de la C mais dans le contexte de PHP et un peu de SQL et un peu de JavaScript, en particulier vers la fin des deux pset 7 et aussi le projet final. En fait, si vous êtes à ce point dans votre projet final où vraisemblablement que d'une heure ou deux il ya au moins vous commencé à réfléchir à votre projet final et que vous pensez que vous aimeriez collaborer avec les camarades de classe 1 ou 2, si vous rencontrez des problèmes de connexion avec ladite camarades de classe, n'hésitez pas à remplir le formulaire à cs50.net/partners/form. Il vous demande juste qui vous êtes, ce type de projet que vous pensez, où vous vivez seulement pour des raisons logistiques. Et puis si vous voulez garder un oeil sur la semaine prochaine ou si l'URL tableur là, vous pouvez alors voir une version en lecture seule de la doc Google dans laquelle nous recueillons ces informations. Donc, si vous voulez travailler avec quelqu'un, par tous les moyens, n'hésitez pas à rejoindre les gens par ce mécanisme. Mais la majorité des gens le faire en solo travaux. C'est tout à fait bien. Il ne faut donc pas l'impression que ce n'est en aucun cas obligatoire. Le vendredi, il n'y avait que moi et quelques-uns de l'équipe ici, théâtre vide la plupart du temps. Il y avait 3 touristes assis là-haut, donc ça a été un peu maladroit. Que nous avons parlé était bases de données et nous avons parlé de pset 7 un peu. Et si vous n'avez pas arriver à attraper ce sur la vidéo pour l'instant, c'est très bien. Je vais essayer de définir les termes que nous aurions autrement prendre pour acquis basée sur la conférence de vendredi. Mais aujourd'hui, nous allons essayer de vous faire le point de ne pas juste être capable de faire quelque chose comme 7 pset mais vraiment comprendre ce qui se passe sous le capot, en particulier certains des abstractions que nous avons mis en place dans le fichier functions.php pour vous rendre la vie un peu plus facile, mais en fin de compte de sorte que vous comprenez de sorte que lorsque les roues de formation se détacher en quelques semaines, vous pouvez toujours survivre dans le monde réel et de faire ce genre de choses sans aucun cadre CS50-dessous vous. Ce $ _SESSION, pour ceux d'entre vous qui sont familiers ou qui ont déjà pris la vidéo, le vendredi, ce qui ne SESSION faisons dans une application web basée sur PHP? Il s'agit d'une variable superglobale, ce qui signifie que c'est le même esprit que GET et POST et quelques autres, mais quelle est cette chose-elle utile? Qu'est-ce que SESSION utilisé? Ouais. [L'élève] Logging in Désolé? [L'élève] Logging in Logging in effet. En pset 7, nous vous utilisez cette superglobale SESSION afin de faciliter l'exploitation forestière po Et ce qui est bien avec cette superglobale, c'est que c'est un tableau associatif. Un tableau associatif, rappel, c'est juste un tableau, mais dont les indices ne doivent plus être des nombres comme 012. Ils peuvent être des nombres ou ils peuvent être même des chaînes. Et donc, si vous avez plongé dans pset 7 pour le moment, vous vous souviendrez que nous gardons un ID de clé appelé l'intérieur de ce tableau associatif dont la valeur est quelque chose comme 123 - quel que soit l'utilisateur actuellement connecté à l'ID utilisateur est. La motivation pour cela est que même après que l'utilisateur a visité localhost ou plus généralement sur mon site, puis ils ont ouvert une session, même si elles ne cliquez pas sur un lien ou retourner sur mon site pendant 5 minutes ou même une heure, voire une journée, mais ils quittent leur fenêtre de navigateur ouverte, via ce superglobale puis-je rappeler qu'ils sont connecté En d'autres termes, cela me permet de stocker quoi que ce soit légèrement plus long terme, je veux sur un utilisateur. Et vous pouvez penser que c'est vraiment comme l'incarnation d'un panier d'achat. Des endroits comme Amazon évidemment vous permettent de mettre les choses dans un panier, mais HTTP, le protocole qui alimente le Web, est apatride dans le sens où lorsque vous visitez un site Web, pour la plupart, vous n'avez pas une connexion réseau permanente entre votre navigateur et le serveur. Dès que vous avez téléchargé le code HTML et les images JPEG et les fichiers GIF et tout ça, la connexion disparaît et vous avez juste une copie du code HTML et autres joyeusetés du serveur. Mais si le serveur veut se rappeler quelque chose sur vous, le fardeau est sur le serveur d'enregistrer réellement cette information. Et si vous le programmeur qui ont le contrôle sur le serveur pouvez mettre ce que vous voulez le plus à l'intérieur de ce réseau associatif superglobale et ce sera là la prochaine fois que l'utilisateur revient, qu'il s'agisse de minutes ou même quelques jours plus tard, à moins qu'ils ne fermer la fenêtre du navigateur, au cours de laquelle SESSION point disparaît. Donc, c'est de stockage éphémère, il est non persistant, et il est destiné à disparaître dès que l'utilisateur ferme son navigateur - et pas seulement cet onglet, souvent le navigateur entier, ainsi efficacement connexion de l'utilisateur sur. Alors, comment est cette chose effectivement mises en œuvre? Jetons un coup d'oeil à un exemple simple, nous avons examiné le vendredi. Pour ceux qui ne connaissent, c'est aussi simple que cela. Il s'agit d'une page Web dont le seul but dans la vie est de me dire combien de fois j'ai visité cette page. C'est la première fois lundi que je l'ai visité, il dit 0 fois. Mais si je commence à recharger cette page, il est dit 1 fois, 2, 3, 4, 5, et cela finira juste continuer à compter haut, haut, haut, haut, haut à chaque fois que j'ai vraiment cliquez sur Recharger dessus. Alors, comment est ce travail? Permettez-moi aller à l'intérieur de ce fichier appelé counter.php. La partie supérieure de celui-ci est bleu tous les commentaires, mais la partie intéressante est ici. À la ligne 13, nous appelons cette fonction session_start, et c'est littéralement tout ce que vous devez faire si vous voulez avoir accès à ce superglobale spéciale appelée $ _SESSION. Cela rend tout cela possible, et nous verrons dans un instant comment c'est possible. A la ligne 16 préavis ce que je fais. Si la clé, appelée contre - en d'autres termes, la valeur d'index - "compteur" existe à l'intérieur de ce tableau appelé SESSION, alors qu'est-ce que je fais avec elle dans la ligne ci-dessous? Quelle est la ligne 18 fait? [Réponse de l'élève inaudible] Qu'est-ce que c'est? [L'élève] Stocker la valeur. Bon. Il est stocker la valeur qui est en ce moment SESSION dans une nouvelle variable locale temporaire, $ Compteur en minuscules. Notez que PHP est déjà en cours un peu paresseux ici. Notez que nous n'avons pas fait mention de int ou float ou une chaîne ou quelque chose comme ça parce que PHP est faiblement typé, où vous n'avez pas besoin de spécifier le type d'une variable, et dans ce cas là, je n'ai même pas encore déclarée. Je le déclare à l'intérieur de ces accolades et contrairement au C, c'est en fait bien. Peu importe combien profondément imbriqué déclaration d'une variable en PHP - à l'intérieur de l'accolade, à l'intérieur de l'accolade et autres - il sera à ce moment-là existent pour le reste du programme, pour le meilleur ou pour le pire. Ainsi, il devient immédiatement mondiale dès que vous le définissez comme nous le faisons ici. Sinon, si je ne trouve pas qu'il y ait quoi que ce soit dans la super SESSION, Je suis apparemment l'initialisation de ce compteur variable à 0, ainsi que supposer l'utilisateur n'a jamais été ici avant. Et puis cela bien sûr est incrémenter le compteur de quelle manière? Je met à jour la valeur qui est à l'intérieur de ce tableau associatif en le définissant égale à tout ce compteur est actuellement + 1. Si je défiler ici pour le code HTML de la page, c'est en fait assez simple. Tout ce que j'ai dans le corps de cette page est: «Vous avez visité ce site pour tant de fois et un tel." Et cela est une construction PHP. Si vous le faites