1 00:00:00,000 --> 00:00:10,393 >> [Lecture de musique] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. Malan: Très bien. 4 00:00:12,120 --> 00:00:12,830 Nous saluons le retour. 5 00:00:12,830 --> 00:00:13,890 Ceci est CS50. 6 00:00:13,890 --> 00:00:15,570 Ceci constitue la fin de la semaine 8. 7 00:00:15,570 --> 00:00:18,360 Et comme vous le savez, nous avons assez les heures normales de bureau en quelques 8 00:00:18,360 --> 00:00:21,090 des salles à manger, y compris Annenberg. 9 00:00:21,090 --> 00:00:23,860 Et une partie de l'équipe de bien vouloir a pris quelques photos ces derniers temps. 10 00:00:23,860 --> 00:00:26,230 Et en l'honneur de Halloween, nous avons pensé 11 00:00:26,230 --> 00:00:30,160 partager un que plutôt nous a pris par de surprise ici dans Annenberg salle juste 12 00:00:30,160 --> 00:00:31,490 l'autre soir. 13 00:00:31,490 --> 00:00:36,300 Votre camarade Jacob a posé pour cette photo, mais il était plus amusant 14 00:00:36,300 --> 00:00:39,760 était sur Facebook, le suivi la conversation qui a eu lieu par la suite. 15 00:00:39,760 --> 00:00:43,020 >> Son premier poste en réponse à sa photo était-ce. 16 00:00:43,020 --> 00:00:46,740 Quelques minutes plus tard, il a décidé à une place lui-même à ce sujet. 17 00:00:46,740 --> 00:00:53,800 Il a ensuite ensuite aller à cela, et puis, encore plus amusante 18 00:00:53,800 --> 00:00:55,320 est lorsque sa mère intervint. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 Et puis finalement, il semble que ce fut juste 21 00:01:01,800 --> 00:01:04,860 une merveilleuse ruse pour un jouer ce qui se passe. 22 00:01:04,860 --> 00:01:07,080 >> Donc, si vous souhaitez à voir Jacob et d'autres, 23 00:01:07,080 --> 00:01:10,880 parmi eux Cynthia Meng, qui est dans les coulisses du personnel de la zone CS50, 24 00:01:10,880 --> 00:01:13,970 la tête de cette URL et ce jeu ici. 25 00:01:13,970 --> 00:01:18,810 Alors sans plus tarder, aujourd'hui nous continuer ce regard à la programmation web, 26 00:01:18,810 --> 00:01:21,810 et la création effective de programmes qui ne fonctionnent pas à la ligne de commande, 27 00:01:21,810 --> 00:01:24,080 mais au lieu de fonctionner à l'intérieur d'un navigateur. 28 00:01:24,080 --> 00:01:26,320 >> On peut supposer que maintenant, ou très peu de temps, vous allez 29 00:01:26,320 --> 00:01:30,200 d'être au milieu de la mise en œuvre votre propre serveur Web, qui 30 00:01:30,200 --> 00:01:31,700 est différente de la programmation web. 31 00:01:31,700 --> 00:01:36,210 Le serveur Web dans pset6 est tout au sujet écrire un logiciel qui sait comment prendre 32 00:01:36,210 --> 00:01:39,300 les requêtes HTTP à partir d'un navigateur, ou même de vous, un être humain, 33 00:01:39,300 --> 00:01:42,340 avec un programme appelé Telnet, et puis répondre à ces demandes soit 34 00:01:42,340 --> 00:01:48,600 en crachant sur un fichier HTML ou un jpeg, gif ou un, ou même un fichier .php. 35 00:01:48,600 --> 00:01:52,490 >> Mais avec un serveur web, il est pas censé suffit d'ouvrir un fichier PHP, 36 00:01:52,490 --> 00:01:55,260 quelque chose se terminant par l'extension .php, et puis recracher le contenu. 37 00:01:55,260 --> 00:01:58,440 Il est censé faire Que ce fichier en premier? 38 00:01:58,440 --> 00:01:59,390 Pour ainsi dire. 39 00:01:59,390 --> 00:02:04,060 Pas compiler, nous l'avons dit, le lundi, mais rather-- Ainsi, l'interpréter. 40 00:02:04,060 --> 00:02:08,070 >> PHP est un langage interprété, et donc l'une des caractéristiques clés de votre site web 41 00:02:08,070 --> 00:02:11,550 serveur, bien mis en œuvre par nous, est cette capacité de votre serveur web 42 00:02:11,550 --> 00:02:12,490 à remarquer, oh. 43 00:02:12,490 --> 00:02:14,580 Ce fichier se terminant par l'extension .php. 44 00:02:14,580 --> 00:02:17,970 Permettez-moi de ne pas vous suffit d'envoyer à la utilisateur comme il est contenu statique, 45 00:02:17,970 --> 00:02:20,970 mais permettez-moi de le lire ligne par ligne, de gauche à droite, et de l'interpréter. 46 00:02:20,970 --> 00:02:23,030 >> Et pour ce faire, que vous gars vont essentiellement 47 00:02:23,030 --> 00:02:26,520 punt à un programme dans l'appareil, et sur un grand nombre de systèmes informatiques, 48 00:02:26,520 --> 00:02:27,500 juste appelé PHP. 49 00:02:27,500 --> 00:02:30,579 Tel est le nom de la PHP propre interprète de langue. 50 00:02:30,579 --> 00:02:33,120 Donc, cette pièce nous mettons en œuvre pour vous, et ce qui reste pour vous, 51 00:02:33,120 --> 00:02:35,240 en fin de compte, est un nombre de pièces, parmi lesquelles 52 00:02:35,240 --> 00:02:37,960 met en œuvre le soutien pour le contenu statique. 53 00:02:37,960 --> 00:02:40,180 >> Mais maintenant, et avec problème réglé sept, vous êtes 54 00:02:40,180 --> 00:02:43,660 va commencer à la transition vers en train d'écrire le code PHP 55 00:02:43,660 --> 00:02:45,970 qui obtient interprété en parler à une extrémité arrière 56 00:02:45,970 --> 00:02:47,960 base de données qui stocke les informations. 57 00:02:47,960 --> 00:02:51,020 Donc, nous allons mieux comprendre d'abord un couple de ces superglobals 58 00:02:51,020 --> 00:02:53,720 et la quantité d'énergie que vous sortir de la boîte gratuitement 59 00:02:53,720 --> 00:02:55,250 avec un langage comme PHP. 60 00:02:55,250 --> 00:02:57,350 Ce que vous ne devez pas pour vous mettre en œuvre. 61 00:02:57,350 --> 00:03:01,700 >> Ainsi, nous avons vu lundi $ _GET, qui est superglobale, 62 00:03:01,700 --> 00:03:05,496 qui est juste PHP parler d'une approche globale variable, vous pouvez accéder n'importe où. 63 00:03:05,496 --> 00:03:06,620 Et ce qui est à l'intérieur de $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Ce qui est à l'intérieur de cette superglobale que nous voyons? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Certes, statistiquement à moins une personne sait. 68 00:03:19,020 --> 00:03:21,590 Quel est à l'intérieur de $ _GET? 69 00:03:21,590 --> 00:03:22,426 Ouais? 70 00:03:22,426 --> 00:03:24,130 >> PUBLIC: Il est des variables vous mettez dans la chaîne de requête. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. Malan: Parfait. 72 00:03:24,530 --> 00:03:26,488 Ce sont les variables que vous mettre dans la chaîne de requête. 73 00:03:26,488 --> 00:03:29,910 Ainsi, dans notre exemple plus de réimplémentant Google lorsque nous avons eu 74 00:03:29,910 --> 00:03:34,130 une URL, et puis point d'interrogation, qui délimite le début de HTTP 75 00:03:34,130 --> 00:03:37,950 paramètres, puis nous avons eu q égal quelque chose, comme q est égal à chats, 76 00:03:37,950 --> 00:03:41,500 ce qui passe automatiquement à l'intérieur de que $ _GET super-globale pour vous, 77 00:03:41,500 --> 00:03:47,430 en raison de PHP, est une clé de Q, et de la valeur de celui-ci de chats. 78 00:03:47,430 --> 00:03:51,250 >> En d'autres termes, $ _GET et tous ces choses sont des tableaux associatifs, 79 00:03:51,250 --> 00:03:54,530 Les tables de hachage de toutes sortes, que stocker les clés et les valeurs. 80 00:03:54,530 --> 00:03:57,980 Maintenant, de retour dans pset5, le hachage tableau vous aurait mis en œuvre, 81 00:03:57,980 --> 00:04:00,220 ou l'on peut essayer ont mis en place, vraiment 82 00:04:00,220 --> 00:04:04,010 était effectivement un associative matrice, une structure de données 83 00:04:04,010 --> 00:04:07,220 où vous pouvez associer clés avec des valeurs. 84 00:04:07,220 --> 00:04:09,690 >> Mais dans pset5, les valeurs étaient trivial. 85 00:04:09,690 --> 00:04:12,430 La valeur était essentiellement vrai ou faux. 86 00:04:12,430 --> 00:04:13,900 Est le mot dans le dictionnaire? 87 00:04:13,900 --> 00:04:18,279 Donc, quand vous HASHED un mot comme la pomme à voir si Apple est dans le dictionnaire, 88 00:04:18,279 --> 00:04:21,820 votre fonction de vérification probablement retourné vrai ou faux. 89 00:04:21,820 --> 00:04:24,120 Donc, voilà effectivement la valeur que nous revenons. 90 00:04:24,120 --> 00:04:26,456 >> Mais nous avons vu lundi brièvement, vous pouvez certainement 91 00:04:26,456 --> 00:04:28,830 associer plus intéressant valeurs que tout vrai ou faux 92 00:04:28,830 --> 00:04:30,790 avec des clés, comme la pomme. 93 00:04:30,790 --> 00:04:33,909 Vous pouvez réellement revenir un chaîne arbitraire, et en effet, 94 00:04:33,909 --> 00:04:36,200 qui est ce que $ _GET et ces d'autres variables vous permettent de faire. 95 00:04:36,200 --> 00:04:40,595 >> Donc, $ _POST est dans le même esprit, mais si vous soumettez un formulaire par la poste, 96 00:04:40,595 --> 00:04:44,490 une méthode HTTP différente qui est utilisé pour des choses comme les cartes de crédit, 97 00:04:44,490 --> 00:04:48,410 et de l'information privée, et même informations binaires comme des photos, 98 00:04:48,410 --> 00:04:51,840 ces choses finissent à l'intérieur de $ _POST. 99 00:04:51,840 --> 00:04:53,770 Et en fait pour les fichiers comme jpeg et autres joyeusetés, 100 00:04:53,770 --> 00:04:58,290 il ya même un autre qui est pas ici appelé $ _FILES ainsi. 101 00:04:58,290 --> 00:05:01,280 >> Ainsi, le serveur nous ne nous attarderons pas trop beaucoup, mais il vous donne accès 102 00:05:01,280 --> 00:05:04,860 pour trier des détails de niveau inférieur sur le serveur lui-même que vous utilisez. 103 00:05:04,860 --> 00:05:07,430 Cookie et session, cependant, nous verrons effectivement maintenant. 104 00:05:07,430 --> 00:05:10,940 La dernière est ce que nous utilisons pour mettre en œuvre la notion de panier. 105 00:05:10,940 --> 00:05:14,480 Un super simple, mais rappel que nous avons eu cet exemple ici, 106 00:05:14,480 --> 00:05:17,640 compter combien de fois vous avait visité cette page avant. 107 00:05:17,640 --> 00:05:20,850 >> Mais aujourd'hui, plutôt que de simplement regarder l'effet de cette, Ouvrons 108 00:05:20,850 --> 00:05:22,640 Inspecteur de Chrome, que vous pouvez généralement 109 00:05:22,640 --> 00:05:25,740 faire en cliquant droit ou de contrôle cliquant n'importe où sur une page Web, 110 00:05:25,740 --> 00:05:27,250 et puis choisir inspecter élément. 111 00:05:27,250 --> 00:05:31,600 Ou vous pouvez aller dans les menus que nous décrivons dans la spec de pset6. 112 00:05:31,600 --> 00:05:35,020 Et je vais l'onglet Réseau ici, et nous allons regarder pour un moment 113 00:05:35,020 --> 00:05:37,590 le trafic HTTP qui est aller et retour. 114 00:05:37,590 --> 00:05:40,929 >> Permettez-moi d'abord aller de l'avant et le cache de Chrome clair. 115 00:05:40,929 --> 00:05:43,470 Donc, certains d'entre vous connaissent peut-être avec cette technique déjà, 116 00:05:43,470 --> 00:05:45,790 et nous allons l'utiliser à des fins de débogage ici. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Maintenant, nous en ordinateur les scientifiques vont commencer 119 00:05:50,890 --> 00:05:53,920 faire pour le débogage application, de sorte que 120 00:05:53,920 --> 00:05:55,910 nous allons vider le cache, généralement, de sorte que nous 121 00:05:55,910 --> 00:05:57,670 pouvez vous débarrasser de choses cookies. 122 00:05:57,670 --> 00:06:01,700 Alors vous êtes probablement familier généralement à ce que les biscuits sont, ou au moins 123 00:06:01,700 --> 00:06:04,370 qu'ils existent, mais ce qui est votre compréhension d'entre eux, 124 00:06:04,370 --> 00:06:06,920 comme un simple utilisateur de ordinateurs, ce qui est un cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Ouais. 127 00:06:09,990 --> 00:06:14,391 >> PUBLIC: Il est un peu de-- bien, pas bit dans un terme d'informatique. 128 00:06:14,391 --> 00:06:18,303 Il est un élément de données qu'un site vous envoie afin 129 00:06:18,303 --> 00:06:20,209 pour être en mesure d'enregistrer des statistiques sur vous. 130 00:06:20,209 --> 00:06:21,250 DAVID J. Malan: OK, bon. 131 00:06:21,250 --> 00:06:24,980 Donc, il est un élément de données qu'un serveur, met sur votre ordinateur, 132 00:06:24,980 --> 00:06:28,840 et nous allons généraliser même De plus, il est une clé value-- bien, 133 00:06:28,840 --> 00:06:30,064 qui devient de plus précis. 134 00:06:30,064 --> 00:06:31,980 Il est un morceau de d'informations, un élément de données, 135 00:06:31,980 --> 00:06:34,430 un serveur qui est capable à mettre sur votre ordinateur 136 00:06:34,430 --> 00:06:38,592 et très souvent, le serveur ne cette façon de se rappeler qui vous êtes. 137 00:06:38,592 --> 00:06:40,300 Ainsi, par exemple, les cotes êtes vous êtes probablement 138 00:06:40,300 --> 00:06:42,982 connecté à des sites comme Facebook, ou Gmail, ou d'autres avant, 139 00:06:42,982 --> 00:06:44,940 et vous vous connectez avec votre nom d'utilisateur et mot de passe, 140 00:06:44,940 --> 00:06:49,000 et après cela, pendant un certain nombre minutes ou quelques heures, voire des jours, 141 00:06:49,000 --> 00:06:52,970 le serveur se souvient que vous êtes, en fait, connecté. 142 00:06:52,970 --> 00:06:54,600 Maintenant, comment est-ce qui se passe réellement? 143 00:06:54,600 --> 00:06:58,630 Parce que vous êtes certainement pas retaper votre nom d'utilisateur et mot de passe à chaque fois 144 00:06:58,630 --> 00:07:00,760 vous accédez à un autre page sur Facebook. 145 00:07:00,760 --> 00:07:02,570 Ainsi, il se le les cookies sont la réponse. 146 00:07:02,570 --> 00:07:05,360 >> Un cookie vous pouvez penser que, un peu comme une main numérique 147 00:07:05,360 --> 00:07:09,200 timbre que vous pourriez obtenir à un amusement parc ou un club qui essentiellement 148 00:07:09,200 --> 00:07:11,740 indique que vous avez été ici avant, et vous avez déjà 149 00:07:11,740 --> 00:07:16,070 montré votre ID pour le videur, pour exemple, et que le club ou le parc 150 00:07:16,070 --> 00:07:19,050 doivent maintenant assumer que vous ont déjà authentifié. 151 00:07:19,050 --> 00:07:21,270 Vous avez déjà été identifiés par elle. 152 00:07:21,270 --> 00:07:24,740 >> Donc, avec cela à l'esprit, Ouvrons ici contre. 153 00:07:24,740 --> 00:07:27,220 Permettez-moi aller de l'avant, je viens de faire, et effacer tous mes cookies. 154 00:07:27,220 --> 00:07:29,970 Et maintenant, ce que je vais faire est maintenez la touche Maj, pour faire bonne mesure, 155 00:07:29,970 --> 00:07:31,740 et recharger la page force. 156 00:07:31,740 --> 00:07:34,170 Maj assurez-vous juste que rien ne se cache. 157 00:07:34,170 --> 00:07:36,850 Et voici la demande qui allaient et venaient. 158 00:07:36,850 --> 00:07:41,560 Donc, ici, nous avons une demande, et laissez- moi zoom avant ici, et beaucoup de ce 159 00:07:41,560 --> 00:07:44,710 est détails sorte de inintéressants pour maintenant que le navigateur a automatiquement 160 00:07:44,710 --> 00:07:47,800 envoyé, mais nous allons cliquez sur Afficher Source pour voir les en-têtes premières. 161 00:07:47,800 --> 00:07:51,700 >> Et si vous avez plongé dans pset6 déjà, vous allez certainement reconnaître les choses 162 00:07:51,700 --> 00:07:54,990 comme ça, et peut-être quelques-uns de ces autres lignes ici, 163 00:07:54,990 --> 00:07:59,040 mais ce qui est plus intéressant pour aujourd'hui si je fais défiler vers le bas, pas à la demande 164 00:07:59,040 --> 00:08:02,870 mais à la réponse que l'on appelle, cette ligne ressemble probablement familier. 165 00:08:02,870 --> 00:08:04,977 Voilà une bonne chose quand vous voyez un 200 OK. 166 00:08:04,977 --> 00:08:07,060 Apparemment, ce est la la date et l'heure sur le serveur 167 00:08:07,060 --> 00:08:08,268 et il ya un tas de choses. 168 00:08:08,268 --> 00:08:09,290 Oh, voilà qui est intéressant. 169 00:08:09,290 --> 00:08:13,430 >> Met à chaque fois que vous utilisez PHP, au moins à ce serveur, 170 00:08:13,430 --> 00:08:16,360 le serveur crache ce version de PHP que vous utilisez. 171 00:08:16,360 --> 00:08:18,962 Qui, en fait, pour la sécurité fins, ne sont pas une bonne chose. 172 00:08:18,962 --> 00:08:21,170 Mais, nous allons revenir à ce que une autre fois peut-être. 173 00:08:21,170 --> 00:08:25,740 Mais maintenant cela est la ligne juteux aujourd'hui, et nous avons vu brièvement quelques-unes de celles-ci, 174 00:08:25,740 --> 00:08:29,240 Je pense avec Facebook lorsque nous poked autour de l'inspecteur à ce moment-là, 175 00:08:29,240 --> 00:08:33,380 ensemble cookie est ce que l'on plantait ce petit morceau d'information 176 00:08:33,380 --> 00:08:34,890 sur votre ordinateur. 177 00:08:34,890 --> 00:08:37,490 >> Ceci est un en-tête HTTP qui est efficace 178 00:08:37,490 --> 00:08:39,970 dire à votre navigateur, Chrome, IE, que ce soit, 179 00:08:39,970 --> 00:08:44,480 hey navigateur magasin sur l'utilisateur de disque dur, ou dans la mémoire vive de l'utilisateur, 180 00:08:44,480 --> 00:08:49,680 une clé appelée PHPSESSID, qui est un notation abrégée pour l'ID de session, 181 00:08:49,680 --> 00:08:53,670 et lui donner une valeur de 0vlk8t, point, point, point. 182 00:08:53,670 --> 00:08:56,480 Un très long pseudo chaîne alphanumérique aléatoire. 183 00:08:56,480 --> 00:08:59,480 Il est juste un très gros chiffre, mais il est codé avec des lettres et des chiffres 184 00:08:59,480 --> 00:09:03,550 de sorte que la taille de celui-ci peut être encore plus que les chiffres seuls. 185 00:09:03,550 --> 00:09:06,947 Et puis, en passant, Path = /, que signifie simplement que ce cookie doit être 186 00:09:06,947 --> 00:09:08,780 associé au intégralité du site, 187 00:09:08,780 --> 00:09:11,150 pas seulement un spécifique Cette page toute chose. 188 00:09:11,150 --> 00:09:12,930 Donc, ce qui est timbre de main virtuelle. 189 00:09:12,930 --> 00:09:16,330 Il est comme si le serveur, Facebook, ou dans notre cas, l'appareil, 190 00:09:16,330 --> 00:09:21,140 a littéralement écrit 0vlk8t et ainsi de suite, sur votre main. 191 00:09:21,140 --> 00:09:24,360 Notez que le serveur de, ne pas le faire est qu'il est pas 192 00:09:24,360 --> 00:09:27,730 stocker mon nom d'utilisateur, certainement ne pas stocker mon mot de passe. 193 00:09:27,730 --> 00:09:31,710 >> Au lieu de cela, il semble stocker des informations pseudo aléatoires 194 00:09:31,710 --> 00:09:35,010 de sorte que personne ne peut deviner ce que mon timbre de main est. 195 00:09:35,010 --> 00:09:37,590 Du côté serveur, Pendant ce temps, le serveur 196 00:09:37,590 --> 00:09:40,370 va rappeler, probablement dans une base de données ou de quelque chose, 197 00:09:40,370 --> 00:09:46,490 que l'utilisateur, qui à l'avenir présente un timbre de main de 0vlk8t, point, 198 00:09:46,490 --> 00:09:51,440 point, point, devraient être associés à ce notamment panier, pour ainsi dire. 199 00:09:51,440 --> 00:09:55,060 En d'autres termes, si je vais maintenant revenir ici et recharger cette page 200 00:09:55,060 --> 00:09:58,020 comment le serveur sait que je me suis rendu une seule fois? 201 00:09:58,020 --> 00:10:01,730 >> Ou si je le fais encore, comment le serveur sais que je l'ai visité il deux fois? 202 00:10:01,730 --> 00:10:04,680 Eh bien, si je descends à cette plus récente demande, qui 203 00:10:04,680 --> 00:10:09,150 est maintenant le troisième que je l'ai envoyé au total, remarque ma demande maintenant. 204 00:10:09,150 --> 00:10:11,300 Il est toujours présent demander ici, même 205 00:10:11,300 --> 00:10:15,040 comme avant, il ya encore tout un tas des choses que nous avons ignoré comme avant, 206 00:10:15,040 --> 00:10:19,350 mais la dernière tête, ce temps, parce que je suis déjà venu ici, 207 00:10:19,350 --> 00:10:21,980 est une présentation de ce timbre virtuel de main. 208 00:10:21,980 --> 00:10:28,957 >> Lequel cette ligne ici, pas mis en biscuit mais biscuit côlon PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 qui est juste mon navigateur est automatique présentation de ce timbre à la main de sorte que 210 00:10:32,040 --> 00:10:37,910 maintenant le serveur, dès qu'il se rend compte, ooh, cette est utilisateur 0vlk8t point, point, point, 211 00:10:37,910 --> 00:10:42,010 Je peux maintenant me souviens pas qui il ou elle est et réassocier à cet utilisateur quel que soit 212 00:10:42,010 --> 00:10:46,450 informations que je veux, et tous cette information peut être stockée par vous, 213 00:10:46,450 --> 00:10:50,130 le programmeur, dans $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Donc, pour être clair, si je ouvre réel rapide dans gedit ce fichier réel, counter.php, 215 00:10:57,170 --> 00:11:02,340 dans mon hôte local répertoire public comme avant, vous remarquerez que, en effet, 216 00:11:02,340 --> 00:11:06,860 Je suis finalement stocker dans $ _SESSION Entre guillemets «contre», 217 00:11:06,860 --> 00:11:10,110 la valeur du compteur précédent qui Je reçois de ces lignes ici que nous 218 00:11:10,110 --> 00:11:13,010 regardé la dernière fois, plus un. 219 00:11:13,010 --> 00:11:14,980 Donc, sous le capot, que ce sont tous les cookies. 220 00:11:14,980 --> 00:11:17,563 Il est exactement le genre de numérique timbre de main va et vient, 221 00:11:17,563 --> 00:11:20,450 et franchement, si vous ouvrez Chrome Inspecteur sur un site Web 222 00:11:20,450 --> 00:11:22,580 vous visitez aujourd'hui, avec très haute probabilité, 223 00:11:22,580 --> 00:11:25,450 vous allez peut-être voir un, peut-être une demi-douzaine de biscuits 224 00:11:25,450 --> 00:11:26,650 être rappelé par vous. 225 00:11:26,650 --> 00:11:29,500 >> Et pire encore, si ceux site Web que vous visitez 226 00:11:29,500 --> 00:11:32,640 avoir toutes les publicités qui est certainement très commun aujourd'hui, 227 00:11:32,640 --> 00:11:36,100 et si ces annonces sont à venir de quelque parti central, quelqu'un 228 00:11:36,100 --> 00:11:39,000 comme Google AdWords ou comme ils appeler un de leurs produits 229 00:11:39,000 --> 00:11:42,880 ou d'autres fournisseurs qui vendre des annonces, ce qui est intéressant, 230 00:11:42,880 --> 00:11:46,510 et franchement ce qui est un peu inquiétant, sur la façon dont fonctionne HTTP, 231 00:11:46,510 --> 00:11:50,855 est que si vous avez une annonce embarqué dans Facebook.com et Google.com, 232 00:11:50,855 --> 00:11:54,240 et Harvard.edu, nombre tout de sites Web, il est si tel 233 00:11:54,240 --> 00:11:58,130 qu'il ya un homme du milieu qui purge en place des annonces pour tous les trois de ces sites, 234 00:11:58,130 --> 00:12:02,110 il se trouve que la les cookies sont par domaine. 235 00:12:02,110 --> 00:12:05,910 >> Donc si vous avez une annonce à venir de la même entreprise sur différents sites, 236 00:12:05,910 --> 00:12:11,140 cette société peut effectivement suivre qui vous êtes sur l'ensemble de ces sites. 237 00:12:11,140 --> 00:12:13,140 Harvard pourrait ne pas savoir vous êtes en visite à Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook pourrait ne pas savoir et vous êtes en visite à Harvard. 239 00:12:15,306 --> 00:12:18,160 Mais quel que soit le service de publicité Ils utilisent si ce domaine est 240 00:12:18,160 --> 00:12:21,710 présent à la fois Harvard.edu web pages et des pages Web, Facebook.com 241 00:12:21,710 --> 00:12:26,850 cet homme sait certainement milieu qui vous êtes à cause de ces cookies partagés 242 00:12:26,850 --> 00:12:30,910 à travers, ou plutôt à, cette soi-disant intermédiaire. 243 00:12:30,910 --> 00:12:33,820 >> Donc, nous allons revenir sur ce point dans implications pour la sécurité de ceux-ci, 244 00:12:33,820 --> 00:12:37,170 mais il ya beaucoup d'informations étant stocké sur vous chaque fois que vous 245 00:12:37,170 --> 00:12:40,120 visiter plus une page sur Internet Internet et il a vraiment 246 00:12:40,120 --> 00:12:42,877 réduit à ce mécanisme très simple. 247 00:12:42,877 --> 00:12:44,710 Qu'est-ce qui se passe, alors, si vous êtes super parano 248 00:12:44,710 --> 00:12:48,190 et vous décidez d'aller dans Chrome ou IE ou que ce soit et désactiver vos cookies? 249 00:12:48,190 --> 00:12:49,365 Ce qui se produit? 250 00:12:49,365 --> 00:12:50,790 Ouais? 251 00:12:50,790 --> 00:12:53,170 Vous really-- vous avez fait ce droit? 252 00:12:53,170 --> 00:12:54,350 D'accord. 253 00:12:54,350 --> 00:12:55,994 Non, aller de l'avant. 254 00:12:55,994 --> 00:12:59,645 >> PUBLIC: Certains sites ne disposent pas une fonction sans elle aime Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. Malan: Ouais! 256 00:13:00,520 --> 00:13:02,311 Ainsi certains sites Web va simplement arrêter de travailler. 257 00:13:02,311 --> 00:13:05,520 Et dans la plupart des sites Web de nos jours qui reposent fondamentalement sur les cookies, 258 00:13:05,520 --> 00:13:08,360 surtout si elles ont vous vous connectez , ils vont juste de rompre. 259 00:13:08,360 --> 00:13:10,360 Parce que tenir compte de la Subsidiairement, si le site 260 00:13:10,360 --> 00:13:14,480 n'a aucun moyen de se rappeler qui vous êtes, et donc votre navigateur est pas 261 00:13:14,480 --> 00:13:16,949 représentant à chaque HTTP demande de ce timbre de main, 262 00:13:16,949 --> 00:13:18,740 efficacement un site Web comme le cours de Facebook 263 00:13:18,740 --> 00:13:22,050 d'avoir pour vous inviter à identifier à chaque fois sacrément 264 00:13:22,050 --> 00:13:26,200 vous changez de page, ou cliquez sur un lien, qui est sûrement pas un très bon utilisateur 265 00:13:26,200 --> 00:13:26,920 expérience. 266 00:13:26,920 --> 00:13:30,020 >> Alors que, là aussi, est parmi les compromis. 267 00:13:30,020 --> 00:13:34,140 Alors sans plus tarder, jetons pour acquis que la programmation web, 268 00:13:34,140 --> 00:13:37,630 dans des langages comme PHP, vous pouvez vous souvenir ce genre d'information dans le problème réglé 269 00:13:37,630 --> 00:13:41,550 sept lorsque vous implémentez votre propre Site E * Trade-comme permettant d'acheter 270 00:13:41,550 --> 00:13:45,710 et vendre des actions, vous vous souvenez exactement ce que l'utilisateur a acheté et vendu 271 00:13:45,710 --> 00:13:49,110 et qui il ou elle est par le biais de cette session. 272 00:13:49,110 --> 00:13:51,110 Mais nous allons avoir besoin de une façon amateur que le courrier électronique 273 00:13:51,110 --> 00:13:52,640 commencer à tenir des informations autour. 274 00:13:52,640 --> 00:13:53,140 Droit? 275 00:13:53,140 --> 00:13:56,780 >> Le lundi, nous avons parlé de Frosh GI et comment en version une de ce site, 276 00:13:56,780 --> 00:14:00,250 il ya des années, tout ce que nous avons fait était envoyer le Proctor qui est 277 00:14:00,250 --> 00:14:04,250 en charge des sports intra-muros programme, le nom et le sexe, 278 00:14:04,250 --> 00:14:07,330 et si oui ou non ils sont un capitaine, et le dortoir de quelqu'un qui est 279 00:14:07,330 --> 00:14:10,136 l'inscription à un sport intra-muros. 280 00:14:10,136 --> 00:14:13,010 Donc, il est pas mal, mais il ou elle a ensuite eu à fouiller dans leur email, 281 00:14:13,010 --> 00:14:16,010 faire une feuille de calcul ou quelque chose comme que, pour garder tout organisé. 282 00:14:16,010 --> 00:14:19,750 Aussi sûrement que nous en tant que programmeurs peut le faire pour que surveillant. 283 00:14:19,750 --> 00:14:22,970 Et donc entrer en SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 qui va faire joli différent à la fois C et PHP, 285 00:14:26,050 --> 00:14:30,990 et vous plongerez dans beaucoup plus de mains sur PHP et problème posé sept mais aussi SQL, 286 00:14:30,990 --> 00:14:35,310 ou SQL, ce qui est une langue que vous utilisez pour parler à une base de données. 287 00:14:35,310 --> 00:14:36,480 >> Mais ce qui est une base de données? 288 00:14:36,480 --> 00:14:38,440 Eh bien, vous pensez à un base de données, au moins pour l'instant, 289 00:14:38,440 --> 00:14:41,750 comme étant simplement comme un fichier Excel, ou si vous êtes un fichier Mac numéros utilisateur A, 290 00:14:41,750 --> 00:14:44,400 ou si vous êtes un Google Apps utilisateur une feuille de calcul Google, 291 00:14:44,400 --> 00:14:49,120 il est effectivement une base de données, ou vraiment en particulier une base de données relationnelle. 292 00:14:49,120 --> 00:14:53,070 Une base de données relationnelle est juste ce qui a des rangées et des colonnes, 293 00:14:53,070 --> 00:14:56,440 et vous pouvez stocker tout type de ces informations dans les lignes ou les colonnes. 294 00:14:56,440 --> 00:15:00,480 >> Mais ce qui est bien à propos de SQL, et sur les bases de données réelles, et pas seulement 295 00:15:00,480 --> 00:15:04,910 des feuilles de calcul ou des feuilles de calcul Google, est que vous pouvez utiliser une langue 296 00:15:04,910 --> 00:15:09,000 pour réellement exécuter des requêtes à insérer des données, de supprimer des données, 297 00:15:09,000 --> 00:15:11,620 à la recherche de données, même le plus important, et vous 298 00:15:11,620 --> 00:15:16,110 ne pas avoir à l'utiliser assez manuellement comme vous le feriez normalement un Google 299 00:15:16,110 --> 00:15:17,690 tableur comme ça. 300 00:15:17,690 --> 00:15:22,217 >> Donc, en SQL, il ya un tas de déclarations ou pièces fondamentales 301 00:15:22,217 --> 00:15:23,300 de fonctionnalité intégrée. 302 00:15:23,300 --> 00:15:26,450 Il ya beaucoup plus de ceux-ci, mais vous pouvez aller une distance énorme 303 00:15:26,450 --> 00:15:28,620 tout en sachant que ce langage appelé 304 00:15:28,620 --> 00:15:30,840 SQL comporte au moins quatre déclarations, vous pouvez tirer parti. 305 00:15:30,840 --> 00:15:34,420 >> Supprimer, pour supprimer les données, Insérez, par l'ajout de lignes, 306 00:15:34,420 --> 00:15:37,340 Mise à jour, pour changer rangées, et à choisir, 307 00:15:37,340 --> 00:15:39,860 pour revenir rangées et qui est en fait ce que fait SQL. 308 00:15:39,860 --> 00:15:43,810 Il fonctionne entièrement en lignes de manière que lorsque vous insérez ou supprimez, 309 00:15:43,810 --> 00:15:47,470 ou mise à jour, ou sélectionner ce que vous êtes revenir comme un soi-disant jeu de résultats, 310 00:15:47,470 --> 00:15:49,690 comme un tableau de lignes. 311 00:15:49,690 --> 00:15:51,700 Un tas de lignes d'une table. 312 00:15:51,700 --> 00:15:54,050 >> Donc, retour dans la journée, et même à ce jour, 313 00:15:54,050 --> 00:15:56,560 vous pouvez interagir avec le base de données en utilisant une ligne de commande, 314 00:15:56,560 --> 00:15:59,691 mais il est pas particulièrement agréable à utiliser cette fenêtre de style en noir et blanc 315 00:15:59,691 --> 00:16:02,190 et exécuter des commandes en réalité et fouiller votre base de données. 316 00:16:02,190 --> 00:16:06,054 Une interface utilisateur graphique, ou GUI, est beaucoup plus préférable, sans doute, 317 00:16:06,054 --> 00:16:08,970 et si l'outil que nous recommandons et préinstallé pour vous sur l'appareil 318 00:16:08,970 --> 00:16:10,580 est appelé phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 Il est une coïncidence totale que le nom de cette chose a PHP en elle, 320 00:16:14,060 --> 00:16:17,430 cela signifie simplement que les gens qui a écrit eux-mêmes ce programme 321 00:16:17,430 --> 00:16:18,670 écrit en PHP. 322 00:16:18,670 --> 00:16:23,740 >> Mais il est en fin de compte sur l'administration un serveur de base de données, comme un serveur MySQL 323 00:16:23,740 --> 00:16:26,589 que vous pourriez avoir, comme vous faire, dans l'appareil de CS50. 324 00:16:26,589 --> 00:16:29,130 Donc, il ya ici plus en détail que nous devons nous occuper aujourd'hui, 325 00:16:29,130 --> 00:16:33,280 mais ce qui est important est que sur la gauche côté est une liste des bases de données 326 00:16:33,280 --> 00:16:36,040 que vous avez sur votre ordinateur, sur votre appareil CS50, 327 00:16:36,040 --> 00:16:40,090 ou venir derniers projets que vous pourriez avoir sur un tiers, une entreprise de 328 00:16:40,090 --> 00:16:43,415 site web ou serveur, qui vous pourriez payer pour l'espace. 329 00:16:43,415 --> 00:16:45,290 Donc, sur la gauche est la bases de données, dont l'un 330 00:16:45,290 --> 00:16:48,750 est pset7 que je emprunté à côté pset semaines, et ensuite sur le dessus 331 00:16:48,750 --> 00:16:51,570 il remarque qu'il ya une tas d'onglets, dont l'un 332 00:16:51,570 --> 00:16:55,150 est bases de données, SQL, statut, utilisateurs, l'exportation et ainsi de suite. 333 00:16:55,150 --> 00:16:56,900 Ainsi, vous pouvez aller un long façon juste par la réalisation 334 00:16:56,900 --> 00:16:59,770 que la majeure partie de l'interface utilisateur est dans la colonne en haut à gauche 335 00:16:59,770 --> 00:17:02,650 et dans la partie supérieure droite là-haut. 336 00:17:02,650 --> 00:17:04,980 Alors, que pouvons-nous réellement faire avec ça? 337 00:17:04,980 --> 00:17:08,609 Eh bien, nous allons commencer la création d'un bit d'information de la manière suivante. 338 00:17:08,609 --> 00:17:11,760 >> Supposons ce qui suit est le cas, comme ce sera dans quelques jours, 339 00:17:11,760 --> 00:17:14,440 vous voulez mettre en œuvre une site Web, appelé CS50 Finances, 340 00:17:14,440 --> 00:17:17,328 et ce site vous permet d'acheter entre guillemets et vendre des actions. 341 00:17:17,328 --> 00:17:19,619 Et il va comprendre le prix de ces stocks, 342 00:17:19,619 --> 00:17:22,380 en fin de compte comme vous le verrez, en parlant de Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Qui, merveilleusement, dispose d'un service gratuit où vous pouvez passer à un téléscripteur 344 00:17:26,250 --> 00:17:29,830 comme GOOG pour Google, et il sera vous redonner le stock actuel de Google 345 00:17:29,830 --> 00:17:32,250 prix dans le passé quelques minutes au moins. 346 00:17:32,250 --> 00:17:35,080 >> Donc, vous en aurez besoin, en fin de compte, faire semblant de l'utilisateur 347 00:17:35,080 --> 00:17:37,750 d'acheter et de vendre réelle les stocks à l'aide de l'argent virtuel, 348 00:17:37,750 --> 00:17:39,750 mais la première chose l'utilisateur va voir 349 00:17:39,750 --> 00:17:43,850 est-ce l'écran de connexion qui leur demande pour leur nom d'utilisateur et mot de passe. 350 00:17:43,850 --> 00:17:46,540 Et donc, l'un des premiers défis pour vous dans pset7 351 00:17:46,540 --> 00:17:50,460 va être de mettre en œuvre l'arrière base de données, la feuille de calcul si vous voulez, 352 00:17:50,460 --> 00:17:53,369 cela va stocker des noms d'utilisateurs et mots de passe 353 00:17:53,369 --> 00:17:56,660 et, finalement, ce que les stocks qu'ils possèdent, et combien, et combien d'argent ils ont, 354 00:17:56,660 --> 00:18:00,110 si un tas d'autres choses dans autres tables, ou des feuilles de calcul. 355 00:18:00,110 --> 00:18:05,020 >> Donc, nous allons jeter un oeil à la façon dont cette pourrait apparaître à première vue. 356 00:18:05,020 --> 00:18:06,980 Je vais revenir à l'appareil et je suis 357 00:18:06,980 --> 00:18:14,102 va aller à cette URL ici phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 et vous verrez que ce me prend pour une interface 359 00:18:16,060 --> 00:18:18,520 exactement comme nous l'avons vu sur la capture d'écran, et ici je 360 00:18:18,520 --> 00:18:21,560 avoir une base de données supplémentaire appelé conférence pour aujourd'hui 361 00:18:21,560 --> 00:18:24,280 et laissez-moi aller de l'avant premier et cliquez sur pset7. 362 00:18:24,280 --> 00:18:27,940 >> Il me semble avoir deux options, un pour les nouveaux, pour créer une nouvelle table, 363 00:18:27,940 --> 00:18:30,770 et un lien pour les utilisateurs, qui est une table je l'ai déjà créé. 364 00:18:30,770 --> 00:18:31,790 Alors qu'est-ce qu'un tableau? 365 00:18:31,790 --> 00:18:33,740 Donc, si vous avez utilisé Excel avant, et si vous avez 366 00:18:33,740 --> 00:18:37,110 numéros utilisés ou Google Tableur, vous ouvrez une fenêtre 367 00:18:37,110 --> 00:18:39,350 et vous obtenez tout un tas de lignes et de colonnes, 368 00:18:39,350 --> 00:18:43,120 mais alors vous avez généralement des feuilles de calcul le long de la partie inférieure, ou des onglets séparés. 369 00:18:43,120 --> 00:18:46,140 Vous pouvez penser à chaque feuille de calcul sous forme de tableau 370 00:18:46,140 --> 00:18:51,150 de sorte que la base de données, en définitive, est un combinaison d'une ou plusieurs tables, une 371 00:18:51,150 --> 00:18:54,064 ou plusieurs feuilles de calcul, dans la monde d'une feuille de calcul normal. 372 00:18:54,064 --> 00:18:55,980 Alors laissez-moi aller de l'avant et cliquez sur cette fiche 373 00:18:55,980 --> 00:18:59,420 que je préfabriqués, appelés utilisateurs, alias 374 00:18:59,420 --> 00:19:00,700 table de base de données. 375 00:19:00,700 --> 00:19:04,130 Et si je fais défiler ici, permettez-moi de faire un zoom arrière un peu, 376 00:19:04,130 --> 00:19:08,479 voilà ce que phpMyAdmin est dit nous est à l'intérieur de cette table en ce moment. 377 00:19:08,479 --> 00:19:11,020 Il est un peu déroutant au premier abord coup d'œil parce que l'interface est pas 378 00:19:11,020 --> 00:19:15,140 la plus belle chose au monde, mais ce qui est intéressant est cette partie ici. 379 00:19:15,140 --> 00:19:17,970 ID, nom d'utilisateur, et hachage. 380 00:19:17,970 --> 00:19:20,510 >> À l'avance, et vous serez main ce problème réglé en sept, 381 00:19:20,510 --> 00:19:25,050 nous vous donnons un fichier contenant un Super petite table de base de données, en fait emprunté 382 00:19:25,050 --> 00:19:27,070 de l'édition pirate de problème mis deux, 383 00:19:27,070 --> 00:19:29,480 à l'intérieur de laquelle il existe six rangées. 384 00:19:29,480 --> 00:19:32,720 Un pour Belinda tous les chemin vers le bas à un pour Zamyla, 385 00:19:32,720 --> 00:19:35,980 et remarquer à la gauche de ceux les noms d'utilisateurs sont des identifiants uniques comme un, 386 00:19:35,980 --> 00:19:39,410 deux, trois, quatre, cinq, six, nombres entiers, et puis à droite sont des hashs. 387 00:19:39,410 --> 00:19:42,780 >> Et si, les chances sont, vous ne l'avez pas le problème de l'édition pirate mis deux, 388 00:19:42,780 --> 00:19:46,560 mais une table de hachage est juste comme un cryptée mot de passe avec quelques mises en garde. 389 00:19:46,560 --> 00:19:49,470 Et donc, ce que vous voyez ici sont les versions cryptées de l'ensemble des six 390 00:19:49,470 --> 00:19:52,950 de nos mots de passe de problème HACKERSAFE l'édition de deux. 391 00:19:52,950 --> 00:19:56,500 Maintenant à gauche est juste une interface graphique, éditer cette ligne, la copie de cette ligne, 392 00:19:56,500 --> 00:19:57,630 la suppression de cette ligne. 393 00:19:57,630 --> 00:19:59,840 >> Mais ce qui est intéressant Il est maintenant la suivante. 394 00:19:59,840 --> 00:20:03,810 Je ne peux réellement commencer l'expérimentation de ce tableau. 395 00:20:03,810 --> 00:20:07,330 Donc, si je vais et clique sur le SQL onglet, je reçois cette grande zone de texte. 396 00:20:07,330 --> 00:20:10,190 Et ce ne sont pas la façon dont nous allons faire lors de l'écriture en fait le code. 397 00:20:10,190 --> 00:20:12,700 Pour être clair, phpMyAdmin est juste un outil qui est 398 00:20:12,700 --> 00:20:16,450 va nous fouiller la base de données et nous expérimentons avec des requêtes. 399 00:20:16,450 --> 00:20:19,430 >> Ainsi, par exemple, supposons Je exécute exactement cela. 400 00:20:19,430 --> 00:20:22,820 Select, qui est l'un de ceux mots-clés je l'ai mentionné plus tôt, étoiles, 401 00:20:22,820 --> 00:20:25,900 qui représente tous les colonnes d'une table. 402 00:20:25,900 --> 00:20:26,820 De ce tableau? 403 00:20:26,820 --> 00:20:27,990 Eh bien, les utilisateurs. 404 00:20:27,990 --> 00:20:29,950 Et il ya cette avis convention bizarre dans SQL 405 00:20:29,950 --> 00:20:32,140 où vous utilisez réellement tiques arrière, généralement, 406 00:20:32,140 --> 00:20:35,940 citations pas simples et doubles guillemets pas quand vous parlez de noms de tables, 407 00:20:35,940 --> 00:20:38,990 de sorte que le dos citation est la chose sur le main en haut à gauche de votre clavier plus 408 00:20:38,990 --> 00:20:39,720 probable. 409 00:20:39,720 --> 00:20:41,850 >> Alors laissez-moi aller de l'avant maintenant et il suffit de laisser ce seul 410 00:20:41,850 --> 00:20:46,020 et faites défiler vers le bas et cliquez sur Go, et nous sommes effectivement aller voir la même chose. 411 00:20:46,020 --> 00:20:52,410 Nous venons exécuté une requête SQL dire tout sélectionner étoiles 412 00:20:52,410 --> 00:20:55,610 de tableau appelé les utilisateurs, et ce que vous obtenez en retour est la suivante. 413 00:20:55,610 --> 00:20:58,400 En fin de compte, nous serons en mesure de faire la même chose dans le code, 414 00:20:58,400 --> 00:21:02,109 mais pour l'instant tout ce que je voulais Do a été le voir dans mon navigateur. 415 00:21:02,109 --> 00:21:03,900 Eh bien nous allons faire quelque chose un peu différent. 416 00:21:03,900 --> 00:21:08,330 Permettez-moi de revenir à l'onglet SQL, et disons juste que quoi? 417 00:21:08,330 --> 00:21:11,520 Zamyla a perdu tout son argent, et il est donc 418 00:21:11,520 --> 00:21:13,190 temps pour nous de l'effacer en tant qu'utilisateur. 419 00:21:13,190 --> 00:21:14,630 Elle ne vous connecter. 420 00:21:14,630 --> 00:21:18,870 >> Alors je vais dire supprimer de-- ainsi, maintenir la capitalisation 421 00:21:18,870 --> 00:21:23,080 par souci de cohérence, supprimer des utilisateurs où. 422 00:21:23,080 --> 00:21:25,430 Et ainsi, nous pouvons avoir ces prédicats, ou ceux-ci 423 00:21:25,430 --> 00:21:31,180 qualifications, à la fin de ma déclaration où et comment pourrais-je supprimer Zamyla? 424 00:21:31,180 --> 00:21:34,190 En son nom Zamyla, de sorte que le colonne, l'une des colonnes 425 00:21:34,190 --> 00:21:37,950 a été nommé, alors où name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 Et là, je l'utilise deux fois des citations ou des apostrophes, 427 00:21:40,000 --> 00:21:42,958 vous utilisez uniquement le dos quand ticks parler des noms, par exemple, 428 00:21:42,958 --> 00:21:45,130 des tables ou des champs. 429 00:21:45,130 --> 00:21:47,440 Et permettez-moi de cliquez sur Go ici. 430 00:21:47,440 --> 00:21:50,400 Et maintenant, la page Web est être un peu tendu. 431 00:21:50,400 --> 00:21:53,620 >> Ou, voulez-vous vraiment à exécuter la commande DELETE des utilisateurs dont le nom est égal Zamyla? 432 00:21:53,620 --> 00:21:54,680 Oui. 433 00:21:54,680 --> 00:22:01,900 Alors maintenant, si nous revenons à ma table par les utilisateurs cliquant, vous remarquerez que Hm. 434 00:22:01,900 --> 00:22:02,530 Je fait une gaffe. 435 00:22:02,530 --> 00:22:04,070 Et en fait, je genre de cliqué si vite 436 00:22:04,070 --> 00:22:06,195 vous avez même pas vu le message d'erreur rouge, peut-être. 437 00:22:06,195 --> 00:22:07,649 Qu'ai-je fait de mal? 438 00:22:07,649 --> 00:22:09,690 Public: Vous avez pas besoin de capitaliser son nom. 439 00:22:09,690 --> 00:22:11,260 DAVID J. Malan: Ouais, je capitalisés son nom, 440 00:22:11,260 --> 00:22:13,770 mais son username-- fait je fait quelques erreurs, non? 441 00:22:13,770 --> 00:22:16,720 Un, son nom d'utilisateur est zamyla, Z minuscules, 442 00:22:16,720 --> 00:22:20,140 et le nom de la colonne est le nom d'utilisateur, ne nommerai pas, nous allons donc le faire à nouveau. 443 00:22:20,140 --> 00:22:25,750 Permettez-moi aller de l'avant et supprimer des utilisateurs où 444 00:22:25,750 --> 00:22:28,990 nom d'utilisateur égale entre guillemets "Zamyla". 445 00:22:28,990 --> 00:22:29,490 Bien? 446 00:22:29,490 --> 00:22:32,600 Donc, cela ressemble un peu mieux, laissez moi aller défiler vers le bas et cliquez sur OK. 447 00:22:32,600 --> 00:22:34,730 Il va encore me crier dessus pour être sûr. 448 00:22:34,730 --> 00:22:37,500 Je clique sur Oui, et nous voyons maintenant, franchement ce qui est arrivé, vraiment 449 00:22:37,500 --> 00:22:39,870 rapide, moins d'un deuxième certainement, cette 450 00:22:39,870 --> 00:22:41,720 est exactement la requête qui a obtenu exécuté. 451 00:22:41,720 --> 00:22:45,617 Pour confirmer, permettez-moi sur Utilisateurs et bien maintenant Zamyla est parti. 452 00:22:45,617 --> 00:22:46,700 Maintenant, nous allons faire le contraire. 453 00:22:46,700 --> 00:22:49,320 Supposons que Gabe veut enregistrer pour le site. 454 00:22:49,320 --> 00:22:52,825 Quelle est la requête SQL, ce qui est la commande je pouvais taper à ajouter Gabe? 455 00:22:52,825 --> 00:22:54,200 Eh bien, il est assez simple. 456 00:22:54,200 --> 00:22:58,260 Insérer dans les utilisateurs, et maintenant il est un peu énigmatique. 457 00:22:58,260 --> 00:23:03,190 Je dois préciser, pour le serveur, Quels sont les domaines que je veux attribuer. 458 00:23:03,190 --> 00:23:06,630 Je ne me soucie pas vraiment ce que Gabe ID nombre est, donc je vais sauter cette. 459 00:23:06,630 --> 00:23:11,360 Je vais dire à la place nom d'utilisateur, hachage, puis 460 00:23:11,360 --> 00:23:14,960 les valeurs que je veux mettre il va être Gabe. 461 00:23:14,960 --> 00:23:16,800 Et puis son hachage, je ne sais pas. 462 00:23:16,800 --> 00:23:19,900 Donc pour l'instant, je vais laisser que comme un grand à faire. 463 00:23:19,900 --> 00:23:21,650 Nous y reviendrons que régler le problème 464 00:23:21,650 --> 00:23:23,390 spec sur la façon dont vous avez réellement le faire. 465 00:23:23,390 --> 00:23:24,630 >> Donc remarquer, encore une fois, la syntaxe. 466 00:23:24,630 --> 00:23:28,430 Insérer dans le nom de la table, puis un liste entre parenthèses des champs, 467 00:23:28,430 --> 00:23:30,980 les colonnes que vous souhaitez ajouter valeurs à, et puis juste 468 00:23:30,980 --> 00:23:34,495 le même ordre de gauche à exact droit des valeurs que vous souhaitez ajouter, 469 00:23:34,495 --> 00:23:36,870 et il est juste parce que l'emballage le texte est un peu long. 470 00:23:36,870 --> 00:23:38,520 Alors maintenant, laissez-moi cliquez sur OK. 471 00:23:38,520 --> 00:23:39,830 Une ligne insérée. 472 00:23:39,830 --> 00:23:43,020 Et maintenant, si je reviens à utilisateurs, ce qui est intéressant 473 00:23:43,020 --> 00:23:48,960 est que non seulement il est maintenant dans la Gabe base de données, ce qui est apparemment son identité? 474 00:23:48,960 --> 00:23:49,820 >> Eh bien, il est sept heures. 475 00:23:49,820 --> 00:23:51,479 Pourquoi est-il sept ans quand je ne suis pas l'ajouter? 476 00:23:51,479 --> 00:23:54,020 Donc, cela, aussi, est l'un des fonctionnalités que vous obtenez de la base de données. 477 00:23:54,020 --> 00:23:55,750 Un grand nombre de fonctionnalités intégrées. 478 00:23:55,750 --> 00:23:57,950 Il se trouve que lorsque créé cette table, 479 00:23:57,950 --> 00:24:01,390 Je préconfigurés il est automatiquement attribuer un ID de telle sorte 480 00:24:01,390 --> 00:24:02,480 qu'il incrémente. 481 00:24:02,480 --> 00:24:05,470 Donc, si vous avez déjà poussé autour, et regardé ce que votre ID Facebook 482 00:24:05,470 --> 00:24:09,292 nombre est, de nos jours il n'y a pas vraiment une chose à faire, mais comme une API Facebook, 483 00:24:09,292 --> 00:24:11,750 Interface de programmation d'application, lequel vous pouvez revenir 484 00:24:11,750 --> 00:24:14,430 tout un tas de données sur vous-même, vos amis, 485 00:24:14,430 --> 00:24:15,347 et vos connexions. 486 00:24:15,347 --> 00:24:17,430 Et ce que l'on sorte cool, retour dans la journée, 487 00:24:17,430 --> 00:24:19,510 était à chercher ce que votre Facebook numéro d'identification était. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg de, par exemple, est trois 489 00:24:22,390 --> 00:24:23,890 depuis qu'il était l'auteur du site. 490 00:24:23,890 --> 00:24:27,610 Et comme l'histoire, il a créé deux comptes de test, les utilisateurs un et deux, 491 00:24:27,610 --> 00:24:28,690 qu'il a ensuite supprimé. 492 00:24:28,690 --> 00:24:32,780 Et donc, Zuck, comme son nom d'utilisateur sur Facebook, est ID numéro trois, 493 00:24:32,780 --> 00:24:36,110 et nous avons tous des chiffres beaucoup plus plus de trois de ces jours. 494 00:24:36,110 --> 00:24:37,980 En fait, à un moment donné Facebook éloigné 495 00:24:37,980 --> 00:24:42,410 de même en utilisant un int, qui est une valeur de 32 bits, à l'aide 496 00:24:42,410 --> 00:24:44,480 la prochaine étape, essentiellement un temps long pour 497 00:24:44,480 --> 00:24:47,150 qu'ils puissent accueillir encore plus de l'enregistrement des utilisateurs. 498 00:24:47,150 --> 00:24:49,420 Donc un peu fait historique plaisir. 499 00:24:49,420 --> 00:24:51,660 >> Voilà donc tout le syntaxe de base avec laquelle 500 00:24:51,660 --> 00:24:54,470 nous pourrions exécuter un couple de requêtes, mais nous pouvons 501 00:24:54,470 --> 00:24:56,744 faire un tas d'autres choses avec SQL. 502 00:24:56,744 --> 00:24:58,910 Et vous verrez, en fin de compte, dans le problème posé sept 503 00:24:58,910 --> 00:25:01,034 que vous avez à faire un nombre de décisions de conception, 504 00:25:01,034 --> 00:25:03,290 d'entre eux va être les types de données à utiliser. 505 00:25:03,290 --> 00:25:08,240 Ainsi, tout comme en C, il existe des données types dans une base de données, comme MySQL, 506 00:25:08,240 --> 00:25:12,640 et les types de données que vous avez à choisir De inclure ces domaines ici. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, Int, grand int, décimal et l'heure de ce jour, et bien d'autres. 508 00:25:17,287 --> 00:25:18,370 Donc, nous allons effectivement le faire. 509 00:25:18,370 --> 00:25:21,060 Imaginons que nous ne l'avons pas tableau de cet utilisateur de main vous 510 00:25:21,060 --> 00:25:25,080 et laissez-moi aller de l'avant et de créer, pour moi-même, dans les conférences database-- 511 00:25:25,080 --> 00:25:31,000 en fait je vais aller de l'avant et supprimer la table, je dois ici déjà 512 00:25:31,000 --> 00:25:32,940 de sorte que nous pouvons créer ce fichier. 513 00:25:32,940 --> 00:25:33,550 Oups. 514 00:25:33,550 --> 00:25:35,970 Je vais laisser tomber cette table, et maintenant je suis 515 00:25:35,970 --> 00:25:38,337 va aller de nouveau à la conférences base de données ici, 516 00:25:38,337 --> 00:25:40,420 Je vais créer une table appelés utilisateurs et nous allons 517 00:25:40,420 --> 00:25:43,010 il suffit de faire trois colonnes initialement et cliquez sur OK. 518 00:25:43,010 --> 00:25:44,990 >> Or, pour la plupart, encore une fois, cela est juste 519 00:25:44,990 --> 00:25:48,570 utilisation de cet outil graphique appelé phpMyAdmin, et ce que nous faisons maintenant 520 00:25:48,570 --> 00:25:49,600 est la création d'une table. 521 00:25:49,600 --> 00:25:53,170 Donc ce fichier est comme aller, Nouveau, et la création d'un nouveau fichier Excel. 522 00:25:53,170 --> 00:25:55,440 Donc, il me demande un peu questions, de gauche à droite, 523 00:25:55,440 --> 00:25:58,620 quel est le nom de la première colonne, puis le nom de la deuxième colonne, 524 00:25:58,620 --> 00:25:59,560 et le nom de la troisième. 525 00:25:59,560 --> 00:26:00,518 Donc, nous allons recréer cette. 526 00:26:00,518 --> 00:26:05,460 ID, puis le nom d'utilisateur est l'un, et puis hachage est une autre. 527 00:26:05,460 --> 00:26:08,970 Donc, ce qui devrait le type de données être maintenant un domaine comme ID? 528 00:26:08,970 --> 00:26:14,470 >> Voici la liste complète des types de données disponibles dans une base de données, 529 00:26:14,470 --> 00:26:16,070 et pour l'instant nous allons juste aller avec int. 530 00:26:16,070 --> 00:26:18,160 Valeur 32 bits, je ne sais pas pense que je suis réaliste 531 00:26:18,160 --> 00:26:21,484 va avoir plus de 4 milliards utilisateurs dans mon compte, dans mon service, 532 00:26:21,484 --> 00:26:23,650 donc je vais continuer à avancer à la question suivante. 533 00:26:23,650 --> 00:26:25,490 Je ne vais pas préciser une longueur ou valeurs, 534 00:26:25,490 --> 00:26:28,540 il est pas applicable ici pour un int, en soi. 535 00:26:28,540 --> 00:26:30,740 Et maintenant, je peux préciser, apparemment, un défaut 536 00:26:30,740 --> 00:26:33,970 valeur, que je ne vais pas préciser. 537 00:26:33,970 --> 00:26:36,050 Un classement, je ne sais pas ce qui est. 538 00:26:36,050 --> 00:26:37,290 Un attribut. 539 00:26:37,290 --> 00:26:39,455 Maintenant, nous faisons réellement avoir une décision de conception. 540 00:26:39,455 --> 00:26:42,580 Donc, il ya quelques champs ici, pas tous de qui sont applicables, mais non signé 541 00:26:42,580 --> 00:26:43,380 signifie simplement que quoi? 542 00:26:43,380 --> 00:26:45,400 Que le int doit être? 543 00:26:45,400 --> 00:26:46,210 Tout non-négatif. 544 00:26:46,210 --> 00:26:48,090 Donc, il doit être sur 0 jusqu'à. 545 00:26:48,090 --> 00:26:51,120 Non, je ne vais pas vérifier parce que Je veux que chaque utilisateur d'avoir une pièce d'identité, 546 00:26:51,120 --> 00:26:52,470 il ne peut pas être nulle. 547 00:26:52,470 --> 00:26:55,949 Et puis, nous arrivons à un peu plus les décisions de conception intéressants aiment. 548 00:26:55,949 --> 00:26:58,990 Nous y reviendrons dans un instant, mais ce que l'autre caractéristique de base de données 549 00:26:58,990 --> 00:27:04,200 est, est-ce que vous pouvez dire le serveur de base de données aller de l'avant 550 00:27:04,200 --> 00:27:07,100 et optimiser vous-même, votre RAM et espace disque dur, 551 00:27:07,100 --> 00:27:11,770 de sorte que sélectionne et inserts, et supprime, et les mises à jour sont vraiment rapides. 552 00:27:11,770 --> 00:27:13,250 Cela contraste avec pset5. 553 00:27:13,250 --> 00:27:16,259 >> Si vous voulez chercher quelque chose dans votre table de hachage, qui 554 00:27:16,259 --> 00:27:18,300 vous pensez à une base de données, qui a dû faire tout le 555 00:27:18,300 --> 00:27:21,500 travailler pour faire de votre table de hachage rapide. 556 00:27:21,500 --> 00:27:22,840 Il est comme, évidemment, vous. 557 00:27:22,840 --> 00:27:23,060 Droit? 558 00:27:23,060 --> 00:27:26,080 Il fallait mettre avec toutes les nuances de temps réglage choses, obtenir une fonction de hachage 559 00:27:26,080 --> 00:27:27,820 droit, à trouver comment de seaux d'avoir. 560 00:27:27,820 --> 00:27:29,611 >> Mais ce qui est bien, encore une fois, sur une base de données est 561 00:27:29,611 --> 00:27:31,762 vous botté de dégagement juste tous ce à d'autres personnes 562 00:27:31,762 --> 00:27:33,720 qui ont pensé que ce à travers pour vous, et ce 563 00:27:33,720 --> 00:27:37,170 Je vais dire ici sous indice est que mon champ ID 564 00:27:37,170 --> 00:27:41,149 va être le principal moyen de l'identification des utilisateurs dans cette base de données. 565 00:27:41,149 --> 00:27:42,940 Je ne vais pas penser de Zamyla comme Zamyla, 566 00:27:42,940 --> 00:27:45,800 Je vais penser à elle comme le numéro 6. 567 00:27:45,800 --> 00:27:49,814 >> Pourquoi est-il, peut-être, mieux intuitivement penser et modèle 568 00:27:49,814 --> 00:27:52,480 chacune des rangées individuelles en utilisant votre un nombre au lieu de quelque chose 569 00:27:52,480 --> 00:27:56,480 comme une chaîne, comme le Zamyla ou Gabe ou plus encore la chaîne? 570 00:27:56,480 --> 00:27:57,444 Ouais? 571 00:27:57,444 --> 00:28:00,117 >> PUBLIC: Un ID est unique? 572 00:28:00,117 --> 00:28:01,200 DAVID J. Malan: répète? 573 00:28:01,200 --> 00:28:02,283 PUBLIC: Un ID est unique? 574 00:28:02,283 --> 00:28:04,400 DAVID J. Malan: Un ID est unique, mais suppose-- 575 00:28:04,400 --> 00:28:06,320 selon le cas, en général, avec les noms d'utilisateurs, supposons 576 00:28:06,320 --> 00:28:10,110 Je disais aussi, il ne peut y avoir une Zamyla dans le monde, et un seul Gabe. 577 00:28:10,110 --> 00:28:13,730 Je pouvais imposer l'unicité contrainte sur les cordes, trop, si je le voulais. 578 00:28:13,730 --> 00:28:15,550 Donc pas une mauvaise pensée. 579 00:28:15,550 --> 00:28:16,500 >> PUBLIC: Plus sécurisé. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. Malan: Plus sûr, pourquoi? 581 00:28:17,874 --> 00:28:20,705 Public: Vous ne pouvez pas dire qui est qui, comme dans le mode. 582 00:28:20,705 --> 00:28:22,580 DAVID J. Malan: OK, vous ne peut pas dire que l'utilisateur 583 00:28:22,580 --> 00:28:24,380 est ce qui il ya donc une la vie privée aspect à elle, 584 00:28:24,380 --> 00:28:27,810 en particulier si les ID peut être apparaissant dans les URL. 585 00:28:27,810 --> 00:28:29,960 Alors bien sûr, qui pourrait genre de travail, trop. 586 00:28:29,960 --> 00:28:30,640 D'autres pensées? 587 00:28:30,640 --> 00:28:31,383 Ouais? 588 00:28:31,383 --> 00:28:34,316 >> PUBLIC: Il est plus facile de effectuer des opérations sur un int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. Malan: Ce est le botteur réel. 590 00:28:35,940 --> 00:28:38,850 Il est un peu plus efficace, ou plus facile pour l'ordinateur, 591 00:28:38,850 --> 00:28:40,431 à effectuer des opérations sur un nombre entier. 592 00:28:40,431 --> 00:28:40,930 Droit? 593 00:28:40,930 --> 00:28:43,905 Un int est garanti à de 32 bits, alors que Zamyla 594 00:28:43,905 --> 00:28:47,660 est quelques caractères, Gabriel est un peu plus de caractères, 595 00:28:47,660 --> 00:28:51,930 Davenport est vraiment longue, et il est donc pas particulièrement efficace d'utiliser 596 00:28:51,930 --> 00:28:55,860 chaînes à comparer les valeurs et l'air pour les champs et les champs de mise à jour, 597 00:28:55,860 --> 00:28:57,790 si vous pouvez vous en sortir avec juste un nombre entier. 598 00:28:57,790 --> 00:28:59,090 Situé à 32 bits. 599 00:28:59,090 --> 00:29:02,570 Donc, les noms d'utilisateurs, aussi, de cette façon, ne doivent pas être unique, 600 00:29:02,570 --> 00:29:05,040 mais ils devraient probablement être, et même de cette façon trop 601 00:29:05,040 --> 00:29:07,520 un utilisateur peut être autorisé à changer son nom d'utilisateur. 602 00:29:07,520 --> 00:29:10,810 >> Laissons donc maintenant ce que le premier moyen d'identification de l'utilisateur. 603 00:29:10,810 --> 00:29:13,510 Ceci est dit la base de données aller de l'avant et d'optimiser vous-même 604 00:29:13,510 --> 00:29:17,065 ainsi que Look up sur ID sont super rapide. 605 00:29:17,065 --> 00:29:19,620 AI, horriblement nommé, juste signifie incrémentation automatique, 606 00:29:19,620 --> 00:29:21,500 et cette vérification est le Box nous devons vérifier 607 00:29:21,500 --> 00:29:24,614 pour indiquer que le champ d'identification de automatiquement mis à jour pour moi, 608 00:29:24,614 --> 00:29:26,530 et puis je vais défiler vers la droite ici 609 00:29:26,530 --> 00:29:29,279 et franchement, je ne suis pas vraiment intéressé en plus de ces domaines. 610 00:29:29,279 --> 00:29:30,630 Certainement pas aujourd'hui. 611 00:29:30,630 --> 00:29:33,770 >> Donc, je vais revenir ici, à la première colonne, où 612 00:29:33,770 --> 00:29:35,830 Je dois préciser nom d'utilisateur et hachage, et nous allons 613 00:29:35,830 --> 00:29:38,080 au moins l'accent sur la deuxième pour le moment. 614 00:29:38,080 --> 00:29:41,498 Int est probablement pas le droit d'appel, Donc ce qui fait plus de sens peut-être? 615 00:29:41,498 --> 00:29:42,741 >> PUBLIC: texte. 616 00:29:42,741 --> 00:29:43,824 DAVID J. Malan: répète? 617 00:29:43,824 --> 00:29:44,710 PUBLIC: texte. 618 00:29:44,710 --> 00:29:44,980 DAVID J. Malan: texte? 619 00:29:44,980 --> 00:29:45,590 OK, je entendu texte. 620 00:29:45,590 --> 00:29:46,090 Quoi d'autre? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Nous avons une sorte de tas de choix qui sont de nature textuelle. 623 00:29:53,860 --> 00:29:55,990 Alors, quand, et pourquoi, faire vous utilisez certains de ceux-ci? 624 00:29:55,990 --> 00:29:59,560 Eh bien char, contrairement à ce que vous pourriez penser, est pas un caractère unique. 625 00:29:59,560 --> 00:30:01,550 Il est un nombre déterminé de caractères. 626 00:30:01,550 --> 00:30:04,600 Donc, si nous savons que tous les noms d'utilisateur doit être comme huit caractères, 627 00:30:04,600 --> 00:30:08,490 comme autrefois commune en plus systèmes informatiques, je pourrais dire l'omble 628 00:30:08,490 --> 00:30:09,830 et alors je pourrais dire 8 ici. 629 00:30:09,830 --> 00:30:12,930 Voilà quand la troisième colonne devient applicable lors de la création d'une table. 630 00:30:12,930 --> 00:30:15,450 >> Mais qui est assez ennuyeux parce que certaines personnes pourraient 631 00:30:15,450 --> 00:30:17,660 veulent avoir un nom d'utilisateur plus de huit caractères, 632 00:30:17,660 --> 00:30:19,743 certaines personnes pourraient vouloir avoir un nom d'utilisateur plus court, 633 00:30:19,743 --> 00:30:22,210 alors pourquoi me commettre pour un nombre spécifique? 634 00:30:22,210 --> 00:30:24,710 Pourquoi ne pas avoir une variable nombre de caractères et juste 635 00:30:24,710 --> 00:30:28,580 dire que la longueur maximale d'un nom est, je ne sais pas, comme 64 caractères. 636 00:30:28,580 --> 00:30:31,780 Je ne peux pas penser à des amis qui avoir des noms plus de 64 caractères, 637 00:30:31,780 --> 00:30:34,810 et même si cela est trop courte, il pourrait certainement augmenter jusqu'à arbitrairement. 638 00:30:34,810 --> 00:30:37,330 >> Donc varchar est une variable nombre de caractères. 639 00:30:37,330 --> 00:30:41,010 Textes ne sont pas un mauvais instinct, et franchement ce genre de fait ce qu'il dit, 640 00:30:41,010 --> 00:30:45,460 mais un champ de texte peut être comme 65 000 octets au moins. 641 00:30:45,460 --> 00:30:50,790 Voilà probablement excessif pour un champ, et en fait, ouais, 65535. 642 00:30:50,790 --> 00:30:53,740 Voilà probablement excessif pour un nom, afin que nous nous en tiendrons, généralement, 643 00:30:53,740 --> 00:30:56,910 avec varchars pour textuelle domaine et hachage, aussi. 644 00:30:56,910 --> 00:30:59,990 Hash, il se trouve, nous pourrions faire un varchar aussi bien ou quelque chose comme ça, 645 00:30:59,990 --> 00:31:03,080 mais nous ne nous concentrerons pas aujourd'hui sur la cryptographie et il les numéros 646 00:31:03,080 --> 00:31:05,210 que nous pourrions réellement souhaitez utiliser pour sa longueur. 647 00:31:05,210 --> 00:31:07,430 >> Mais permettez-moi de faire défiler vers le bas à droite. 648 00:31:07,430 --> 00:31:11,280 Vous ne pouvez avoir une index primaire pour une table, 649 00:31:11,280 --> 00:31:16,380 mais ce que je veux appliquer toutes ces choses, maintenant, pour nom d'utilisateur, diriez-vous? 650 00:31:16,380 --> 00:31:21,980 Quel devrait username être fondée sur une vague la compréhension de ces quatre options? 651 00:31:21,980 --> 00:31:23,340 Par leur nom? 652 00:31:23,340 --> 00:31:24,140 >> PUBLIC: Unique. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. Malan: si unique, non? 654 00:31:25,100 --> 00:31:28,190 Donc, il se trouve que non seulement possible vous dites une base de données, à l'avance, 655 00:31:28,190 --> 00:31:30,380 ce est le principal moyen l'identification de domaines. 656 00:31:30,380 --> 00:31:32,990 Vous pouvez également dire que ce est va être un domaine unique. 657 00:31:32,990 --> 00:31:34,700 Il ne va pas être la chose que je compte sur, 658 00:31:34,700 --> 00:31:38,490 mais je voudrais la base de données essentiellement avoir que si la condition, si 659 00:31:38,490 --> 00:31:42,340 que si jamais je essayé de s'inscrire deux utilisateurs avec le même nom, 660 00:31:42,340 --> 00:31:44,360 la base de données à plat ne va pas me laisser faire. 661 00:31:44,360 --> 00:31:47,490 Je pourrais avoir un peu de code supplémentaire en PHP qui empêche autant, 662 00:31:47,490 --> 00:31:50,640 mais la base de données, trop, peut assurer que ce ne va jamais se produire. 663 00:31:50,640 --> 00:31:53,370 >> Maintenant, en passant, d'autant plus que vous pensez derniers projets, 664 00:31:53,370 --> 00:31:57,030 garder à l'esprit indice et complet texte sont en fait très utile. 665 00:31:57,030 --> 00:32:01,080 Si vous avez une grande base de données, pas de des dizaines, mais des centaines ou des milliers 666 00:32:01,080 --> 00:32:05,270 voire des millions de domaines, vous pouvez dire aussi la base de données à l'avance 667 00:32:05,270 --> 00:32:07,980 ceci est un domaine que je vais être à la recherche sur un terrain. 668 00:32:07,980 --> 00:32:10,520 Peut-être que son nom d'utilisateur, Peut-être qu'il est bio, si vous êtes 669 00:32:10,520 --> 00:32:13,750 faire un site web Facebook-like qui a paragraphes que l'utilisateur est autorisé 670 00:32:13,750 --> 00:32:16,799 pour sauver, et si vous voulez dire la base de données à l'avance 671 00:32:16,799 --> 00:32:20,090 Je vais être à la recherche dans ce domaine beaucoup, mais pas nécessairement unique, 672 00:32:20,090 --> 00:32:22,800 vous pouvez spécifier me créer un index. 673 00:32:22,800 --> 00:32:27,990 Ou, vous pouvez dire aussi me permettre de faire sorte de fouilles arbitraires comme commande 674 00:32:27,990 --> 00:32:30,420 ou de contrôle F, comme vous pourrait dans un traitement de texte, 675 00:32:30,420 --> 00:32:34,184 de sorte que vous pouvez regarder des chaînes arbitraires ou chaînes dans ce domaine. 676 00:32:34,184 --> 00:32:36,600 En d'autres termes, nous obtenons au point au cours du semestre 677 00:32:36,600 --> 00:32:40,720 où vous ne devez pas vous inquiéter au sujet de comment mettre en œuvre les choses efficacement. 678 00:32:40,720 --> 00:32:44,540 Vous avez juste besoin de savoir ce les décisions de conception à faire en sorte que vous êtes 679 00:32:44,540 --> 00:32:48,470 en utilisant les bons outils pour le commerce afin de tirer parti des fonctionnalités 680 00:32:48,470 --> 00:32:50,380 que d'autres personnes ont construit pour vous. 681 00:32:50,380 --> 00:32:54,240 Donc, pour résumer, primaire devrait seulement avoir un, vous pouvez avoir un seul, 682 00:32:54,240 --> 00:32:59,630 et il est la chose que vous vous engagez à à l'aide de champs identifiant de manière unique. 683 00:32:59,630 --> 00:33:02,710 Unique est juste dans le même esprit, mais vous pouvez uniquement utiliser de temps en temps, 684 00:33:02,710 --> 00:33:04,530 mais vous voulez que la base de données de l'imposer. 685 00:33:04,530 --> 00:33:08,050 Indice signifie simplement préventivement accélérer les choses dans l'avenir 686 00:33:08,050 --> 00:33:10,230 afin que je puisse rechercher les choses dans ce domaine. 687 00:33:10,230 --> 00:33:13,700 Et puis le texte intégral est généralement paragraphes, ou des essais, ou de grands organismes 688 00:33:13,700 --> 00:33:16,270 de texte où vous pourrait aussi avoir 689 00:33:16,270 --> 00:33:19,420 cartes sauvages comme l'équivalent de l'étoile. 690 00:33:19,420 --> 00:33:19,920 Droite. 691 00:33:19,920 --> 00:33:22,580 >> Alors que était un peu beaucoup à tous à la fois. 692 00:33:22,580 --> 00:33:25,220 Voyons voir si nous ne pouvons pas distiller un couple de ces caractéristiques 693 00:33:25,220 --> 00:33:29,540 et puis construire quelque chose assez simple, mais puissant. 694 00:33:29,540 --> 00:33:31,380 Donc, parmi les autres les décisions de conception vous êtes 695 00:33:31,380 --> 00:33:34,005 finalement devoir est long les lignes de moteurs de stockage. 696 00:33:34,005 --> 00:33:37,370 Et permettez-moi de faire mention de cette en prévision de projets de fin, 697 00:33:37,370 --> 00:33:42,020 et l'anticipation des let de say-- ne faisons ceci. 698 00:33:42,020 --> 00:33:43,820 Bâtissons ce petit première application. 699 00:33:43,820 --> 00:33:48,070 Je vais aller dans mon terminal fenêtre, et en voici pas 700 00:33:48,070 --> 00:33:52,500 seulement counter.php, qui nous allons maintenant de se débarrasser de ne plus germane, 701 00:33:52,500 --> 00:33:54,570 mais nous avons tout un tas de répertoires et de ce 702 00:33:54,570 --> 00:33:58,080 va être très similaire dans l'esprit à ce que vous verrez dans sept problème posé. 703 00:33:58,080 --> 00:34:00,980 >> Nous avons donc trois répertoires comprend public et des modèles, qui 704 00:34:00,980 --> 00:34:05,040 est exactement là où nous nous sommes quittés sur Lundi, avec l'ensemble de notre paradigme MVC. 705 00:34:05,040 --> 00:34:09,290 Et pour rappel, en public va aller tout fichier que je veux que les utilisateurs réellement 706 00:34:09,290 --> 00:34:12,969 v être en mesure de visiter en leur navigateur via une URL. 707 00:34:12,969 --> 00:34:13,502 Template. 708 00:34:13,502 --> 00:34:14,710 Qu'avons-nous mis dans les modèles? 709 00:34:14,710 --> 00:34:17,070 Quel genre de choses? 710 00:34:17,070 --> 00:34:21,659 Il n'y avait pas beaucoup, mais un couple fichiers au moins lundi. 711 00:34:21,659 --> 00:34:22,619 Ouais. 712 00:34:22,619 --> 00:34:23,100 >> PUBLIC: En-tête et pied de page? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. Malan: En-tête et pied de page. 714 00:34:24,516 --> 00:34:26,679 Nous avons donc quelque chose de semblable aujourd'hui, trop. 715 00:34:26,679 --> 00:34:30,330 Nous avons un peu plus de fichiers, mais Pied de page, je vois, je vois tête, 716 00:34:30,330 --> 00:34:31,909 et puis un tas d'autres fichiers. 717 00:34:31,909 --> 00:34:35,482 Donc, ce qui équivaut de la vue V MVC, qui, 718 00:34:35,482 --> 00:34:37,690 encore une fois, sera un peu plus clair dans le problème réglé sept, 719 00:34:37,690 --> 00:34:40,380 mais ceci est juste un dossier que je suis mettre beaucoup de mon esthétique. 720 00:34:40,380 --> 00:34:42,840 Une grande partie de mon HTML, beaucoup de mes formes. 721 00:34:42,840 --> 00:34:46,899 Pendant ce temps, comprend, est un autre répertoire qui a ces trois fichiers 722 00:34:46,899 --> 00:34:48,440 et nous allons jeter un coup d'œil à ces. 723 00:34:48,440 --> 00:34:51,699 >> Je vais aller de l'avant et ouvrir le fichier config.php. 724 00:34:51,699 --> 00:34:54,610 Comme il se trouve, beaucoup comme plus tôt dans la durée, 725 00:34:54,610 --> 00:34:57,850 vous pointu inclus CS50 point h avec pset7. 726 00:34:57,850 --> 00:35:00,780 Dans l'exemple d'aujourd'hui, vous allez à faire l'équivalent de ce que 727 00:35:00,780 --> 00:35:03,600 avec un require efficacement que 728 00:35:03,600 --> 00:35:05,340 comprend ces plusieurs lignes. 729 00:35:05,340 --> 00:35:08,225 Donc, pour être clair, cela est un fichier appelé fichier config.php. 730 00:35:08,225 --> 00:35:09,350 Et remarquez ce qu'il fait. 731 00:35:09,350 --> 00:35:11,970 Il est apparemment de faire quelque chose , en tournant sur les messages d'erreur incompréhensibles 732 00:35:11,970 --> 00:35:13,680 de sorte que vous pouvez les voir dans le navigateur. 733 00:35:13,680 --> 00:35:15,860 Il est, alors, apparemment nécessitant deux autres fichiers 734 00:35:15,860 --> 00:35:19,530 si cela est comme #include en C, et puis ce que nous avons vu, 735 00:35:19,530 --> 00:35:22,720 et nous avons compté sur, ceci permet d'activer qui panier comme fonctionnalité. 736 00:35:22,720 --> 00:35:25,610 >> Cela signifie une volonté de cookie être envoyé avant et en arrière. 737 00:35:25,610 --> 00:35:27,290 Alors, pourquoi est-ce intéressant? 738 00:35:27,290 --> 00:35:32,460 Eh bien, si nous revenons à cette répertoire et ouvrir, par exemple, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Notez que PHP ne constantes de soutien, il est pas tout à fait comme #define en C 741 00:35:38,840 --> 00:35:41,290 Au lieu de cela, vous littéralement dire défini, et avis 742 00:35:41,290 --> 00:35:44,110 que je l'ai stocké à l'avance quatre constantes dans ce fichier. 743 00:35:44,110 --> 00:35:47,020 Un pour la base de données d'aujourd'hui, pour mon mot de passe, pour mon nom, 744 00:35:47,020 --> 00:35:48,690 et le nom du serveur. 745 00:35:48,690 --> 00:35:51,644 Donc, ce sont en fait vont être assez similaire à problème posé sept. 746 00:35:51,644 --> 00:35:54,560 Et enfin, et ceci est où je suis allez obtenir quelques belles fonctionnalité 747 00:35:54,560 --> 00:35:59,000 du personnel, dans functions.php est un tas de code que nous avons écrit, 748 00:35:59,000 --> 00:36:01,040 et je volé une partie de cette de problème mis sept 749 00:36:01,040 --> 00:36:05,920 pour aujourd'hui, qui fait un tas de choses et nous allons simplement regarder l'un d'eux 750 00:36:05,920 --> 00:36:07,270 en particulier. 751 00:36:07,270 --> 00:36:09,720 Cette fonction ici, requête, va être 752 00:36:09,720 --> 00:36:13,600 la fonction PHP que nous appelons pour exécuter SQL. 753 00:36:13,600 --> 00:36:16,070 Il ya un moment où nous étions à l'aide phpMyAdmin, mais qui est juste 754 00:36:16,070 --> 00:36:18,720 de tri des fins d'apprentissage des fins de diagnostic et 755 00:36:18,720 --> 00:36:20,494 et oublier votre ensemble de base de données. 756 00:36:20,494 --> 00:36:22,660 Lorsque vous utilisez réellement votre base de données, vous, l'humain, 757 00:36:22,660 --> 00:36:24,100 ne sont évidemment pas aller à tirer un web 758 00:36:24,100 --> 00:36:25,740 Cette page chaque fois que quelqu'un enregistre. 759 00:36:25,740 --> 00:36:29,870 Vous allez écrire du code qui inserts et supprime les utilisateurs sur demande, 760 00:36:29,870 --> 00:36:32,490 et nous allons faire ce par l'intermédiaire de la fonction d'interrogation. 761 00:36:32,490 --> 00:36:35,360 Si je fais défiler vers le bas maintenant, il ya va être un peu plus de fonctionnalités. 762 00:36:35,360 --> 00:36:37,170 Rediriger va une fonction que nous avons écrit 763 00:36:37,170 --> 00:36:40,160 pour vous qui vous permet de envoyer l'utilisateur vers une autre URL, 764 00:36:40,160 --> 00:36:43,780 et rendre est une fonction, tout comme nous avons vu lundi, qui rend en fait 765 00:36:43,780 --> 00:36:48,000 un modèle, mais plus sur ceux-ci dans la forme de propre pied pset7 travers. 766 00:36:48,000 --> 00:36:50,500 Pour l'instant, nous allons aller de l'avant et le faire. 767 00:36:50,500 --> 00:36:54,860 >> Laissez-moi aller dans mon tableau de conférences et voir qu'il n'y a rien pour le moment 768 00:36:54,860 --> 00:36:59,640 ici pour l'instant, et laissez-moi aussi aller dans mon répertoire public, où 769 00:36:59,640 --> 00:37:02,780 il ya juste un fichier index.php. 770 00:37:02,780 --> 00:37:06,920 Ce fichier semble être super simple pour le moment, il semble juste comme ça. 771 00:37:06,920 --> 00:37:09,110 Très semblable à la façon dont nous gauche de lundi. 772 00:37:09,110 --> 00:37:11,945 Je nécessitant ce fichier, config.php, qui se trouve dans 773 00:37:11,945 --> 00:37:15,160 un répertoire comprend, qui est en dot dot, mes parents, 774 00:37:15,160 --> 00:37:17,650 et alors il est juste de rendre ce fichier. 775 00:37:17,650 --> 00:37:18,960 Alors, quel est ce dossier? 776 00:37:18,960 --> 00:37:24,700 >> Ouvrons dans mes modèles form.php, et nous verrons cela. 777 00:37:24,700 --> 00:37:28,500 Super simple, apparemment, cette forme est va présenter par un $ _GET ou $ _POST. 778 00:37:28,500 --> 00:37:29,320 Test de cohérence rapide. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Littéralement rechercher visuellement le fichier. 781 00:37:35,690 --> 00:37:36,610 Méthode égale poste. 782 00:37:36,610 --> 00:37:39,280 Donc, ça ne va pas à utiliser l'URL, comme Google est le cas, il va trier de cache 783 00:37:39,280 --> 00:37:41,030 les informations derrière les scènes et il est 784 00:37:41,030 --> 00:37:43,580 va se soumettre à un fichier appelé register.php, 785 00:37:43,580 --> 00:37:45,660 et qui est le fichier nous avons pas encore écrit 786 00:37:45,660 --> 00:37:47,610 mais ce que cela va pour ressembler est la suivante. 787 00:37:47,610 --> 00:37:52,670 >> Si je vais à une page séparée Ceci est ce localhost / index.php ressemble. 788 00:37:52,670 --> 00:37:56,930 Et encore une fois, le serveur de juste en supposant index.php. 789 00:37:56,930 --> 00:37:57,910 Entrez. 790 00:37:57,910 --> 00:37:59,870 Voilà donc où nous en sommes à, et ce que je veux faire 791 00:37:59,870 --> 00:38:02,450 est en mesure de saisir les choses comme David, et puis 792 00:38:02,450 --> 00:38:08,050 mon numéro de téléphone, qui dira 617-555-1212 pour l'instant, inscrivez-vous 793 00:38:08,050 --> 00:38:09,910 et maintenant register.php n'a pas été trouvé. 794 00:38:09,910 --> 00:38:11,440 Je dois donc mettre en œuvre. 795 00:38:11,440 --> 00:38:13,320 Donc, nous allons fouetter rapidement quelque chose comme cela. 796 00:38:13,320 --> 00:38:18,640 Laissez-moi aller dans mon répertoire public et faire de gedit register.php, 797 00:38:18,640 --> 00:38:22,300 et maintenant je vais aller de l'avant et lancer le mode PHP, comme nous l'avons fait le lundi, 798 00:38:22,300 --> 00:38:25,430 et la balise de près PHP, et faisons un certain nombre de choses. 799 00:38:25,430 --> 00:38:28,336 >> Alors là, je sais, à partir de avoir écrit cette forme, 800 00:38:28,336 --> 00:38:29,960 que je veux vérifier les points suivants. 801 00:38:29,960 --> 00:38:35,670 Si elle est vide, quelle que soit l'utilisateur tapé dans le champ Nom, puis 802 00:38:35,670 --> 00:38:39,860 Je vais dire quelque chose comme se excuser manquant nom. 803 00:38:39,860 --> 00:38:42,380 Apologize, quant à lui, est pas intégré dans PHP chose, 804 00:38:42,380 --> 00:38:45,970 il est une fonction que nous avons écrit dans functions.php pour pset7 805 00:38:45,970 --> 00:38:47,940 de sorte que vous avez accès. 806 00:38:47,940 --> 00:38:53,830 Sinon, si l'autre domaine est vide, le numéro, puis je suis 807 00:38:53,830 --> 00:38:58,370 va présenter des excuses à la utilisateur et dire nombre manquant. 808 00:38:58,370 --> 00:38:59,320 Enregistrez ce fichier. 809 00:38:59,320 --> 00:39:02,640 >> Maintenant, revenons à mon navigateur, revenir à la tribune essayer à nouveau. 810 00:39:02,640 --> 00:39:04,070 Créer. 811 00:39:04,070 --> 00:39:05,090 D'accord. 812 00:39:05,090 --> 00:39:06,730 Rien ne se passe, ce qui est bon. 813 00:39:06,730 --> 00:39:08,120 Je ne reçois un message d'erreur. 814 00:39:08,120 --> 00:39:11,651 Mais si au contraire, nous allons Recharger cette la page et ne pas offrir quelque chose. 815 00:39:11,651 --> 00:39:12,150 Bon sang. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Faire. 818 00:39:17,140 --> 00:39:18,810 Créer. 819 00:39:18,810 --> 00:39:20,350 Qu'ai-je fait de mal? 820 00:39:20,350 --> 00:39:24,860 Si vide, le nom $ _POST. 821 00:39:24,860 --> 00:39:26,350 Dire encore? 822 00:39:26,350 --> 00:39:27,670 >> Oh, bien sûr. 823 00:39:27,670 --> 00:39:30,919 Je oublié la partie la plus importante, qui est require ("../ includes / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Je besoin d'avoir accès à la excuser fonction, qui 826 00:39:36,460 --> 00:39:37,770 est pourquoi rien ne se passait. 827 00:39:37,770 --> 00:39:39,460 Ne existe pas réellement la fonction. 828 00:39:39,460 --> 00:39:40,640 Essayons donc de ce message. 829 00:39:40,640 --> 00:39:42,350 Disons rechargez la page, cliquez sur Enregistrer. 830 00:39:42,350 --> 00:39:43,060 D'accord. 831 00:39:43,060 --> 00:39:43,770 Il est là. 832 00:39:43,770 --> 00:39:45,700 Ainsi, la sortie nous sommes voir ici est le résultat 833 00:39:45,700 --> 00:39:47,685 d'appeler une s'excuser fonction, super simple, 834 00:39:47,685 --> 00:39:50,060 et il se contente d'afficher quoi que Je lui donne comme argument. 835 00:39:50,060 --> 00:39:51,370 >> Très bien, nous allons donc coopérer. 836 00:39:51,370 --> 00:39:54,240 Donnons mon nom comme David, inscrivez-vous, 837 00:39:54,240 --> 00:39:56,890 manquant numéro OK let de prévoir que, trop. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Créer. 840 00:39:59,250 --> 00:39:59,750 D'accord. 841 00:39:59,750 --> 00:40:02,760 Donc, tout va bien maintenant, juste rien intéressant se passe. 842 00:40:02,760 --> 00:40:06,000 Alors maintenant, nous allons faire quelque chose de plus intéressant se passer comme ça. 843 00:40:06,000 --> 00:40:09,980 Laissez-moi aller dans phpMyAdmin, et de laisser en fait créer une table appelée utilisateurs, 844 00:40:09,980 --> 00:40:12,330 Je vais donner trois colonnes, et je vais rapidement 845 00:40:12,330 --> 00:40:16,250 créer des ID, puis nom, puis le numéro, 846 00:40:16,250 --> 00:40:18,832 et le champ ID je suis va laisser comme un int. 847 00:40:18,832 --> 00:40:20,790 Le champ de nom, je vais pour laisser un varchar, 848 00:40:20,790 --> 00:40:23,257 et nous dirons 64, quelque peu arbitraire. 849 00:40:23,257 --> 00:40:25,090 Le nombre que je vais à faire, vous savez quoi? 850 00:40:25,090 --> 00:40:27,350 Nous allons en soutenir chiffres américains ici, 851 00:40:27,350 --> 00:40:31,510 donc je vais faire quelque chose comme l'omble chevalier et puis 10 caractères 852 00:40:31,510 --> 00:40:34,540 max pour un code de zone puis sept chiffres. 853 00:40:34,540 --> 00:40:37,870 Et puis ici, je vais préciser incrémentation automatique ce domaine, 854 00:40:37,870 --> 00:40:40,550 faire une clé primaire, et Je vais aller de l'avant et ne pas 855 00:40:40,550 --> 00:40:42,240 vérifier un de ces autres boîtes. 856 00:40:42,240 --> 00:40:48,030 >> Alors, quand je enfin cliquez sur Enregistrer, et je reviens à ma table des utilisateurs, 857 00:40:48,030 --> 00:40:52,270 voilà ce que ça ressemble si je maintenant cliquer sur une structure un nouvel onglet. 858 00:40:52,270 --> 00:40:54,550 Donc, cela, pour être clair, est juste manière de phpMyAdmin 859 00:40:54,550 --> 00:40:58,570 de dire votre table de base de données a une identité, un nom, et un certain nombre 860 00:40:58,570 --> 00:41:02,040 avec ces configurations particulières et nous allons ignorer le reste des champs 861 00:41:02,040 --> 00:41:03,140 là pour l'instant. 862 00:41:03,140 --> 00:41:04,810 >> Alors maintenant, qu'est-ce que je veux faire? 863 00:41:04,810 --> 00:41:09,060 Donc, si je vais maintenant dans mon code source, si tout va bien 864 00:41:09,060 --> 00:41:11,190 Je veux exécuter la requête suivante. 865 00:41:11,190 --> 00:41:14,970 Insérer dans, et je ne peux disent les utilisateurs Je ne le font pas strictement 866 00:41:14,970 --> 00:41:18,620 besoin de ceux qui sont restés ticks si elle est pas un mot dangereux comme les utilisateurs. 867 00:41:18,620 --> 00:41:22,810 Je vais vous dire le nom, nombre, et puis ici je suis 868 00:41:22,810 --> 00:41:24,960 ne va pas coder en dur le chiffres des valeurs encore. 869 00:41:24,960 --> 00:41:26,760 Je vais mettre deux points d'interrogation. 870 00:41:26,760 --> 00:41:29,320 Et cela est une convention dans de nombreuses langues 871 00:41:29,320 --> 00:41:31,730 laquelle, si vous voulez avoir un espace réservé pour une chaîne 872 00:41:31,730 --> 00:41:34,105 vous allez utiliser la question marques, pour des raisons nous allons 873 00:41:34,105 --> 00:41:36,370 revenir pour discuter de sécurité, et ici 874 00:41:36,370 --> 00:41:39,420 Je vais passer à ceux deux champs affichent nom, 875 00:41:39,420 --> 00:41:44,850 et puis après nombre, et maintenant enregistrer le fichier. 876 00:41:44,850 --> 00:41:47,090 >> Et maintenant, je vais descendre ici est super 877 00:41:47,090 --> 00:41:55,690 simplement dire rendersuccess.php, qui va être un autre modèle. 878 00:41:55,690 --> 00:41:57,380 Je vais créer très vite. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php et je vais à-dire le succès de H1 dans ce fichier. 880 00:42:06,270 --> 00:42:06,990 Bien. 881 00:42:06,990 --> 00:42:11,312 Alors maintenant, revenons à la navigateur, où je me suis rendu avant. 882 00:42:11,312 --> 00:42:14,270 Allons de l'avant et je l'ai écrit confirmer dans David, je l'ai écrit dans un numéro de téléphone, 883 00:42:14,270 --> 00:42:15,390 enregistrer. 884 00:42:15,390 --> 00:42:16,100 Bon sang. 885 00:42:16,100 --> 00:42:17,420 Qu'ai-je fait de mal? 886 00:42:17,420 --> 00:42:20,850 Donc, je vois une erreur ici, vous avoir une erreur dans votre syntaxe SQL. 887 00:42:20,850 --> 00:42:24,900 Permettez-moi de revenir au gedit, je Je reviens à register.php, 888 00:42:24,900 --> 00:42:28,830 et qu'est-ce que je laisse de côté que était important dernière fois? 889 00:42:28,830 --> 00:42:29,722 Je besoin de cela. 890 00:42:29,722 --> 00:42:32,930 Vous voulez savoir ce que les autres que de Ayant remarqué avant, mais je besoin de cela. 891 00:42:32,930 --> 00:42:35,596 >> Alors maintenant, revenons, et ce était utile de voir dans le navigateur 892 00:42:35,596 --> 00:42:37,680 et voilà pourquoi dans config.php nous cracher erreurs. 893 00:42:37,680 --> 00:42:41,770 Allons de l'avant et de rechargement, cliquez sur Continuer, le succès. 894 00:42:41,770 --> 00:42:47,060 Alors maintenant, laissez-moi aller à mon base de données ici et cliquez sur Utilisateurs, 895 00:42:47,060 --> 00:42:51,680 et parcourir, et je remarque maintenant avoir David dans ma base de données ici. 896 00:42:51,680 --> 00:42:55,810 Maintenant, techniquement ce site est pas encore sur le réseau Internet public, 897 00:42:55,810 --> 00:42:57,890 donc je ne peux pas avoir d'autre personnes à mettre ici, 898 00:42:57,890 --> 00:43:01,120 mais si je voulais maintenant, pour exemple, envoyer moi un message texte. 899 00:43:01,120 --> 00:43:03,920 Allons sur une branche ici et voir si cela fonctionne réellement. 900 00:43:03,920 --> 00:43:07,331 Je vais aller de l'avant et supprimer cette ligne 901 00:43:07,331 --> 00:43:09,080 et nous brouiller cette dans la vidéo plus tard 902 00:43:09,080 --> 00:43:11,900 si nous ne disposons pas de la Internet tout entier me textos, 903 00:43:11,900 --> 00:43:17,270 et nous allons maintenant passer à la navigateur et nous allons passer à la leçon 904 00:43:17,270 --> 00:43:22,040 et nous tapons dans différents nombre ici, inscrivez-vous, le succès. 905 00:43:22,040 --> 00:43:25,550 >> Alors maintenant, mon numéro est probablement en la base de données, et maintenant la partie amusante. 906 00:43:25,550 --> 00:43:28,774 Nous allons utiliser PHP en fait à faire quelque chose programmation, 907 00:43:28,774 --> 00:43:30,940 soit à partir de la commande ligne ou d'ailleurs, 908 00:43:30,940 --> 00:43:32,773 et pour l'instant je suis juste va garder les choses simples 909 00:43:32,773 --> 00:43:36,230 et je vais aller dans ma répertoire ici et faire ce qui suit. 910 00:43:36,230 --> 00:43:44,920 Scénario Gedit disons, nous allons appeler texte, #! / user / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 comme nous l'avons vu la dernière fois. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Maintenant, je vais faire exiger comprend config.php, 914 00:43:55,055 --> 00:43:57,360 même si cela peut induire une légère erreur. 915 00:43:57,360 --> 00:44:03,960 Et maintenant, je vais aller de l'avant et dire rangées, requête, sélectionnez étoiles des utilisateurs, 916 00:44:03,960 --> 00:44:08,149 et maintenant ici, je vais faire une technique la dernière fois pour chaque rangée de lignes que. 917 00:44:08,149 --> 00:44:09,690 Et je vais faire quelque chose de simple. 918 00:44:09,690 --> 00:44:19,090 Printf disons nom est ce, et est ce numéro, barre oblique inverse n. 919 00:44:19,090 --> 00:44:23,320 Et maintenant, je vais passer en ligne citer le nom unquote, 920 00:44:23,320 --> 00:44:28,140 et nombre rangée citation de fin de citation, et maintenant nous allons aller de l'avant 921 00:44:28,140 --> 00:44:31,430 et la fenêtre de ma borne chmod a + x ce faire 922 00:44:31,430 --> 00:44:33,970 ce script appelé texte exécutable. 923 00:44:33,970 --> 00:44:36,080 Et maintenant, nous allons distribuer le texte. 924 00:44:36,080 --> 00:44:37,590 >> OK, donc progresser. 925 00:44:37,590 --> 00:44:39,960 Donc, je l'ai un maintenant écrit script de ligne de commande, 926 00:44:39,960 --> 00:44:43,300 dans un langage appelé PHP, qui, à cause de cela nécessitera ligne, 927 00:44:43,300 --> 00:44:46,380 a accès à tous ceux configuration constantes que je spécifiée. 928 00:44:46,380 --> 00:44:48,177 Le nom de la base de données et ainsi de suite. 929 00:44:48,177 --> 00:44:50,260 En fait, juste pour être clair que ce ne sont pas un coup de chance, 930 00:44:50,260 --> 00:44:54,730 laissez-moi aller de l'avant et inscrire, très vite, quelqu'un d'autre comme Rob 931 00:44:54,730 --> 00:44:58,890 et je lui donnerai le numéro 555-1212. 932 00:44:58,890 --> 00:45:01,557 >> Et maintenant, si je lance le script nouveau, notez le pouvoir 933 00:45:01,557 --> 00:45:03,140 de ce que nous faisons avec la base de données. 934 00:45:03,140 --> 00:45:07,680 Maintenant, je l'ai immédiatement vu ce que la deux autres lignes sont dans ma base de données. 935 00:45:07,680 --> 00:45:10,699 Alors maintenant, nous allons essayer de faire quelque chose même amateur intérieur, 936 00:45:10,699 --> 00:45:12,740 et ceci est la partie que nous avons non testé à l'avance, 937 00:45:12,740 --> 00:45:15,910 de sorte que la dernière fois que je l'ai fait ce les choses se sont horriblement mal, 938 00:45:15,910 --> 00:45:17,120 nous avons la vidéo à cet effet. 939 00:45:17,120 --> 00:45:18,286 >> En fait, oui, drôle de côté. 940 00:45:18,286 --> 00:45:20,480 Ainsi, la dernière fois, dans un conférences comme il ya deux ans, 941 00:45:20,480 --> 00:45:23,230 nous avons décidé, je décidai, à être tout cela serait une bonne idée 942 00:45:23,230 --> 00:45:28,150 pour générer dynamiquement les emails au format classe, en utilisant l'ensemble CS50 de base de données 943 00:45:28,150 --> 00:45:33,390 étudiants, qui nous ont donné leur nombre et leurs porteurs de téléphones portables qui vous 944 00:45:33,390 --> 00:45:36,290 pourrait rappeler de pset0, comment raisonner, il se trouve 945 00:45:36,290 --> 00:45:40,650 Je ai eu un bug mineur dans mon programme et fait quelques erreurs en 2012, je crois. 946 00:45:40,650 --> 00:45:43,997 >> Lequel, celui que je devais boucle for fait exactement ce genre de chose, 947 00:45:43,997 --> 00:45:46,580 itération sur la base de données, l'obtention d'un nom à partir de la base de données, 948 00:45:46,580 --> 00:45:49,940 nom de la base de données, puis sur chaque itération de cette boucle je envoyé un e-mail. 949 00:45:49,940 --> 00:45:54,130 Mais au lieu d'envoyer un email, je envoyé un e-mail de la première itération, 950 00:45:54,130 --> 00:45:58,200 et deux e-mails une seconde itération, envoyés trois e-mails une seconde itération, qui 951 00:45:58,200 --> 00:46:01,230 que vous pouvez vous rappeler de notre discussion de notation asymptotique 952 00:46:01,230 --> 00:46:06,400 ce grand O de mauvais, comme n carré est le nombre de messages envoyés, 953 00:46:06,400 --> 00:46:08,560 mais il n'a pas été encore emails il était de messages texte. 954 00:46:08,560 --> 00:46:12,070 >> Et comme vous le savez, la fréquentation est pas super haute vers la fin du semestre 955 00:46:12,070 --> 00:46:15,360 et donc je pensais que ce serait mignon à le temps de dire: «Pourquoi n'êtes-vous pas classe?" 956 00:46:15,360 --> 00:46:17,880 Dans le texte message que je envoyé à toute la classe, 957 00:46:17,880 --> 00:46:22,140 et il était drôle à aimer 50% de la classe, mais l'autre 50%, certains d'entre eux 958 00:46:22,140 --> 00:46:26,102 flippé, je envoyé incroyablement notes sucrées apologétiques 959 00:46:26,102 --> 00:46:28,560 au personnel des excuses pour avoir manqué la conférence juste 960 00:46:28,560 --> 00:46:29,530 cette fois, non? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> Donc, ce serait horriblement mal. 963 00:46:34,030 --> 00:46:37,030 Donc, dans cet esprit, nous allons essayer cette à nouveau, mais juste avec mon numéro. 964 00:46:37,030 --> 00:46:41,940 À l'avance, dans functions.php, Je l'ai écrit cette fonction ici. 965 00:46:41,940 --> 00:46:44,250 Il a appelé texte, et il prend trois arguments. 966 00:46:44,250 --> 00:46:46,360 Un certain nombre, un support, et un message. 967 00:46:46,360 --> 00:46:50,390 >> Je suis en utilisant une instruction switch, qui merveilleusement PHP acceptent des chaînes, et pas seulement 968 00:46:50,390 --> 00:46:53,350 entiers, et je ne mettre en œuvre tout le soutien pour cette encore, 969 00:46:53,350 --> 00:46:55,370 Je viens de faire AT & T et Verizon. 970 00:46:55,370 --> 00:46:57,610 Comme il se révèle que ces transporteurs 971 00:46:57,610 --> 00:47:00,570 ils ont email à des passerelles SMS, où vous pouvez réellement 972 00:47:00,570 --> 00:47:05,529 envoyer un e-mail à une adresse comme le numéro de téléphone à vtext.com 973 00:47:05,529 --> 00:47:08,070 et si l'utilisateur n'a pas bloqué les messages, ça va passer par 974 00:47:08,070 --> 00:47:09,340 est un message de texte. 975 00:47:09,340 --> 00:47:13,270 >> Maintenant, pour ce faire, je vais avoir à ajouter un champ très vite à ma base de données. 976 00:47:13,270 --> 00:47:15,470 Je vais aller en ma structure, et je suis 977 00:47:15,470 --> 00:47:21,880 aller de l'avant et ajouter une champ à la fin de la table. 978 00:47:21,880 --> 00:47:25,227 Cliquons Go, et je suis vais appeler ce transporteur 979 00:47:25,227 --> 00:47:27,310 et pour l'instant je vais laisser cela comme un texte de la barre, 980 00:47:27,310 --> 00:47:29,320 mais nous pouvons être amateur dans l'avenir. 981 00:47:29,320 --> 00:47:31,961 Je vais aller vite dans ma table, et je suis 982 00:47:31,961 --> 00:47:34,210 me débarrasser de Rob, parce que ya un faux numéro, 983 00:47:34,210 --> 00:47:38,540 Je vais aller en modifier ici et je suis va changer ma porte manuellement 984 00:47:38,540 --> 00:47:43,410 être Verizon, dont il est, et maintenant ici. 985 00:47:43,410 --> 00:47:44,980 >> Faisons un rapide test de cohérence. 986 00:47:44,980 --> 00:47:52,730 Ouvrons notre script de texte, qui ressemble à ceci, le transporteur est% s. 987 00:47:52,730 --> 00:47:58,230 Nous faisons beaucoup plus erreur vérifier que je l'ai fait en 2012, le transporteur. 988 00:47:58,230 --> 00:48:01,160 Et maintenant, je vais aller avant et re-exécuter le script. 989 00:48:01,160 --> 00:48:01,660 D'accord. 990 00:48:01,660 --> 00:48:06,100 Carrier est Verizon, ce qui signifie maintenant, espérons que je peux faire juste cela. 991 00:48:06,100 --> 00:48:08,360 Correctement cette année, nous l'espérons, nous y voilà. 992 00:48:08,360 --> 00:48:12,200 >> Donc, à l'intérieur de cette boucle, je suis va avoir non seulement cette printf, 993 00:48:12,200 --> 00:48:15,990 Je vais aussi appeler texte et l'utilisation de cette fonction de rappel 994 00:48:15,990 --> 00:48:19,670 était il faut un nombre, une le transporteur, et un message. 995 00:48:19,670 --> 00:48:23,310 Voyons donc, le nombre va être rangée entre guillemets "nombre" 996 00:48:23,310 --> 00:48:31,660 rangée citation «transporteur», fin de citation et le dernier était un message. 997 00:48:31,660 --> 00:48:36,250 Ne pas gâcher cette année, point-virgule. 998 00:48:36,250 --> 00:48:36,780 >> D'accord. 999 00:48:36,780 --> 00:48:38,280 Croisons les doigts. 1000 00:48:38,280 --> 00:48:39,970 Voyons voir si cela fonctionne. 1001 00:48:39,970 --> 00:48:41,720 Très bien, alors. 1002 00:48:41,720 --> 00:48:43,000 Et ce est parti. 1003 00:48:43,000 --> 00:48:47,380 Disons déverrouiller le téléphone, croiser les doigts, que diable. 1004 00:48:47,380 --> 00:48:50,300 May-- Undefined variable oh Attendez, attendez, attendez, très vite. 1005 00:48:50,300 --> 00:48:51,340 Très vite, très vite. 1006 00:48:51,340 --> 00:48:53,380 Ceci est vraiment la peine. 1007 00:48:53,380 --> 00:48:57,710 Permettez-moi de saisir, permettez-moi de saisir, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Merci, les textes ont commencé par quelqu'un d'autre. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Permettez-moi aller de l'avant et ouvrir réel rapide, dropbox.php / mail ici. 1011 00:49:11,650 --> 00:49:12,660 Veille. 1012 00:49:12,660 --> 00:49:14,455 Vraiment la peine. 1013 00:49:14,455 --> 00:49:17,430 Téléchargements. 1014 00:49:17,430 --> 00:49:18,560 OK, la source src8m. 1015 00:49:18,560 --> 00:49:19,700 D'accord. 1016 00:49:19,700 --> 00:49:21,380 >> Besoin d'une ligne plus ici. 1017 00:49:21,380 --> 00:49:24,530 Oh ça y est, il est dans Frosh GI, il est dans le registre à trois. 1018 00:49:24,530 --> 00:49:28,820 Oh bonjour, Margo, je vous remercie beaucoup. 1019 00:49:28,820 --> 00:49:31,130 OK, et je manquais cette ligne ici. 1020 00:49:31,130 --> 00:49:33,010 Permettez-moi de saisir rapidement cette ligne de code, 1021 00:49:33,010 --> 00:49:36,200 qui inclut l'e-mail ou une bibliothèque que je veux vraiment utiliser, 1022 00:49:36,200 --> 00:49:38,300 Je vais rapidement revenir en fonctions, 1023 00:49:38,300 --> 00:49:42,337 Je vais aller au sommet de cette déposer et exiger ce fichier ainsi, 1024 00:49:42,337 --> 00:49:45,420 et maintenant je vais passer ma vraiment doigts quand je reviens à la commande 1025 00:49:45,420 --> 00:49:49,530 script de ligne, qui est à l'intérieur de répertoire de l'hôte local d'aujourd'hui. 1026 00:49:49,530 --> 00:49:50,610 Exécutez texte. 1027 00:49:50,610 --> 00:49:52,720 Entrez. 1028 00:49:52,720 --> 00:49:53,220 Mail. 1029 00:49:53,220 --> 00:49:53,719 Veille. 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 Veille. 1032 00:49:59,600 --> 00:50:01,680 Mail. 1033 00:50:01,680 --> 00:50:02,290 Oh, OK. 1034 00:50:02,290 --> 00:50:03,870 Et ce est parti. 1035 00:50:03,870 --> 00:50:06,880 >> Courrier obtient un nouveau courrier de PHP. 1036 00:50:06,880 --> 00:50:09,970 Ai-je bien compris? 1037 00:50:09,970 --> 00:50:11,067 Bon sang. 1038 00:50:11,067 --> 00:50:12,150 To-- oh, attendez, attendez, attendez. 1039 00:50:12,150 --> 00:50:12,649 Etre prêt. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Je vous promets, cela est va être vraiment la peine. 1042 00:50:18,630 --> 00:50:20,340 Adresse. 1043 00:50:20,340 --> 00:50:24,390 Voilà pourquoi je ne fais pas de la exemples droite avant la classe. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 Les destinataires suivants a échoué. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Essayons une dernière chose. 1048 00:50:33,040 --> 00:50:40,660 SMTP définir à partir de, ajouter adresse, l'adresse est en effet que. 1049 00:50:40,660 --> 00:50:43,980 Essayons cette dernière partie de l'adresse. 1050 00:50:43,980 --> 00:50:47,210 Oh, je suis vraiment triste en ce moment. 1051 00:50:47,210 --> 00:50:47,854 Merci. 1052 00:50:47,854 --> 00:50:50,270 Mais je l'apprécie vraiment tout les textes vous avons envoyé. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Vous avez ce David. 1055 00:50:56,320 --> 00:50:59,310 Vous souffler. 1056 00:50:59,310 --> 00:51:01,720 Laissons là et nous fixerons le lundi. 1057 00:51:01,720 --> 00:51:04,290 Rendez-vous donc. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: Et maintenant profonde Thoughts par Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 Si un arbre binaire tombe dans la forêt et ne se situe autour de C it-- [gloussant]. 1061 00:51:17,590 --> 00:51:18,998