SAM Levatich: Bienvenue à section pour cette semaine. Je ne suis pas Andi. Andi est tombé malade ce jour, et je ont été en quelque sorte appelé en dernière minute prendre en charge. Il est la saison de grippe, alors assurez-vous que vous sont rester propre, se laver les mains, et la saine alimentation de telle sorte que vous aussi, vous n'êtes pas grabataire. Mais sans plus tarder, nous allons commencer. Aujourd'hui, nous allons parler à propos de PHP un peu comment bit-- PHP concerne HTML, comment il se rapporte à CSS, et une partie de la bande choses que vous avez fait sur la dernière attribution. Nous allons parler un peu de SQL et comment vous pouvez travailler avec des bases de données, qui est une composante clé de la jolie P mis 8-- P set 7. P set 7. Et puis nous allons parler un peu peu comment fonctionnent contrôleurs de vue et pourquoi cela est une philosophie derrière certains pages Web modernes et un design différent. Quasiment un grand nombre de types d'applications et les applications que vous pourriez expédier sont en utilisant ce modèle, cadre de contrôleur de vue, que vous serez à l'aide P mis 7, donc je vais parler un peu sur les raisons qui est devenu populaire, pourquoi il est important et agréable. Et puis je vais enfin passer à quelques conseils sur la lutte contre la P mis 7. Et si nous avons le temps reste à la fin, nous pouvons réellement faire quelque travailler sur cela ensemble. Donc, PHP. En fait, vous avez peut-être remarqué this-- vous ne l'avez pas vraiment besoin de plonger dans it-- mais P mis un peu de PHP 6 eu code qui se passait. Et parce que PHP est un C-like la langue, PHP, contrairement à HTML et CSS, est un langage de programmation, alors que HTML et CSS sont statiques. Ils sont les langages de balisage traitant avec le style et la présentation visuelle. PHP est la vraie affaire. PHP a boucles, il a conditions-- tout ça qui est amusant à propos de C. Il dispose d'un certain nombre de choses qui sont un peu peu mieux que C, qui nous le verrons, mais je pense que la meilleure façon de parler sur le PHP est juste de plonger. Donc, je vais aller droit dans l'IDE à ce point. La première chose que nous allons à faire est effectivement regarder un peu à une partie de la Code PHP qui était en P set 6. Donc, la façon dont nous faisons that-- avant, la façon dont nous courions le serveur de l'appareil était que nous aurions à bien-- soit utiliser votre mise en œuvre ou la mise en œuvre de l'équipe de server.c en allant dans le répertoire et courir server.c soit sans arguments-- si juste l'appeler sur le hôte local, qui est ce que vous avez probablement fait la plupart du time-- et ensuite le nourrir un directory-- avec qui pour l'utiliser comme sa racine où le site serait être exécuté, essentiellement. Cette semaine P set 7, comme grande que notre code pour server.c est, il ya des gens qui ont déjà écrit ces belles choses sur au CS50 qui ont un peu plus de fonctionnalités, un programme de serveur qui est capable de traiter avec un peu plus des subtilités que nous allons voir à la fois P SET 7 et 8 P réglé. Et la façon dont vous démarrez le serveur est en tapant simplement, "apache50." Et avant que vous faites quelque chose, vous voulez vous assurer que qu'Apache 50 est pas déjà en cours d'exécution comme il est sur ma machine, je l'ai fait pour le tester. Et vous le faites en appelant apache50 cela. Arrêtez, et vous verrez que ça l'arrêt le serveur web, si vous pouvez y regarder au bas de la fenêtre du terminal. Et puis, juste pour commencer, nous sommes va appeler, "apache50 commencer." Et puis nous allons à nourrir un répertoire. Maintenant, parce que nous voulons regarder à une partie de la P mis 6 Code que nous avions mis en place, en fait je copié un peu de la P Set 6 code dans mon propre dossier, que vous pouvez voir sur la gauche il. Il a appelé «section8" dans toutes les lettres majuscules parce que je suis tellement excitée pour être diffusé en direct aujourd'hui. Donc, si nous courons cela, il se doit tout travail assez efficace. Il dit, OK, notre site est maintenant disponible à l'adresse de l'IDE, Fondamentalement, ce qui est ce que vous utilisez exactement comme il était en P mis 7-- P set 6. Tous mes indices sont un indice aujourd'hui. Donc, nous pouvons aller à cette adresse, si vous vous en souvenez, en cliquant simplement sur ce petit bouton dans le coin supérieur droit. Et vous vous souvenez de ce code, qui qui est arrivé quand vous êtes entré dans hello.php. Et ce que le code est conçu pour faire est quand vous avez saisi un nom ici-- si vous dites Sam parce que ce mon name-- et je clique Dis Bonjour, quand nous sommes allés à la page suivante, ce nom devait être affichée. Il disait: «Bonjour, Sam" ou "Bonjour," tout ce que vous nom mettons en elle, même si nous sommes allés à une toute nouvelle page web. Et ceci est le genre de chose que PHP peut faire pour vous. PHP est capable de transmettre des données entre deux pages Web. Ceci est une page totalement différente. Vous verrez le titre est "bonjour" ici. En fait, ils ont le même titre, mais je promettent qu'ils sont différents web pages si nous regardons à la source. Et vous pouvez passer les données qui entré dans ce champ de texte, vous soumettez à la prochaine page que nous appelé, et alors que les données sont en mesure de être là, dans sa forme actuelle. Maintenant, nous avons pas encore implémenté nous-mêmes, ce qui est ce que nous allons faire maintenant pour Trier obtenir une saveur pour le fonctionnement de PHP, mais l'idée clé est que vous pouvez PHP-- sorte de penser à elle comme une fonction. Quelque chose qui PHP peut vous laisser faire est il peut prendre des paramètres que vous entrez dans une page HTML grâce à l'utilisation de PHP et formes, et il peut passer ceux qui en tant que paramètres à la page suivante qui il charge. Dans ce cas, nous chargeons cette la page avec le bouton "Dites bonjour". Mais pour l'instant, je fait supprimé certains de ce code dans le hello.php qui était géré qui était en fait l'affichage de la "bonjour, monde "ou" bonjour, Sam »ou "Bonjour," tout ce qui était juste entrée. Donc, pour le moment, nous sommes va faire que, fondamentalement. Nous allons recréer et également ajouter un peu plus de fonctionnalités, faire un peu plus avec elle, voir ce que PHP est vraiment capable. Alors d'abord, parlons ce fichier, hello.php. Donc, si on fait un zoom dans un peu bit-- et maintenant je suis sorte d'essayer de faire défiler tous la façon around-- là nous allons. Vous verrez qu'il est appelé hello.php, mais la syntaxe de celui-ci ressemble à un fichier HTML. En effet, la PHP réelle dans ce fichier est tous coincés entre ces Question blocs marque-caret. Tout ici est considéré comme du code PHP. Et vous remarquerez que quand je faisais un commentaire, vous verrez le familier deux barres obliques. Et si vous vous souvenez, dans HTML, si je tape un commentaire, il ressemble à quelque chose plus proche de ce qui est un commentaire en HTML. Alors, vraiment tout entre ces deux équerres est maintenant le code PHP, qui se traduit par le fait que ce petit symbole de commentaire est transformé en un commentaire. Ainsi, chaque fois que vous écrivez du code PHP, même si il n'y a aucun code HTML en dehors d'elle, il va toujours être enfermé dans ces équerres avec des points d'interrogation. Vous pouvez sorte de penser it-- comment tout du code qui a couru dans vos programmes C a été enfermé dans une int main, vide, accolade, fin déclaration accolade. Et vous verrez accolades dans PHP, trop, mais cela est une sorte de comme la principale méthode de PHP. Alors maintenant, comment faisons-nous quelque chose en PHP? Maintenant, PHP est une programmation langue qui est très semblable à C, mais il fonctionne sur le web. Donc, une chose que vous aurez un immediately-- des premières choses que vous avez vraiment fait avec C est vous imprimé des choses, non? Donc, en C que nous avons fait avec une fonction printf. Nous lui avons donné une chaîne, probablement avec une nouvelle ligne, puis nous avons résilié avec un point-virgule. Donc, la façon dont nous allons faire ce que dans PHP-- car il est pas tout à fait printf. Il est un peu différente de la syntaxe. La façon dont nous imprimons les choses en PHP est que nous disons, "echo bonjour" ou "echo" tout mot. Et qui a pour effet de faire printf avec une ficelle, «bonjour». Et il ajoute la nouvelle ligne à elle. Donc, nous allons maintenant faire sure-- Je vais effectuer un zoom arrière un peu bit-- nous allons faire en sorte que que le code fonctionne car il pourrait très bien être un bug dans le code que nous devrons faire face. Donc le serveur est déjà en cours d'exécution. Donc, si nous revenir en arrière vers le bas, yup, le serveur est toujours en cours d'exécution. Donc, si nous exploitons seulement sur cette peu droit ici-- welcome-- nous devrions get-- grande. Nous sommes encore ayant la "Dites bonjour" le dialogue familier, mais quand je tape dans "Salut," nous verrons que le texte "bonjour" était en effet imprimé, ce qui est exactement comme nous nous attendions, car l'écho en PHP est comme une déclaration de printf. Donc, retour au code, comment dans P mis 6 ne le code de distribution vous sont fournis faire en sorte que PHP serait sortie la chose que vous tapé dans l'écran précédent? Et en quelque sorte d'examiner pourquoi cela arrive, nous sommes va aller en index.html, qui est le fichier d'origine, le fichier apparaît sur cet écran avec le bouton "Dites bonjour". Vous remarquerez qu'il ya toutes les choses classiques nous sommes venus à attendre de tels HTML que ces choses, ces balises enfermés entre crochets, comme PHP mais sans les points d'interrogation, ce qui indique quelque chose de spécial au format HTML. Nous avons titre, qui est «bonjour». Et vous remarquerez que nous avons vu, le titre est «bonjour» dans les deux cas. Nous allons changer celui- à "dire" juste pour nous peut nous distinguer là où nous sommes. Mais nous avons un corps. Et puis le peu intéressant, la bits qui apparaît dans le code HTML, est cet élément de formulaire. Et donc nous avons un formulaire. Et cela est la clé. Ceci est la façon dont nous travaillons avec PHP. Le paramètre d'action de forme dit que hello.php est ce que nous allons envoyer les valeurs dans ce formulaire. Voilà où nous passons les paramètres, pour ainsi dire. Vous remarquerez une autre chose ici est que le procédé est "get". Il ya deux écoles primaires méthodes par lesquelles sera être en utilisant PHP pour transmettre des données entre les pages Web websites--, rather-- dans cette mission. Et ces méthodes sont "get" et "après". Il ya quelques subtile différences entre GET et POST que nous obtiendrons into-- nous sera "get" en, si vous voulez. Mais pour toutes les intentions et fins, GET et POST sont tous deux à ce que des moyens vous passez paramètres légèrement différentes exécutions. Pour l'instant, nous allons utiliser obtenir parce que EEG a été ce qui était utilisé à l'origine dans le fichier PHP de P mis 6. Et effectivement, si nous allons et regarder avant que nous avons édité quelque chose d'autre, Je vais dire salut to-- quel est votre nom? AUDIENCE: Elliot. SAM Levatich: Oh, ça alors. Je ne sais pas comment épeler cela. Pouvez-vous épeler ce pour moi? AUDIENCE: E-L-L-I-O-T. SAM Levatich: I-O-T? AUDIENCE: Ouais. SAM Levatich: Parfait. D'ACCORD. Je suppose que je ne savais comment épeler cela. Désolé a propos de ça. Mais si nous disons "Dites bonjour," il est pas ça ne va pas à apparaître sur l'écran Pourtant, parce que nous avons modifié le code un peu. Mais si nous ne "dire bonjour" - OK, donc «bonjour» est ici. Mais si nous prenons de plus près regarder l'URL elle-même, nous verrons qu'elle se termine name = Elliot avec hello.php?. Ainsi, la présente est un moyen de communiquer à la page web suivante les paramètres que nous avons adopté. Nous avons dit name = Elliot. Et voilà finalement comment P set 6 consultée la variable que nous avons passé dans grâce à la forme. Et ceci est quelque chose qui est propre à une requête GET. Une requête GET rend les paramètres connu dans l'URL du site. Et vous vous rappelez, aussi, P mis 6 que vous dû écrire une fonction qui portait sur le fait que cette chaîne de requête pourrait exister après un fichier. Il pourrait y avoir un point d'interrogation suivi par essentiellement un certain nombre de caractères. Et cela est exactement ce qui se passe ici. Et la raison pour laquelle vous aviez à analyser que dans votre mise en œuvre de server.c P Set 6 est de sorte que vous pourriez dire le code PHP ce nom = Elliot. Il fallait être en mesure de analyser que sur l'URL de sorte que le fichier PHP en question savait ce qu'il avait affaire. Donc, nous espérons que cela donne la motivation pour server.c maintenant que nous passons en dehors de C dans PHP. Donc, nous allons effectivement mettre l'accent sur l'accès à la les choses passent à travers une requête GET maintenant à ce point. Je vais enregistrer ce. Nous ne changeons rien. Il semble que nous avons un champ de saisie. Nous mettons en place certaines propriétés, que nous pouvons faire une HTML. Ce sont des choses simples. On n'a pas besoin de ces. Mais nous avons autocomplete off, says-- qui, fondamentalement, vous le savez, lorsque vous tapez les choses dans le web, parfois il essaie de combler ce pour vous. Donc, il est une bonne chose. Nous voulons pour l'éteindre à cet effet. Ce fut une décision de CS50. Donc, nous pouvons supprimer que si nous voulions. Autofocus colle tout simplement le curseur dans la bonne forme au début. Encore une fois, pas trop importante. Mais name = "nom" - il est un peu délicat parce que son nom et le nom. Mais nous pourrions avons changé ce à autre chose. Et en fait, que ce ce que nous allons faire maintenant. Nous allons dire «personne», qui est une sorte de nom si une personne est définie par leur nom. Donc, nous allons fermer cette, rouvrir notre site depuis notre serveur est toujours en cours Apache 50, et nous diront, bonjour, voici Elliot nouveau. Pourquoi pas? Bonjour. Et si nous allons ici, nous verrons alors au lieu de name = Elliot, il est dit personne = Elliot. Et cela est une conséquence directe du fait que nous venons de changer le nom = «personne». Ainsi, dans un élément d'entrée de un formulaire HTML, le champ de nom est l'identifiant de la paramètre qui est étant passé. Il est comme si vous créez une fonction "ajouter" qui a eu en deux entiers et vous avez dit int a et b int. Ce serait un nom, et si vous vouliez une autre forme, qui nous pouvons faire juste en copiant et coller, alors nous aurions nom b. Alors maintenant, nous aurons deux paramètres qui sont passés à travers se rendre à la prochaine website-- la page Web suivante, hello.php. Et nous pouvons réellement voir que si nous voulons à nouveau. Ceci est la meilleure façon de traiter avec le code web dans l'IDE, essentiellement. Vous démarrez le serveur, l'obtenir course, puis chaque fois que vous faire quelques changements, juste à proximité ce fichier juste pour être sûr. En appuyant sur le bouton de retour est un peu délicat car il pourrait charger un plus tôt la version, pas la plus à jour. Et puis vous cliquez simplement votre nouveau sur la touche, pop up-- droit oh, et maintenant il ya deux formes. Et si on tape une chose dans chaque One-- "Hirshhorn jason," pour instance-- nous disons bonjour. Nous regardons à nos paramètres. Il semble que nous avons, en tant prévu, a = b = Jason et Hirshhorn, qui représente les deux paramètres que nous sommes passés à cette fonction. Alors maintenant, nous allons réellement obtenir à la mise en œuvre de cette fonctionnalité que nous P eu à régler 6. Donc maintenant nous sommes juste écho bonjour. Et ce ne est pas très utile. Nous voulons faire écho à une variable qui a été adoptée pour nous. Et nous savons que le nom de cette variable. Nous avons un et nous avons b. Donc, nous pourrions choisir d'écho ou l'autre. Mais comment pouvons-nous y accéder? Eh bien, il ya certains variables globales en PHP. Et je vais écrire les dans les commentaires ici. Les deux plus importants sont get et poster pour nos besoins en ce moment. Ce sont les tableaux ou, Techniquement, les dictionnaires où nos variables que nous sommes passer à la page web suivante en direct. Et nous verrons bientôt comment les utiliser. Une autre brève note sur le code PHP et quelques spécificités de it-- en C, pour déclarer une variable ou d'utiliser des variables, il fallait d'abord les déclarer. Et ce que vous aviez à faire lorsque vous déclarés eux était int dire un ou char b. Vous avez eu à déclarer les types de ceux-ci les variables avant de les créer. PHP-- vous ne devez pas faire de tout ça. PHP ne demande pas le type de variable. Et la façon dont vous que créer un variable-- plutôt que de dire int, char, string-- qui est vraiment char *, comme nous know-- plutôt que de faire tous que, parce que tout est du même type, sans type, nous pouvons simplement utiliser un caractère qui est le signe du dollar. Et vous verrez qu'il est déjà popping up, les petites choses de saisie semi-automatique. Et il est dit que _GET et $ _POST sont deux options dont je dispose à moi. Certains de ces autres choses sont d'autres variables globales en PHP que vous allez utiliser plus au cours de P set 7. Pour l'instant nous allons se concentrer sur GET et POST. Mais ceci est une utile chose qui l'IDE ne où une fois que vous avez tapé dans ce signe de dollar, il va commencer à remplir dans des variables globales ou des variables que vous avez déjà définis. Donc, si vous voulez définir une variable appelée "chaîne" vous pouvez simplement le mettre égal à "salut." Et il est fondamentalement aussi simple que cela. Et puis nous pourrions faire quelque chose comme "echo $ string." L'IDE devrait être jetant quelques erreurs si je fais quelque chose de mal, alors espérons que je fais tout droit. Mais bogues ne se posent toujours. Une autre chose plus délicate sur PHP est qu'il est pas compilé. Donc, avec des programmes de C, vous feriez la routine quotidienne de-- essentiellement, vous souhaitez apporter des modifications à votre code, vous seriez l'enregistrer, puis vous le feriez faire, où était la marque l'étape qui a appelé le compilateur, clang, pour faire de votre code, ce texte déposer, dans un fichier exécutable. PHP est C-like, mais il est exécuté à la volée par votre navigateur Web. Il n'y a donc aucun moyen de savoir. Assurez jetterait ceux erreurs utiles, non? Ce serait comme, vous n'a pas déclaré cette variable avant d'essayer de l'utiliser. Vous avez fait tout ce mauvais segfault stuff--, Segfault, tout ce genre de moments de plaisir qui est venu avec maquillage. PHP est une épée à double tranchant parce que vous ne recevrez pas ces erreurs, mais cela signifie aussi que vous ne saurez pas vraiment ce qui ne va pas avec votre programme si vous lancez simplement et ça ne marche pas. Mais le débogueur doit souligner quelques petites choses, espérons utiles syntaxiquement que vous pouvez fixer. Alors maintenant, si nous dépassons to-- disent, fermons cela. Rouvrir. Et nous sommes de retour ici. Nous avons donc une variable et un variable b. Et ceux-ci n'a finalement pas d'importance. Nous les appelons h et g pour aucune raison particulière. Et nous disons bonjour. Maintenant, il ressemble à notre chaîne "salut" est en effet l'impression. Nous avons créé une variable appelée "string", réglez-le égal à "salut." Remarquez que nous ne devons faire malloc ou faire un tableau de caractères. En PHP, car les variables sont sans type, une chaîne est la même que pour un produit de carbonisation toutes fins utiles. Cela pourrait être "salut." Cela pourrait être simplement le caractère k. Cela peut être un numéro 1. Et il ne se soucie pas. PHP ne se soucie pas le type de la variable. Ou, il ne se soucie. Il se soucie lorsque vous essayez et faire des choses avec elle, mais il ne se soucie pas l'étape de déclaration. Et tout comme vous pouvez en C, vous pouvez déclarer cordes sur la pile comme ça mais en disant "pile" est un peu peu trompeur potentiel lorsque nous parlons de PHP. Mais nous ne devons pas nous inquiéter à ce sujet. Donc, nous avons eu notre chaîne "Salut," et nous faisons écho à chaîne. Alors maintenant, nous avons discuté des variables. Alors maintenant, nous devons parler de get et poster et effectuer la dernière chose qui est nécessaire pour vraiment obtenir ce retour jusqu'à à la fonctionnalité de la P mis 6. Donc maintenant nous sommes faisant écho à la chaîne, mais nous ne possèdent ces variables GET et POST. Et parce que nous utilisons le procédé se, il semble naturel que notre variable nous sommes intéressés à la fois A et B, sera situé dans la matrice ou un dictionnaire, obtenir techniquement. Donc, si nous mettons en place comme cela se avec votre groups-- Je pressai entrer et il n'a pas aimé it-- mais ici nous avons obtenir. Et donc obtenir existe déjà. Ainsi, nous pouvons déjà commencer à l'accès certains des éléments de get. Si nous ne recevons, cette syntaxe pour tableaux PHP est très C-like. Nous avons nos deux crochets. Donc, si nous disons obtenir dans une normale tableau, nous pourrions accéder l'indice de zéro, le premier indice. PHP est l'indice zéro. Nous pourrions dire zéro, un, two-- trucs comme ça. Et je disais que Get est techniquement un dictionnaire. Donc, ce que PHP est fait sous le capot, qui est un peu mieux que C, est-il déjà, vous donne une certaine fonctionnalité dictionnaire, qui est vraiment tables de hachage, ou tente de, soi-disant. Ou, techniquement, il pourrait être un essai aussi bien. Mais PHP met en œuvre une table de hachage, qui forme un dictionnaire efficace. Et si nous savons le nom de notre variable, non? On est en train adoptée en la chaîne de requête par PHP. Nous avons a = h et b = g et b où sont les noms des variables. Donc, la façon dont nous pouvons accéder à la valeur qui correspond à la clé dans notre dictionnaire est en disant simplement _GET_GET ["un"]. Alors maintenant, nous avons _GET ["un"]. Et si nous remplaçons juste à l'intérieur notre écho, si nous faisons écho _GET_GET ["un"] - et nous allons voir si le débogueur jette des erreurs environ this-- nous allons garder et proches ceci. Ouvrez-le. Donc, nous faisons juste un droit maintenant et b ne devrait pas question. «elle» et «lui» - "fredonner." «son» et «hum». Ça m'a l'air bien. Et il imprimé "elle," ce qui est fou. Mais cela est exactement ce que qui se passait dans P mis 6. Fondamentalement, ce que P set 6 était doing-- écho bonjour, name-- où il avait un nom de variable et juste vous demande de taper que peu de texte. Il y avait aussi un certain code supplémentaire où il comprenait si les déclarations, que nous pouvons faire maintenant. Nous pouvons dire si elle existe, qui est une fonctionnalité dans PHP, _GET Avec le soulignement, "nom" - qui est essentiellement dire, "si le nom a été rempli" parce nous aurions pu simplement cliqué sur le bouton à soumettre le formulaire sans rien taper dans ce champ. Et nous conclurons que, dans notre accolades amicales. Nous pouvons avoir une instruction else. Et cela est tout dans l'angle PHP support, point d'interrogation, équerre, si vous voulez. Et maintenant, nous allons voir si cela fonctionne. Je continue à attendre qu'il debug et de la merde sur moi, au fond, mais il n'a pas encore. Peut-être qu'il va maintenant parce que je parlais. Ouaip. Il a, en fait. Donc, rien ne se profile. Cela est à cause de quelque chose de mal que je l'ai écrit dans le code PHP. Et je l'ai mentionné le débogage est délicate parce que dans PHP, nous ne pas compiler avance et le compilateur ne ressemblait pas, voici où vos erreurs sont. Mais ce que nous pouvons faire est-- faire les gens se souviennent comment regarder l'autre réseau demandes ou que les sites PHP-- envoyer? [? Malin?] A fait en sermonner une ou deux fois. Vous souvenez-vous où nous allons trouver les différentes dettes et 200 OKs, tous ces codes qui sont envoyés via HTTP à partir de la page Web à la page web? Quelqu'un se souvient où nous allons faire cela? AUDIENCE: Source de la page. SAM Levatich: source de la page. Exactement. Si vous allez à la page d'Source-- parfait. Donc, la page Source tire vers le haut l'inspecteur. Et je suis en utilisant Safari. Beaucoup d'entre vous ne sera probablement être en utilisant Chrome ou Firefox. Mais aussi longtemps que vous êtes l'une quelconque des browser-- moderne et se sentir libre de suivre ainsi si vous voulez. Vous pouvez taper jusqu'à présent code ou il suffit de regarder à l'intérieur de l'ensemble de P 6 répertoire pour certains trucs similaires. hello.php est ce que nous sommes travaille actuellement sur l'émulation. Donc, il ya une variété d'onglets. Nous pouvons regarder toutes les ressources. Nous pouvons voir le code source. Ressemble tellement qu'il n'a pas obtenir corps passé à la fin. Il a constaté une erreur dans PHP et il arrêté chargement de la page Web entière. Nous ne disposons même pas une fin tag pour HTML ou quoi que ce soit. Et si nous regardons le réseau, nous pouvons voyons que nous sommes étant envoyé une demande. Ceci est le nom de domaine. Ceci est l'adresse. Il est un document. Nous utilisons la méthode get. Et il est rouge. Ou, il était rouge quand je n'a pas été le sélectionnant. Comment puis-je désélectionner? Eh bien, il était rouge. Permettez-moi de vous rafraîchir. Le voilà. Maintenant, il est rouge. Donc, il est rouge, ce qui signifie elle a échoué, ce qui est mauvais. Examinons donc pourquoi il n'a sûr. Donc, tout ce que la source de la page peut essentiellement vous dire est votre truc ne fonctionne pas, que nous pouvons déjà voir. Donc, idéalement, il serait être un outil plus utile. Et il ya des extensions de navigateur qui vous permettent de déboguer PHP, mais on ne va pas à être écrit une tonne de PHP, donc il est probablement juste mieux de regarder à travers votre code attentivement et assurez-vous que il ne fait rien d'autre. Donc, nous allons voir si le format de cette if est où le problème est. Je veux charger que de retour ici. Salut. Donc, il ya un problème. Donc, pour la syntaxe correcte de PHP, PHP va être C-comme dans que vous verrez boucles. Vous verrez si les états. Vous verrez tous ces amis que vous avez familiariser avec plus de cours de cette CS50 semestre. Mais la meilleure façon de comprendre comment faire quelque chose en PHP est Google, il ou de regarder quelques exemples de code PHP parce que vous savez la fonctionnalité. Vous savez ce que vous pouvez faire avec le programme. Vous pouvez faire une boucle. Vous pouvez faire une boucle autant de fois que vous le souhaitez. Vous pouvez faire une boucle dans tous les sortes de façons différentes. Vous pouvez créer des fonctions. Vous pouvez créer des fonctions qui appeler d'autres fonctions, fonctions qui appellent eux-mêmes. Et vous avez des noms de ces concepts. Vous avez la récursivité, boucles, si, les autres flux de contrôle. Et si Google est votre meilleur ami. Même dire, "si PHP déclaration »et il y des tonnes de messages avec réponses à d'autres personnes qui ont eu des questions semblables à vous, qui commencent tout juste avec PHP et sont curieux de savoir une chose de syntaxe. Parce que nous avons le luxe d'être capable de regarder le code dans P ensemble 6, nous avons effectivement tirer vers le haut et de voir que OK, voici quelque chose d'intéressant. Donc, cela est ce qu'il est réellement ressemblait à P mis 6. Donc, si nous allons par ce biais, nous pouvons voir que nous avons eu plusieurs de ces petits Question mark bits de PHP-like. Et il n'y a pas d'accolades. Il ya deux points. Et il ya bouclés accolades en PHP, mais cette est un format et d'une façon de faire PHP qui fonctionne bien avec HTML parce que comme vous le verrez, nous fermons hors ces PHP bits-- l'elses et l'ifs et tous that-- puis nous intercalant HTML intérieur d'eux tout en suivant la flux de contrôle définis par PHP. Donc je vais juste marche rapide à travers ce car il ya beaucoup de la même concepts que nous faisions avant. Nous avons si non vide, parenthèses, _GET_GET ["nom"]. Ceci est tout de même des choses. Nous utilisons le dictionnaire _GET que PHP envoie à la demande de formes, parce que ce sont les paramètres de l'action, et la méthode est d'obtenir. Et puis qui finit que. Le côlon est un signifiant à tout faire si l'instruction if true. Il est comme une accolade. Et en fait, il est une accolade dans d'autres langues comme Python, que vous pouvez rencontrer si vous venez faire pour votre projet final. Et puis cette ligne, bonjour. Ensuite, nous avons cette chose bizarre. Nous avons plusieurs consoles. Il n'y a pas HTTP there-- ou PHP, désolé. Mais il ya un signe égal. Et puis nous avons une fonction, htmlspecialchars (_GEThtmlspecialchars (_GET ["nom"]). Ceci est un peu comme un plus version avancée de l'écho. Comme nous avions écho comme un moyen d'imprimer les choses en PHP. Ceci est une fonction qui est que défini dans la PHP portera sur un peu plus agressif les personnages et les valeurs d'octets que vous pourriez passer. Il est toujours plus sûr d'utiliser ce. Mais l'écho va faire le travail très bien si nous ne sommes pas traiter avec quelque chose de trop méchant. Et donc cela a le même effet de fond, ce genre de choses entre la question marques est évaluée par PHP. htmlspecialchars renvoie une belle HTML valeur imprimée de _GET_GET ["nom"], à savoir quel que soit nous avons tapé dans le formulaire. Et puis il va dire bonjour, espace virgule, puis cela. Ce tout entre les équerres sera remplacé par quelque htmlspecialchars éteint. Voilà donc essentiellement similaire à ce que nous faisons. Et nous avons une déclaration qui est d'ailleurs Bonjour tout le monde, ce qui est logique. Alors maintenant, revenons à notre code et voir exactly-- oh. Je l'ai dit il existe, ce qui est pas une chose que nous voulions faire. Nous voulions dire pas vide. Et ce qui devrait travailler un peu peu mieux, pas _GET_GET vide ["nom"]. Et ce accolade correspond à celle accolade. Nous avons nos accolades ici. echo bonjour _GET ["nom"]. Voyons voir si cela fonctionne un peu mieux. Nous sommes encore en course notre serveur. Bonjour Jason. Bonjour Jason. Et cela a fonctionné cette fois. Et voilà une preuve que vous pouvez en effet utiliser les accolades que vous connaître et aimer dans le code PHP en HTML. Le code PHP fournie à vous dans pset 6-- pset 6-- fournit une autre façon de le faire même chose. Alors maintenant, nous avons le pouvoir. Nous avons à mettre en œuvre la fonctionnalité le code PHP que nous avons vu dans pset 6 par nous-mêmes, essentiellement. Avant de passer, ce sont quelques-uns des questions que vous avez à ce point? Oui [inaudible]. Auditoire: Alors, dans sa version en pset6, lorsque vous l'exécutez, il ya un espace. Et je peux voir où l'espace est après la virgule. [Inaudible] début le support ouvert. Comment vous intégrez dans l'espace ne la façon dont vous avez écrit vos propres codes? Président: Cela est une bonne question. Et nous allons donc comprendre cela. Voilà donc une très bonne question et que je ne considère pas. Mais faisons-le ensemble. Alors tout d'abord, ce que Je fais avec echo est quand nous faisons écho juste bonjour, il affiche bonjour. Si nous faisons écho maintenant obtenir ce sur une séparée ligne, nous allons examiner ce qui se passe. Donc, nous cliquons sur ce sujet. Nous gardons en disant salut Jason. Encore une fois, nous ne disposons pas cet espace. Tout cela parce que, dans PHP, quand nous avons écho, peu importe combien de spaces-- Nope, pas le V-- peu importe combien de places nous avons mis en ici-- si nous chargeons maintenant que de nouveau, salut Jason. Ouais, voir, tous ceux espaces se sont mangés. Et ce quelque chose qui la fonction d'écho fait. Donc, pour prendre soin de cet espace, ce qui est l'une des raisons pourquoi vous ne l'utilisez pas d'écho et que vous utilisez htmlspecialchars place. Je suis curieux de savoir ce qui serait passerait-il si nous faisions cela où nous joignons un espace dans une chaîne. Je suis honnêtement pas sûr de ce qui va se passer quand je fais cela. Voilà donc une façon. Voilà une façon de prendre soin d'elle. Si vous enveloppez dans l'espace une chaîne, puis l'espace sera bien sortie par écho. La chose la plus sûre à faire est faire htmlspecialchars. Voilà toujours le pari sûr. Mais maintenant, nous avons une façon de le faire avec écho si nécessaire. Et de la même manière, nous pouvons écho de nouvelles lignes, tout le genre de choses que vous êtes familier faire en PHP. Quelqu'un d'autre, ce sont plus des questions que d'autres personnes ont à ce point à propos de PHP? Si les gens ont montré un peu de retard, Je suis heureux de rester après un peu et parler de certains des le début. Et il est également tout livestreamed, et archivés, ce qui est fou. Quoi qu'il en soit, maintenant faisons un peu plus de choses de pointe avec PHP. Et l'une des premières choses que vous ont été introduites dans C était pour les boucles. Et PHP dispose d'un plus puissant pour boucle appelée boucle foreach. Et il semble que this-- pour chaque vierge comme vierges, accolades, faire la chose. Donc, cela est essentiellement un raccourci. Voir, la boucle comme un construction syntaxique a été conçu en C et en assembleur la langue et les choses aiment. Conçu en C, précisément, comme un raccourci pour un grand nombre de types de boucles que les gens verraient. Comme quand vous avez écrit une boucle, il est souvent une étape d'initialisation exécutée dès le début, un condition où la boucle serait stop-- et que la fonction est qui est juste dans une boucle while, ou qu'un tout a exactement juste que feature-- puis une étape d'incrémentation à la fin. Et si vous souhaitez vous trouvez souvent l'écriture de code comme le suivant. Je vais effacer une partie de cette. Mais si nous nous parcourons caractères dans un tableau, par exemple, comme nous l'avons obtenu un tableau de caractères. Désolé pour ramener C. Je sais, vous pensiez que vous aviez terminé. Mais il est uniquement dans le but de l'apprentissage de PHP, je le promets. Donc, si vous avez un str char de longueur 8, et nous allons dire qu'il dit Hellooo avec une nulle de fuite. Grande, de sorte que est notre chaîne. Et puis nous avons eu une boucle for. Nous avons int i est égal à 0. Et nous voulons sortir quand str de i vaut pas égal à null, parce que nous sortons quand il est égal à zéro. Et puis nous faisons i ++ à chaque point de la boucle. Faire quelque chose avec str i. Donc, la formule de base était, nous avions ce tableau que nous voulu traiter comme des éléments séparés. Mais ce que nous avions à faire est nous avons dû essentiellement créer un nombre entier séparée variable qui a été égrène les fois que nous allions à travers la boucle. Et puis nous aurions à appeler puis strstr [i] alors que nous avons vraiment voulu faire est juste aller caractère par le caractère, non? Nous ne voulons pas d'incrémenter un entier et ensuite l'utiliser entier pour accéder à chaque personnage individuellement. Nous voulons vraiment caractère par caractère. Et ainsi pour chaque intelligemment calcule que pour nous. Si nous avons un tableau, qui nous pouvons déclarer en PHP just-- que si nous avons une variable appelle, appelons-le tableau. Les miracles de la frappe pas, il est comme toute autre variable. Il est juste un tableau. Et nous avons un peu de [inaudible] comme 1, 2, 3, juste une sorte de tableau initialisé. Il est OK, il ne aime pas mon foreach. Mais si nous ne foreach-- effectivement Je tapé qu'un peu de mal. Il ya deux façons de faire une boucle foreach. Il ya de la syntaxe et de la syntaxe que. Et nous allons faire en première syntaxe, pas aussi. Voilà mon erreur. Num Donc foreach dans le tableau, l'écho num. Et PHP est criant au moi pour une raison quelconque. Il est de trouver un inattendu dans quelque chose, qui est un peu d'une peine. Mais nous allons trouver pourquoi ce qui est dans un moment. Donc, pas comme ça. Essayons utilisant l'AS. Il préfère la syntaxe est comme semble. Alors, faisons ensemble foreach comme num. Donc, une petite explication de ce qui vient de se passer est la syntaxe que saying-- est bien d'abord, Voyons ce que cela imprime. Donc, nous ouvrons notre IDE. Nous allons ici. Nous disons, Bonjour Jason. Et il l'a fait 123, qui était le contenu du tableau que nous avons créé en haut. Alors plonger dans cette boucle de foreach, nous avons un réseau de variable appelée qui est un tableau de trois numéros. Et puis nous faisons foreach tableau comme num, écho num. Et qui est plus intuitive qu'un pour Lop. Nous disons, le traitement de chacun des les choses dans le tableau comme num, Je veux que vous me donniez num. Et cela est exactement ce qu'il fait. PHP est le calcul que quand vous dites tableau foreach, et vous avez affaire à un tableau, ce qui vous allez vouloir parcourir est les personnages de ce tableau, est les ints dans ce tableau, est les éléments dans ce tableau. Et ça vous permet de stocker ces variables comme num, et num puis juste sortie tout de suite plutôt que de dire, Je dois une variable appelée i, et alors je veux sortie strstr [i]. Et pour que nous permet de faire des choses cool. Comme fondamentalement, nous ne disposons pas de créer ces variables comme les i et faire tout cette incrémentation des trucs à la fin. PHP prend soin de tout cela pour vous. Laissez donc maintenant nous allons parler comme foreach il applique à notre dictionnaire _GET. Donc, nous allons commenter cette rapidement. Donc, nous avons notre réseau de _GET. Nous avons cette variable. Et il a obtenu quelques trucs dedans. À l'heure actuelle, nous avons une seule variable étant transmis à ce qui est le nom. Mais si nous appuyez sur Entrée, maintenant nous pouvons avoir deux variables. Nous pouvons avoir des nom et l'âge, par exemple, si nous voulons obtenir de l'âge et aussi le nom d'une personne, curieusement. Alors maintenant _GET va être un dictionnaire avec deux éléments, avec deux paires de valeurs clés. Et la première KEY-- je vais écrire ce une place sur la carte aussi. Nous avons notre dictionnaire est _GET. Désolé, il est est un peu difficile à voir. Mais à l'intérieur, nous avons notre dictionnaire nom, qui est va être quelque chose que nous sommes donné. Et nous aurons l'âge, qui est aussi va être quelque chose que l'on nous donne. Et cela est l'ensemble de notre dictionnaire. Donc il existe deux éléments en elle. Et parce que foreach boucles sont intelligents, nous pourraient penser, et correctement pourrait penser que foreach peut itérer cette dictionnaire, imprimant Les valeurs indiquées par le nom et l'âge. Donc, nous allons en fait faire exactement cela. Construisons une boucle foreach. Et nous allons faire pour que _GET. Et nous allons faire ce qui suit. Donc, nous allons voir ce qui arrive si nous tapons juste mot, et puis dire mot écho. Nous allons également faire écho à une nouvelle ligne juste pour le rendre un peu plus clair, ce qui se passe. Voyons donc. Ca me donne pas des erreurs. Et nous terminons cette. Sur notre site, vous allez faire beaucoup de cela au cours de pset7. Donc, nous disons mon nom est Sam. Mon âge est de 45. Ce n'est pas. Mais il imprime, comme prévu, Sam 45. Et vous remarquerez que ce qui boucle foreach did-- ici, Revenons à ce que donc il est en place sur la board-- nous obtenons _GET comme mot. Et il y avait quatre choses dans _GET. Mais il ne imprimé deux choses. foreach, étant son auto de renseignement, supposé que ce que nous voulions vraiment était les valeurs, pas les clés. Mais il ya une façon que nous pourrions imprimer les touches ainsi, si nous voulions. Si nous voulions savoir aussi ce que ces variables ont été appelés, il ya une façon que nous peuvent accéder à cette ainsi. Et la façon de faire de sorte que, de sorte que nous pouvons dire, laisse vraiment diviser en paires clé-valeur. Voyons donc ce qui se passe maintenant. Donc, nous avons la clé. Nous avons la valeur. Nous avons un autre nouveau ligne pour plus de lisibilité. Et nous allons voir ce qui se passe lorsque nous faisons cela maintenant. Je ne sais pas quel âge est Jason. Jason 15. Nous avons donc le nom de Jason, 15 ans. Donc, nous avons pu accéder à la clé et des paires de valeurs de ce dictionnaire en disant simplement que les points clés de la valeur. Et voilà un syntaxique foreach peu de sucre qui permet d'accéder à des choses dans le dictionnaire. Donc, nous espérons que ce genre de souligne la puissance de la boucle foreach. Vous pouvez très bien lancer tout ce qui semble iterable, comme tout ce qui a de multiples des éléments comme un tableau, comme un dictionary-- Ce sont deux premières choses que vous allez travailler avec à la fois dans la vie et dans pset 7. Ainsi, vous pouvez jeter ce truc à elle, et il va comprendre ce que vous voulez faire avec elle. Il va dire, OK, je vais obtenir ces choses aux données a été adoptée pour moi. Et ce quelque chose que vous êtes va être en utilisant un lot de 7 à pset. Je vais défilement rapide bas juste pour voir où je suis. Les gens ont des questions à ce point? Questions à tous? Oui? Auditoire: Alors, avec la clé et la valeur, vous pouvez nommer ce quelque chose d'autre et il serait encore travailler? CONFÉRENCIER: Oups. Wow, je suis totalement supprimé toute la ligne. Bon travail. Ainsi, a, a. Clé et la valeur est juste une convention. Il est utile. Vous obtiendrez une certaine conception points, peut-être quelques points de style pour faire cela, car il transmet vraiment l'intention. Mais nous disons a et Yarp. AUDIENCE: Vous ne devez pas changer quelque chose dans le fichier HTML afin de refléter cela? CONFÉRENCIER: Pas du tout. Public: Et il sait juste que en raison de la plus grande équivaut than-- CONFÉRENCIER: Oui. AUDIENCE: indicateur --Que que that's-- CONFÉRENCIER: Oui. Voilà une syntaxe foreach, mais oui. PUBLIC: Il n'y a pas les types. Alors que faire si vous vouliez l'âge d'être seulement un nombre? Y at-il un moyen de faire cela? CONFÉRENCIER: Il existe des moyens pour vérifier si les variables sont conformes à certains types. Donc PHP demande un peu plus de vous car il n'y en types. Certains égards, il demande moins. À certains égards, il demande plus. Parce que si vous avez juste quelque chose dans une variable, vous avez aucune idée de quel type il est. Mais si vous êtes intelligent sur les variables que vous attribuez à types et assurez- qui ne fonctionne que vous return-- veulent fonctions à seulement retour un type de valeur afin que vous pouvez essentiellement attendre à ce que la variable que vous revenir à partir d'une fonction sera du type que vous pensez que ce sera, essentiellement. Mais il existe quelques méthodes par lequel vous pouvez vérifier. Je ne me souviens pas sur le dessus de ma tête. Je suis en attente pour elle de virer au bleu. isint? isstr? Il existe des méthodes intégrée à PHP, qui peut vérifier le type de variables pour vous. Mais si vous affectez des variables intelligemment, vous ne devriez pas avoir à faire cela trop dans pset 7. Mais ces méthodes existent. Et ce quelque chose qui est dans la langue elle-même. Et je ne me souviens pas de la syntaxe précise. Nous pourrions même regarder vers le haut. Mais le temps est de l'essence. avoir Quelqu'un d'autre avez d'autres questions? Oui. AUDIENCE: Je dois juste un de plus. Donc, vous avez parlé de la méthode GET, mais vous ne mentionne pas la méthode POST. Sommes-nous en revenons à cela? Président: Oui, nous allons être revenir à cela. Voilà exactement ce que je cherchais à mon téléphone, qui maintenant est endormi, mais je vais le trouver. Juste nous assurer que nous frappons toutes les notes de PHP. Yep, il n'y a aucune version de débogage. Oui, nous avons un peu plus de choses qui nous voulons faire maintenant, à ce point. Donc parler POST, dont vous avez parlé, la seule différence entre GET et POST est rappelons que lorsque nous avons examiné à l'adresse suivante et nous avons vu, oh, équivaut à un nom et l'âge est égal Yarp sont en plein URL là pour nous. POST est un peu plus secret avec son passage de l'information. Donc, si vous ne voulez pas un utilisateur à savoir, par exemple, vous je ne voulais pas le nom d'utilisateur et mot de passe de la personne actuellement connecté à afficher dans l'URL, ce qui est une chose raisonnable de ne pas vouloir dans l'URL, parce que quelqu'un peut le voir. Si elles relient quelqu'un à une page, vous ne veulent pas que leur URL il plâtré, parce que cela permettra aux gens de se connecter juste avec le collage d'une URL à la place du fait de remplir un formulaire. POST est un peu plus discret. Et les seules choses qui nous devrons changer sont cette méthode, le changement de rendre à poster. Et puis à l'intérieur du HTTP, la place d'accéder à la _GET de tableau, nous allons accéder à la _POST de tableau. Et nous allons remarquons que, si nous ouvrons cette remonter, Jason décline lentement dans l'âge. nommer Jason, 14 ans. La même chose apparaît. Mais nous allons à l'URL et ces variables ne sont pas là. Et la façon dont POST passes-- afin souvenir comment regarder la source d'une page. Nous allons au réseau. Nous Actualiser. Et ceci est une autre chose qui POST vous donnera des avertissements au sujet. Vous pourriez avoir vu une boîte, un texte boîte comme cela dans votre navigateur. Es-tu sûr que tu veux d'envoyer un formulaire à nouveau? POST est ce que l 'envoi de ces formes. Parce que, fondamentalement, si vous avez envoyé votre informations de carte de crédit à quelqu'un, cela ne va pas à apparaître dans l'URL. Cela va être une requête POST. Ainsi, lorsque vous actualisez la page, il est de renvoyer cette demande de poste. Alors maintenant, nous voulons envoyer le former à nouveau parce que ça ne va pas pour créer des achats en double. Et nous remarquons que ici, la méthode que nous utilisons est POST. Et il a effectivement transférer octets. Elle a transféré 401 d'entre eux. Programme est assez petit. Mais il n'y a nulle part que nous pouvons voir les valeurs qui sont transmises. Les pages web se peut voir, mais nous, les utilisateurs ne sommes pas en mesure de voir, sauf si vous êtes un hacker. Si vous êtes un bon hacker, vous pouvez regarder. Si vous connaissez la base format du HTML, les valeurs feront connaître dans les pages. Vous serez en mesure de voir. Les valeurs seront là, ils sont juste un peu moins évident pour vous d'accès, essentiellement. Avons-nous plus questions au sujet de GET, POST before-- ce que nous allons faire ensuite est réellement regarder une partie du code que vous vous donnez en pset 7, parlez comment il utilise certains de ces concepts, et parler de la choses que vous allez d'avoir à faire un peu de pset 7. D'autres questions avant? Plus de questions que vous les gars ont? Génial. Très bien, regardons un peu à pset 7, sans aucun doute ce que vous êtes tous plus excités. Je veux dire, ce qui est quelque chose David passe par un peu. Mais nous aurons trois répertoires à la dessus, ainsi que d'un fichier de configuration. Voilà pour les bases de données, que nous allons parler en cinq minutes environ. Comprend, vous ne devez jamais de regarder dans ce répertoire si vous ne voulez pas, mais il est agréable de savent qu'il ya toutes sortes d'aides. Helpers est comme fonctions utiles. Et puis nous avons config, qui définit certains trucs. Il ya certaines fonctions qui a CS50 écrite qui sont en aide et config. Et une partie de la PHP qui existe déjà dans les fichiers va faire beaucoup de la sorte plus travail de la jambe du obtus pour vous. Comme si nous entrons dans publique login.php, qui est ce que apparaît à droite quand vous allez dans pset 7. Nous verrons qu'il ya cette déclaration exige. Et ce genre de comme un forte comprennent, hashtag comprendre, si vous êtes d'une génération plus récente. Mais cette essentiellement dit que je dois accès à toutes les fonctions dans config.php. Et vous pourriez avoir un besoin de pour toutes sortes d'autres choses. config nécessite effectivement des aides. Donc, chaque fois vous avez besoin config, vous êtes aussi y compris les aides ou nécessitant ainsi. Alors que vous donne accès à tous les fonctions sympas que nous allons utiliser, des choses comme rendre. Je vais en fait pour faciliter cette baisse un peu. Donc la fonction alors nous sommes aller à pied à travers juste avant de passer à un peu de SQL bit est la fonction de login.php, juste car il utilise certains des sujets que nous venons de parler en PHP. Vous voyez la première chose est si $ _SERVER. Ceci est une autre variable globale qui vous allez avoir affaire à. Il est comme _GET et $ _POST, mais ce serveur contient est ce pouvez-vous laisser savoir si la méthode de requête était un GET ou POST. Comme précédemment ce que nous faisions est juste dans notre code que nous avons écrit, nous étions juste en train de changer ce soit GET et POST en fonction de ce que le HTML a. Mais il existe des pages qui peuvent être consultée avec deux types de demandes. Et vous pouvez faire choses différentes en fonction le type de demande, juste comme connexion fait. Ainsi, vous pouvez vérifier que la demande méthode par touches accès, grâce à l'aide d'une clé et d'obtenir le valeur de quelque chose dans le dictionnaire _SERVEUR. Voilà donc un autre mondial de variable comme _GET et $ _POST. Si elle est GET, nous voulons rendre le formulaire de connexion. Render est une fonction que, fondamentalement, juste met en place le code HTML appropriée et le transmet certains paramètres. Ce titre est un paramètre qui est utilisé dans l'affichage, assez curieusement, le titre de la page en question, la chose ici, dire bonjour ou dans notre exemple précédent. Maintenant, nous avons une chose différente. Sinon, si il est POST, nous faire d'autres choses. Nous utilisons cette méthode vide. Ça existait pas, il est vide. Et nous avons vu avant, PHP a une bonne quantité de construction dans des méthodes qui y David will-- si sont des méthodes qui vous sont utiles, ils seront alertés de vous dans la promenade à travers ce que David donne à l'aperçu en commençant, et également des bits utiles de Zamyla. Elle est de retour tout le monde. Nous pouvons tous nous réjouir. présenter des excuses est une fonction bien nommé qui imprime juste fondamentalement sur certains messages d'erreur, parce CS50 est très poli. Et ceci, ceci est un peu délicat parce que ce est l'endroit où nous l'interrogation de la base de données. Maintenant, nous avons pas parlé des bases de données. Et nous allons dans le prochain cinq minutes, au maximum. Mais cela est une fonction CS50 qui a écrit pour obtenir une table essentiellement une base de données que nous travaillons avec dans pset 7. Je suis vraiment mal avec ma indexation zéro aujourd'hui. Mais oui, il est 7. Donc requête, il va retourner un tableau, est essentiellement le bit clé. Et parce que ces choses ne doivent pas dactylographie, de sorte rangées est un tableau de tableaux. Parce que quand nous réfléchissons une table, ce que nous allons faire est, comme vous avez appris dans psets comme le jeu de 15, de toute façon où vous deviez utiliser un matrice double, nous avons essentiellement avoir éventail d'autres tableaux font une table. Et vous avez rangées et de colonnes. Et puis, vous pouvez y accéder comme à [0] [1], vous obtenez le [0] [1]. Trucs de base comme ça. Donc, ce que nous faisons ici, dans cette fonction, nous demandons la base de données si l'utilisateur qui est tentez de vous connecter, ce sera envoyé par la méthode POST. Nous allons voir que nous obtenons le nom d'utilisateur de _POST. Ils ont envoyé, l'utilisateur ou vous, enverra une valeur à travers un formulaire par poste parce que il est le nom d'utilisateur et mot de passe des trucs. Nous vérifions le nom d'utilisateur pour voir, est-ce dans le tableau? Parce que si un utilisateur se connecte dans, puis leur nom d'utilisateur doit être stocké dans la table de les utilisateurs qui existent pour ce site. Donc, fondamentalement, si le utilisateur se trouve dans la base de données, requête va revenir cette ligne, qui est un tableau. Mais la partie la plus délicate est que si même si la double tableau est seulement d'une rangée, même si elle est une une ligne array-- comme vous avez basically-- si vous avez une taille un réseau que ça tenant un autre tableau, vous êtes vraiment face à une colonne. Mais il est toujours traitée comme un double tableau. Et cela est l'endroit où il peut parfois obtenir délicat, parce que nous avons rangées ici. Notre variable est rangées. Et puis nous créons une nouvelle variable appelée ligne et le mettre égal à la première rangée de lignes. Et vous remarquerez que commentaire dit qu'il est la première et seule rangée. Voilà donc la délicate fonctions de partie où maintenant peut renvoyer des tableaux très facilement. Il n'y a pas mallocs. Vous ne verrez pas mallocs. Donc, vous ne verrez pas les défauts seg. Mais les fonctions seront toujours passer autour des tableaux et des données dans les groupes. Et vous avez à se méfier de ce exactement vos fonctions seront de retour. Et même si elle est l'un colonne comme cela, interroger est toujours en cours pour retourner un tableau double. Donc, pour l'accès que vous ou column-- peut penser de tout cela que inversé puisque nous parlons de lignes. Mais pour accéder à une ligne qui, vous ne pouvez pas simplement dire rangées. Même si elle est une ligne, vous devez ne rowsrows [0] pour éliminer cette sorte de bit externe de la matrice et avoir juste votre une rangée. Faites quelques autres choses. Il ya une fonction appelé password_verify vérifie que le mot de passe qui a été publié. Et puis nous voyons une autre mondiale la variable ici, _SESSION. Fondamentalement, l'identifiant de session comment vous garder une trace de si quelqu'un est connecté ou non. Donc en ce moment avec login.php, nous connecter un utilisateur. Donc, ce que nous voulons faire est que nous voulons dire l'identifiant de session est égale à la ligne id, qui tout à fait logique, car chaque ligne aura un id différent Numéro dans le cadre de la table. Nous allons entrer dans SQL dans un deuxièmement, si tout cela semble un peu comme bla, alors tout sera éclairci. Mais nous allons régler l'id égal à la bonne chose, l'enregistrement de l'utilisateur dans. Excuse si quelque chose va mal. Et tel est l'objet de connexions dans vie comme professeur Malan dirait. Alors qui était login.php. Et une grande partie du code PHP que vous écrivez dans pset 7, ils seront un peu. Ne pas oublier de chmod pour les autorisations appropriées. Il y aura un peu de en ce que le début de la spécification. Mais le PHP que vous êtes l'écriture va être faire des trucs qui est similaire à cela. Vous allez être l'accès à certaines choses qui vous sont donnés dans le variables globales de PHP qui sont aux prises avec le courant utilisateur connecté, qu'il y a eu des demandes envoyées à cette la page, différentes choses comme ça. Et il sera également potentiellement itérer rangées de cette chose. Dans une fonction différente, requête ne renvoyer ce double tableau. Et si il ya plus d'un rangées en elle, si il n'y soient: oui, si il ya plus d'une des lignes qui s'y trouvent, alors ce sera une table. Et vous pouvez itérer à travers les rangées de ce tableau à l'aide la boucle foreach que nous avons décrite. Donc, si vous faites foreach sur un double tableau, quel sera le word-- ici, Je vais effectivement l'écris. Je vais l'écrire rapide ici. Si nous avons un foreach de lignes que le rang, quel est le type de ligne? Est-ce que quelqu'un sait? Tu l'as eu? Donc rangées est une double matrice. Alors qu'est-ce foreach va déduire que nous voulons de cette double rangée si nous itérer sur elle? Nous pouvons supposer que fondamentalement ça va être des éléments, ou des lignes ou des colonnes, essentiellement. Et ainsi de lignes et de colonnes nous peut traiter que la même chose. Fondamentalement, ce que la boucle foreach va à faire est qu'il va renvoyer des lignes. rangée va être de type ligne, tandis que les lignes est une double matrice. Donc, si vous donnez foreach une double tableau, il est ne va pas à itérer plus d'un niveau profond. Qui est essentiellement de dire si il sont huit cellules dans cette table-- 1,2, 3 4, 5, 6, 7, la 8-- boucle foreach est pas passer en revue chacune de ces cellules. Qu'est-ce que la boucle foreach fera a été il faudra passer par cette ligne, vous donner toute cette rangée. Et puis ça va passer par cette ligne. Donc, il ne parcourt un niveau de profondeur. Si vous ajoutez un imbriquée boucle foreach, alors vous peut traiter chaque ligne renvoyée à partir lignes, vous ne foreach ligne comme élément, Disons. Et puis vous pouvez l'écho de l'élément. Voilà donc un bref petit rappel sur la façon dont vous utilisez peut-être foreach des boucles dans le cadre de la requête. Y at-il des questions sur PHP? Rien du tout avant que nous passer à parler de SQL et le plaisir de la base de données? Se sentir bien? Se sentir bien. Bien. Passons à l'arrière PowerPoint, qui vous manquez probablement. SQL, yay. Les gens qui sont dans ma section généralement sachez que sous-positions du acronymes sont toujours seulement les premiers mots Je pense que de ce match qui algorithm-- cet acronyme. Il est pas un algorithme. Donc SQL est une base de données. Il est une langue fonctionne avec les bases de données. Et toutes les bases de données sont est tables, au moins dans la façon que SQL les représente. Une autre façon de penser à des bases de données est bases de données sont un ensemble de clés et valeurs fondamentalement. Vous pouvez penser à une base de données un dictionnaire et également sous forme de tableau. Fondamentalement, il est un moyen d'associer différentes données avec d'autres données, souvent par le biais des lignes et des colonnes. Et qui est la façon dont que ce SQL fonctionne le mieux. Donc, ceci est un exemple d'une table. Je ai quelques exemples de les gens dans ma section, qui Je ne l'ai pas eu le temps de changer. Mais nous avons des choses comme ID, nom, superpuissance, et ville natale. Je ne sais pas où tout le monde est à partir dans ma section, donc je vais juste à assumer tout le monde est de New York Ville parce que je dois une grande statistique probabilité d'être correcte. SQL prendra automatiquement soins de la colonne d'ID pour vous. Si vous insérez une nouvelle ligne dans une base de données SQL, il incrémentera que Numéro d'identification et juste essentiellement tenir comme cinq noms, superpuissance, ville natale, celui qui sur l'extrémité dudit tableau. Donc, ID est une colonne vous verrez ne jamais avoir à vous soucier. Mais, comme dans le cas de login.php, lorsque nous obtenaient l'ID de session d'une table et en utilisant simplement ID, ID est un moyen d'identifier de manière unique un élément d'une base de données. Donc, si nous avions deux Sams, à la fois de qui enseignait CS50, et les deux de qui étaient de Milwaukee, ceux feriez ont encore des numéros d'identification distincts et donc être distinct dans le contexte de la table. Voilà donc ce que SQL traite avec, en collaboration avec dans la partie arrière. Maintenant, ce sont les quatre commandes que vous aurez besoin de travailler avec SQL. Et je les jetai sur une diapositive. Mais nous allons passer par tous individuellement. La première commande est UPDATE qui fait ce que vous pourriez vous attendre. Disons que vous avez des données la table qui est obsolète. Comme si vous conservez trace des noms des personnes et les âges, si quelqu'un l'âge augmente, puis vous allez vouloir aller et mettre à jour l'âge de juste que personne. Pour un exemple qui fonctionne avec notre premier table-- ne vous inquiétez pas sur l'écriture de tous ces commandes en même temps. Mais si vous avez mise à jour vers le bas, ce sera bon pour cette partie, parce que nous allons retourner à la table. Donc, si nous revenons à la table, disons quelque chose qui est arrivé a été il y avait un tremblement de terre ou une ligne de faille qui a divisé directement à travers New York. Et nous voulions mettre à jour tout le monde qui a vécu à New York. Ils avaient tous de se déplacer à la Pennsylvanie. Cela ne veut pas d'une ville natale. Ils avaient tous de déménager à New Haven. Nous y voilà. Donc tout le monde à New York se déplace à New Haven. Et pour que quelque chose qui est éditer trois lignes dans cette table. Mais dans SQL, vous pouvez faire que dans une seule déclaration. Nous en revenons donc mettre à jour. Permettez-moi de effacement rapide à nouveau cette carte. Lorsque nous parlons mise à jour, il y a quelques parties de la syntaxe qui sont la clé. Eh bien, toute la syntaxe est la clé. Mais les choses en vert est facultative. Le blanc sont nécessaires, noms prédéfinis analogues. Et le bleu clair sont des choses qui varient en fonction de la table. Voilà donc ce qui se passe avec le schéma de couleurs ici, là-haut. Donc, si nous voulons mettre à jour que les lignes des gens qui vivent à New York, donc ce que nous ferions si nous ladite mise à jour? Donc table est où nous mettons le nom de notre table. Disons simplement que le nom de notre table est un tableau. Donc, nous voulons mettre à jour le tableau ci. Et nous voulons set-- Que voulons-nous pour régler? Eh bien, nous voulons dire, PHP afin column-- traite rangées comme des identificateurs uniques. Et puis colonnes sont les différents domaines des éléments de la base de données. Ainsi, le premier élément de la base de données a un nom de Sam, la superpuissance du CS50, et un ville natale de Milwaukee. Donc, si nous dudit ensemble, regardons les paramètres à nouveau cet ensemble prend. Nous avons colonne égale valeur. Donc, nous voulons dire quelque column-- qui rappelons est un field-- Nous voulons voir une champ égale à quelque chose de nouveau. Donc, si nous venons de dire mise à jour tableau 1, nom du jeu égale Elliot. Obtenez des gens de la nouvelle section sur cette. Mais si nous avons juste fait table de mise à jour 1 nom du jeu égale Elliot, ce qui serait le look de table comme après cela? Les gens ont une idée? Ouais. Public: Tout dans cette rangée deviendrait Elliot. CONFÉRENCIER: Tout dans quelle rangée? AUDIENCE: Dans la première rangée. CONFÉRENCIER: Dans la première rangée? Pourquoi la première rangée? Je ne veux pas prendre à vous. AUDIENCE: Peut-être que tout dans l'ensemble de la table? CONFÉRENCIER: Tout dans l'ensemble de la table, oui. Et cela est exact, je because-- a été viens de vous aider un peu there-- parce nous avons omis la clause WHERE facultative. Si vous ne disposez pas du OÙ clause, ce que cette commande va faire est il va travailler avec tous les rangée dans le tableau. Le nom de tout le monde devenir Elliott, essentiellement, Elliot, qui est très heureux. Ou Yanni, l'un des deux. Mais le nom de tout le monde va changer. Donc, la façon dont nous utilisons l'OÙ clause-- et cela vaut pour tous les oùS qui sont respectivement de ces différentes choses. Donc, vous remarquerez que SET a la colonne valeur égale. Et il en va de WHERE. Mais ceux-ci sont différents types de déclarations. Donc, la colonne est égale à la valeur dans le SET est en mission. Comme nous disons que nous voulons au nom de l'ensemble égale à Elliot. Mais dans les clauses WHERE, ce sont des déclarations d'égalité. Donc, disons que nous ne voulions changer le nom de la personne à Elliot si leur nom était Ryan, disons. Donc, quand nous disons WHERE nom est égal à Ryan, qui réussirait seul changement l'name-- ce serait seulement modifier le champ Nom en rangées où le champ de nom est égal à Ryan. Donc, si nous avions plusieurs personnes nommé Ryan, tous leurs noms allait changer à Elliot. Ceci est similaire à l'exemple de si une ligne de faille divise New York et tout le monde doit se déplacer à New Haven, la façon dont nous pouvons faire que dans une déclaration est UPDATE table1 SET ville natale = New Haven où est égal ville natale de New York City. Ceci est la puissance de l'instruction UPDATE. Nous pouvons sélectionner un certain nombre de rangées par de vraies déclarations sur les champs de ces lignes. Nous ne pouvons pas dire ensemble UPDATE table1 name = Elliot OÙ rang = 1, sauf que nous le pouvons si nous disons ID = 1. Nous allons donc être travailler avec l'égalité des champs, de l'égalité de colonnes. Mais en utilisant le champ ID est un moyen de sélectionner des lignes individuelles spécifiquement, car le champ d'ID est unique identifiant dans une base de données SQL. Donc, comme la mise à jour la première rangée, ID est égal à 1. Mise à jour de la deuxième ligne, juste modifier ce numéro d'identification. Mais la puissance du WHERE est que nous peut mettre à jour les choses en fonction de ce que leur valeurs actuelles de certaines choses sont. Oui Elliot? Public: Et si vous voulez to-- encore une fois, ceci est une autre question. Mais ma première question était, où est-ce qui se passe? Où suis-je mettre à jour ce? Est-ce dans un code PHP? CONFÉRENCIER: Où vous mettez à jour, oui. Nous allons parler sur l'endroit où tout cela se passe sorte de fois nous allons à travers toutes les commandes. Mais ce que vous devez savoir pour l'instant est essentiellement que votre base de données SQL existe quelque chose comme à être consultée par la requête fonction, qui définit CS50. Donc, si vous utilisez la fonction de requête, vous pouvez accéder à cette table. Donc, vous serez l'envoi de ces commandes à votre table dans les fichiers PHP grâce à la fonction de requête. Vous pouvez également jouer avec votre table directement. Et voilà la meilleure façon de tester ces sortes de commandes. Et nous allons passer par exactement comment de le faire dans un tout petit peu. Voilà donc commande UPDATE. Et le reste des commandes vont être une sorte de semblable, travailler sur des choses semblables. Le INSERT INTO est probablement le plus différent de UPDATE. Je vais laisser cela là pour juste un peu et de travailler ici. Donc INSERT INTO, vous verrez cette table est toujours la même. Vous souhaitez insérer dans. La capitalisation, SQL est sensible à la casse. Donc, vous ne devez pas capitaliser ces choses. Par convention, les mots en blanc sont capitalisés. Mais je aussi la couleur les codés. La seule raison pour laquelle vous capitalisez ceux où vous les taper est juste souligner ceux qui sont des constantes. Et donc vous pouvez soit regarder la capitalisation ou le fait que je les ai colorié différemment. Nous avons donc INSERT INTO, Faisons à nouveau table1. Ceci est sur une seule ligne. Je suis juste séparant par les différents états. Donc, ne vous inquiétez pas pour le fait que table1 fait sur la deuxième ligne. Donc, nous voulons INSERT EN TABLE1 certaines valeurs. Et vous remarquerez l'option peu, que je vais dans un instant. Nous avons donc VALEURS. Donc, disons que nous voulons ajouter Andi à notre table, parce que nous manquons Andi. Andi est malade. Ajoutons donc Andi à notre table. Rappelez-vous que le numéro d'identification est mise à jour automatiquement. Donc, les seuls champs nous besoin de vous soucier sont le nom, la superpuissance, et ville natale. Et la façon dont nous le faisons, regarder notre syntaxe, est que nous avons viens de recevoir un parenthèses, des virgules valeurs séparées, chacune d'entre elles est une valeur. Donc, si nous voulions insérer dans notre Andi table, tout ce que nous avons à faire est juste Andi. Quelle est la superpuissance Andi, personnes dans la section Andi? Elle aime vol, ou comme la vitesse, ou quelque chose. Qu'est-ce que nous avons déjà là-haut? Nous avons CS50, vol, la vitesse et la force. AUDIENCE: Voyage dans le temps. CONFÉRENCIER: Voyage dans le temps, incroyable. Nous avons donc Andi, temps Voyage, et sa ville natale. Voilà une très bonne question. New York City, à moins que quelqu'un sait. Tout le monde est de New York est le leçon à emporter à partir d'aujourd'hui. Donc, cette déclaration serait insérer, comme une cinquième rangée, avec la superpuissance Voyage dans le temps et un ville natale de New York City. Mais le champ optionnel est essentiellement un moyen de préciser exactement quelles colonnes vous voulez insérer choses. La façon dont nous le faisons maintenant, Andi, Voyage dans le temps, New York City, se passe dans l'ordre exact de notre Nom table--, superpuissance, ville natale. Et si vous vouliez faire autre chose que cela, comme dire que vous ne saviez pas la superpuissance de quelqu'un, comme la façon dont je ne savais pas Andi superpuissance au début. Donc, tout ce que je savais était elle nom et sa ville natale. Qu'est-ce que je pourrais faire est que je pouvais do-- je vais effacer cette rapide. Je veux seulement mettre à jour les colonnes. Et cela est l'endroit où l'option la liste de la colonne entre en jeu. Je veux seulement mettre à jour le nom et ville natale. Et puis je dirai VALEURS. Je vais faire Andi et à New York. Si je l'avais omis de la liste des colonnes et vient de faire ces deux choses, où serait New York City ont disparu? Quelle est la colonne serait de New York Ville ont été placés dans? Les gens ont une idée? Superpuissance, exactement. Donc, ce sera juste aller dans l'ordre. Et une fois qu'il atteint la fin de la liste, il va juste arrêter de remplir les choses. Et les valeurs qu'il vont rester dans toutes les colonnes vont tout simplement être NULL. Ainsi, parce que nous avons spécifié nom et ville natale, nous allons avoir ID 5, nommer Andi, superpuissance NULL. Donc superpuissance est une valeur non initialisée. Vous ne recevrez pas nécessairement la Valgrind mêmes erreurs si vous essayez et y accéder. Tout sera bien mis à zéro , parce que NULL est une valeur dans SQL. Cela est une constante. Et puis, ville natale sera New York. Voilà donc la commande INSERT INTO. Avant de passer, il ya deux autres commandes. Les gens ont des questions sur UPDATE, INSERT INTO propos, sur SQL généralement avant que nous passions sur nos morceaux finaux? Les gens se sentent bien, très bien. Aimer. Donc, nous allons parler de SELECT. Going fossé ACTUALISATION ici. Et SELECT va être très similaire. Le but de SELECT, Le but de SELECT dans la vie est de vous donner un tas de colonnes qui satisfont à certaines conditions. Et quand je dis satisfait certaines conditions, votre esprit pourrait immédiatement revenir à cette clause WHERE qui est venu dans UPDATE. Et cette clause est exactement là dans SELECT. Si nous ne mettons pas l'WHERE clause et nous disons SELECT name, hometown-- orthographié qu'un peu wrong-- nom, ville natale FROM table1. Si nous venons de dire que, ce SELECT va nous donner est qu'il est va nous donner un double-- une table, plutôt. Une double rangée si nous sommes penser en PHP détecte. Mais il va juste nous donner un matrice double de deux columns-- nom, et ville natale. Et il ignorera ID. Et il ignorera superpuissance. Et ça vient de nous donner tous les seule rangée de ce tableau. Donc, si nous avons juste inséré Andi, nous aurons Andi. Et nous aurons les quatre d'origine. Si ils ont été mis à jour, qui sera être réfléchi, et cetera, et cetera. Donc, cela est parce que nous ne pas utiliser la clause WHERE. Mais nous pouvons l'utiliser exactement de la même façon que nous l'utilisions dans UPDATE. Si nous voulons seulement un tableau des noms et des super pouvoirs de personnes vivant à New York, nous pouvons exécuter une instruction comme SELECT nom, superpower-- Je vais juste laisser that-- DE table1 WHERE ville natale = New York City. Donc, cela montre que vous pouvez obtenir totalement différentes colonnes, et ensuite mettre les colonnes que vous n'êtes pas même reprendre la clause WHERE. Nous ne voulons même pas la ville natale de tout le monde. Mais nous voulons que le nom et la superpuissance de personnes dont la ville natale est New York. Voilà donc quelque chose que nous peut faire avec la clause WHERE la clause est que nous pouvons traiter avec des colonnes que nous ne voulons pas nécessairement dos. Dans la même manière dans UPDATE, nous pouvons traiter avec des colonnes que nous ne le faisons pas nécessairement mettre à jour. Nous pouvons mettre à jour la ville de tout le monde qui est le nom est Sam, par exemple. Nous pouvons mettre à jour la ville de tous ceux dont le numéro d'identification est 2. Il suffit donc de mettre à jour le ville de la deuxième rangée où nous ne disposons pas pour faire face à nécessaire la question commune. Et supprimer est, comme vous le feriez attendre, DELETE FROM table1. Et puis nous avons une autre clause WHERE. Donc nous pouvons dire WHERE ID = 1. Supprimer la première rangée. Et DELETE sera toujours supprimer une ligne, ou il va supprimer certains nombre de lignes. DELETE FROM table WHERE ville natale = New York City va supprimer tous à New York. Voilà, si il y avait un peste tragique soudaine et que vous vouliez juste pour retirer tout le monde de la table qui vécu dans une certaine ville qui a été touché par la peste. Puissent-ils reposer en paix. Ce sont les quatre commandes SQL que vous aurez besoin d'utiliser. Vous pourriez même pas besoin de les utiliser tous. Mais ce sont les quatre CS50 que vous attend être à l'aise d'entrer dans des tant questionnaire 1, et également pset7 et pset8. Il ya encore juste cette table. Dans celui-ci, la superpuissance Roy a été mise à jour des faisceaux laser, qui est un exemple que je ne l'utilise. Je ne sais pas lequel Roy préfère, mais la force. Roy a la superpuissance de la force. Katherine n'a pas fait aujourd'hui. C'est dommage. Mais elle a super vitesse. Eh bien, ce fut PHP. Avant de parler de MVC, ne Quelqu'un at-il des questions sur PHP? Maintenant, SQL, PHP ou si vous avez soudainement venir avec une question sur PHP? Génial. Très bien, nous sommes tous mis ensuite. Donc, parler un peu à propos de vue du modèle contrôleurs, Revenons à certains de la substance dans pset7. Alors, que la vue du modèle contrôleur est-- je ne suis pas va sauver mes changements de connexion parce que je suis totalement massacré il. Mais fondamentalement, nous avons deux choses distinctes passe. Nous avons un partenariat public répertoire qui contient le code qui va être exécuté et les pages web qui seront visités. Et nous avons aussi ce répertoire de vues. Et vues contient des modèles. Ceci est ce que la fonction render-- nous avons vu le rendu fonction dans un tas de code PHP CS50 qui a déjà écrit pour vous, qui prend dans certains paramètres. Qu'est-ce que le code est fait est il va dans des vues, qui sont des ensembles comme code HTML prédéfinis, et il est d'insérer des valeurs dans certains endroits. Voilà comment lorsque vous aller dans CS50 Finances, le même en-tête est sur chaque page. Le même pied est sur chaque page. Ceci est parce que la manière qui rendent œuvres est ça va assigner automatiquement en-tête et en ce que spectateur que vous pouvez trouver dans les vues. En fait, nous pouvons aller en tête, et regardez, il est un fichier HTML avec une tête. Il a obtenu quelques feuilles de style. Vous ne devez pas regarder CSS pour pset7 si vous ne voulez pas. Mais vous pouvez modifier eux si vous voulez, font votre Finances regarder un peu différent. Il est obtenu en peu de PHP la tête un peu pour voir si il ya un autre titre il faut mettre dans cette tête. Mais seulement certains autres scripts, et des liens, et d'autres choses. Chef se termine, corps commence, et oups, nous avons ce petit bout de fin bizarre. Et il ya une div, tout comme une sorte informe de l'élément qui a une idée du milieu. Et puis, quand on voit le pied de page, nous avons l'extrémité d'un div. Nous avons un fond, qui est où le texte de bas de page est. Fin de la div, extrémité du corps, fin de HTML. Alors qu'est-ce rendu est faire est de rendre est une sorte de rafistoler tête, un fichier PHP différent qui contiendra les choses réelles que vous affichez, comme votre table des stocks si vous achetez ou vendez des stocks. Et puis il va ajouter dans le pied. Et la vue du modèle idée de contrôleur est que nous vouloir séparer comment les choses semblent à partir du code. Il est, nous voulons séparer le frontend et le backend, où le frontend est les trucs que l'utilisateur voit, la belle visuals-- HTML, CSS, des choses comme ça, images, et cetera. Et le backend est PHP. Ceci est du code que vous écrivez. Ceci est où le code qui est faire des opérations réelles. Ceci est lorsque vous ajoutez un stock à votre table, Lorsque vous achetez et vente, qui est backend. Et nous pouvons, comme vous avez vu, y compris PHP directement en HTML. Donc, ce que nous aurions pu faire pour cette affectation est juste eu un fichier HTML pour chaque page, comme connexion. Et puis, sur cette page, juste eu un énorme bloc de code PHP, y compris tous les codes que cette page serait spécifiquement besoin. Et puis nous pourrions avoir fait que pour le portefeuille. Nous aurions pu faire tous les achats et la vente dans les pages individuelles. Mais parce que nous sommes rendu séparément d'où nous écrivons le backend code, nous pouvons facilement changer la façon dont les choses semblent sans changer chaque fichier. Nous faisons les choses comme il suffit d'ajouter une nouvelle div vers le bas de-- Bonjour je l'ai modifié le pied de page. Vous pouvez juste faire des trucs comme ça. Mais aussi, vous pouvez changer toute la mise en page visuelle sans affecter ce qui est aller dans le backend. Et vous pouvez changer la toute backend et encore ont l'air tout comme il l'a fait auparavant. Ce Est l'idée de la vue du modèle contrôleur. Et il est en fait un paradigme imposé dans certains langages de programmation vous pouvez utiliser pour des projets finaux. Si vous faites du développement iOS, ils ont vues, qui est ce que vous voyez sur l'iPhone, et puis backend que comme une chose distincte. Vous pouvez penser un peu. Il ya beaucoup de fichiers binaires dans informatique, ce qui est drôle, parce que tout est en binaire. Je ne prévoyais pas que. Ce fut un jeu de mots involontaire. Oui, calembour pas destiné. Mais comme les fichiers .h et fichiers .c, il ya beaucoup de séparation des choses que nous ne pourriez pas besoin. Donc, nous pouvons simplement modifier les fichiers de H, ou quelqu'un peut juste voir un fichier .h et le savoir exactement les fonctions qui sont .c sans nécessairement connaître leur mise en œuvre. Cette idée de séparation des constituants qui dépendent les uns des autres mais peut sorte d'accéder à l'autre à travers différents canaux, passant de variables, tout simplement comprennent des déclarations, des choses comme ça, ce principe contribue à créer des applications qui peuvent être plus facilement édité par plusieurs personnes, peut être plus facilement changé ou modifié sur une grande échelle, et sont plus faciles à déboguer dans beaucoup de façons. Vraiment rapide, je dois quelques conseils pour pset7, que je vais faire plein écran de sorte que vous ne simplement en regardant the-- tip tippee. Il n'y a pas que de nombreux conseils. Mais je l'ai mentionné PHP est difficile à déboguer. Double et triple vérifier. Si votre code est tout simplement pas à apparaître sur la page, il est probablement une erreur de PHP, désolé. Vous ne devez regarder CSS si vous ne voulez pas. Mais une fois que vous avez terminé, il peut être une belle chose peu de plaisir à aller en juste et le désordre avec les paramètres CSS. CSS et HTML sont un exemple d'un modèle style de vue du contrôleur chose aussi, non? Vous pourriez avoir des balises de style l'intérieur des éléments HTML. Mais si vous sorte de leur sous-traitance à CSS, ils sont plus faciles à modifier, et le jeu avec, et vous amuser avec. Traiter CS50 aide fonctions comme des boîtes noires. Vous ne devez savoir exactement ce Render faire, mais lui faire confiance pour toujours faire la bonne chose en fonction de ce que vous lui transmettez, ce genre de choses. Et je vous recommande regarder la procédure pas à pas de David, passer par tous les trucs, pas seulement les todos, mais vous ne pouvez vraiment traiter ces cases en noir. Ne pas aller dans ces fonctions à la recherche de bugs. Et accueillir le retour de notre seigneur Zamyla. Génial. Y at-il des questions finales avant nous sorte de rebondir pour la journée? Suis-je vis encore? Génial. Personnes livestream Hi. Génial. Y at-il plus de questions? Non? Et puis je pense que nous sommes bon d'aller pour aujourd'hui. Je vais rester un peu après, si les gens avaient des questions ils avaient peur de poser sur le flux. Mais sinon, avoir une bonne journée.