1 00:00:00,000 --> 00:00:10,393 >> [Muziek] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: Oké. 4 00:00:12,120 --> 00:00:12,830 Welkom terug. 5 00:00:12,830 --> 00:00:13,890 Dit is CS50. 6 00:00:13,890 --> 00:00:15,570 Dit is het einde van week 8. 7 00:00:15,570 --> 00:00:18,360 En zoals u weet, hebben we vrij reguliere kantooruren in een paar 8 00:00:18,360 --> 00:00:21,090 van de eetzalen, inclusief Annenberg. 9 00:00:21,090 --> 00:00:23,860 En een aantal van het team vriendelijk nam een ​​aantal foto's de laatste tijd. 10 00:00:23,860 --> 00:00:26,230 En ter ere van Halloween, we dachten dat we zouden 11 00:00:26,230 --> 00:00:30,160 een die eerder gevangen ons door te delen verrassing hier in Annenberg Hall net 12 00:00:30,160 --> 00:00:31,490 de andere nacht. 13 00:00:31,490 --> 00:00:36,300 Uw klasgenoot Jacob poseerde voor deze foto, maar was meer amusant 14 00:00:36,300 --> 00:00:39,760 was op Facebook, de daaruit voortvloeiende gesprek dat daarna gebeurde. 15 00:00:39,760 --> 00:00:43,020 >> Zijn eerste post in reactie om zijn foto was dit. 16 00:00:43,020 --> 00:00:46,740 Een paar minuten later, besloot hij één up zich met dit. 17 00:00:46,740 --> 00:00:53,800 Het ging toen om naar deze, en dan, nog meer vermakelijk 18 00:00:53,800 --> 00:00:55,320 is wanneer zijn moeder viel hem bij. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 En dan uiteindelijk, lijkt dit was gewoon 21 00:01:01,800 --> 00:01:04,860 een prachtige list voor een spelen die gaande is. 22 00:01:04,860 --> 00:01:07,080 >> Dus, als je zou willen Jakob en anderen te zien, 23 00:01:07,080 --> 00:01:10,880 onder hen Cynthia Meng, die is achter de schermen van CS50 zone personeel, 24 00:01:10,880 --> 00:01:13,970 ga naar de volgende URL en dit stuk hier. 25 00:01:13,970 --> 00:01:18,810 Dus zonder verder oponthoud, vandaag hebben we blijven deze blik op web programmeren, 26 00:01:18,810 --> 00:01:21,810 en de feitelijke totstandkoming van programma's die niet draaien op je command line, 27 00:01:21,810 --> 00:01:24,080 maar draaien binnen een browser. 28 00:01:24,080 --> 00:01:26,320 >> Vermoedelijk nu of zeer kort, je gaat 29 00:01:26,320 --> 00:01:30,200 te zijn in het midden van de uitvoering uw eigen webserver, die 30 00:01:30,200 --> 00:01:31,700 verschilt van web programmeren. 31 00:01:31,700 --> 00:01:36,210 De webserver in pset6 is alles over het schrijven van software die weet hoe te nemen 32 00:01:36,210 --> 00:01:39,300 HTTP verzoeken van een browser, of zelfs van u, een mens, 33 00:01:39,300 --> 00:01:42,340 met een programma genaamd Telnet, en dan reageren op deze verzoeken, hetzij 34 00:01:42,340 --> 00:01:48,600 door uitspugen een HTML-bestand, of een jpeg of gif, of zelfs een .php bestand. 35 00:01:48,600 --> 00:01:52,490 >> Maar met een webserver, is het niet verondersteld om gewoon open een PHP-bestand, 36 00:01:52,490 --> 00:01:55,260 iets eindigend in php, en dan spugen de inhoud. 37 00:01:55,260 --> 00:01:58,440 Het hoort te doen wat naar dat bestand eerst? 38 00:01:58,440 --> 00:01:59,390 Zo te zeggen. 39 00:01:59,390 --> 00:02:04,060 Niet compileren, zeiden we op maandag, maar rather-- Dus, interpreteren. 40 00:02:04,060 --> 00:02:08,070 >> PHP is een geïnterpreteerde taal, en dus een van de belangrijkste functies in uw web 41 00:02:08,070 --> 00:02:11,550 server, zij het uitgevoerd door ons, is dit vermogen voor uw webserver 42 00:02:11,550 --> 00:02:12,490 op te merken, oh. 43 00:02:12,490 --> 00:02:14,580 Dit is een bestand dat eindigt op .php. 44 00:02:14,580 --> 00:02:17,970 Laat me niet alleen op te sturen naar de gebruiker alsof het statische content, 45 00:02:17,970 --> 00:02:20,970 maar laat me lezen lijn door lijn, van links naar rechts, en interpreteren. 46 00:02:20,970 --> 00:02:23,030 >> En te doen, dat je jongens zullen wezen 47 00:02:23,030 --> 00:02:26,520 punter om een ​​programma in het toestel, en op een terrein van computer systemen, 48 00:02:26,520 --> 00:02:27,500 belde net PHP. 49 00:02:27,500 --> 00:02:30,579 Dat is de naam van de PHP eigen tolk taal's. 50 00:02:30,579 --> 00:02:33,120 Zo, dat stuk implementeren we voor u, en wat er over is voor u, 51 00:02:33,120 --> 00:02:35,240 Uiteindelijk, is een aantal van stukken, waaronder 52 00:02:35,240 --> 00:02:37,960 implementeert ondersteuning voor statische inhoud. 53 00:02:37,960 --> 00:02:40,180 >> Maar nu, en probleem stelde zeven, je bent 54 00:02:40,180 --> 00:02:43,660 zal gaan overgang naar eigenlijk het schrijven van de PHP-code 55 00:02:43,660 --> 00:02:45,970 dat wordt geïnterpreteerd in gesprek met een back-end 56 00:02:45,970 --> 00:02:47,960 database die informatie opslaat. 57 00:02:47,960 --> 00:02:51,020 Dus laten we beter eerst begrijpen een paar van deze superglobals 58 00:02:51,020 --> 00:02:53,720 en hoeveel macht je uit de box gratis 59 00:02:53,720 --> 00:02:55,250 met een taal zoals PHP. 60 00:02:55,250 --> 00:02:57,350 Dingen die je niet hebt om jezelf te implementeren. 61 00:02:57,350 --> 00:03:01,700 >> Dus, we zagen op maandag $ _GET, die een superglobal, 62 00:03:01,700 --> 00:03:05,496 die net PHP is spreken voor een globale variabele kunt u overal toegang. 63 00:03:05,496 --> 00:03:06,620 En wat er in zit van $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Wat is de binnenkant van deze superglobal die we zien? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Zeker statistisch bij minste één persoon weet. 68 00:03:19,020 --> 00:03:21,590 Wat zit er in van $ _GET? 69 00:03:21,590 --> 00:03:22,426 Yeah? 70 00:03:22,426 --> 00:03:24,130 >> Publiek: Het is de variabelen je in de query string. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. MALAN: Perfect. 72 00:03:24,530 --> 00:03:26,488 Het is de variabelen die u zet in de query string. 73 00:03:26,488 --> 00:03:29,910 Dus, in onze oudere voorbeeld reimplementing Google als we hadden 74 00:03:29,910 --> 00:03:34,130 een URL, en dan vraagteken, die het begin van HTTP bakent 75 00:03:34,130 --> 00:03:37,950 parameters, dan hadden we q gelijk iets, als q gelijk aan katten, 76 00:03:37,950 --> 00:03:41,500 wat zou automatisch naar binnen gaan van die $ _GET super global voor u, 77 00:03:41,500 --> 00:03:47,430 door PHP, is een sleutel van Q, en van de waarde daarvan van katten. 78 00:03:47,430 --> 00:03:51,250 >> Met andere woorden, $ _GET en alle deze dingen zijn associatieve arrays, 79 00:03:51,250 --> 00:03:54,530 hash tabellen van soorten, dat store sleutels en waarden. 80 00:03:54,530 --> 00:03:57,980 Nu, terug in pset5, de hash tafel je zou hebben geïmplementeerd, 81 00:03:57,980 --> 00:04:00,220 of probeer je zou hebben geïmplementeerd, echt 82 00:04:00,220 --> 00:04:04,010 was effectief een associatieve array, een datastructuur 83 00:04:04,010 --> 00:04:07,220 waarbij u kunt associëren toetsen met waarden. 84 00:04:07,220 --> 00:04:09,690 >> Maar in pset5, waren de waarden triviaal. 85 00:04:09,690 --> 00:04:12,430 De waarde was in wezen waar of onwaar. 86 00:04:12,430 --> 00:04:13,900 Is het woord in het woordenboek? 87 00:04:13,900 --> 00:04:18,279 Dus, als je een woord als appel hash om te zien of appel is in het woordenboek, 88 00:04:18,279 --> 00:04:21,820 uw controlefunctie vermoedelijk teruggekeerd waar of onwaar. 89 00:04:21,820 --> 00:04:24,120 Dus, dat is in feite de waarde krijgen we terug. 90 00:04:24,120 --> 00:04:26,456 >> Maar we zagen op maandag kort, kunt u zeker 91 00:04:26,456 --> 00:04:28,830 associëren interessanter waarden dan waar of onwaar 92 00:04:28,830 --> 00:04:30,790 met sleutels, zoals appel. 93 00:04:30,790 --> 00:04:33,909 Je zou eigenlijk terug een willekeurige reeks tekens, en inderdaad, 94 00:04:33,909 --> 00:04:36,200 dat is wat $ _GET en deze andere variabelen laten doen. 95 00:04:36,200 --> 00:04:40,595 >> Dus $ _POST is vergelijkbaar in de geest, maar als je een formulier via post, 96 00:04:40,595 --> 00:04:44,490 een andere methode die het HTTP gebruikt voor dingen zoals credit cards, 97 00:04:44,490 --> 00:04:48,410 en prive-informatie, en zelfs binaire informatie zoals foto's, 98 00:04:48,410 --> 00:04:51,840 die dingen uiteindelijk binnenkant van $ _POST. 99 00:04:51,840 --> 00:04:53,770 En eigenlijk voor bestanden zoals JPEG's en wat al niet, 100 00:04:53,770 --> 00:04:58,290 er is zelfs een ander dat is niet hier genoemd $ _FILES ook. 101 00:04:58,290 --> 00:05:01,280 >> Dus, server zullen we niet te blijven stilstaan ​​bij veel, maar het geeft je toegang 102 00:05:01,280 --> 00:05:04,860 voor het sorteren van lager niveau details over de server zelf die u gebruikt. 103 00:05:04,860 --> 00:05:07,430 Cookie en sessie, hoewel, zullen we effectief zien nu. 104 00:05:07,430 --> 00:05:10,940 De laatste is wat we gebruiken om te implementeren de notie van een winkelwagentje. 105 00:05:10,940 --> 00:05:14,480 Een super eenvoudig, maar recall dat we dit voorbeeld hier, 106 00:05:14,480 --> 00:05:17,640 tellen hoe vaak je had deze pagina eerder bezocht. 107 00:05:17,640 --> 00:05:20,850 >> Maar vandaag de dag, in plaats van alleen te kijken naar het effect van deze, laten we open te stellen 108 00:05:20,850 --> 00:05:22,640 Chrome Inspector, die kun je meestal 109 00:05:22,640 --> 00:05:25,740 doen door rechts te klikken of Ctrl klikken ergens op een webpagina, 110 00:05:25,740 --> 00:05:27,250 en kies vervolgens inspecteren element. 111 00:05:27,250 --> 00:05:31,600 Of u kunt gaan door de menu's dat we beschrijven in spec pset6's. 112 00:05:31,600 --> 00:05:35,020 En ik ga naar het tabblad Netwerk hier, en laten we kijken voor een moment 113 00:05:35,020 --> 00:05:37,590 het HTTP-verkeer dat is heen en weer. 114 00:05:37,590 --> 00:05:40,929 >> Laat ik eerst ga je gang en cache duidelijk Chrome. 115 00:05:40,929 --> 00:05:43,470 Dus sommigen van jullie misschien bekend zijn met deze techniek al, 116 00:05:43,470 --> 00:05:45,790 en we gaan om het te gebruiken voor het opsporen van fouten hier. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Nu wij als computer wetenschappers gaan beginnen 119 00:05:50,890 --> 00:05:53,920 dit voor het debuggen doen doeleinden, waarbij 120 00:05:53,920 --> 00:05:55,910 zullen we de cache te wissen, typisch, zodat we 121 00:05:55,910 --> 00:05:57,670 kan ontdoen van de dingen genoemd cookies. 122 00:05:57,670 --> 00:06:01,700 Dus je bent waarschijnlijk algemeen bekend wat cookies zijn, of althans 123 00:06:01,700 --> 00:06:04,370 dat ze bestaan, maar wat is uw begrip van hen, 124 00:06:04,370 --> 00:06:06,920 als slechts een gebruiker van computers, wat is een cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Yeah. 127 00:06:09,990 --> 00:06:14,391 >> Publiek: Het is een beetje van-- goed, niet beetje in een term van de informatica. 128 00:06:14,391 --> 00:06:18,303 Het is een stukje data dat een website stuurt aan u om 129 00:06:18,303 --> 00:06:20,209 om statistieken kunnen opnemen op je. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, goed. 131 00:06:21,250 --> 00:06:24,980 Dus het is een stukje data dat een server, zet op uw computer, 132 00:06:24,980 --> 00:06:28,840 en laten we generaliseren het zelfs meer, het is een belangrijke value-- goed, 133 00:06:28,840 --> 00:06:30,064 dat wordt steeds nauwkeuriger. 134 00:06:30,064 --> 00:06:31,980 Het is een fluitje van een informatie, een stuk van de gegevens, 135 00:06:31,980 --> 00:06:34,430 dat een server kan op uw computer te zetten 136 00:06:34,430 --> 00:06:38,592 en heel vaak de server doet dit om zo te herinneren wie je bent. 137 00:06:38,592 --> 00:06:40,300 Dus bijvoorbeeld, kansen bent u waarschijnlijk bent 138 00:06:40,300 --> 00:06:42,982 aangemeld bij sites als Facebook, of Gmail, of anderen voor, 139 00:06:42,982 --> 00:06:44,940 en je in te loggen met uw gebruikersnaam en wachtwoord, 140 00:06:44,940 --> 00:06:49,000 en dan na dat, gedurende een aantal van minuten of uren of zelfs dagen, 141 00:06:49,000 --> 00:06:52,970 de server herinnert zich dat je in feite ingelogd. 142 00:06:52,970 --> 00:06:54,600 Nu, hoe is dat daadwerkelijk gebeurt? 143 00:06:54,600 --> 00:06:58,630 Omdat je zeker niet overtypen uw gebruikersnaam en wachtwoord elke keer 144 00:06:58,630 --> 00:07:00,760 u navigeren naar een verschillende pagina op Facebook. 145 00:07:00,760 --> 00:07:02,570 Dus het blijkt dat de cookies zijn het antwoord. 146 00:07:02,570 --> 00:07:05,360 >> Een cookie kunt u zien als, Een beetje zoals een digitale kant 147 00:07:05,360 --> 00:07:09,200 stempel dat je zou kunnen krijgen bij een pretpark park of een club die in wezen 148 00:07:09,200 --> 00:07:11,740 geeft aan dat u hier geweest voor, en je hebt al 149 00:07:11,740 --> 00:07:16,070 getoond je ID aan de uitsmijter, voor Zo, en dat de club of het park 150 00:07:16,070 --> 00:07:19,050 moet nu aan dat u al geverifieerd. 151 00:07:19,050 --> 00:07:21,270 Je hebt al geïdentificeerd door haar. 152 00:07:21,270 --> 00:07:24,740 >> Dus met dat in het achterhoofd, laten we openstellen teller hier. 153 00:07:24,740 --> 00:07:27,220 Laat me ga je gang, ik deed gewoon, en verwijder alle van mijn cookies. 154 00:07:27,220 --> 00:07:29,970 En nu, wat ik ga doen is Houd Shift, gewoon voor een goede maatregel, 155 00:07:29,970 --> 00:07:31,740 en onder dwang de pagina geladen is. 156 00:07:31,740 --> 00:07:34,170 Shift maar zorg ervoor dat er niets wordt gecached. 157 00:07:34,170 --> 00:07:36,850 En hier is het verzoek dat ging heen en weer. 158 00:07:36,850 --> 00:07:41,560 Dus hier hebben we een verzoek hebben, en laat me in te zoomen naar beneden hier, en veel van deze 159 00:07:41,560 --> 00:07:44,710 is een soort van oninteressante informatie voor nu dat de browser automatisch 160 00:07:44,710 --> 00:07:47,800 gezonden, maar laten we klik op Beeld Bron om de ruwe headers zien. 161 00:07:47,800 --> 00:07:51,700 >> En als je hebt dook pset6 al, u zult zeker dingen herkennen 162 00:07:51,700 --> 00:07:54,990 als dit, en misschien nog enkele van deze andere lijnen hier, 163 00:07:54,990 --> 00:07:59,040 maar wat is interessanter voor vandaag als ik naar beneden scrollen, niet op het verzoek 164 00:07:59,040 --> 00:08:02,870 maar de zogenaamde response, deze lijn ziet er waarschijnlijk bekend. 165 00:08:02,870 --> 00:08:04,977 Dat is een goede zaak als je een 200 OK. 166 00:08:04,977 --> 00:08:07,060 Blijkbaar is de datum en tijd op de server 167 00:08:07,060 --> 00:08:08,268 en er is een heleboel dingen. 168 00:08:08,268 --> 00:08:09,290 Oh, dit is interessant. 169 00:08:09,290 --> 00:08:13,430 >> Blijkt dat wanneer u gebruik PHP, althans in deze server, 170 00:08:13,430 --> 00:08:16,360 de server spuugt wat versie van PHP die u gebruikt. 171 00:08:16,360 --> 00:08:18,962 Die, in feite, voor de veiligheid doeleinden, is geen goede zaak. 172 00:08:18,962 --> 00:08:21,170 Maar, zullen we hierop terugkomen een andere keer misschien. 173 00:08:21,170 --> 00:08:25,740 Maar nu is dit het sappige lijn vandaag, en we zagen in het kort een aantal van deze, 174 00:08:25,740 --> 00:08:29,240 Ik denk dat met Facebook als we prikte rond de inspecteur op dat moment, 175 00:08:29,240 --> 00:08:33,380 set cookie is wat is het planten dat kleine stukje informatie 176 00:08:33,380 --> 00:08:34,890 op uw computer. 177 00:08:34,890 --> 00:08:37,490 >> Dit is een HTTP-header dat is effectief 178 00:08:37,490 --> 00:08:39,970 het vertellen van uw browser, Chrome, IE, wat dan ook, 179 00:08:39,970 --> 00:08:44,480 hey browser winkel aan de gebruiker harde schijf of in het RAM van de gebruiker, 180 00:08:44,480 --> 00:08:49,680 een sleutel genaamd PHPSESSID, die een korte notatie voor de sessie-ID, 181 00:08:49,680 --> 00:08:53,670 en geef het een waarde van 0vlk8t, puntje, puntje, puntje. 182 00:08:53,670 --> 00:08:56,480 Een hele lange pseudo willekeurige alfanumerieke string. 183 00:08:56,480 --> 00:08:59,480 Het is gewoon een heel groot getal, maar het is gecodeerd met letters en cijfers 184 00:08:59,480 --> 00:09:03,550 zodat de grootte ervan kan worden zelfs groter dan cijfers alleen. 185 00:09:03,550 --> 00:09:06,947 En dan, door de manier, Path = /, dat betekent gewoon dat deze cookie zou moeten zijn 186 00:09:06,947 --> 00:09:08,780 verbonden met de geheel van de website, 187 00:09:08,780 --> 00:09:11,150 niet alleen een bepaalde pagina van de hele zaak. 188 00:09:11,150 --> 00:09:12,930 Dus dit is die virtuele kant stempel. 189 00:09:12,930 --> 00:09:16,330 Het is alsof de server, Facebook, of in ons geval het apparaat, 190 00:09:16,330 --> 00:09:21,140 heeft letterlijk geschreven 0vlk8t enzovoort, op uw hand. 191 00:09:21,140 --> 00:09:24,360 Let op wat de server, niet doen, is het niet 192 00:09:24,360 --> 00:09:27,730 het opslaan van mijn gebruikersnaam, zeker mijn wachtwoord niet opslaan. 193 00:09:27,730 --> 00:09:31,710 >> In plaats daarvan lijkt opslaan van pseudo-willekeurige informatie 194 00:09:31,710 --> 00:09:35,010 zodat niemand kan raden wat mijn hand stempel is. 195 00:09:35,010 --> 00:09:37,590 Aan de server kant, ondertussen, de server 196 00:09:37,590 --> 00:09:40,370 zal herinneren, waarschijnlijk in een database of iets, 197 00:09:40,370 --> 00:09:46,490 dat de gebruiker, die in de toekomst presenteert een hand stempel van 0vlk8t, dot, 198 00:09:46,490 --> 00:09:51,440 dot, dot, moet worden geassocieerd met deze bijzonder winkelwagentje, om zo te zeggen. 199 00:09:51,440 --> 00:09:55,060 Met andere woorden, als ik nu ga hier terug en laad deze pagina, 200 00:09:55,060 --> 00:09:58,020 hoe werkt de server weet dat ik bezocht een keer? 201 00:09:58,020 --> 00:10:01,730 >> Of als ik het opnieuw doen, hoe werkt de server weet dat ik het twee keer heb bezocht? 202 00:10:01,730 --> 00:10:04,680 Nou als ik naar beneden om deze laatste verzoek, dat 203 00:10:04,680 --> 00:10:09,150 is nu de derde die ik heb gestuurd in totaal, merk nu mijn verzoek. 204 00:10:09,150 --> 00:10:11,300 Er is nog steeds vragen hier, dezelfde 205 00:10:11,300 --> 00:10:15,040 als voorheen, is er nog een hele hoop van dingen die we hebben genegeerd als voorheen, 206 00:10:15,040 --> 00:10:19,350 maar de allerlaatste header, deze tijd, omdat ik hier al eerder bent geweest, 207 00:10:19,350 --> 00:10:21,980 is een presentatie van deze virtuele kant stempel. 208 00:10:21,980 --> 00:10:28,957 >> Waarbij deze lijn hier, niet ingesteld cookies maar de cookie colon PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 dat is gewoon mijn browser automatisch presentatie van deze hand stempel zodat 210 00:10:32,040 --> 00:10:37,910 Nu de server, zodra het beseft, ooh, dit is gebruiker 0vlk8t dot, dot, dot, 211 00:10:37,910 --> 00:10:42,010 Ik kan nu herinneren wie hij of zij is en reassociëren met die gebruiker wat 212 00:10:42,010 --> 00:10:46,450 informatie die ik wil, en al dat informatie kan worden opgeslagen door u, 213 00:10:46,450 --> 00:10:50,130 de programmeur, in $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Dus om duidelijk te zijn, als ik het openstellen echt snel in gedit dat werkelijke bestand, counter.php, 215 00:10:57,170 --> 00:11:02,340 in mijn lokale host openbare gids als voorheen, merken dat inderdaad 216 00:11:02,340 --> 00:11:06,860 Ik ben uiteindelijk het opslaan in $ _SESSION Citaat unquote "teller" 217 00:11:06,860 --> 00:11:10,110 de waarde van de vorige teller die Ik krijg van deze lijnen hier dat we 218 00:11:10,110 --> 00:11:13,010 keek vorige keer plus één. 219 00:11:13,010 --> 00:11:14,980 Dus onder de motorkap, dat is alles wat cookies zijn. 220 00:11:14,980 --> 00:11:17,563 Het is precies het soort van digitale handstempel heen en weer, 221 00:11:17,563 --> 00:11:20,450 en eerlijk gezegd als je openen Chrome Inspecteur op een andere website 222 00:11:20,450 --> 00:11:22,580 u vandaag bezoekt, met super hoge waarschijnlijkheid, 223 00:11:22,580 --> 00:11:25,450 je gaat misschien een te zien, misschien een half dozijn cookies 224 00:11:25,450 --> 00:11:26,650 wordt herinnerd door jou. 225 00:11:26,650 --> 00:11:29,500 >> En erger nog, als die website die u bezoekt 226 00:11:29,500 --> 00:11:32,640 hebben reclame, die is zeker heel gewoon vandaag, 227 00:11:32,640 --> 00:11:36,100 en als die advertenties komen eraan van enkele centrale partij, iemand 228 00:11:36,100 --> 00:11:39,000 zoals Google of AdWords als ze bel een van hun producten 229 00:11:39,000 --> 00:11:42,880 of die andere leveranciers die verkopen advertenties, wat interessant, 230 00:11:42,880 --> 00:11:46,510 en eerlijk gezegd wat is een beetje zorgelijk, over hoe HTTP werkt, 231 00:11:46,510 --> 00:11:50,855 is dat als je een advertentie ingebed in Facebook.com en Google.com, 232 00:11:50,855 --> 00:11:54,240 en Harvard.edu, elk nummer van websites, dus het is een dergelijke 233 00:11:54,240 --> 00:11:58,130 dat er een middelbare man die dienst doet up advertenties voor alle drie van die websites, 234 00:11:58,130 --> 00:12:02,110 het blijkt dat de koekjes zijn per domein. 235 00:12:02,110 --> 00:12:05,910 >> Dus als je een advertentie uit de dezelfde onderneming op verschillende websites, 236 00:12:05,910 --> 00:12:11,140 dat bedrijf effectief kan bijhouden wie u bent op al die websites. 237 00:12:11,140 --> 00:12:13,140 Harvard misschien niet weet je een bezoek aan Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook misschien niet weet en je een bezoek aan Harvard. 239 00:12:15,306 --> 00:12:18,160 Maar wat advertentie-service ze gebruiken als dat domein 240 00:12:18,160 --> 00:12:21,710 aanwezig in zowel Harvard.edu web pagina's en Facebook.com webpagina's, 241 00:12:21,710 --> 00:12:26,850 deze middelste man weet toch wie je bent omdat van deze cookies worden gedeeld 242 00:12:26,850 --> 00:12:30,910 over, veelmeer, die zogenaamde tussenpersoon. 243 00:12:30,910 --> 00:12:33,820 >> Dus zullen we hierop terugkomen in security implicaties daarvan, 244 00:12:33,820 --> 00:12:37,170 maar er is een hoop informatie wordt opgeslagen over u wanneer u maar 245 00:12:37,170 --> 00:12:40,120 bezoeken de meeste elke webpagina op het internet en het is echt 246 00:12:40,120 --> 00:12:42,877 vermindert dit zeer eenvoudig mechanisme. 247 00:12:42,877 --> 00:12:44,710 Wat gebeurt, dan, indien je bent super paranoïde 248 00:12:44,710 --> 00:12:48,190 en je besluit in Chrome of IE te gaan of wat dan ook en je cookies uitschakelen? 249 00:12:48,190 --> 00:12:49,365 Wat gebeurt er? 250 00:12:49,365 --> 00:12:50,790 Yeah? 251 00:12:50,790 --> 00:12:53,170 Je really-- je dit recht hebt gedaan? 252 00:12:53,170 --> 00:12:54,350 OK. 253 00:12:54,350 --> 00:12:55,994 Nee, ga je gang. 254 00:12:55,994 --> 00:12:59,645 >> Publiek: Bepaalde websites niet hebben een functie zonder dat het leuk Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. MALAN: Yeah! 256 00:13:00,520 --> 00:13:02,311 Dus bepaalde websites zal gewoon stoppen met werken. 257 00:13:02,311 --> 00:13:05,520 En in de meeste websites deze dagen die fundamenteel afhankelijk cookies, 258 00:13:05,520 --> 00:13:08,360 vooral als ze je inlogt in, zijn ze gewoon gaan breken. 259 00:13:08,360 --> 00:13:10,360 Omdat rekening houden met de alternatief, indien de website 260 00:13:10,360 --> 00:13:14,480 heeft geen manier om te herinneren wie je bent, en dus uw webbrowser is niet 261 00:13:14,480 --> 00:13:16,949 die bij elke HTTP verzoek van deze hand-stempel, 262 00:13:16,949 --> 00:13:18,740 effectief een website zoals Facebook's going 263 00:13:18,740 --> 00:13:22,050 u te moeten vragen om log in elke darn tijd 264 00:13:22,050 --> 00:13:26,200 je pagina's te wijzigen, of klik op een link, die is zeker niet een bijzonder goede user 265 00:13:26,200 --> 00:13:26,920 ervaring. 266 00:13:26,920 --> 00:13:30,020 >> Zodat ook daar is onder de trade offs. 267 00:13:30,020 --> 00:13:34,140 Dus zonder verder oponthoud, laten we eens vanzelfsprekend dat met web programmeren, 268 00:13:34,140 --> 00:13:37,630 in talen als PHP, kunt u zich herinneren informatie zoals die in probleem stellen 269 00:13:37,630 --> 00:13:41,550 zeven wanneer u uw eigen implementeren E * Trade-achtige website met die te kopen 270 00:13:41,550 --> 00:13:45,710 en verkopen van aandelen, dan heb je precies herinneren wat de gebruiker heeft gekocht en verkocht 271 00:13:45,710 --> 00:13:49,110 en die hij of zij via deze sessie. 272 00:13:49,110 --> 00:13:51,110 Maar we gaan nodig hebben een liefhebber manier dan e-mail 273 00:13:51,110 --> 00:13:52,640 te gaan houden informatie rond. 274 00:13:52,640 --> 00:13:53,140 Right? 275 00:13:53,140 --> 00:13:56,780 >> Op maandag hebben we gesproken over Frosh IMs en hoe in versie één van die website, 276 00:13:56,780 --> 00:14:00,250 jaar geleden, alles wat we deden was e-mail de Proctor who's 277 00:14:00,250 --> 00:14:04,250 die verantwoordelijk is voor de intramurale sport programma, de naam en het geslacht, 278 00:14:04,250 --> 00:14:07,330 en of ze een kapitein, en de slaapzaal van iemand die 279 00:14:07,330 --> 00:14:10,136 registreren voor een intramurale sport. 280 00:14:10,136 --> 00:14:13,010 Dus het is niet slecht, maar hij of zij dan moesten troll via hun e-mail, 281 00:14:13,010 --> 00:14:16,010 maak een spreadsheet of iets dergelijks dat, om alles georganiseerd te houden. 282 00:14:16,010 --> 00:14:19,750 Dus zeker wij als programmeurs kan dit voor die Proctor doen. 283 00:14:19,750 --> 00:14:22,970 En dus vul in SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 die gaat mooi te kijken verschillende zowel C en PHP, 285 00:14:26,050 --> 00:14:30,990 en je zult op te duiken in veel meer handen PHP en probleem stelde zeven, maar ook SQL, 286 00:14:30,990 --> 00:14:35,310 of SQL, dit is een taal die u gebruikt om een ​​database te praten. 287 00:14:35,310 --> 00:14:36,480 >> Maar wat is een database? 288 00:14:36,480 --> 00:14:38,440 Nou je denken aan een databank, althans voor nu, 289 00:14:38,440 --> 00:14:41,750 zo gewoon als een Excel-bestand, of als je een Mac-gebruiker een aantal bestand bent, 290 00:14:41,750 --> 00:14:44,400 of als je een Google Apps gebruiker een Google spreadsheet, 291 00:14:44,400 --> 00:14:49,120 het is in feite een database of echt bijzonder een relationele database. 292 00:14:49,120 --> 00:14:53,070 Een relationele database is gewoon iets rijen en kolommen, 293 00:14:53,070 --> 00:14:56,440 en je kunt elke vorm van slaan informatie in deze rijen of kolommen. 294 00:14:56,440 --> 00:15:00,480 >> Maar wat is er leuk aan SQL, en over actuele databases, niet alleen 295 00:15:00,480 --> 00:15:04,910 spreadsheets of Google spreadsheets, is dat je een taal kunt gebruiken 296 00:15:04,910 --> 00:15:09,000 om daadwerkelijk queries uit te voeren om Gegevens invoegen, om gegevens te verwijderen, 297 00:15:09,000 --> 00:15:11,620 zoeken naar gegevens, zelfs het belangrijkst, en je 298 00:15:11,620 --> 00:15:16,110 hoeft niet het vrij handmatig gebruik zoals je misschien meestal een Google 299 00:15:16,110 --> 00:15:17,690 spreadsheet als deze. 300 00:15:17,690 --> 00:15:22,217 >> Dus in SQL, er is een heleboel fundamentele verklaringen of stukken 301 00:15:22,217 --> 00:15:23,300 functionaliteit ingebouwd. 302 00:15:23,300 --> 00:15:26,450 Er is veel meer dan deze, maar u kunt gaan een enorme afstand 303 00:15:26,450 --> 00:15:28,620 gewoon door te weten dat deze taal genoemd 304 00:15:28,620 --> 00:15:30,840 SQL ten minste vier uitspraken kun je benutten. 305 00:15:30,840 --> 00:15:34,420 >> Verwijderen, voor het verwijderen van gegevens, Plaatst, voor het toevoegen van rijen, 306 00:15:34,420 --> 00:15:37,340 Update, voor het veranderen rijen, en het selecteren, 307 00:15:37,340 --> 00:15:39,860 voor het krijgen van terug rijen en dat is inderdaad wat SQL doet. 308 00:15:39,860 --> 00:15:43,810 Het werkt volledig op rijen dus dat wanneer je plaatst of verwijdert, 309 00:15:43,810 --> 00:15:47,470 of bij te werken, of selecteer wat je bent terug te krijgen als een zogenaamd resultaat set, 310 00:15:47,470 --> 00:15:49,690 als een array van rijen. 311 00:15:49,690 --> 00:15:51,700 Een bos van rijen uit een tabel. 312 00:15:51,700 --> 00:15:54,050 >> Dus terug in de dag, en zelfs tot op de dag, 313 00:15:54,050 --> 00:15:56,560 u kunt communiceren met de database met behulp van een opdrachtregel, 314 00:15:56,560 --> 00:15:59,691 maar het is niet bijzonder leuk om te gebruiken deze zwart-witte stijl venster 315 00:15:59,691 --> 00:16:02,190 en daadwerkelijk uit te voeren commando en snuffel rond in uw database. 316 00:16:02,190 --> 00:16:06,054 Een grafische user interface, of GUI, is veel meer de voorkeur, misschien wel, 317 00:16:06,054 --> 00:16:08,970 en dus het gereedschap dat we aanbevelen en voorgeïnstalleerd voor u het apparaat in 318 00:16:08,970 --> 00:16:10,580 heet phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 Het is een totale toeval dat de naam van dit ding heeft PHP in het, 320 00:16:14,060 --> 00:16:17,430 het betekent gewoon dat de mensen die schreef dit programma zelf 321 00:16:17,430 --> 00:16:18,670 schreef het in PHP. 322 00:16:18,670 --> 00:16:23,740 >> Maar het gaat uiteindelijk over het beheren van een database server, zoals een MySQL server 323 00:16:23,740 --> 00:16:26,589 dat u zou kunnen hebben, zoals u doen, in de CS50 apparaat. 324 00:16:26,589 --> 00:16:29,130 Dus er is hier meer detail dan we nodig hebben om de zorg over vandaag, 325 00:16:29,130 --> 00:16:33,280 maar wat is de belangrijkste is dat aan de linkerkant kant is een lijst van de databases 326 00:16:33,280 --> 00:16:36,040 dat je op je computer, op uw CS50 apparaat, 327 00:16:36,040 --> 00:16:40,090 of kom laatste projecten die je misschien hebben op een derde, van een bedrijf 328 00:16:40,090 --> 00:16:43,415 website of webserver, dat je zou moeten betalen voor de ruimte. 329 00:16:43,415 --> 00:16:45,290 Dus aan de linkerkant is de databases, waarvan 330 00:16:45,290 --> 00:16:48,750 is pset7 die ik geleend van volgende weken PSET, en dan op de top 331 00:16:48,750 --> 00:16:51,570 er merken is er een stel lippen, waarvan 332 00:16:51,570 --> 00:16:55,150 is databases, SQL, status gebruikers, export enzovoort. 333 00:16:55,150 --> 00:16:56,900 Dus je kunt gaan een lange manier gewoon door het realiseren van 334 00:16:56,900 --> 00:16:59,770 dat de meeste gebruikersinterface is in de linker kolom 335 00:16:59,770 --> 00:17:02,650 en aan de bovenkant recht daar. 336 00:17:02,650 --> 00:17:04,980 Dus wat kunnen we eigenlijk doen met dit? 337 00:17:04,980 --> 00:17:08,609 Nou, laten we beginnen met het maken van een stukje informatie als volgt. 338 00:17:08,609 --> 00:17:11,760 >> Stel dat het volgende het geval, zoals zal in slechts een paar dagen, 339 00:17:11,760 --> 00:17:14,440 u wilt uitvoeren van een website, genaamd CS50 Financiën, 340 00:17:14,440 --> 00:17:17,328 en deze website kunt u kopen citeer unquote en verkopen voorraden. 341 00:17:17,328 --> 00:17:19,619 En het gaat om erachter te komen de prijs van die aandelen, 342 00:17:19,619 --> 00:17:22,380 uiteindelijk zoals u zult zien, door te praten met Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Die, heerlijk, heeft een gratis dienst waarbij u kunt passeren in een ticker 344 00:17:26,250 --> 00:17:29,830 zoals GOOG voor Google, en het zal geven u terug actuele voorraad van Google 345 00:17:29,830 --> 00:17:32,250 prijs in het verleden paar minuten op zijn minst. 346 00:17:32,250 --> 00:17:35,080 >> Dus je zult gebruiken dat, uiteindelijk, om te doen alsof voor de gebruiker 347 00:17:35,080 --> 00:17:37,750 te kopen en te verkopen werkelijke voorraden met behulp van virtueel geld, 348 00:17:37,750 --> 00:17:39,750 maar het allereerste wat de gebruiker gaat zien 349 00:17:39,750 --> 00:17:43,850 is dit inlogscherm die hen vraagt voor hun gebruikersnaam en wachtwoord. 350 00:17:43,850 --> 00:17:46,540 Dus, één van de eerste uitdagingen voor u in pset7 351 00:17:46,540 --> 00:17:50,460 gaat worden voor de uitvoering van de back-end databank, de spreadsheet als je wil, 352 00:17:50,460 --> 00:17:53,369 dat gaat slaan gebruikers namen en wachtwoorden 353 00:17:53,369 --> 00:17:56,660 en uiteindelijk wat aandelen die zij bezitten, en hoeveel, en hoeveel geld ze hebben, 354 00:17:56,660 --> 00:18:00,110 dus een heleboel andere dingen in andere tabellen of spreadsheets. 355 00:18:00,110 --> 00:18:05,020 >> Dus laten we eens kijken hoe dit kan lijken op het eerste gezicht. 356 00:18:05,020 --> 00:18:06,980 Ik ga terug naar het apparaat en ik ben 357 00:18:06,980 --> 00:18:14,102 ga deze URL hier te gaan phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 en je zult zien dat het neemt me mee naar een interface 359 00:18:16,060 --> 00:18:18,520 precies zoals we zagen op de screen shot, en hier ben 360 00:18:18,520 --> 00:18:21,560 hebben een extra databank riep lezing voor vandaag 361 00:18:21,560 --> 00:18:24,280 en laat me gaan vooruit eerste en klik op pset7. 362 00:18:24,280 --> 00:18:27,940 >> Ik schijn een paar opties te hebben, één voor het nieuwe, voor het creëren van een nieuwe tabel, 363 00:18:27,940 --> 00:18:30,770 en een link naar de gebruikers, die is een tabel heb ik al gemaakt. 364 00:18:30,770 --> 00:18:31,790 Dus wat is een tafel? 365 00:18:31,790 --> 00:18:33,740 Dus als je gewend Excel voor, en als je hebt 366 00:18:33,740 --> 00:18:37,110 gebruikte nummers of Google Spreadsheets, u een venster openen 367 00:18:37,110 --> 00:18:39,350 en je een hele hoop te krijgen rijen en kolommen, 368 00:18:39,350 --> 00:18:43,120 maar dan heb je meestal werkbladen langs de onderkant, of afzonderlijke tabbladen. 369 00:18:43,120 --> 00:18:46,140 U kunt denken aan elke werkblad als een tafel 370 00:18:46,140 --> 00:18:51,150 zodat databank uiteindelijk een combinatie van één of meer tafels, 371 00:18:51,150 --> 00:18:54,064 of meer werkbladen, in de wereld van een normale spreadsheet. 372 00:18:54,064 --> 00:18:55,980 Dus laat me gaan en Klik op dit werkblad 373 00:18:55,980 --> 00:18:59,420 dat ik premade, genaamd gebruikers, a.k.a. 374 00:18:59,420 --> 00:19:00,700 Database tabel. 375 00:19:00,700 --> 00:19:04,130 En als ik scroll hier naar beneden, laat me uitzoomen een beetje, 376 00:19:04,130 --> 00:19:08,479 dit is wat phpMyAdmin vertelt ons is de binnenkant van deze tabel op dit moment. 377 00:19:08,479 --> 00:19:11,020 Het is een beetje verwarrend op het eerste blik omdat de UI is niet 378 00:19:11,020 --> 00:19:15,140 de mooiste zaak van de wereld, maar Wat interessant is, is dit deel hier. 379 00:19:15,140 --> 00:19:17,970 ID, gebruikersnaam en hash. 380 00:19:17,970 --> 00:19:20,510 >> Van te voren, en je zult handed zijn dit in probleem stelde zeven, 381 00:19:20,510 --> 00:19:25,050 geven wij u een bestand met een super kleine database tabel, geleend eigenlijk 382 00:19:25,050 --> 00:19:27,070 van de hacker editie van probleem set twee, 383 00:19:27,070 --> 00:19:29,480 binnenzijde waarvan er zes rijen. 384 00:19:29,480 --> 00:19:32,720 Eén voor Belinda alle weg naar een voor Zamyla, 385 00:19:32,720 --> 00:19:35,980 en ziet links van de gebruikersnamen zijn unieke id's zoals een, 386 00:19:35,980 --> 00:19:39,410 twee, drie, vier, vijf, zes, gehele getallen, en vervolgens naar rechts zijn hashes. 387 00:19:39,410 --> 00:19:42,780 >> En als, kansen zijn, heb je niet doen de hacker editie probleem set twee, 388 00:19:42,780 --> 00:19:46,560 maar een hash is net als een versleutelde wachtwoord met een paar kanttekeningen. 389 00:19:46,560 --> 00:19:49,470 En ja, wat je hier ziet zijn de gecodeerde versies van alle zes 390 00:19:49,470 --> 00:19:52,950 van onze wachtwoorden van probleem set twee-hacker editie. 391 00:19:52,950 --> 00:19:56,500 Nu aan de linkerkant is slechts enkele GUI stuff, het bewerken van deze rij, het kopiëren van deze rij, 392 00:19:56,500 --> 00:19:57,630 het verwijderen van deze rij. 393 00:19:57,630 --> 00:19:59,840 >> Maar wat interessant nu is het volgende. 394 00:19:59,840 --> 00:20:03,810 Ik kan eigenlijk beginnen experimenteren met deze tabel. 395 00:20:03,810 --> 00:20:07,330 Dus als ik ga en klik op de SQL tab, krijg ik deze grote tekstvak. 396 00:20:07,330 --> 00:20:10,190 En dit is niet hoe we gaan doe het toen eigenlijk het schrijven van code. 397 00:20:10,190 --> 00:20:12,700 Voor alle duidelijkheid, phpMyAdmin is slechts een hulpmiddel dat is 398 00:20:12,700 --> 00:20:16,450 gaan om ons te laten rondneuzen de database en laat ons experimenteren met queries. 399 00:20:16,450 --> 00:20:19,430 >> Dus bijvoorbeeld, veronderstellen Ik voer precies dit. 400 00:20:19,430 --> 00:20:22,820 Select, dat is een van die trefwoorden ik al eerder, ster, 401 00:20:22,820 --> 00:20:25,900 die vertegenwoordigt alle de kolommen in een tabel. 402 00:20:25,900 --> 00:20:26,820 Van wat tafel? 403 00:20:26,820 --> 00:20:27,990 Nou, gebruikers. 404 00:20:27,990 --> 00:20:29,950 En let er dit raar conventie in SQL 405 00:20:29,950 --> 00:20:32,140 waar je eigenlijk gebruiken back teken normaalgesproken 406 00:20:32,140 --> 00:20:35,940 geen enkele aanhalingstekens en geen dubbele aanhalingstekens als je praat over tafels namen, 407 00:20:35,940 --> 00:20:38,990 zodat de achterkant citaat is het ding op de linksboven van je toetsenbord het meest 408 00:20:38,990 --> 00:20:39,720 waarschijnlijk. 409 00:20:39,720 --> 00:20:41,850 >> Dus laat me gaan nu vooruit en gewoon laat dat alleen 410 00:20:41,850 --> 00:20:46,020 en scroll naar beneden en klik op Start, en we zijn daadwerkelijk gaat om hetzelfde te zien. 411 00:20:46,020 --> 00:20:52,410 We hebben net geëxecuteerd een SQL-query zeggend select alles ster 412 00:20:52,410 --> 00:20:55,610 uit tabel genaamd gebruikers, en wat je terug krijgt is dit. 413 00:20:55,610 --> 00:20:58,400 Uiteindelijk zullen we in staat zijn om dat doet hetzelfde in de code, 414 00:20:58,400 --> 00:21:02,109 maar voor nu alles wat ik wilde do was zie het in mijn browser. 415 00:21:02,109 --> 00:21:03,900 Nou laten we iets doen een beetje anders. 416 00:21:03,900 --> 00:21:08,330 Laat me teruggaan naar het tabblad SQL, en laten we gewoon zeggen dat wat? 417 00:21:08,330 --> 00:21:11,520 Zamyla heeft al haar verloren geld, en daarom is het 418 00:21:11,520 --> 00:21:13,190 tijd voor ons om haar te verwijderen als een gebruiker. 419 00:21:13,190 --> 00:21:14,630 Ze is niet meer in te loggen. 420 00:21:14,630 --> 00:21:18,870 >> Dus ik ga zeggen verwijderen van-- goed, onderhouden kapitalisatie 421 00:21:18,870 --> 00:21:23,080 voor consistentie, verwijderen van gebruikers waar. 422 00:21:23,080 --> 00:21:25,430 En zo kunnen we deze hebben predikaten, of deze 423 00:21:25,430 --> 00:21:31,180 qualifiers, aan het einde van mijn verklaring waar en hoe kan ik Zamyla verwijderen? 424 00:21:31,180 --> 00:21:34,190 Door haar naam Zamyla, zodat de kolom een ​​kolom 425 00:21:34,190 --> 00:21:37,950 werd genoemd, dus waar name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 En hier dubbel gebruik ik aanhalingstekens of enkele aanhalingstekens, 427 00:21:40,000 --> 00:21:42,958 u alleen gebruik maken van de achterkant tikken wanneer over de namen bijvoorbeeld 428 00:21:42,958 --> 00:21:45,130 tabellen of velden. 429 00:21:45,130 --> 00:21:47,440 En laat me klik Ga hier. 430 00:21:47,440 --> 00:21:50,400 En nu, de webpagina is een beetje gespannen. 431 00:21:50,400 --> 00:21:53,620 >> Of, heb je echt wilt uitvoeren verwijderen van gebruikers, waar de naam gelijk is aan Zamyla? 432 00:21:53,620 --> 00:21:54,680 Ja. 433 00:21:54,680 --> 00:22:01,900 Dus nu, als we terug gaan naar mijn tafel door te klikken op gebruikers, merken dat Hm. 434 00:22:01,900 --> 00:22:02,530 Ik goofed. 435 00:22:02,530 --> 00:22:04,070 En in feite, ik soort van klikte weg zo snel 436 00:22:04,070 --> 00:22:06,195 je niet eens zien de rode foutmelding, misschien. 437 00:22:06,195 --> 00:22:07,649 Wat heb ik verkeerd gedaan? 438 00:22:07,649 --> 00:22:09,690 Publiek: Je hoefde niet op haar naam te kapitaliseren. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Yeah I gekapitaliseerd haar naam, 440 00:22:11,260 --> 00:22:13,770 maar haar username-- eigenlijk I maakte een paar fouten, toch? 441 00:22:13,770 --> 00:22:16,720 One, haar gebruikersnaam is zamyla, kleine letters Z, 442 00:22:16,720 --> 00:22:20,140 en de naam van de kolom is de gebruikersnaam, niet te noemen, dus laten we dit opnieuw doen. 443 00:22:20,140 --> 00:22:25,750 Laat me gaan en verwijderen van gebruikers waar 444 00:22:25,750 --> 00:22:28,990 gebruikersnaam gelijk citaat unquote "Zamyla". 445 00:22:28,990 --> 00:22:29,490 Oké? 446 00:22:29,490 --> 00:22:32,600 Dus dit ziet er een beetje beter, laat me gaan scroll naar beneden en klik op Go. 447 00:22:32,600 --> 00:22:34,730 Het is nog steeds te schreeuwen tegen me om zeker te zijn. 448 00:22:34,730 --> 00:22:37,500 Ik klik op Ja, en nu zien we, eerlijk gezegd dat dit gebeurde, echt 449 00:22:37,500 --> 00:22:39,870 snel, minder dan één tweede zeker, dit 450 00:22:39,870 --> 00:22:41,720 is precies de vraag die werd geëxecuteerd. 451 00:22:41,720 --> 00:22:45,617 Om te bevestigen, laat me klik gebruikers en inderdaad nu Zamyla is verdwenen. 452 00:22:45,617 --> 00:22:46,700 Laten we nu het tegenovergestelde doen. 453 00:22:46,700 --> 00:22:49,320 Stel dat Gabe wil registreren voor de website. 454 00:22:49,320 --> 00:22:52,825 Wat is de SQL-query, wat is het command ik kon typen om Gabe toevoegen? 455 00:22:52,825 --> 00:22:54,200 Nou het is vrij eenvoudig. 456 00:22:54,200 --> 00:22:58,260 Invoegen in gebruikers, en nu het wordt een beetje cryptisch. 457 00:22:58,260 --> 00:23:03,190 Ik moet opgeven, naar de server, welke velden ik wil toewijzen. 458 00:23:03,190 --> 00:23:06,630 Ik heb niet echt schelen wat Gabe's ID getal is, dus ik ga slaan dat. 459 00:23:06,630 --> 00:23:11,360 Ik ga in plaats daarvan gaan zeggen gebruikersnaam, hash, en vervolgens 460 00:23:11,360 --> 00:23:14,960 de waarden die ik wil zetten Er zal Gabe zijn. 461 00:23:14,960 --> 00:23:16,800 En dan zijn hash, ik weet het niet. 462 00:23:16,800 --> 00:23:19,900 Dus voor nu, ik ga naar laat dat als een grote te doen. 463 00:23:19,900 --> 00:23:21,650 We zullen terug te komen dat in het probleem te stellen 464 00:23:21,650 --> 00:23:23,390 spec over hoe je eigenlijk dat te doen. 465 00:23:23,390 --> 00:23:24,630 >> Dus opmerken, nogmaals, de syntax. 466 00:23:24,630 --> 00:23:28,430 Invoegen in tabel naam, dan is een haakjes lijst van de velden, 467 00:23:28,430 --> 00:23:30,980 de kolommen die u wilt toevoegen waarden, en dan gewoon 468 00:23:30,980 --> 00:23:34,495 exact dezelfde volgorde van links naar rechts van de waarden die u wilt toevoegen, 469 00:23:34,495 --> 00:23:36,870 en het is gewoon wikkelen omdat de tekst is een beetje lang. 470 00:23:36,870 --> 00:23:38,520 Dus nu laat ik klik op Go. 471 00:23:38,520 --> 00:23:39,830 Eén rij ingevoegd. 472 00:23:39,830 --> 00:23:43,020 En nu als ik terug naar gebruikers, wat interessant 473 00:23:43,020 --> 00:23:48,960 is dat niet alleen Gabe nu in de databank, wat blijkbaar zijn ID? 474 00:23:48,960 --> 00:23:49,820 >> Nou het is zeven. 475 00:23:49,820 --> 00:23:51,479 Waarom is het zeven toen ik niet toevoegen? 476 00:23:51,479 --> 00:23:54,020 Dus ook dit is een van de functies die u krijgt van de database. 477 00:23:54,020 --> 00:23:55,750 Veel ingebouwde functionaliteit. 478 00:23:55,750 --> 00:23:57,950 Het blijkt dat wanneer creëerde deze tabel, 479 00:23:57,950 --> 00:24:01,390 Ik voorgeconfigureerd is het automatisch toewijzen een ID zodanig 480 00:24:01,390 --> 00:24:02,480 dat verhoogt. 481 00:24:02,480 --> 00:24:05,470 Dus als je ooit rond prikte, en gekeken naar wat je Facebook ID 482 00:24:05,470 --> 00:24:09,292 nummer is, deze dagen is het niet echt een ding om te doen, maar Facebook als een API, 483 00:24:09,292 --> 00:24:11,750 Application Programming Interface, waarbij je terug kunt krijgen 484 00:24:11,750 --> 00:24:14,430 een hele hoop gegevens over jezelf, over je vrienden, 485 00:24:14,430 --> 00:24:15,347 en je connecties. 486 00:24:15,347 --> 00:24:17,430 En wat vroeger aardig te zijn van koele, terug in de dag, 487 00:24:17,430 --> 00:24:19,510 was om te kijken wat uw Facebook ID-nummer was. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg's, bijvoorbeeld drie 489 00:24:22,390 --> 00:24:23,890 want hij was de auteur van de site. 490 00:24:23,890 --> 00:24:27,610 En zo gaat het verhaal, creëerde hij twee test-accounts, gebruikers een en twee, 491 00:24:27,610 --> 00:24:28,690 die hij vervolgens verwijderd. 492 00:24:28,690 --> 00:24:32,780 En dus, Zuck, net als zijn gebruikersnaam op Facebook, is het ID nummer drie, 493 00:24:32,780 --> 00:24:36,110 en ieder van ons hebben veel nummers groter dan drie van deze dagen. 494 00:24:36,110 --> 00:24:37,980 In feite, ergens Facebook verhuisd 495 00:24:37,980 --> 00:24:42,410 zelfs van het gebruik van een int, die is een 32-bit waarde te gebruiken 496 00:24:42,410 --> 00:24:44,480 de volgende stap, in wezen een lange lange dus 497 00:24:44,480 --> 00:24:47,150 dat ze konden nog meer gebruikers registreren. 498 00:24:47,150 --> 00:24:49,420 Dus een leuke kleine historisch feit. 499 00:24:49,420 --> 00:24:51,660 >> Dus dat is nog maar het basissyntaxis waarmee 500 00:24:51,660 --> 00:24:54,470 we misschien een paar te voeren query's, maar we kunnen eigenlijk 501 00:24:54,470 --> 00:24:56,744 doe een heleboel meer dingen met SQL. 502 00:24:56,744 --> 00:24:58,910 En je zult zien, uiteindelijk, in het probleem stelde zeven 503 00:24:58,910 --> 00:25:01,034 dat moet je een te maken aantal ontwerpbeslissingen, 504 00:25:01,034 --> 00:25:03,290 onder hen gaat worden welke soorten data te gebruiken. 505 00:25:03,290 --> 00:25:08,240 Dus net als in C, zijn er gegevens soorten in een database, zoals MySQL, 506 00:25:08,240 --> 00:25:12,640 en de data types moet je kiezen uit onder andere deze velden hier. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, Int, groot int, decimale datum en tijd, en vele anderen. 508 00:25:17,287 --> 00:25:18,370 Dus laten we dit daadwerkelijk te doen. 509 00:25:18,370 --> 00:25:21,060 Laten we doen alsof dat we niet hand geven table van deze gebruiker 510 00:25:21,060 --> 00:25:25,080 en laat me gaan en te creëren, voor mezelf, in de lezingen database-- 511 00:25:25,080 --> 00:25:31,000 eigenlijk laat me gaan en te verwijderen de tafel heb ik hier al 512 00:25:31,000 --> 00:25:32,940 zodat we werkelijk kunt creëren. 513 00:25:32,940 --> 00:25:33,550 Whoops. 514 00:25:33,550 --> 00:25:35,970 Ik ga deze laten vallen tafel, en nu ben ik 515 00:25:35,970 --> 00:25:38,337 gaat weer naar de lezing-database hier, 516 00:25:38,337 --> 00:25:40,420 Ik ga een tabel te maken riep gebruikers en laten we 517 00:25:40,420 --> 00:25:43,010 gewoon doen drie kolommen aanvankelijk in en klik op Go. 518 00:25:43,010 --> 00:25:44,990 >> Nu, grotendeels, nogmaals, dit is gewoon 519 00:25:44,990 --> 00:25:48,570 met behulp van deze grafische tool genaamd phpMyAdmin, en wat we nu aan het doen 520 00:25:48,570 --> 00:25:49,600 is het creëren van een tabel. 521 00:25:49,600 --> 00:25:53,170 Dus dit is alsof je File, New, en het creëren van een nieuw Excel-bestand. 522 00:25:53,170 --> 00:25:55,440 Dus het is een paar vragen me vragen, van links naar rechts, 523 00:25:55,440 --> 00:25:58,620 wat is de naam van de eerste kolom, en vervolgens de naam van de tweede kolom, 524 00:25:58,620 --> 00:25:59,560 en de naam van het derde. 525 00:25:59,560 --> 00:26:00,518 Dus laten we opnieuw dit. 526 00:26:00,518 --> 00:26:05,460 ID, en toen was gebruikersnaam één, en dan hash was een andere. 527 00:26:05,460 --> 00:26:08,970 Dus wat moet het datatype zijn nu voor een veld als ID? 528 00:26:08,970 --> 00:26:14,470 >> Hier is de volledige lijst met data types voor u beschikbaar in een database, 529 00:26:14,470 --> 00:26:16,070 en voor nu laten we gewoon gaan met int. 530 00:26:16,070 --> 00:26:18,160 32-bits waarde, dat doe ik niet denk realistisch ben ik 531 00:26:18,160 --> 00:26:21,484 gaat om meer dan 4 miljard hebben gebruikers in mijn account, in mijn dienst, 532 00:26:21,484 --> 00:26:23,650 dus ik ga om in beweging te houden naar de volgende vraag. 533 00:26:23,650 --> 00:26:25,490 Ik ben niet van plan om op te geven lengte of waarden, 534 00:26:25,490 --> 00:26:28,540 het is niet van toepassing hier een int, per se. 535 00:26:28,540 --> 00:26:30,740 En nu kan ik opgeven, blijkbaar, een standaard 536 00:26:30,740 --> 00:26:33,970 waarde, die ik ben niet van plan om op te geven. 537 00:26:33,970 --> 00:26:36,050 Een vergelijking, ik weet niet wat dat is. 538 00:26:36,050 --> 00:26:37,290 Een attribuut. 539 00:26:37,290 --> 00:26:39,455 Nu zijn we eigenlijk doen hebben een ontwerp beslissing. 540 00:26:39,455 --> 00:26:42,580 Dus er is een paar velden hier zijn niet alle waarvan toepassing, maar unsigned 541 00:26:42,580 --> 00:26:43,380 betekent gewoon wat? 542 00:26:43,380 --> 00:26:45,400 Dat de int moet zijn? 543 00:26:45,400 --> 00:26:46,210 Gewoon niet-negatief. 544 00:26:46,210 --> 00:26:48,090 Het heeft zo zijn 0 op maximaal. 545 00:26:48,090 --> 00:26:51,120 Nee, ik ben niet van plan om te controleren omdat Ik wil dat elke gebruiker in staat om een ​​ID hebben, 546 00:26:51,120 --> 00:26:52,470 het kan niet null zijn. 547 00:26:52,470 --> 00:26:55,949 En dan krijgen we wat meer interessant ontwerp beslissingen als deze. 548 00:26:55,949 --> 00:26:58,990 We zullen hierop terugkomen in een moment, maar wat een kenmerk database 549 00:26:58,990 --> 00:27:04,200 is, is dat je kunt vertellen de database server ga je gang 550 00:27:04,200 --> 00:27:07,100 en optimaliseren van uzelf, uw RAM-geheugen en ruimte op de vaste schijf, 551 00:27:07,100 --> 00:27:11,770 zodat selecteert, en inserts, en verwijdert, en updates zijn echt snel. 552 00:27:11,770 --> 00:27:13,250 Vergelijk dit met pset5. 553 00:27:13,250 --> 00:27:16,259 >> Als je wilde iets opzoeken in je hash tabel, die 554 00:27:16,259 --> 00:27:18,300 jullie zien als een database, die moest al het doen 555 00:27:18,300 --> 00:27:21,500 werken voor het maken van uw hash table snel. 556 00:27:21,500 --> 00:27:22,840 Het is net als, uiteraard, u. 557 00:27:22,840 --> 00:27:23,060 Right? 558 00:27:23,060 --> 00:27:26,080 Je had in de hele tijd prima te zetten tuning dingen, het krijgen van een hash-functie 559 00:27:26,080 --> 00:27:27,820 rechts, het uitzoeken hoe veel emmers hebben. 560 00:27:27,820 --> 00:27:29,611 >> Maar wat is leuk, nogmaals, over een database 561 00:27:29,611 --> 00:27:31,762 je gewoon alles van punter dit anderen 562 00:27:31,762 --> 00:27:33,720 die dit hebben gedacht door voor u, en wat 563 00:27:33,720 --> 00:27:37,170 Ik ga hier zeggen onder index is dat mijn ID-veld 564 00:27:37,170 --> 00:27:41,149 zal de belangrijkste manier van zijn het identificeren van gebruikers in deze databank. 565 00:27:41,149 --> 00:27:42,940 Ik ben niet van plan om te denken van Zamyla als Zamyla, 566 00:27:42,940 --> 00:27:45,800 Ik ga bedenken haar als het nummer 6. 567 00:27:45,800 --> 00:27:49,814 >> Waarom is het misschien beter intuïtief te denken van en model 568 00:27:49,814 --> 00:27:52,480 elk van uw individuele rijen met behulp van een nummer in plaats van iets 569 00:27:52,480 --> 00:27:56,480 als een string, zoals de Zamyla of Gabe of langer touwtje nog? 570 00:27:56,480 --> 00:27:57,444 Yeah? 571 00:27:57,444 --> 00:28:00,117 >> Publiek: Een ID is uniek? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: weer zeggen? 573 00:28:01,200 --> 00:28:02,283 Publiek: Een ID is uniek? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: Een ID is uniek, maar suppose-- 575 00:28:04,400 --> 00:28:06,320 zoals in het algemeen met gebruikersnamen, veronderstel 576 00:28:06,320 --> 00:28:10,110 Ik zei ook dat er kan er maar één zijn Zamyla in de wereld, en slechts één Gabe. 577 00:28:10,110 --> 00:28:13,730 Ik kon het unieke karakter op te leggen constraint op strings, ook, als ik wilde. 578 00:28:13,730 --> 00:28:15,550 Dus geen slechte gedachte. 579 00:28:15,550 --> 00:28:16,500 >> Publiek: Veiliger. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Veiliger, waarom? 581 00:28:17,874 --> 00:28:20,705 Publiek: Je kunt niet zeggen welke is die, zoals in de gebruiker. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, je kan niet zeggen welke gebruiker 583 00:28:22,580 --> 00:28:24,380 is die dus er is een privacy aspect aan, 584 00:28:24,380 --> 00:28:27,810 vooral als de ID misschien te zien zijn in de URL's. 585 00:28:27,810 --> 00:28:29,960 Zo zeker van, dat kon soort werk, ook. 586 00:28:29,960 --> 00:28:30,640 Andere gedachten? 587 00:28:30,640 --> 00:28:31,383 Yeah? 588 00:28:31,383 --> 00:28:34,316 >> Publiek: Het is makkelijker om bewerkingen op int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. MALAN: Dat is de echte kicker. 590 00:28:35,940 --> 00:28:38,850 Het is gewoon efficiënter, of gemakkelijker de computer, 591 00:28:38,850 --> 00:28:40,431 om bewerkingen uit te voeren op een geheel getal. 592 00:28:40,431 --> 00:28:40,930 Right? 593 00:28:40,930 --> 00:28:43,905 Een int is gegarandeerd zijn 32-bit, terwijl Zamyla 594 00:28:43,905 --> 00:28:47,660 is een paar tekens lang, Gabriel is nog een paar tekens lang, 595 00:28:47,660 --> 00:28:51,930 Davenport is echt lang, en dus is het niet bijzonder efficiënt te gebruiken 596 00:28:51,930 --> 00:28:55,860 strings te vergelijken waarden en kijk voor velden en bijwerken velden, 597 00:28:55,860 --> 00:28:57,790 als je weg kunt krijgen met slechts een integer. 598 00:28:57,790 --> 00:28:59,090 Slechts 32 bits. 599 00:28:59,090 --> 00:29:02,570 Dus gebruikersnamen, ook, op deze manier, niet uniek zijn, 600 00:29:02,570 --> 00:29:05,040 hoewel ze waarschijnlijk moeten zijn, en zelfs op deze manier te 601 00:29:05,040 --> 00:29:07,520 een gebruiker kan worden toegestaan veranderen zijn of haar gebruikersnaam. 602 00:29:07,520 --> 00:29:10,810 >> Dus laten we nu dit laten zoals het belangrijkste middel van het identificeren van de gebruiker. 603 00:29:10,810 --> 00:29:13,510 Dit vertelt de database ga je gang en optimaliseren van jezelf 604 00:29:13,510 --> 00:29:17,065 zodat blik ups op ID zijn super snel. 605 00:29:17,065 --> 00:29:19,620 AI, afschuwelijk vernoemd, net betekent Auto increment 606 00:29:19,620 --> 00:29:21,500 en dit is de cheque box die we nodig hebben om te controleren 607 00:29:21,500 --> 00:29:24,614 om aan te geven dat het veld ID aan worden automatisch bijgewerkt voor mij, 608 00:29:24,614 --> 00:29:26,530 en dan ga ik Scroll naar rechts hier 609 00:29:26,530 --> 00:29:29,279 en eerlijk gezegd ben ik niet echt geïnteresseerd in meer van deze velden. 610 00:29:29,279 --> 00:29:30,630 Zeker niet vandaag. 611 00:29:30,630 --> 00:29:33,770 >> Dus ik ga hier terug te gaan, de eerste kolom, waarbij 612 00:29:33,770 --> 00:29:35,830 Ik moet gebruikersnaam opgeven en hash, en laten we 613 00:29:35,830 --> 00:29:38,080 tenminste focus op de tweede voor nu. 614 00:29:38,080 --> 00:29:41,498 Int is waarschijnlijk niet de juiste oproep, dus wat is logischer misschien? 615 00:29:41,498 --> 00:29:42,741 >> Publiek: Tekst. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: weer zeggen? 617 00:29:43,824 --> 00:29:44,710 Publiek: Tekst. 618 00:29:44,710 --> 00:29:44,980 DAVID J. MALAN: Tekst? 619 00:29:44,980 --> 00:29:45,590 OK, ik hoorde tekst. 620 00:29:45,590 --> 00:29:46,090 Wat anders? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 We hebben een soort van een bos van keuzes die tekstuele aard. 623 00:29:53,860 --> 00:29:55,990 Dus wanneer, en waarom, doen u een aantal van deze gebruiken? 624 00:29:55,990 --> 00:29:59,560 Nou char, in tegenstelling tot wat je misschien denken, is geen enkel teken. 625 00:29:59,560 --> 00:30:01,550 Het is een bepaald aantal tekens. 626 00:30:01,550 --> 00:30:04,600 Dus als we weten dat alle gebruikersnamen moet zijn als acht tekens, 627 00:30:04,600 --> 00:30:08,490 zoals gebruikt bij oudere worden computersystemen, ik kon char zeggen 628 00:30:08,490 --> 00:30:09,830 en dan kon ik hier zeggen 8. 629 00:30:09,830 --> 00:30:12,930 Dat is wanneer de derde kolom wordt toepassing is bij het maken van een tabel. 630 00:30:12,930 --> 00:30:15,450 >> Maar dat is een beetje vervelend omdat sommige mensen zouden kunnen 631 00:30:15,450 --> 00:30:17,660 willen een langere gebruikersnaam hebt dan acht tekens, 632 00:30:17,660 --> 00:30:19,743 sommige mensen zouden willen een kortere gebruikersnaam, 633 00:30:19,743 --> 00:30:22,210 dus waarom verbind mij een specifiek nummer? 634 00:30:22,210 --> 00:30:24,710 Waarom een ​​variabele niet aantal tekens en net 635 00:30:24,710 --> 00:30:28,580 zeggen dat de maximale lengte van een naam is, weet ik niet, net als 64 tekens. 636 00:30:28,580 --> 00:30:31,780 Ik kan niet denken van een vrienden die hebben namen langer dan 64 tekens, 637 00:30:31,780 --> 00:30:34,810 en zelfs als dat is te kort kon je zeker bump het op willekeur. 638 00:30:34,810 --> 00:30:37,330 >> Dus varchar is een variabele Aantal tekens. 639 00:30:37,330 --> 00:30:41,010 De tekst is geen slechte instinct, en eerlijk gezegd dat soort doet wat het zegt, 640 00:30:41,010 --> 00:30:45,460 maar een tekstveld kan worden zoals 65.000 bytes tenminste. 641 00:30:45,460 --> 00:30:50,790 Dat is waarschijnlijk overkill voor een veld, en in feite, yup, 65.535. 642 00:30:50,790 --> 00:30:53,740 Dat is waarschijnlijk overkill voor een te noemen, nemen we ze gewoon, typisch, 643 00:30:53,740 --> 00:30:56,910 met varchars voor tekstuele veld en hash, ook. 644 00:30:56,910 --> 00:30:59,990 Hash, zo blijkt, konden we een doen varchar zo goed of iets dergelijks, 645 00:30:59,990 --> 00:31:03,080 maar we zullen niet focussen vandaag op de cryptografie daar de nummers 646 00:31:03,080 --> 00:31:05,210 dat we misschien wel willen gebruiken voor de lengte. 647 00:31:05,210 --> 00:31:07,430 >> Maar laat me naar beneden scrollen naar rechts. 648 00:31:07,430 --> 00:31:11,280 U kunt slechts één primaire index voor een tafel, 649 00:31:11,280 --> 00:31:16,380 maar ik wil een van deze toe te passen, nu, om gebruikersnaam, zou je dan zeggen? 650 00:31:16,380 --> 00:31:21,980 Wat moet gebruikersnaam worden gebaseerd op een vage begrip van deze vier opties? 651 00:31:21,980 --> 00:31:23,340 Gewoon door hun namen? 652 00:31:23,340 --> 00:31:24,140 >> Publiek: Unique. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. MALAN: Zo uniek, toch? 654 00:31:25,100 --> 00:31:28,190 Dus het blijkt dat niet alleen kon u een database te vertellen, bij voorbaat, 655 00:31:28,190 --> 00:31:30,380 dit is de belangrijkste manier identificeren velden. 656 00:31:30,380 --> 00:31:32,990 Je kunt ook zeggen dat dit zal een uniek veld. 657 00:31:32,990 --> 00:31:34,700 Het gaat niet om zijn het ding ik vertrouw op, 658 00:31:34,700 --> 00:31:38,490 maar ik zou graag de database wezen hebben dat als voorwaarde, zodat 659 00:31:38,490 --> 00:31:42,340 dat als ik ooit geprobeerd om te registreren twee gebruikers met dezelfde naam, 660 00:31:42,340 --> 00:31:44,360 de database flat out is niet van plan om me te laten. 661 00:31:44,360 --> 00:31:47,490 Ik zou wat extra code hebben PHP dat maar verhindert, 662 00:31:47,490 --> 00:31:50,640 maar de database te kunnen garanderen dat dat nooit gaat gebeuren. 663 00:31:50,640 --> 00:31:53,370 >> Nu, als een terzijde, vooral als je denkt aan afstudeeropdrachten, 664 00:31:53,370 --> 00:31:57,030 in gedachten is het index en vol te houden tekst zijn eigenlijk heel nuttig. 665 00:31:57,030 --> 00:32:01,080 Als u een grotere database en niet met tientallen, maar honderden of duizenden 666 00:32:01,080 --> 00:32:05,270 of zelfs miljoenen velden, kunt u Ook de database van tevoren vertellen 667 00:32:05,270 --> 00:32:07,980 dit is een veld ga ik te zoeken op een terrein. 668 00:32:07,980 --> 00:32:10,520 Misschien zijn gebruikersnaam, misschien is het bio, als je 669 00:32:10,520 --> 00:32:13,750 het maken van een Facebook-achtige website die heeft alinea's die de gebruiker toegestaan 670 00:32:13,750 --> 00:32:16,799 om op te slaan, en als je wilt vertellen de database van tevoren 671 00:32:16,799 --> 00:32:20,090 Ik ga wel op zoek op dit gebied veel, maar het is niet per se uniek, 672 00:32:20,090 --> 00:32:22,800 u kunt opgeven creëren me een index. 673 00:32:22,800 --> 00:32:27,990 Of u kunt ook zeggen: laat mij doen soort van willekeurige zoekopdrachten zoals Command 674 00:32:27,990 --> 00:32:30,420 of Ctrl F, zoals jij zou in een tekstverwerker, 675 00:32:30,420 --> 00:32:34,184 dus je kan willekeurige strings kijken of substrings op dit gebied. 676 00:32:34,184 --> 00:32:36,600 Met andere woorden, we krijgen naar het punt in het semester 677 00:32:36,600 --> 00:32:40,720 waar je niet hoeft te maken over hoe ze dingen efficiënt te implementeren. 678 00:32:40,720 --> 00:32:44,540 Je hoeft alleen maar te weten over wat ontwerpbeslissingen aan zodat je maken 679 00:32:44,540 --> 00:32:48,470 met behulp van het juiste gereedschap voor de handel nodig om functies te benutten 680 00:32:48,470 --> 00:32:50,380 die andere mensen hebben gemaakt voor jou. 681 00:32:50,380 --> 00:32:54,240 Dus om samen te vatten, moet alleen de primaire hebt, kun je maar één, 682 00:32:54,240 --> 00:32:59,630 en het is het ding dat je te verbinden aan met het identificeren velden uniek. 683 00:32:59,630 --> 00:33:02,710 Uniek is gewoon in dezelfde geest, maar je zou slechts af en toe te gebruiken, 684 00:33:02,710 --> 00:33:04,530 maar u wilt dat de database op te leggen. 685 00:33:04,530 --> 00:33:08,050 Index betekent gewoon preemptively versnellen dingen in de toekomst 686 00:33:08,050 --> 00:33:10,230 zodat ik kan zoeken naar dingen op dit gebied. 687 00:33:10,230 --> 00:33:13,700 En dan volledige tekst is over het algemeen voor alinea's, of essays, of grote lichamen 688 00:33:13,700 --> 00:33:16,270 van de tekst waar u zou ook willen hebben 689 00:33:16,270 --> 00:33:19,420 wild cards als het equivalent van de ster. 690 00:33:19,420 --> 00:33:19,920 Right. 691 00:33:19,920 --> 00:33:22,580 >> Dus dat was een soort van veel om in een keer. 692 00:33:22,580 --> 00:33:25,220 Laten we eens kijken of we niet kunnen destilleren een paar van deze functies 693 00:33:25,220 --> 00:33:29,540 en dan iets op te bouwen vrij eenvoudig, maar krachtig. 694 00:33:29,540 --> 00:33:31,380 Dus onder andere ontwerpbeslissingen je bent 695 00:33:31,380 --> 00:33:34,005 uiteindelijk gaat hebben is langs de lijnen opslag motoren. 696 00:33:34,005 --> 00:33:37,370 En laat me gewoon melding maken van deze in afwachting van de definitieve projecten, 697 00:33:37,370 --> 00:33:42,020 en anticipatie van Let's say-- geen laten we dit doen. 698 00:33:42,020 --> 00:33:43,820 Laten we bouwen dit kleine toepassing eerst. 699 00:33:43,820 --> 00:33:48,070 Ik ga in mijn terminal te gaan venster, en hier is niet 700 00:33:48,070 --> 00:33:52,500 alleen counter.php, die we nu gaan om zich te ontdoen van het zo niet langer germane, 701 00:33:52,500 --> 00:33:54,570 maar we hebben een hele hoop van mappen en deze 702 00:33:54,570 --> 00:33:58,080 gaat zeer vergelijkbaar in de geest te zijn om wat je ziet in probleem stelde zeven. 703 00:33:58,080 --> 00:34:00,980 >> Dus hebben we drie directories omvat publieke en templates, die 704 00:34:00,980 --> 00:34:05,040 is precies waar we af naar links op Maandag met onze hele MVC paradigma. 705 00:34:05,040 --> 00:34:09,290 En om recap, in het openbaar zal gaan elk bestand dat ik wil dat gebruikers in staat om daadwerkelijk 706 00:34:09,290 --> 00:34:12,969 v in staat zijn om te bezoeken in hun browser via URL. 707 00:34:12,969 --> 00:34:13,502 Sjabloon. 708 00:34:13,502 --> 00:34:14,710 Wat deden we in templates? 709 00:34:14,710 --> 00:34:17,070 Wat voor spullen? 710 00:34:17,070 --> 00:34:21,659 Er was niet veel, maar een paar dossier tenminste op maandag. 711 00:34:21,659 --> 00:34:22,619 Yeah. 712 00:34:22,619 --> 00:34:23,100 >> PUBLIEK: Koptekst en voettekst? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: Koptekst en voettekst. 714 00:34:24,516 --> 00:34:26,679 Dus we hebben iets dergelijks vandaag, ook. 715 00:34:26,679 --> 00:34:30,330 We hebben nog een paar bestanden, maar Footer Ik zie, Header ik zie, 716 00:34:30,330 --> 00:34:31,909 en dan een heleboel andere bestanden. 717 00:34:31,909 --> 00:34:35,482 Dus dit is het equivalent van de V MVC mening dat, 718 00:34:35,482 --> 00:34:37,690 weer, zal een beetje meer duidelijk probleem stelde zeven, 719 00:34:37,690 --> 00:34:40,380 maar dit is gewoon een map ben ik zetten een groot deel van mijn esthetiek. 720 00:34:40,380 --> 00:34:42,840 Veel van mijn HTML, veel van mijn vormen. 721 00:34:42,840 --> 00:34:46,899 Ondertussen omvat, is een directory dat deze drie dossiers heeft 722 00:34:46,899 --> 00:34:48,440 en laten we eens een snelle blik op deze. 723 00:34:48,440 --> 00:34:51,699 >> Ik ga om verder te gaan en open config.php. 724 00:34:51,699 --> 00:34:54,610 Zo blijkt, veel zoals eerder in de term, 725 00:34:54,610 --> 00:34:57,850 u scherp opgenomen CS50 dot h met pset7. 726 00:34:57,850 --> 00:35:00,780 In voorbeeld van vandaag, je gaat het equivalent van doen 727 00:35:00,780 --> 00:35:03,600 met een verlangen statement die effectief 728 00:35:03,600 --> 00:35:05,340 omvat deze verschillende lijnen. 729 00:35:05,340 --> 00:35:08,225 Dus om duidelijk te zijn, dit is een bestand genaamd config.php. 730 00:35:08,225 --> 00:35:09,350 En let op wat het doet. 731 00:35:09,350 --> 00:35:11,970 Het is blijkbaar iets te doen cryptisch, het inschakelen van foutmeldingen 732 00:35:11,970 --> 00:35:13,680 zodat u ze kunt zien in de browser. 733 00:35:13,680 --> 00:35:15,860 Het is dus blijkbaar waarbij twee andere bestanden 734 00:35:15,860 --> 00:35:19,530 dus dit is zoals #include in C, en dan is dit degene die we zagen, 735 00:35:19,530 --> 00:35:22,720 en we hebben vertrouwd op, deze gaat aan dat winkelmandje achtige functionaliteit. 736 00:35:22,720 --> 00:35:25,610 >> Dit betekent een cookie wil heen en weer worden gestuurd. 737 00:35:25,610 --> 00:35:27,290 Dus waarom is dit interessant? 738 00:35:27,290 --> 00:35:32,460 Nou, als we terug gaan naar deze directory en open te stellen, bijvoorbeeld, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Merk op dat PHP ondersteunt wel constanten, het is niet helemaal zoals #define in C. 741 00:35:38,840 --> 00:35:41,290 In plaats daarvan, je letterlijk zeggen gedefinieerd, en kennisgeving 742 00:35:41,290 --> 00:35:44,110 die ik heb opgeslagen op voorhand vier constanten in dit bestand. 743 00:35:44,110 --> 00:35:47,020 Een voor de database van vandaag, voor mijn wachtwoord voor mijn gebruikersnaam, 744 00:35:47,020 --> 00:35:48,690 en de naam van de server. 745 00:35:48,690 --> 00:35:51,644 Dus deze zijn eigenlijk gaat worden redelijk vergelijkbaar in probleem stelde zeven. 746 00:35:51,644 --> 00:35:54,560 En tot slot, en dit is waar ik ben ga wat leuke functionaliteit te krijgen 747 00:35:54,560 --> 00:35:59,000 van het personeel, in functions.php is een bos van de code die we hebben geschreven, 748 00:35:59,000 --> 00:36:01,040 en Ik heb een aantal van deze van probleem stelde zeven 749 00:36:01,040 --> 00:36:05,920 voor vandaag, dat doet een hoop dingen en laten we gewoon kijken naar een van hen 750 00:36:05,920 --> 00:36:07,270 in het bijzonder. 751 00:36:07,270 --> 00:36:09,720 Deze functie hier, query gaat worden 752 00:36:09,720 --> 00:36:13,600 de PHP functie noemen we om SQL-code. 753 00:36:13,600 --> 00:36:16,070 Een moment geleden waren we met behulp van phpMyAdmin, maar dat is slechts 754 00:36:16,070 --> 00:36:18,720 voor soort leren doeleinden en diagnostische doeleinden 755 00:36:18,720 --> 00:36:20,494 en het vergeten van uw database set. 756 00:36:20,494 --> 00:36:22,660 Wanneer u daadwerkelijk gebruik maken van uw gegevensbestand, u, de mens, 757 00:36:22,660 --> 00:36:24,100 zijn uiteraard niet van plan om te trekken van een web 758 00:36:24,100 --> 00:36:25,740 pagina elke keer dat iemand registreert. 759 00:36:25,740 --> 00:36:29,870 Je gaat om code te schrijven die inserts en verwijdert gebruikers op aanvraag, 760 00:36:29,870 --> 00:36:32,490 en we gaan om dit te doen via de query functie. 761 00:36:32,490 --> 00:36:35,360 Als ik nu naar beneden scrollen, er is zal zijn een paar meer functies. 762 00:36:35,360 --> 00:36:37,170 Redirect gaat een functie zijn wij schreven 763 00:36:37,170 --> 00:36:40,160 voor u die u toelaat om zenden de gebruiker naar een andere URL, 764 00:36:40,160 --> 00:36:43,780 en maken is een functie, heel graag we zagen op maandag, die eigenlijk maakt 765 00:36:43,780 --> 00:36:48,000 een sjabloon, maar meer in de volgende in de vorm van eigen walk pset7's door. 766 00:36:48,000 --> 00:36:50,500 Voor nu, laten we gaan je gang en doe dit. 767 00:36:50,500 --> 00:36:54,860 >> Laat me gaan in mijn colleges tafel en zien dat er op dit moment niets 768 00:36:54,860 --> 00:36:59,640 hier gewoon nog niet, en laat me ook gaan in mijn openbare map, waar 769 00:36:59,640 --> 00:37:02,780 er is gewoon een bestand, index.php. 770 00:37:02,780 --> 00:37:06,920 Dit bestand wordt weergegeven super eenvoudig te zijn op het moment, het ziet er net als dit. 771 00:37:06,920 --> 00:37:09,110 Heel graag hoe wij gebleven op maandag. 772 00:37:09,110 --> 00:37:11,945 Ik ben die dit bestand, config.php, die in 773 00:37:11,945 --> 00:37:15,160 een directory bevat, welke is in dot dot, mijn ouders, 774 00:37:15,160 --> 00:37:17,650 en dan is het net waardoor dit bestand. 775 00:37:17,650 --> 00:37:18,960 Dus wat is dit bestand? 776 00:37:18,960 --> 00:37:24,700 >> Laten we openen in mijn templates form.php, en we zullen dit zien. 777 00:37:24,700 --> 00:37:28,500 Super eenvoudig, blijkbaar deze vorm is gaan door een $ _GET of $ _POST te onderwerpen. 778 00:37:28,500 --> 00:37:29,320 Quick sanity check. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Letterlijk visueel zoeken in de file. 781 00:37:35,690 --> 00:37:36,610 Methode is gelijk na. 782 00:37:36,610 --> 00:37:39,280 Dus het gaat niet om de URL te gebruiken, zoals Google doet, het gaat om te sorteren verstoppertje 783 00:37:39,280 --> 00:37:41,030 de informatie achter de schermen en het is 784 00:37:41,030 --> 00:37:43,580 gaan naar een in te dienen bestand genaamd register.php, 785 00:37:43,580 --> 00:37:45,660 en dat is het bestand we zijn nog niet geschreven 786 00:37:45,660 --> 00:37:47,610 maar wat dit gaat te lijken is dit. 787 00:37:47,610 --> 00:37:52,670 >> Als ik naar een aparte pagina Dit is wat localhost / index.php eruit ziet. 788 00:37:52,670 --> 00:37:56,930 En nogmaals, de server gewoon in de veronderstelling index.php. 789 00:37:56,930 --> 00:37:57,910 Enter. 790 00:37:57,910 --> 00:37:59,870 Dus dat is waar we zijn op, en wat ik wil doen 791 00:37:59,870 --> 00:38:02,450 is in staat om dingen te typen als David, en vervolgens 792 00:38:02,450 --> 00:38:08,050 mijn telefoonnummer, die zal zeggen 617-555-1212 voor nu, registreren 793 00:38:08,050 --> 00:38:09,910 en nu register.php werd niet gevonden. 794 00:38:09,910 --> 00:38:11,440 Dus ik nodig om dit te implementeren. 795 00:38:11,440 --> 00:38:13,320 Dus laten we snel zweep iets als dit op. 796 00:38:13,320 --> 00:38:18,640 Laat me gaan in mijn openbare map en doe gedit van register.php, 797 00:38:18,640 --> 00:38:22,300 en nu ga ik verder te gaan en beginnen PHP-modus, zoals wij deden op maandag, 798 00:38:22,300 --> 00:38:25,430 en dicht PHP-tag, en Laten we een paar dingen. 799 00:38:25,430 --> 00:38:28,336 >> Zo één, ik weet het, van die vorm te hebben geschreven, 800 00:38:28,336 --> 00:38:29,960 die ik wil controleren voor het volgende. 801 00:38:29,960 --> 00:38:35,670 Als deze leeg is, wat de gebruiker getypt in het veld naam, dan 802 00:38:35,670 --> 00:38:39,860 Ik ga iets zeggen zoals excuses ontbrekende naam. 803 00:38:39,860 --> 00:38:42,380 Verontschuldigen, ondertussen, is niet een ingebouwde PHP ding, 804 00:38:42,380 --> 00:38:45,970 het is een functie die we schreven in functions.php voor pset7 805 00:38:45,970 --> 00:38:47,940 zodat je er toegang toe hebben. 806 00:38:47,940 --> 00:38:53,830 Anders als het andere veld leeg is, nummer, dan ben ik 807 00:38:53,830 --> 00:38:58,370 gaan om zich te verontschuldigen voor de gebruiker en ontbrekende getal zeggen. 808 00:38:58,370 --> 00:38:59,320 Sla dit bestand op. 809 00:38:59,320 --> 00:39:02,640 >> Laten we nu teruggaan naar mijn browser, ga terug naar de forum probeer het opnieuw. 810 00:39:02,640 --> 00:39:04,070 Registreer. 811 00:39:04,070 --> 00:39:05,090 OK. 812 00:39:05,090 --> 00:39:06,730 Er is niets gebeurd, dat is goed. 813 00:39:06,730 --> 00:39:08,120 Ik heb niet een foutmelding krijgen. 814 00:39:08,120 --> 00:39:11,651 Maar als in plaats daarvan, laten we opnieuw deze pagina, en niet bieden iets. 815 00:39:11,651 --> 00:39:12,150 Verdomme. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Doe dat. 818 00:39:17,140 --> 00:39:18,810 Registreer. 819 00:39:18,810 --> 00:39:20,350 Wat heb ik verkeerd gedaan? 820 00:39:20,350 --> 00:39:24,860 Indien leeg, $ _POST naam. 821 00:39:24,860 --> 00:39:26,350 Nog eens zeggen? 822 00:39:26,350 --> 00:39:27,670 >> Oh, natuurlijk. 823 00:39:27,670 --> 00:39:30,919 Ik vergat het belangrijkste deel, dat is vereist ("../ includes / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Ik moet de toegang tot het hebben verontschuldigen functie, die 826 00:39:36,460 --> 00:39:37,770 is de reden waarom er niets gebeurde. 827 00:39:37,770 --> 00:39:39,460 De functie bestaat eigenlijk niet. 828 00:39:39,460 --> 00:39:40,640 Dus laten we het opnieuw proberen dit. 829 00:39:40,640 --> 00:39:42,350 Laten we de pagina geladen is, klik op Registreren. 830 00:39:42,350 --> 00:39:43,060 OK. 831 00:39:43,060 --> 00:39:43,770 Daar is het. 832 00:39:43,770 --> 00:39:45,700 Dus, de output zijn we hier zien is het resultaat 833 00:39:45,700 --> 00:39:47,685 van het bellen van een excuses functie, super eenvoudig, 834 00:39:47,685 --> 00:39:50,060 en drukt het gewoon uit wat Ik geef het als een argument. 835 00:39:50,060 --> 00:39:51,370 >> Oké, dus laten we samenwerken. 836 00:39:51,370 --> 00:39:54,240 Laten we zorgen voor mijn naam als David, registreren, 837 00:39:54,240 --> 00:39:56,890 ontbrekende aantal OK laten we bepalen dat, ook. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registreer. 840 00:39:59,250 --> 00:39:59,750 OK. 841 00:39:59,750 --> 00:40:02,760 Dus alles is goed nu, gewoon niets interessant gebeurt. 842 00:40:02,760 --> 00:40:06,000 Dus nu laten we iets meer interessante gebeuren als deze. 843 00:40:06,000 --> 00:40:09,980 Laat me gaan in phpMyAdmin, en laten we daadwerkelijk aanmaken van een tabel genaamd gebruikers, 844 00:40:09,980 --> 00:40:12,330 Ik ga het geven drie kolommen, en ik zal snel 845 00:40:12,330 --> 00:40:16,250 creëren ID, en dan te noemen, en dan nummer, 846 00:40:16,250 --> 00:40:18,832 en het ID-veld ben ik om te vertrekken als een int. 847 00:40:18,832 --> 00:40:20,790 De veldnaam ik ga om te vertrekken als een varchar, 848 00:40:20,790 --> 00:40:23,257 en wij zullen zeggen 64, enigszins arbitrair. 849 00:40:23,257 --> 00:40:25,090 Het nummer dat ik ga te maken, weet je wat? 850 00:40:25,090 --> 00:40:27,350 We gaan in Steun ons nummers hier, 851 00:40:27,350 --> 00:40:31,510 dus ik ga iets doen als char en dan 10 tekens 852 00:40:31,510 --> 00:40:34,540 max voor een netnummer en dan zeven cijfers. 853 00:40:34,540 --> 00:40:37,870 En dan hier, ik ga specificeren autotoename dit gebied, 854 00:40:37,870 --> 00:40:40,550 maken dit een primaire sleutel, en Ik ga je gang en niet gaan 855 00:40:40,550 --> 00:40:42,240 controleren van een van deze andere dozen. 856 00:40:42,240 --> 00:40:48,030 >> Dus als ik nu eindelijk op Opslaan klikt, en ik ga terug naar mijn gebruikers tafel, 857 00:40:48,030 --> 00:40:52,270 Dit is hoe het eruit ziet als ik klik nu een nieuw tabblad structuur. 858 00:40:52,270 --> 00:40:54,550 Dus dit, om duidelijk te zijn, is gewoon phpMyAdmin's weg 859 00:40:54,550 --> 00:40:58,570 van te zeggen uw database tabel heeft een ID, een naam en een nummer 860 00:40:58,570 --> 00:41:02,040 met de bijzondere configuraties en wij doen de rest van de velden te negeren 861 00:41:02,040 --> 00:41:03,140 er voor nu. 862 00:41:03,140 --> 00:41:04,810 >> Dus wat moet ik nu wil doen? 863 00:41:04,810 --> 00:41:09,060 Dus als ik ga nu naar mijn broncode, als het goed is 864 00:41:09,060 --> 00:41:11,190 Ik wil de volgende query uit te voeren. 865 00:41:11,190 --> 00:41:14,970 Invoegen in, en ik kan alleen maar zeggen gebruikers Ik doe niet strikt 866 00:41:14,970 --> 00:41:18,620 moeten die terug tikken als het niet een gevaarlijk woord als gebruikers. 867 00:41:18,620 --> 00:41:22,810 Ik ga naam te zeggen, nummer, en dan hier ben ik 868 00:41:22,810 --> 00:41:24,960 niet van plan om de harde code de cijfer van de waarden nog. 869 00:41:24,960 --> 00:41:26,760 Ik ga twee vraagtekens gezet. 870 00:41:26,760 --> 00:41:29,320 En dit is een conventie in vele talen 871 00:41:29,320 --> 00:41:31,730 waarbij als je wilt hebben een tijdelijke aanduiding voor een string 872 00:41:31,730 --> 00:41:34,105 je gaat om de vraag te gebruiken merken, om redenen die we zullen 873 00:41:34,105 --> 00:41:36,370 terug te komen op ongeveer chatten veiligheid, en hier 874 00:41:36,370 --> 00:41:39,420 Ik ga geschiedde in die twee velden te posten naam, 875 00:41:39,420 --> 00:41:44,850 en dan te posten nummer, en nu sla het bestand op. 876 00:41:44,850 --> 00:41:47,090 >> En nu ga ik naar naar beneden gaan is hier een super 877 00:41:47,090 --> 00:41:55,690 gewoon rendersuccess.php, zeggen welke zal een template. 878 00:41:55,690 --> 00:41:57,380 Ik ga echt snel te maken. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php en ik ga gewoon H1 succes in dat bestand te zeggen. 880 00:42:06,270 --> 00:42:06,990 Prima. 881 00:42:06,990 --> 00:42:11,312 Dus nu, laten we terug gaan naar de browser, waar ik eerder bezocht. 882 00:42:11,312 --> 00:42:14,270 Laten we verder gaan en bevestig ik schreef in David, schreef ik in een telefoonnummer, 883 00:42:14,270 --> 00:42:15,390 registreren. 884 00:42:15,390 --> 00:42:16,100 Verdomme. 885 00:42:16,100 --> 00:42:17,420 Wat heb ik verkeerd gedaan? 886 00:42:17,420 --> 00:42:20,850 Dus ik ben het zien van een fout hier, u hebben een fout in uw SQL syntax. 887 00:42:20,850 --> 00:42:24,900 Laat me terug naar gedit springen, laat me terug te gaan naar register.php, 888 00:42:24,900 --> 00:42:28,830 en wat heb ik weglaten dat belangrijk was de vorige keer? 889 00:42:28,830 --> 00:42:29,722 Ik heb dit nodig. 890 00:42:29,722 --> 00:42:32,930 U wilt dat de ander dan uit weten hebben eerder opgevallen, maar ik heb dit nodig. 891 00:42:32,930 --> 00:42:35,596 >> Dus laten we nu eens terug te gaan, en dit was nuttig om te zien in de browser 892 00:42:35,596 --> 00:42:37,680 en dat is de reden waarom in config.php we spugen fouten. 893 00:42:37,680 --> 00:42:41,770 Laten we verder gaan en opnieuw te laden, Klik op Doorgaan, succes. 894 00:42:41,770 --> 00:42:47,060 Dus nu laat ik ga naar mijn databank hier en klik op Gebruikers, 895 00:42:47,060 --> 00:42:51,680 en bladeren, en merk ik nu hebben David in mijn databank hier. 896 00:42:51,680 --> 00:42:55,810 Nu technisch gezien is deze website nog niet op het openbare internet, 897 00:42:55,810 --> 00:42:57,890 dus ik kan niet anders hebben mensen in te zetten hier, 898 00:42:57,890 --> 00:43:01,120 maar als ik nu wilde, voor Zo stuur ik een SMS-bericht. 899 00:43:01,120 --> 00:43:03,920 Laten we gaan op een ledemaat hier en zien of dit echt werkt. 900 00:43:03,920 --> 00:43:07,331 Ik ga om verder te gaan en verwijder deze rij 901 00:43:07,331 --> 00:43:09,080 en we zullen dit vervagen in de video later 902 00:43:09,080 --> 00:43:11,900 dus we hebben niet de hele internet sms me, 903 00:43:11,900 --> 00:43:17,270 en we zullen nu gaan naar de browser en we gaan over de les te lezen 904 00:43:17,270 --> 00:43:22,040 en we zullen het type in verschillende nummer hier, registreren, succes. 905 00:43:22,040 --> 00:43:25,550 >> Dus nu, mijn eigen nummer is vermoedelijk in de database, en nu het leuke gedeelte. 906 00:43:25,550 --> 00:43:28,774 Laten we het daadwerkelijk gebruik maken van PHP te doen iets programmatisch, 907 00:43:28,774 --> 00:43:30,940 hetzij vanaf de opdrachtregel lijn of van ergens anders, 908 00:43:30,940 --> 00:43:32,773 en voor nu ben ik gewoon gaat om het simpel te houden 909 00:43:32,773 --> 00:43:36,230 en ik ga in te gaan mijn directory hier en doe het volgende. 910 00:43:36,230 --> 00:43:44,920 Gedit script laten we zeggen, we zullen noem het de tekst, #! / user / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 zoals we zagen vorige keer. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Nu ga ik nodig hebben omvat config.php, 914 00:43:55,055 --> 00:43:57,360 ook al is deze macht induceert een lichte fout. 915 00:43:57,360 --> 00:44:03,960 En nu ga ik verder gaan en zeggen: rijen, query, selecteert ster van gebruikers, 916 00:44:03,960 --> 00:44:08,149 en nu hier ga ik een techniek doen van de vorige keer voor elke rijen als rij. 917 00:44:08,149 --> 00:44:09,690 En ik ga iets simpels doen. 918 00:44:09,690 --> 00:44:19,090 Printf laten we zeggen dat de naam is dit, en het nummer is dit, backslash n. 919 00:44:19,090 --> 00:44:23,320 En nu ga ik te passeren in rij citeren unquote naam, 920 00:44:23,320 --> 00:44:28,140 en rij citaat unquote nummer, en nu laten we gaan vooruit 921 00:44:28,140 --> 00:44:31,430 en mijn terminal venster chmod dit een + x te maken 922 00:44:31,430 --> 00:44:33,970 dit script met de naam tekst uitvoerbaar. 923 00:44:33,970 --> 00:44:36,080 En laten we nu de tekst lopen. 924 00:44:36,080 --> 00:44:37,590 >> OK, dus vooruitgang. 925 00:44:37,590 --> 00:44:39,960 Dus ik heb nu geschreven een command line script, 926 00:44:39,960 --> 00:44:43,300 in een taal genaamd PHP, dat, vanwege die vereisen lijn, 927 00:44:43,300 --> 00:44:46,380 heeft toegang tot al die configuratie constanten die ik heb opgegeven. 928 00:44:46,380 --> 00:44:48,177 De naam van de database enzovoort. 929 00:44:48,177 --> 00:44:50,260 In feite, voor de duidelijkheid dat dit geen toevalstreffer, 930 00:44:50,260 --> 00:44:54,730 laat me gaan en te registreren, echt snel, iemand anders als Rob 931 00:44:54,730 --> 00:44:58,890 en zal hem het 555-1212 nummer geven. 932 00:44:58,890 --> 00:45:01,557 >> En nu, als ik het script nogmaals, let op de macht 933 00:45:01,557 --> 00:45:03,140 van wat we doen met de database. 934 00:45:03,140 --> 00:45:07,680 Nu heb ik meteen gezien wat de andere twee rijen zijn in mijn database. 935 00:45:07,680 --> 00:45:10,699 Dus nu laten we proberen om iets te doen zelfs liefhebber binnenkant van, 936 00:45:10,699 --> 00:45:12,740 en dit is het deel we hebben niet getest vooraf 937 00:45:12,740 --> 00:45:15,910 dus de laatste keer dat ik dit deed ging het vreselijk mis, 938 00:45:15,910 --> 00:45:17,120 We hebben video van die strekking. 939 00:45:17,120 --> 00:45:18,286 >> Eigenlijk, ja, grappig terzijde. 940 00:45:18,286 --> 00:45:20,480 Dus de laatste keer, in een lezing als twee jaar geleden, 941 00:45:20,480 --> 00:45:23,230 hebben we besloten, heb ik besloten, om Dit alles zou een geweldig idee zijn 942 00:45:23,230 --> 00:45:28,150 om dynamisch genereren van e-mails in klasse, met behulp van de hele database CS50 943 00:45:28,150 --> 00:45:33,390 studenten, die ons hun nummers had gegeven en hun mobiele telefoon dragers die je 944 00:45:33,390 --> 00:45:36,290 zich nog wel herinneren uit pset0, hoe om te redeneren, het blijkt 945 00:45:36,290 --> 00:45:40,650 Ik had een kleine bug in mijn programma en deed een paar fouten in 2012, denk ik. 946 00:45:40,650 --> 00:45:43,997 >> Waarbij, degene die ik had voor de lus die deed precies dit soort dingen, 947 00:45:43,997 --> 00:45:46,580 itereren over de database het krijgen van een naam uit de database, 948 00:45:46,580 --> 00:45:49,940 de naam van de database, en vervolgens op elke iteratie van dat lus ik stuurde een e-mail. 949 00:45:49,940 --> 00:45:54,130 Maar in plaats van het verzenden van een e-mail, ik stuurde een e-mail de eerste iteratie 950 00:45:54,130 --> 00:45:58,200 en twee e-mails van een tweede iteratie, verzonden drie e-mails een tweede iteratie, die 951 00:45:58,200 --> 00:46:01,230 zoals je misschien herinneren van onze bespreking van asymptotische notatie 952 00:46:01,230 --> 00:46:06,400 deze grote O van slechte, zoals n kwadraat is hoeveel berichten ik heb verzonden, 953 00:46:06,400 --> 00:46:08,560 maar het was niet eens e-mails het was tekstberichten. 954 00:46:08,560 --> 00:46:12,070 >> En zoals u weet, deelname is niet super high tegen het einde van het semester 955 00:46:12,070 --> 00:46:15,360 en dus ik dacht dat het leuk zou zijn bij de tijd om te zeggen: "Waarom ben je niet de klas? ' 956 00:46:15,360 --> 00:46:17,880 In het tekstbericht I naar de gehele klasse 957 00:46:17,880 --> 00:46:22,140 en het was grappig om te willen 50% van de klasse, maar de overige 50%, van wie sommigen 958 00:46:22,140 --> 00:46:26,102 flipte, ik stuurde ongelooflijk verontschuldigend zoete tonen 959 00:46:26,102 --> 00:46:28,560 aan het personeel verontschuldigen voor de lezing gemist net 960 00:46:28,560 --> 00:46:29,530 dit keer, toch? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> Dus dat zou vreselijk mis. 963 00:46:34,030 --> 00:46:37,030 Dus in die geest, laten we dit proberen weer maar gewoon met mijn nummer. 964 00:46:37,030 --> 00:46:41,940 Vooraf, in functions.php, Ik heb deze functie hier geschreven. 965 00:46:41,940 --> 00:46:44,250 Het is de tekst genoemd, en het neemt in drie argumenten. 966 00:46:44,250 --> 00:46:46,360 Een nummer, een drager, en een boodschap. 967 00:46:46,360 --> 00:46:50,390 >> Ik gebruik een switch statement, waarin heerlijk PHP nemen strings, niet alleen 968 00:46:50,390 --> 00:46:53,350 integers, en ik wilde niet te implementeren maar alle voor deze, 969 00:46:53,350 --> 00:46:55,370 Ik heb net gedaan AT & T en Verizon. 970 00:46:55,370 --> 00:46:57,610 Want het blijkt dat met deze dragers 971 00:46:57,610 --> 00:47:00,570 ze hebben e-mail naar SMS-gateways, waarbij u kunt eigenlijk 972 00:47:00,570 --> 00:47:05,529 stuur dan een e-mail naar een adres zoals telefoonnummer vtext.com 973 00:47:05,529 --> 00:47:08,070 en als de gebruiker heeft niet geblokkeerd de berichten, zal het gaan door 974 00:47:08,070 --> 00:47:09,340 is een SMS-bericht. 975 00:47:09,340 --> 00:47:13,270 >> Nu om dit te doen, ik ga te hebben om toe te voegen één veld echt snel naar mijn database. 976 00:47:13,270 --> 00:47:15,470 Ik ga in te gaan mijn structuur, en ik ben 977 00:47:15,470 --> 00:47:21,880 gaan om verder te gaan en voeg een veld aan het einde van de tabel. 978 00:47:21,880 --> 00:47:25,227 Laten klik op Go, en ik ben ga deze carrier noemen 979 00:47:25,227 --> 00:47:27,310 en nu ga ik naar laat dit als een bar tekst, 980 00:47:27,310 --> 00:47:29,320 maar we kunnen liefhebber in de toekomst. 981 00:47:29,320 --> 00:47:31,961 Ik ga snel naar naar mijn tafel, en ik ben 982 00:47:31,961 --> 00:47:34,210 gaan om zich te ontdoen van Rob, want dat is een nep-nummer, 983 00:47:34,210 --> 00:47:38,540 Ik ga hier in bewerken te gaan en ik ben ga mijn carrier handmatig wijzigen 984 00:47:38,540 --> 00:47:43,410 Verizon, zijn die het is, en nu hier. 985 00:47:43,410 --> 00:47:44,980 >> Laten we snel een sanity check. 986 00:47:44,980 --> 00:47:52,730 Laten we het openstellen van onze tekst script, dat ziet er zo uit, drager is% s. 987 00:47:52,730 --> 00:47:58,230 We doen veel meer fout controleren dan ik deed in 2012, drager. 988 00:47:58,230 --> 00:48:01,160 En nu, ik ga om te gaan vooruit en re-run het script. 989 00:48:01,160 --> 00:48:01,660 OK. 990 00:48:01,660 --> 00:48:06,100 Carrier is Verizon, wat betekent nu hopelijk kan ik gewoon doen. 991 00:48:06,100 --> 00:48:08,360 Juist dit jaar, hopelijk, hier gaan we. 992 00:48:08,360 --> 00:48:12,200 >> Dus binnenkant van deze lus, ik ben zal niet alleen deze printf, 993 00:48:12,200 --> 00:48:15,990 Ik ben ook gaan om tekst te bellen en het gebruik van deze functie recall 994 00:48:15,990 --> 00:48:19,670 was het duurt een nummer, een drager, en een boodschap. 995 00:48:19,670 --> 00:48:23,310 Dus laten we zien, is nummer gaan zijn rij citaat unquote "nummer," 996 00:48:23,310 --> 00:48:31,660 rij citaat unquote "drager" en de laatste was bericht. 997 00:48:31,660 --> 00:48:36,250 Verknal het niet dit jaar, puntkomma. 998 00:48:36,250 --> 00:48:36,780 >> OK. 999 00:48:36,780 --> 00:48:38,280 Vingers gekruist. 1000 00:48:38,280 --> 00:48:39,970 Eens kijken of dit werkt. 1001 00:48:39,970 --> 00:48:41,720 Oké, dus. 1002 00:48:41,720 --> 00:48:43,000 Daar gaan we dan. 1003 00:48:43,000 --> 00:48:47,380 Laten we het ontgrendelen van de telefoon, kruis je vingers, verdomme. 1004 00:48:47,380 --> 00:48:50,300 Undefined variable may-- oh wacht, wacht, wacht, echt snel. 1005 00:48:50,300 --> 00:48:51,340 Echt snel, heel snel. 1006 00:48:51,340 --> 00:48:53,380 Dit is absoluut de moeite waard. 1007 00:48:53,380 --> 00:48:57,710 Laat me grijpen, laat me grijpen, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Dank u, de teksten hebben gestart vanuit iemand anders. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Laat me ga je gang en open echte snel, dropbox.php / mail in hier. 1011 00:49:11,650 --> 00:49:12,660 Standby. 1012 00:49:12,660 --> 00:49:14,455 Absoluut de moeite waard. 1013 00:49:14,455 --> 00:49:17,430 Downloads. 1014 00:49:17,430 --> 00:49:18,560 OK, bron src8m. 1015 00:49:18,560 --> 00:49:19,700 OK. 1016 00:49:19,700 --> 00:49:21,380 >> Nodig nog een regel hier. 1017 00:49:21,380 --> 00:49:24,530 Oh daar is het, het is in Frosh IM, het is in register op drie. 1018 00:49:24,530 --> 00:49:28,820 Oh hallo, Margo, dank u zeer. 1019 00:49:28,820 --> 00:49:31,130 OK, en ik miste deze lijn hier. 1020 00:49:31,130 --> 00:49:33,010 Dus laat me snel pakken deze regel code, 1021 00:49:33,010 --> 00:49:36,200 die de e-mail of bibliotheek bevat die ik eigenlijk wil gebruiken, 1022 00:49:36,200 --> 00:49:38,300 Ik ga snel ga terug naar functies, 1023 00:49:38,300 --> 00:49:42,337 Ik ga om te gaan naar de top van deze bestand en vereisen dit bestand als goed, 1024 00:49:42,337 --> 00:49:45,420 en nu ga ik echt door mijn vingers als ik ga terug naar de command 1025 00:49:45,420 --> 00:49:49,530 lijn script, dat is de binnenkant van de huidige lokale host directory. 1026 00:49:49,530 --> 00:49:50,610 Run tekst. 1027 00:49:50,610 --> 00:49:52,720 Enter. 1028 00:49:52,720 --> 00:49:53,220 Mail. 1029 00:49:53,220 --> 00:49:53,719 Standby. 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 Standby. 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 Daar gaan we dan. 1035 00:50:03,870 --> 00:50:06,880 >> Mail krijgt nieuwe PHP mailer. 1036 00:50:06,880 --> 00:50:09,970 Heb ik dit goed? 1037 00:50:09,970 --> 00:50:11,067 Verdomme. 1038 00:50:11,067 --> 00:50:12,150 To-- oh, wacht, wacht, wacht. 1039 00:50:12,150 --> 00:50:12,649 Stand-by. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Ik beloof, dit is ga zo de moeite waard te zijn. 1042 00:50:18,630 --> 00:50:20,340 Adres. 1043 00:50:20,340 --> 00:50:24,390 Dit is de reden waarom ik niet maken de voorbeelden recht voor de les. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 De volgende ontvangers is mislukt. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Laten we proberen een laatste ding. 1048 00:50:33,040 --> 00:50:40,660 SMTP ingesteld van, voeg het adres, het adres is inderdaad dat. 1049 00:50:40,660 --> 00:50:43,980 Laten we proberen dit laatste deel in de adresbalk. 1050 00:50:43,980 --> 00:50:47,210 Ach, ik ben echt verdrietig nu. 1051 00:50:47,210 --> 00:50:47,854 Dank u. 1052 00:50:47,854 --> 00:50:50,270 Maar ik waardeer alle de teksten die u hebt verzonden. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Je hebt dit David. 1055 00:50:56,320 --> 00:50:59,310 Je waait het. 1056 00:50:59,310 --> 00:51:01,720 Laten we het daarbij laten en we zullen herstellen op maandag. 1057 00:51:01,720 --> 00:51:04,290 Zie je dan. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: En nu Deep Gedachten door Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 Als een binaire boom valt in een bos en er niemand aanwezig is om C het-- [grinnikt]. 1061 00:51:17,590 --> 00:51:18,998