1 00:00:00,000 --> 00:00:10,393 >> [Speel van musiek] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 David J. Malan Alle regte. 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 die einde van die week 8. 7 00:00:15,570 --> 00:00:18,360 En soos jy weet, het ons mooi gereelde kantoorure in 'n paar 8 00:00:18,360 --> 00:00:21,090 van die eetsale insluitend Annenberg. 9 00:00:21,090 --> 00:00:23,860 En 'n paar van die span vriendelik het 'n paar foto's die afgelope tyd. 10 00:00:23,860 --> 00:00:26,230 En in die eer van Halloween, het ons gedink ons ​​wil 11 00:00:26,230 --> 00:00:30,160 een wat ons eerder gevang deur deel verrassing hier in Annenberg Hall net 12 00:00:30,160 --> 00:00:31,490 die ander aand. 13 00:00:31,490 --> 00:00:36,300 Jou klasmaat Jakob gestel vir hierdie foto, maar was 'n meer amusante 14 00:00:36,300 --> 00:00:39,760 was op Facebook, die daaropvolgende gesprek wat daarna gebeur het. 15 00:00:39,760 --> 00:00:43,020 >> Sy eerste pos in reaksie na sy foto was nie. 16 00:00:43,020 --> 00:00:46,740 'N Paar minute later, het hy besluit een homself met hierdie. 17 00:00:46,740 --> 00:00:53,800 Dit gaan oor dan gaan dit, en dan nog meer aantrekkelijke 18 00:00:53,800 --> 00:00:55,320 is toe sy ma chimed in. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 En dan uiteindelik, dit lyk dit was net 21 00:01:01,800 --> 00:01:04,860 'n wonderlike slimmigheid vir 'n speel wat aangaan. 22 00:01:04,860 --> 00:01:07,080 >> Dus, as jy wil Jacob en ander om te sien, 23 00:01:07,080 --> 00:01:10,880 onder hulle Cynthia Meng, wie se agter die skerms van CS50 sone personeel, 24 00:01:10,880 --> 00:01:13,970 kop aan hierdie URL en dit speel. 25 00:01:13,970 --> 00:01:18,810 So sonder verdere uitstel het, het ons vandag voortgaan om hierdie blik op web ontwikkeling, 26 00:01:18,810 --> 00:01:21,810 en die werklike skepping van programme wat nie hardloop nie by jou opdrag lyn, 27 00:01:21,810 --> 00:01:24,080 maar loop binnekant van 'n leser. 28 00:01:24,080 --> 00:01:26,320 >> Vermoedelik nou, of baie kort, jy gaan 29 00:01:26,320 --> 00:01:30,200 te wees in die middel van die implementering jou eie web bediener, wat 30 00:01:30,200 --> 00:01:31,700 verskil van web ontwikkeling. 31 00:01:31,700 --> 00:01:36,210 Die web bediener in pset6 is alles oor skryf sagteware wat weet hoe om te neem 32 00:01:36,210 --> 00:01:39,300 HTTP versoeke van 'n leser, of selfs van jou, 'n mens, 33 00:01:39,300 --> 00:01:42,340 met 'n program met die naam Telnet, en dan reageer op die versoeke van die kant 34 00:01:42,340 --> 00:01:48,600 deur spoeg uit 'n HTML-lêer, of 'n jpeg, of 'n gif, of selfs 'n php lêer. 35 00:01:48,600 --> 00:01:52,490 >> Maar met 'n web bediener, dit is nie veronderstel om net 'n PHP-lêer oop te maak, 36 00:01:52,490 --> 00:01:55,260 iets wat eindig in Php, en dan spoeg uit die inhoud. 37 00:01:55,260 --> 00:01:58,440 Dit is veronderstel om te doen wat in die lêer eerste? 38 00:01:58,440 --> 00:01:59,390 Om so te praat. 39 00:01:59,390 --> 00:02:04,060 Nie stel nie, het ons gesê op Maandag, maar rather-- So, interpreteer dit. 40 00:02:04,060 --> 00:02:08,070 >> PHP is 'n geïnterpreteer taal, en so een van die belangrikste eienskappe in jou web 41 00:02:08,070 --> 00:02:11,550 bediener, al is dit in werking gestel word deur ons, is hierdie vermoë vir jou web bediener 42 00:02:11,550 --> 00:02:12,490 om te sien, o. 43 00:02:12,490 --> 00:02:14,580 Dit is 'n lêer wat eindig in Php. 44 00:02:14,580 --> 00:02:17,970 Laat my nie net stuur dit na die gebruiker soos dit is statiese inhoud, 45 00:02:17,970 --> 00:02:20,970 maar eerder laat my lees dit lyn deur lyn, links na regs, en dit interpreteer. 46 00:02:20,970 --> 00:02:23,030 >> En om te doen, dat jy ouens sal hoofsaaklik 47 00:02:23,030 --> 00:02:26,520 voorspel dat 'n program in die toestel, en op 'n baie van die rekenaar stelsels, 48 00:02:26,520 --> 00:02:27,500 net genoem PHP. 49 00:02:27,500 --> 00:02:30,579 Dit is die naam van die PHP taal se eie tolk. 50 00:02:30,579 --> 00:02:33,120 So, daardie stuk voer ons vir jy, en wat oorbly vir jou, 51 00:02:33,120 --> 00:02:35,240 Uiteindelik is 'n aantal stukke, waaronder 52 00:02:35,240 --> 00:02:37,960 is die uitvoering van ondersteuning vir statiese inhoud. 53 00:02:37,960 --> 00:02:40,180 >> Maar nou, en met probleem die sewe, is jy 54 00:02:40,180 --> 00:02:43,660 gaan om te begin om die oorgang na eintlik die skryf van die PHP-kode 55 00:02:43,660 --> 00:02:45,970 wat kry geïnterpreteer in gesprek met 'n agterkant 56 00:02:45,970 --> 00:02:47,960 databasis wat inligting stoor. 57 00:02:47,960 --> 00:02:51,020 So laat ons beter eers verstaan 'n paar van hierdie superglobals 58 00:02:51,020 --> 00:02:53,720 en net hoeveel krag jy kry uit die boks vir gratis 59 00:02:53,720 --> 00:02:55,250 met 'n taal soos PHP. 60 00:02:55,250 --> 00:02:57,350 Dinge wat jy nie het nie jouself te implementeer. 61 00:02:57,350 --> 00:03:01,700 >> So, ons het op Maandag $ _GET, Dit is 'n superglobal, 62 00:03:01,700 --> 00:03:05,496 wat net PHP praat vir 'n globale veranderlike kan jy enige plek toegang. 63 00:03:05,496 --> 00:03:06,620 En wat is binnekant van $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Wat is in hierdie superglobal wat ons sien? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Sekerlik statisties by minstens een persoon weet. 68 00:03:19,020 --> 00:03:21,590 Wat is binnekant van $ _GET? 69 00:03:21,590 --> 00:03:22,426 Ja? 70 00:03:22,426 --> 00:03:24,130 >> Publiek: Dit is die veranderlikes jy sit in die soektog string. 71 00:03:24,130 --> 00:03:24,530 >> David J. Malan Perfect. 72 00:03:24,530 --> 00:03:26,488 Dit is die veranderlikes wat jy sit in die soektog string. 73 00:03:26,488 --> 00:03:29,910 So, in ons ouer voorbeeld van reimplementing Google toe ons 74 00:03:29,910 --> 00:03:34,130 'n URL, en dan vraagteken, wat afgebaken die begin van HTTP 75 00:03:34,130 --> 00:03:37,950 parameters, dan moes ons Q gelyk iets soos Q gelyk katte, 76 00:03:37,950 --> 00:03:41,500 wat outomaties gaan binne van daardie $ _GET super globale vir jou, 77 00:03:41,500 --> 00:03:47,430 as gevolg van PHP, is 'n sleutel van Q, en waarde daarvan katte. 78 00:03:47,430 --> 00:03:51,250 >> Met ander woorde, $ _GET en al hierdie dinge is assosiatiewe skikkings, 79 00:03:51,250 --> 00:03:54,530 hash tabelle van spesies, wat winkel sleutels en waardes. 80 00:03:54,530 --> 00:03:57,980 Nou, terug in pset5, die hash tabel wat jy kan geïmplementeer het, 81 00:03:57,980 --> 00:04:00,220 of die probeer jy dalk geïmplementeer het, regtig 82 00:04:00,220 --> 00:04:04,010 was effektief 'n assosiatiewe skikking, 'n data struktuur 83 00:04:04,010 --> 00:04:07,220 waardeur jy kan assosieer sleutels met waardes. 84 00:04:07,220 --> 00:04:09,690 >> Maar in pset5, was die waardes triviaal. 85 00:04:09,690 --> 00:04:12,430 Die waarde was in wese waar of vals is. 86 00:04:12,430 --> 00:04:13,900 Is die woord in die woordeboek? 87 00:04:13,900 --> 00:04:18,279 So, as jy 'n woord soos appel hashed om te sien of die appel is in die woordeboek, 88 00:04:18,279 --> 00:04:21,820 u tjek funksie vermoedelik teruggekeer waar of vals is. 89 00:04:21,820 --> 00:04:24,120 So, dit is effektief die waarde wat ons kry terug. 90 00:04:24,120 --> 00:04:26,456 >> Maar ons het op Maandag kortliks, kan jy seker 91 00:04:26,456 --> 00:04:28,830 assosieer meer interessant waardes as net waar of vals 92 00:04:28,830 --> 00:04:30,790 met sleutels, soos appel. 93 00:04:30,790 --> 00:04:33,909 Jy kan eintlik terug 'n arbitrêre string, en inderdaad, 94 00:04:33,909 --> 00:04:36,200 dit is wat $ _GET en hierdie ander veranderlikes laat doen. 95 00:04:36,200 --> 00:04:40,595 >> So $ _POST is soortgelyk in die gees, maar as jy 'n vorm per pos, 96 00:04:40,595 --> 00:04:44,490 'n ander HTTP metode wat gebruik vir dinge soos kredietkaarte, 97 00:04:44,490 --> 00:04:48,410 en private inligting, en selfs binêre inligting soos foto's, 98 00:04:48,410 --> 00:04:51,840 daardie dinge beland binnekant van $ _POST. 99 00:04:51,840 --> 00:04:53,770 En eintlik vir lêers soos JPEG en noem maar op, 100 00:04:53,770 --> 00:04:58,290 daar is selfs 'n ander dit is nie hier genoem $ _FILES as well. 101 00:04:58,290 --> 00:05:01,280 >> So, bediener sal ons nie die bewoners van te veel nie, maar dit gee jou toegang 102 00:05:01,280 --> 00:05:04,860 te sorteer van 'n laer vlak besonderhede oor die bediener self wat jy gebruik. 103 00:05:04,860 --> 00:05:07,430 Koekie en sessie, al is, ons sal effektief nou sien. 104 00:05:07,430 --> 00:05:10,940 Die laaste is wat ons gebruik om te implementeer die idee van 'n inkopie mandjie nie. 105 00:05:10,940 --> 00:05:14,480 'N super eenvoudige een, maar onthou dat ons moes hierdie voorbeeld hier, 106 00:05:14,480 --> 00:05:17,640 tel hoeveel keer jy het voordat hierdie bladsy besoek. 107 00:05:17,640 --> 00:05:20,850 >> Maar vandag, eerder as om net te kyk na Die gevolg van hierdie, laat oopmaak 108 00:05:20,850 --> 00:05:22,640 Chrome se venster wat jy kan gewoonlik 109 00:05:22,640 --> 00:05:25,740 doen deur regs te klik of beheer kliek op enige plek op 'n webblad, 110 00:05:25,740 --> 00:05:27,250 en kies dan inspekteer element. 111 00:05:27,250 --> 00:05:31,600 Of jy kan gaan deur middel van die spyskaarte dat ons beskryf in pset6 se spec. 112 00:05:31,600 --> 00:05:35,020 En ek gaan na die blad Network hier, en laat ons kyk vir 'n oomblik 113 00:05:35,020 --> 00:05:37,590 die HTTP verkeer wat heen en weer. 114 00:05:37,590 --> 00:05:40,929 >> Laat my toe om eers te gaan voorlê en duidelik Chrome se kas. 115 00:05:40,929 --> 00:05:43,470 So 'n paar van julle vertroud kan wees met hierdie tegniek reeds 116 00:05:43,470 --> 00:05:45,790 en ons gaan om dit te gebruik vir die opsporing doeleindes hier. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Nou het ons as rekenaar wetenskaplikes gaan om te begin 119 00:05:50,890 --> 00:05:53,920 om dit te doen vir ontfouting doeleindes, waardeur 120 00:05:53,920 --> 00:05:55,910 ons sal die kas skoon te maak, Tipies, sodat ons 121 00:05:55,910 --> 00:05:57,670 kan ontslae raak van die dinge wat genoem koekies. 122 00:05:57,670 --> 00:06:01,700 So is jy waarskynlik algemeen bekend met wat koekies is, of ten minste 123 00:06:01,700 --> 00:06:04,370 dat hulle bestaan, maar wat jou begrip van hulle, 124 00:06:04,370 --> 00:06:06,920 as net 'n gebruiker van rekenaars, wat is 'n koekie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Ja. 127 00:06:09,990 --> 00:06:14,391 >> Publiek: Dit is 'n bietjie of-- goed nie bietjie in 'n termyn van rekenaarwetenskap. 128 00:06:14,391 --> 00:06:18,303 Dit is 'n stukkie van die data dat 'n webwerf stuur aan jou in orde 129 00:06:18,303 --> 00:06:20,209 in staat wees om statistieke aan te teken op jou. 130 00:06:20,209 --> 00:06:21,250 David J. Malan OK, goed. 131 00:06:21,250 --> 00:06:24,980 So dit is 'n stukkie van die data dat 'n bediener, sit op jou rekenaar, 132 00:06:24,980 --> 00:06:28,840 en laat ons veralgemeen dit selfs meer is, is dit 'n belangrike value-- goed, 133 00:06:28,840 --> 00:06:30,064 dit is om meer akkuraat. 134 00:06:30,064 --> 00:06:31,980 Dit is 'n stuk inligting, 'n stukkie van die data, 135 00:06:31,980 --> 00:06:34,430 dat 'n bediener in staat is om op jou rekenaar te sit 136 00:06:34,430 --> 00:06:38,592 en baie dikwels, die bediener doen hierdie so as om te onthou wie jy is. 137 00:06:38,592 --> 00:06:40,300 So byvoorbeeld, is die kans is jy waarskynlik 138 00:06:40,300 --> 00:06:42,982 aangeteken in plekke soos Facebook, of Gmail of ander voor, 139 00:06:42,982 --> 00:06:44,940 en jy inteken met jou gebruikersnaam en wagwoord 140 00:06:44,940 --> 00:06:49,000 en dan na daardie, vir 'n paar nommer minute of ure of selfs dae, 141 00:06:49,000 --> 00:06:52,970 die bediener onthou dat jy is, in werklikheid, aangemeld. 142 00:06:52,970 --> 00:06:54,600 Nou, hoe is dit eintlik gebeur? 143 00:06:54,600 --> 00:06:58,630 Omdat jy beslis nie tik Het jy jou gebruikersnaam en wagwoord elke keer 144 00:06:58,630 --> 00:07:00,760 jy na 'n verskillende bladsy op Facebook. 145 00:07:00,760 --> 00:07:02,570 So dit blyk uit die koekies is die antwoord. 146 00:07:02,570 --> 00:07:05,360 >> 'N koekie wat jy kan dink as, soort van soos 'n digitale hand 147 00:07:05,360 --> 00:07:09,200 stempel dat jy kan kry in 'n pret park of 'n klub wat in wese 148 00:07:09,200 --> 00:07:11,740 dui aan dat u hier gewees het voor, en jy het reeds 149 00:07:11,740 --> 00:07:16,070 getoon jou ID aan die bouncer vir byvoorbeeld, en dat die klub of die park 150 00:07:16,070 --> 00:07:19,050 moet nou aanvaar dat jy het reeds bekragtig. 151 00:07:19,050 --> 00:07:21,270 Jy is reeds geïdentifiseer deur dit. 152 00:07:21,270 --> 00:07:24,740 >> So met dit in gedagte, laat oopmaak toonbank hier. 153 00:07:24,740 --> 00:07:27,220 Laat my voort te gaan, het ek net gedoen het, en duidelik al van my koekies. 154 00:07:27,220 --> 00:07:29,970 En nou wat ek gaan doen, is om hou die Shift, net vir 'n goeie maat, 155 00:07:29,970 --> 00:07:31,740 en geweld die bladsy te herlaai. 156 00:07:31,740 --> 00:07:34,170 Skuif maak net seker dat niks kry in die kas. 157 00:07:34,170 --> 00:07:36,850 En hier is die versoek wat gegaan het om heen en weer. 158 00:07:36,850 --> 00:07:41,560 So hier het ons 'n versoek, en laat my zoom in hier, en 'n baie van hierdie 159 00:07:41,560 --> 00:07:44,710 is 'n soort van vervelige besonderhede vir nou dat die leser het outomaties 160 00:07:44,710 --> 00:07:47,800 gestuur, maar laat ons kliek View Bron die rou kop te sien. 161 00:07:47,800 --> 00:07:51,700 >> En as jy in pset6 geduik het reeds, jy sal beslis dinge erken 162 00:07:51,700 --> 00:07:54,990 soos hierdie, en miskien 'n paar van hierdie ander lyne hier 163 00:07:54,990 --> 00:07:59,040 maar wat is meer interessant vir vandag As ek rol af, nie aan die versoek 164 00:07:59,040 --> 00:08:02,870 maar aan die sogenaamde reaksie, hierdie lyn waarskynlik lyk bekend. 165 00:08:02,870 --> 00:08:04,977 Dit is 'n goeie ding wanneer jy sien 'n 200 OK. 166 00:08:04,977 --> 00:08:07,060 Blykbaar is dit die datum en tyd op die bediener 167 00:08:07,060 --> 00:08:08,268 en daar is 'n klomp van die dinge. 168 00:08:08,268 --> 00:08:09,290 O, dit is interessant. 169 00:08:09,290 --> 00:08:13,430 >> Blyk wanneer jy gebruik PHP, ten minste in hierdie bediener 170 00:08:13,430 --> 00:08:16,360 die bediener spoeg uit wat weergawe van PHP wat jy gebruik. 171 00:08:16,360 --> 00:08:18,962 Wat eintlik vir sekuriteit doeleindes, is nie 'n goeie ding. 172 00:08:18,962 --> 00:08:21,170 Maar, ons sal terug te kom na wat 'n ander tyd miskien. 173 00:08:21,170 --> 00:08:25,740 Maar dit is nou die sappige lyn vandag en ons het kortliks sommige van hierdie, 174 00:08:25,740 --> 00:08:29,240 Ek dink met Facebook wanneer ons steek rondom die Inspekteur in daardie tyd, 175 00:08:29,240 --> 00:08:33,380 stel koekie is wat die plant daardie klein stukkie inligting 176 00:08:33,380 --> 00:08:34,890 op jou rekenaar. 177 00:08:34,890 --> 00:08:37,490 >> Dit is 'n HTTP header dit is effektief 178 00:08:37,490 --> 00:08:39,970 vertel jou leser, Chrome, Internet Explorer, wat ook al, 179 00:08:39,970 --> 00:08:44,480 hey leser winkel op die gebruiker se hardeskyf, of in die gebruiker se geheue, 180 00:08:44,480 --> 00:08:49,680 'n sleutel genoem PHPSESSID, wat 'n snelskrif notasie vir sessie ID, 181 00:08:49,680 --> 00:08:53,670 en gee dit 'n waarde van 0vlk8t, dot, dot, dot. 182 00:08:53,670 --> 00:08:56,480 'N baie lang pseudo ewekansige alfanumeriese string. 183 00:08:56,480 --> 00:08:59,480 Dit is net 'n baie groot aantal nie, maar dit is geïnkripteer met letters en nommers 184 00:08:59,480 --> 00:09:03,550 sodat die grootte van dit kan wees selfs groter as getalle alleen. 185 00:09:03,550 --> 00:09:06,947 En dan, op die pad, pad = / wat beteken net dat hierdie koekie moet wees 186 00:09:06,947 --> 00:09:08,780 wat verband hou met die geheel van die webwerf, 187 00:09:08,780 --> 00:09:11,150 nie net 'n spesifieke bladsy van die hele ding. 188 00:09:11,150 --> 00:09:12,930 So is dit dat virtuele hand stempel. 189 00:09:12,930 --> 00:09:16,330 Dit is asof die bediener, Facebook, of in ons geval die toestel, 190 00:09:16,330 --> 00:09:21,140 het letterlik geskryf 0vlk8t en so meer, op jou hand. 191 00:09:21,140 --> 00:09:24,360 Let op wat die bediener se, doen nie, is dit nie 192 00:09:24,360 --> 00:09:27,730 stoor my gebruikersnaam, beslis nie stoor my wagwoord. 193 00:09:27,730 --> 00:09:31,710 >> In plaas daarvan, dit blyk te wees stoor pseudo random inligting 194 00:09:31,710 --> 00:09:35,010 sodat niemand kan raai wat my hand stempel is. 195 00:09:35,010 --> 00:09:37,590 Op die bediener kant, Intussen het die bediener 196 00:09:37,590 --> 00:09:40,370 gaan om te onthou, waarskynlik in 'n databasis of iets, 197 00:09:40,370 --> 00:09:46,490 dat die gebruiker, wat in die toekoms bied 'n hand stempel van 0vlk8t, dot, 198 00:09:46,490 --> 00:09:51,440 dot, dot, moet geassosieer word met hierdie veral inkopie mandjie, so te sê. 199 00:09:51,440 --> 00:09:55,060 Met ander woorde, as ek nou gaan terug hier en herlaai die bladsy, 200 00:09:55,060 --> 00:09:58,020 hoe die bediener weet dat ek 'n besoek 'n tyd? 201 00:09:58,020 --> 00:10:01,730 >> Of as ek dit weer doen, hoe die bediener weet dat ek besoek dit twee keer? 202 00:10:01,730 --> 00:10:04,680 Wel, as ek neerdaal in hierdie Die mees onlangse versoek, wat 203 00:10:04,680 --> 00:10:09,150 is nou die derde wat ek gestuur In totaal, sien my versoek nou. 204 00:10:09,150 --> 00:10:11,300 Daar is nog steeds hierdie versoek hier, dieselfde 205 00:10:11,300 --> 00:10:15,040 soos voorheen, is daar nog 'n hele klomp van die dinge wat ons as voor geïgnoreer het, 206 00:10:15,040 --> 00:10:19,350 maar die heel laaste kop, hierdie tyd, want ek was al hier, 207 00:10:19,350 --> 00:10:21,980 is 'n aanbieding van hierdie virtuele hand stempel. 208 00:10:21,980 --> 00:10:28,957 >> Waardeur die lyn hier, nie ingestel koekie maar koekie kolon PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 dit is net my leser se outomatiese aanbieding van hierdie hand stempel sodat 210 00:10:32,040 --> 00:10:37,910 nou die bediener, so gou as wat dit besef, ooh, is dit die gebruiker 0vlk8t dot, dot, dot, 211 00:10:37,910 --> 00:10:42,010 Ek kan nou onthou wat hy of sy en herassosieer met die gebruiker wat 212 00:10:42,010 --> 00:10:46,450 inligting wat ek wil, en al inligting kan gestoor word deur jou, 213 00:10:46,450 --> 00:10:50,130 die programmeerder, in $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> So duidelik te wees, as ek oop ware vinnige in gedit dat die werklike lêer, counter.php, 215 00:10:57,170 --> 00:11:02,340 in my openbare gids plaaslike gasheer soos voorheen, kennis dat, wel, 216 00:11:02,340 --> 00:11:06,860 Ek is uiteindelik stoor in $ _SESSION Quote unquote "counter" 217 00:11:06,860 --> 00:11:10,110 die waarde van die vorige toonbank wat Ek kry van hierdie lyne hier dat ons 218 00:11:10,110 --> 00:11:13,010 kyk na die laaste keer plus een. 219 00:11:13,010 --> 00:11:14,980 So onder die enjinkap, dit is al wat koekies is. 220 00:11:14,980 --> 00:11:17,563 Dit is net die soort van digitale hand stempel heen en weer, 221 00:11:17,563 --> 00:11:20,450 en eerlik as jy Chrome se oop Inspekteur op enige webwerf 222 00:11:20,450 --> 00:11:22,580 jy besoek vandag, met super hoë waarskynlikheid, 223 00:11:22,580 --> 00:11:25,450 jy gaan dalk een te sien, Miskien 'n half dosyn koekies 224 00:11:25,450 --> 00:11:26,650 onthou word deur jou. 225 00:11:26,650 --> 00:11:29,500 >> En erger nog, as diegene webwerf wat jy besoek 226 00:11:29,500 --> 00:11:32,640 alle advertensies, het wat is beslis baie algemeen vandag, 227 00:11:32,640 --> 00:11:36,100 en as die advertensies kom van 'n paar sentrale party, iemand 228 00:11:36,100 --> 00:11:39,000 soos Google of AdWords as hulle noem een ​​van hul produkte 229 00:11:39,000 --> 00:11:42,880 of ander sodanige verskaffers wat verkoop advertensies, wat is interessant, 230 00:11:42,880 --> 00:11:46,510 en eerlik, wat is 'n bietjie kommerwekkende, oor hoe HTTP werk, 231 00:11:46,510 --> 00:11:50,855 is dat as jy 'n advertensie ingesluit in Facebook.com, en Google.com, 232 00:11:50,855 --> 00:11:54,240 en Harvard.edu, enige aantal webtuistes, so dit is so 233 00:11:54,240 --> 00:11:58,130 dat daar 'n middeljarige man wat die diens advertensies vir al drie van die webtuistes, 234 00:11:58,130 --> 00:12:02,110 dit blyk dat die koekies is per domein. 235 00:12:02,110 --> 00:12:05,910 >> So as jy 'n advertensie uit die dieselfde maatskappy op verskillende webwerwe, 236 00:12:05,910 --> 00:12:11,140 daardie maatskappy kan effektief te spoor wat jy is oor al die webtuistes. 237 00:12:11,140 --> 00:12:13,140 Harvard dalk nie weet jy besoek Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook kan nie weet nie en jy besoek Harvard. 239 00:12:15,306 --> 00:12:18,160 Maar wat ook al die advertensie diens hulle gebruik as dit domein is 240 00:12:18,160 --> 00:12:21,710 teenwoordig in beide Harvard.edu web bladsye en Facebook.com webblaaie, 241 00:12:21,710 --> 00:12:26,850 hierdie middel man sekerlik weet wie jy is As gevolg van hierdie koekies gedeel 242 00:12:26,850 --> 00:12:30,910 oor, of liewer, dat die sogenaamde middelman. 243 00:12:30,910 --> 00:12:33,820 >> So ons sal terug kom na hierdie in sekuriteit implikasies daarvan, 244 00:12:33,820 --> 00:12:37,170 maar daar is 'n baie inligting gestoor oor jou enige tyd wat jy 245 00:12:37,170 --> 00:12:40,120 besoek die meeste 'n webblad op die internet en dit is werklik 246 00:12:40,120 --> 00:12:42,877 verminder na hierdie baie eenvoudige meganisme. 247 00:12:42,877 --> 00:12:44,710 Wat gebeur dan as jy super paranoïes 248 00:12:44,710 --> 00:12:48,190 en jy besluit om te gaan in Chrome of IE of wat ook al en draai jou koekies? 249 00:12:48,190 --> 00:12:49,365 Wat gebeur? 250 00:12:49,365 --> 00:12:50,790 Ja? 251 00:12:50,790 --> 00:12:53,170 Jy really-- jy dit reg gedoen het? 252 00:12:53,170 --> 00:12:54,350 OK. 253 00:12:54,350 --> 00:12:55,994 Nee, gaan voort. 254 00:12:55,994 --> 00:12:59,645 >> Publiek: Sekere webwerwe het nie 'n funksie sonder dat dit soos Facebook. 255 00:12:59,645 --> 00:13:00,520 David J. MALAN: Ja! 256 00:13:00,520 --> 00:13:02,311 So sekere webtuistes sal net ophou werk. 257 00:13:02,311 --> 00:13:05,520 En in die meeste webtuistes hierdie dae wat fundamenteel afhanklik is van koekies, 258 00:13:05,520 --> 00:13:08,360 veral as hulle jy inteken in, hulle is net gaan om te breek. 259 00:13:08,360 --> 00:13:10,360 Omdat oorweeg die alternatief, indien die webwerf 260 00:13:10,360 --> 00:13:14,480 het geen manier om te onthou wie jy is, en dus jou web leser is nie 261 00:13:14,480 --> 00:13:16,949 verteenwoordig met elke HTTP versoek van die hand stempel, 262 00:13:16,949 --> 00:13:18,740 effektief 'n webwerf soos Facebook gaan 263 00:13:18,740 --> 00:13:22,050 het jy te vinnig te teken in elke darn tyd 264 00:13:22,050 --> 00:13:26,200 jy verander bladsye, of op 'n skakel, wat is sekerlik nie 'n besonder goeie gebruikers 265 00:13:26,200 --> 00:13:26,920 ervaring. 266 00:13:26,920 --> 00:13:30,020 >> Sodat daar is ook ' onder die handel offs. 267 00:13:30,020 --> 00:13:34,140 So sonder verdere uitstel het, laat ons neem ' vanselfsprekend dat met die web ontwikkeling, 268 00:13:34,140 --> 00:13:37,630 in tale soos PHP, kan jy onthou inligting soos dit in die probleem stel 269 00:13:37,630 --> 00:13:41,550 sewe wanneer jy jou eie implementeer E * Trade-agtige webwerf met wat te koop 270 00:13:41,550 --> 00:13:45,710 en verkoop aandele, sal jy presies onthou wat die gebruiker het gekoop en verkoop 271 00:13:45,710 --> 00:13:49,110 en wat hy of sy deur middel van hierdie sessie. 272 00:13:49,110 --> 00:13:51,110 Maar ons gaan nodig 'n liefhebber manier as e-pos 273 00:13:51,110 --> 00:13:52,640 te begin om inligting rondom. 274 00:13:52,640 --> 00:13:53,140 Reg? 275 00:13:53,140 --> 00:13:56,780 >> Op Maandag, het ons gepraat oor Frosh kitsboodskappe en hoe in die weergawe een van daardie webwerf, 276 00:13:56,780 --> 00:14:00,250 jaar gelede, al wat ons gedoen het, was E-pos die Proctor wie se 277 00:14:00,250 --> 00:14:04,250 in beheer van die binnemuurse sport program, die naam, en die geslag, 278 00:14:04,250 --> 00:14:07,330 en of hulle 'n kaptein, en die dorm van iemand wat 279 00:14:07,330 --> 00:14:10,136 registreer vir 'n binnemuurse sport. 280 00:14:10,136 --> 00:14:13,010 So dit is nie sleg nie, maar hy of sy dan moes sleep deur middel van hul e-pos, 281 00:14:13,010 --> 00:14:16,010 'n sigblad of iets soos dat alles georganiseer te hou. 282 00:14:16,010 --> 00:14:19,750 So seker ons as programmeerders kan dit doen vir daardie Proctor. 283 00:14:19,750 --> 00:14:22,970 En so gaan in SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 wat gaan kyk mooi verskillende beide C en PHP, 285 00:14:26,050 --> 00:14:30,990 en jy sal duik in baie meer hande op PHP en probleem die sewe maar ook SQL, 286 00:14:30,990 --> 00:14:35,310 of SQL, dit is 'n taal wat jy gebruik om te praat met 'n databasis. 287 00:14:35,310 --> 00:14:36,480 >> Maar wat is 'n databasis? 288 00:14:36,480 --> 00:14:38,440 Wel, jy dink aan 'n databasis, ten minste vir nou, 289 00:14:38,440 --> 00:14:41,750 as om net soos 'n Excel-lêer, of as jy 'n Mac-gebruiker 'n getalle lêer, 290 00:14:41,750 --> 00:14:44,400 of as jy 'n Google Apps gebruiker 'n Google-sigblad, 291 00:14:44,400 --> 00:14:49,120 dit is effektief 'n databasis of werklik spesifiek 'n relasionele databasis. 292 00:14:49,120 --> 00:14:53,070 'N relasionele databasis is net iets wat rye en kolomme, 293 00:14:53,070 --> 00:14:56,440 en jy kan enige soort stoor inligting in hierdie rye of kolomme. 294 00:14:56,440 --> 00:15:00,480 >> Maar wat is lekker oor SQL, en oor die werklike databasisse, en nie net 295 00:15:00,480 --> 00:15:04,910 spread of Google sigblaaie, is dat jy kan 'n taal gebruik 296 00:15:04,910 --> 00:15:09,000 om werklik navrae uit te voer om voeg data, data te verwyder, 297 00:15:09,000 --> 00:15:11,620 om te kyk vir data, selfs die belangrikste, en jy 298 00:15:11,620 --> 00:15:16,110 nie hê om dit te regverdig met die hand gebruik Soos jy kan tipies 'n Google 299 00:15:16,110 --> 00:15:17,690 sigblad soos hierdie. 300 00:15:17,690 --> 00:15:22,217 >> So in SQL, daar is 'n klomp van die fundamentele stellings of stukke 301 00:15:22,217 --> 00:15:23,300 van die funksies gebou in. 302 00:15:23,300 --> 00:15:26,450 Daar is baie meer as dit, maar jy kan 'n groot afstand gaan 303 00:15:26,450 --> 00:15:28,620 net deur die wete dat hierdie taal genoem 304 00:15:28,620 --> 00:15:30,840 SQL het ten minste vier stellings wat jy kan benut. 305 00:15:30,840 --> 00:15:34,420 >> Verwyder, vir die verwydering van data, Voeg, vir die toevoeging van rye, 306 00:15:34,420 --> 00:15:37,340 Werk, vir die verandering rye, en die kies van, 307 00:15:37,340 --> 00:15:39,860 vir die kry terug rye en dit is inderdaad wat SQL doen. 308 00:15:39,860 --> 00:15:43,810 Dit werk geheel en al op rye so dat wanneer jy voeg of te verwyder, 309 00:15:43,810 --> 00:15:47,470 of werk, of kies wat jy om terug as 'n sogenaamde gevolg stel, 310 00:15:47,470 --> 00:15:49,690 soos 'n verskeidenheid van rye. 311 00:15:49,690 --> 00:15:51,700 'N klomp van die rye van 'n tafel. 312 00:15:51,700 --> 00:15:54,050 >> So terug in die dag, en selfs tot vandag toe, 313 00:15:54,050 --> 00:15:56,560 jy kan interaksie met die databasis met 'n command line, 314 00:15:56,560 --> 00:15:59,691 maar dit is nie baie pret om te gebruik hierdie swart en wit styl venster 315 00:15:59,691 --> 00:16:02,190 en eintlik opdragte uit te voer en steek om jou databasis. 316 00:16:02,190 --> 00:16:06,054 'N grafiese gebruikerskoppelvlak, of GUI, is veel meer verkieslik, waarskynlik, 317 00:16:06,054 --> 00:16:08,970 en so die instrument wat ons beveel en geïnstalleerde vir jou op die toestel 318 00:16:08,970 --> 00:16:10,580 is phpMyAdmin genoem. 319 00:16:10,580 --> 00:16:14,060 Dit is 'n totale toeval dat die naam van hierdie ding het PHP in dit, 320 00:16:14,060 --> 00:16:17,430 Dit beteken net dat die mense wat geskryf het hierdie program self 321 00:16:17,430 --> 00:16:18,670 het dit geskryf in PHP. 322 00:16:18,670 --> 00:16:23,740 >> Maar dit is uiteindelik oor die administrasie 'n databasis bediener, soos 'n MySQL bediener 323 00:16:23,740 --> 00:16:26,589 wat jy mag hê, soos jy doen, in die CS50 toestel. 324 00:16:26,589 --> 00:16:29,130 So is daar meer detail hier as ons nodig het om te sorg oor vandag, 325 00:16:29,130 --> 00:16:33,280 maar wat is die sleutel, is dat aan die linkerkant kant is 'n lys van die databasis 326 00:16:33,280 --> 00:16:36,040 wat jy op jou rekenaar, op jou CS50 toestel, 327 00:16:36,040 --> 00:16:40,090 of kom finale projekte wat jy dalk het op 'n derde party, 'n maatskappy se 328 00:16:40,090 --> 00:16:43,415 webwerf of web-bediener, wat jy kan betaal vir die ruimte. 329 00:16:43,415 --> 00:16:45,290 So aan die linkerkant is die databasisse, waarvan een 330 00:16:45,290 --> 00:16:48,750 is pset7 wat ek van volgende geleen weke pset, en dan op die top 331 00:16:48,750 --> 00:16:51,570 daar sien daar is 'n klomp van oortjies, waarvan een 332 00:16:51,570 --> 00:16:55,150 is databasis, SQL, status, gebruikers, uitvoer en so meer. 333 00:16:55,150 --> 00:16:56,900 Sodat jy kan gaan 'n lang manier net deur die besef 334 00:16:56,900 --> 00:16:59,770 dat die meeste van die gebruikerskoppelvlak is in die boonste linker kolom 335 00:16:59,770 --> 00:17:02,650 en oor die top reg tot daar. 336 00:17:02,650 --> 00:17:04,980 So, wat kan ons eintlik doen met dit? 337 00:17:04,980 --> 00:17:08,609 Wel, laat ons begin skep van 'n bietjie inligting soos volg. 338 00:17:08,609 --> 00:17:11,760 >> Veronderstel die volgende is die geval, soos in net 'n paar dae, 339 00:17:11,760 --> 00:17:14,440 jy wil 'n te implementeer webwerf, genaamd CS50 Finansies, 340 00:17:14,440 --> 00:17:17,328 en hierdie webwerf kan jy koop haal unquote en verkoop aandele. 341 00:17:17,328 --> 00:17:19,619 En dit gaan om uit te vind die prys van dié aandele, 342 00:17:19,619 --> 00:17:22,380 uiteindelik soos u sal sien, deur te praat met Yahoo Finansies. 343 00:17:22,380 --> 00:17:26,250 Wat wonderlik, het 'n gratis diens waardeur jy in 'n voorraad ENKELE kan slaag 344 00:17:26,250 --> 00:17:29,830 soos GOOG vir Google, en dit sal gee jou terug Google se huidige voorraad 345 00:17:29,830 --> 00:17:32,250 prys in die afgelope paar minute ten minste. 346 00:17:32,250 --> 00:17:35,080 >> So jy sal gebruik om dit uiteindelik om voor te gee vir die gebruiker 347 00:17:35,080 --> 00:17:37,750 te koop en te verkoop werklike voorrade met behulp van virtuele geld, 348 00:17:37,750 --> 00:17:39,750 maar die heel eerste ding die gebruiker gaan om te sien 349 00:17:39,750 --> 00:17:43,850 is hierdie aanmelding skerm wat vra hulle vir hul gebruikersnaam en wagwoord. 350 00:17:43,850 --> 00:17:46,540 En so, een van die eerste uitdagings vir jou in pset7 351 00:17:46,540 --> 00:17:50,460 gaan wees om die agterkant te implementeer databasis, sigblad as jy wil, 352 00:17:50,460 --> 00:17:53,369 wat gaan om te slaan gebruikers name en wagwoorde 353 00:17:53,369 --> 00:17:56,660 en uiteindelik wat aandele wat hulle besit, en hoeveel, en hoeveel geld hulle het, 354 00:17:56,660 --> 00:18:00,110 so 'n klomp van die ander dinge in ander tafels, of spread. 355 00:18:00,110 --> 00:18:05,020 >> So laat ons neem 'n blik op hoe hierdie mag voorkom met die eerste oogopslag. 356 00:18:05,020 --> 00:18:06,980 Ek gaan om terug te gaan na die toestel en ek is 357 00:18:06,980 --> 00:18:14,102 gaan om te gaan na hierdie URL hier phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 en jy sal sien dat dit neem my na 'n koppelvlak 359 00:18:16,060 --> 00:18:18,520 presies soos ons gesien het op die screen shot, en hier is ek 360 00:18:18,520 --> 00:18:21,560 'n addisionele databasis genoem lesing vir vandag 361 00:18:21,560 --> 00:18:24,280 en laat my gaan voort eerste en klik op pset7. 362 00:18:24,280 --> 00:18:27,940 >> Dit lyk asof ek 'n paar opsies te hê, een vir 'n nuwe, vir die skep van 'n nuwe tabel, 363 00:18:27,940 --> 00:18:30,770 en 'n skakel na die gebruikers, wat is 'n tabel wat ek reeds geskep. 364 00:18:30,770 --> 00:18:31,790 So, wat is 'n tafel? 365 00:18:31,790 --> 00:18:33,740 So as jy Excel gebruik voor, en as jy 366 00:18:33,740 --> 00:18:37,110 gebruik nommers of Google Sigblaaie, jy maak 'n venster 367 00:18:37,110 --> 00:18:39,350 en jy kry 'n hele klomp rye en kolomme, 368 00:18:39,350 --> 00:18:43,120 maar dan moet jy gewoonlik werkkaarte langs die onderkant, of aparte oortjies. 369 00:18:43,120 --> 00:18:46,140 Jy kan dink van elke werkblad as 'n tabel 370 00:18:46,140 --> 00:18:51,150 sodat databasis, uiteindelik, is 'n kombinasie van een of meer tafels, een 371 00:18:51,150 --> 00:18:54,064 of meer werkkaarte, in die wêreld van 'n normale sigblad. 372 00:18:54,064 --> 00:18:55,980 So laat my voort te gaan en Klik op hierdie werkblad 373 00:18:55,980 --> 00:18:59,420 dat ek gemaakte, genaamd gebruikers, a.k.a. 374 00:18:59,420 --> 00:19:00,700 Databasis. 375 00:19:00,700 --> 00:19:04,130 En as ek scroll down hier, laat my zoom uit 'n bietjie, 376 00:19:04,130 --> 00:19:08,479 dit is wat phpMyAdmin vertel ons is die binnekant van hierdie tabel nou. 377 00:19:08,479 --> 00:19:11,020 Dit is 'n bietjie verwarrend op die eerste oogopslag omdat die UI is nie 378 00:19:11,020 --> 00:19:15,140 die mooiste ding in die wêreld, maar wat interessant is, is hierdie deel hier. 379 00:19:15,140 --> 00:19:17,970 ID, gebruikersnaam, en hash. 380 00:19:17,970 --> 00:19:20,510 >> In advance, en jy sal gegee word dit in die probleem stel sewe, 381 00:19:20,510 --> 00:19:25,050 Ons gee jou 'n lêer met 'n super klein databasis, geleen eintlik 382 00:19:25,050 --> 00:19:27,070 uit die hacker uitgawe van die probleem sit twee, 383 00:19:27,070 --> 00:19:29,480 binnekant van wat daar is ses rye. 384 00:19:29,480 --> 00:19:32,720 Een vir Belinda al die pad af na een vir Zamyla, 385 00:19:32,720 --> 00:19:35,980 en kennisgewing aan die linkerkant van die gebruikers is uniek ID's soos een, 386 00:19:35,980 --> 00:19:39,410 twee, drie, vier, vyf, ses, heelgetalle, en dan aan die regterkant is twee velde. 387 00:19:39,410 --> 00:19:42,780 >> En as, is die kans, jy dit nie doen nie die hacker uitgawe probleem sit twee, 388 00:19:42,780 --> 00:19:46,560 maar 'n gemors is net soos 'n geënkripteerde wagwoord met 'n paar voorbehoude. 389 00:19:46,560 --> 00:19:49,470 En so, wat jy hier sien is die geïnkripteer weergawes van al ses 390 00:19:49,470 --> 00:19:52,950 van ons wagwoorde van probleem sit twee se hacker uitgawe. 391 00:19:52,950 --> 00:19:56,500 Nou aan die linkerkant is net 'n paar grafiese dinge, redigering hierdie ry, kopiëring hierdie ry, 392 00:19:56,500 --> 00:19:57,630 die verwydering van hierdie ry. 393 00:19:57,630 --> 00:19:59,840 >> Maar wat is interessant nou is die volgende. 394 00:19:59,840 --> 00:20:03,810 Ek kan eintlik begin eksperimenteer met hierdie tafel. 395 00:20:03,810 --> 00:20:07,330 So as ek gaan en klik op die SQL blad, ek kry hierdie groot teks boks. 396 00:20:07,330 --> 00:20:10,190 En dit is nie hoe ons gaan doen dit toe eintlik kode skryf. 397 00:20:10,190 --> 00:20:12,700 Om duidelik te wees, phpMyAdmin is net 'n instrument wat 398 00:20:12,700 --> 00:20:16,450 gaan om ons te laat sak om die databasis en laat ons eksperimenteer met navrae. 399 00:20:16,450 --> 00:20:19,430 >> So byvoorbeeld, veronderstel Ek voer presies dit. 400 00:20:19,430 --> 00:20:22,820 Select, wat is een van daardie sleutelwoorde wat ek vroeër genoem, ster, 401 00:20:22,820 --> 00:20:25,900 wat alle die kolomme in 'n tabel. 402 00:20:25,900 --> 00:20:26,820 Van wat tafel? 403 00:20:26,820 --> 00:20:27,990 Wel, gebruikers. 404 00:20:27,990 --> 00:20:29,950 En kennis is daar hierdie vreemde konvensie in SQL 405 00:20:29,950 --> 00:20:32,140 waar jy eintlik gebruik terug bosluise, tipies, 406 00:20:32,140 --> 00:20:35,940 nie enkele aanhalings en nie dubbel aanhalings wanneer jy praat oor tafels name, 407 00:20:35,940 --> 00:20:38,990 sodat die rug aanhaling is die ding op die boonste linker van jou sleutelbord mees 408 00:20:38,990 --> 00:20:39,720 waarskynlik. 409 00:20:39,720 --> 00:20:41,850 >> So laat my voort te gaan nou en net laat dit alleen 410 00:20:41,850 --> 00:20:46,020 en rol af en klik op Go, en ons is eintlik gaan dieselfde ding om te sien. 411 00:20:46,020 --> 00:20:52,410 Ons het nou net uitgevoer 'n SQL navraag sê select alles ster 412 00:20:52,410 --> 00:20:55,610 uit tabel genoem gebruikers, en wat jy terug kry, is hierdie. 413 00:20:55,610 --> 00:20:58,400 Uiteindelik, sal ons in staat wees om doen dieselfde ding in die kode, 414 00:20:58,400 --> 00:21:02,109 maar vir nou al wat ek wou nie was dit sien in my leser. 415 00:21:02,109 --> 00:21:03,900 Wel, laat ons iets doen 'n bietjie anders. 416 00:21:03,900 --> 00:21:08,330 Laat my terug te gaan na die blad SQL, en laat ons net sê dat wat? 417 00:21:08,330 --> 00:21:11,520 Zamyla verloor het al van haar geld, en daarom is dit 418 00:21:11,520 --> 00:21:13,190 tyd vir ons om haar as 'n gebruiker te verwyder. 419 00:21:13,190 --> 00:21:14,630 Sy is nie meer in te teken. 420 00:21:14,630 --> 00:21:18,870 >> So ek gaan om te sê verwyder from-- Wel, in stand te hou kapitalisasiekoerse 421 00:21:18,870 --> 00:21:23,080 vir konsekwentheid, verwyder van die gebruikers waar. 422 00:21:23,080 --> 00:21:25,430 En so kan ons hulle het predicaten, of hierdie 423 00:21:25,430 --> 00:21:31,180 kwalifiseerders, aan die einde van my verklaring waar en hoe kan ek Zamyla verwyder? 424 00:21:31,180 --> 00:21:34,190 Deur haar naam Zamyla, sodat die kolom, een van die kolomme 425 00:21:34,190 --> 00:21:37,950 vernoem is, so waar name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 En hier gebruik ek dubbel aanhalings of 'n enkele aanhalings, 427 00:21:40,000 --> 00:21:42,958 jy gebruik net die agterkant bosluise wanneer praat oor die naam, byvoorbeeld, 428 00:21:42,958 --> 00:21:45,130 tabelle of velde. 429 00:21:45,130 --> 00:21:47,440 En laat my klik op gaan hier. 430 00:21:47,440 --> 00:21:50,400 En nou, die webblad is 'n bietjie uptight. 431 00:21:50,400 --> 00:21:53,620 >> Of jy regtig wil uit te voer verwyder van die gebruikers waar naam gelyk Zamyla? 432 00:21:53,620 --> 00:21:54,680 Ja. 433 00:21:54,680 --> 00:22:01,900 So nou, as ons gaan terug na my tafel Gebruik gebruikers, sien dat Hm. 434 00:22:01,900 --> 00:22:02,530 Ek goofed. 435 00:22:02,530 --> 00:22:04,070 En in die feit, ek soort klik weg so vinnig 436 00:22:04,070 --> 00:22:06,195 jy het nie eens sien die rooi fout boodskap, miskien. 437 00:22:06,195 --> 00:22:07,649 Wat het ek verkeerd gedoen? 438 00:22:07,649 --> 00:22:09,690 Publiek: Jy het nie nodig haar naam te kapitaliseer. 439 00:22:09,690 --> 00:22:11,260 David J. Malan Ja ek gekapitaliseer haar naam, 440 00:22:11,260 --> 00:22:13,770 maar haar username-- eintlik ek het 'n paar foute, reg? 441 00:22:13,770 --> 00:22:16,720 Een, haar gebruikersnaam zamyla, klein Z, 442 00:22:16,720 --> 00:22:20,140 en die kolom naam is gebruikersnaam, noem nie, so kom ons doen dit weer. 443 00:22:20,140 --> 00:22:25,750 Laat my voort te gaan en verwyder van gebruikers waar 444 00:22:25,750 --> 00:22:28,990 gebruikersnaam gelyk quote unquote "Zamyla". 445 00:22:28,990 --> 00:22:29,490 Alle reg? 446 00:22:29,490 --> 00:22:32,600 So dit lyk 'n bietjie beter, laat my gaan rol af en klik op Go. 447 00:22:32,600 --> 00:22:34,730 Dit is nog steeds gaan gil op my om seker te wees. 448 00:22:34,730 --> 00:22:37,500 Ek kliek Ja, en nou is ons sien, eerlik dit gebeur het, regtig 449 00:22:37,500 --> 00:22:39,870 vinnig, minder as een tweede beslis, hierdie 450 00:22:39,870 --> 00:22:41,720 is presies die navraag wat uitgevoer het. 451 00:22:41,720 --> 00:22:45,617 Om te bevestig, laat my op gebruikers en inderdaad nou Zamyla is weg. 452 00:22:45,617 --> 00:22:46,700 Nou laat doen die teenoorgestelde. 453 00:22:46,700 --> 00:22:49,320 Veronderstel dat Gabe wil registreer vir die webwerf. 454 00:22:49,320 --> 00:22:52,825 Wat is die SQL navraag, wat is die opdrag kon ek tik Gabe te voeg? 455 00:22:52,825 --> 00:22:54,200 Wel, dit is redelik eenvoudig. 456 00:22:54,200 --> 00:22:58,260 Plaas in die gebruikers, en nou dit raak 'n bietjie kripties. 457 00:22:58,260 --> 00:23:03,190 Ek nodig het om te gee, aan die bediener, wat velde Ek wil toewys. 458 00:23:03,190 --> 00:23:06,630 Ek het nie regtig omgee wat Gabe se ID getal is, so ek gaan om dit te slaan. 459 00:23:06,630 --> 00:23:11,360 Ek plaas gaan om te sê gebruikersnaam, hash, en dan 460 00:23:11,360 --> 00:23:14,960 die waardes wat ek wil om te sit daar gaan wees Gabe. 461 00:23:14,960 --> 00:23:16,800 En dan sy hash, weet ek nie. 462 00:23:16,800 --> 00:23:19,900 So vir nou, ek gaan laat dit as 'n groot te doen nie. 463 00:23:19,900 --> 00:23:21,650 Ons sal terug te kom na wat in die probleem stel 464 00:23:21,650 --> 00:23:23,390 spec hoe jy eintlik doen nie. 465 00:23:23,390 --> 00:23:24,630 >> So sien, weer, die sintaksis. 466 00:23:24,630 --> 00:23:28,430 Voeg in tabel naam, dan 'n hakies lys van die velde, 467 00:23:28,430 --> 00:23:30,980 die kolomme wat jy wil by te voeg waardes, en dan net 468 00:23:30,980 --> 00:23:34,495 presies dieselfde bestel links na regterkant van die waardes wat jy wil byvoeg, 469 00:23:34,495 --> 00:23:36,870 en dit is net wikkel, want die teks is 'n bietjie lank. 470 00:23:36,870 --> 00:23:38,520 So nou laat my op Go. 471 00:23:38,520 --> 00:23:39,830 Een ry ingevoeg. 472 00:23:39,830 --> 00:23:43,020 En nou as ek gaan terug na gebruikers, wat is interessant 473 00:23:43,020 --> 00:23:48,960 is dat nie net is Gabe nou in die databasis, wat glo sy ID? 474 00:23:48,960 --> 00:23:49,820 >> Wel dit is sewe. 475 00:23:49,820 --> 00:23:51,479 Hoekom is dit sewe toe ek het dit nie voeg? 476 00:23:51,479 --> 00:23:54,020 So hierdie, ook, is een van die eienskappe wat jy kry van die databasis. 477 00:23:54,020 --> 00:23:55,750 Baie van die gebou in funksies. 478 00:23:55,750 --> 00:23:57,950 Dit blyk dat wanneer geskep hierdie tabel, 479 00:23:57,950 --> 00:24:01,390 Ek gedefinieerde dit outomaties toewys 'n ID in so 'n manier 480 00:24:01,390 --> 00:24:02,480 dat dit vermeerderings. 481 00:24:02,480 --> 00:24:05,470 So as jy ooit steek rond, en kyk na wat jou Facebook ID 482 00:24:05,470 --> 00:24:09,292 getal is, is dit deesdae nie regtig 'n ding om te doen nie, maar Facebook as 'n API, 483 00:24:09,292 --> 00:24:11,750 Aansoek Programming Interface, waardeur jy kan terug te kry 484 00:24:11,750 --> 00:24:14,430 'n hele klomp van die data oor jouself, oor jou vriende, 485 00:24:14,430 --> 00:24:15,347 en jou verbindings. 486 00:24:15,347 --> 00:24:17,430 En wat gebruik word om te vriendelik wees koel, terug in die dag, 487 00:24:17,430 --> 00:24:19,510 was om te kyk wat jou Facebook ID-nommer was. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg se, byvoorbeeld, is drie 489 00:24:22,390 --> 00:24:23,890 want hy was die skrywer van die site. 490 00:24:23,890 --> 00:24:27,610 En as die storie gaan, het hy ' twee toets rekeninge, gebruikers een en twee, 491 00:24:27,610 --> 00:24:28,690 wat hy dan verwyder. 492 00:24:28,690 --> 00:24:32,780 En so, Zuck, soos sy gebruikersnaam op Facebook, is ID nommer drie, 493 00:24:32,780 --> 00:24:36,110 en almal van ons het getalle veel groter as drie hierdie dae. 494 00:24:36,110 --> 00:24:37,980 Trouens, op 'n sekere punt Facebook wegbeweeg 495 00:24:37,980 --> 00:24:42,410 uit selfs met behulp van 'n int, wat is 'n 32-bit waarde, vir die gebruik van 496 00:24:42,410 --> 00:24:44,480 die volgende stap, in wese 'n lang lang sodat 497 00:24:44,480 --> 00:24:47,150 dat hulle kan akkommodeer selfs meer gebruikers te registreer. 498 00:24:47,150 --> 00:24:49,420 So 'n prettige klein historiese feit. 499 00:24:49,420 --> 00:24:51,660 >> So dit is net die basiese sintaks waarmee 500 00:24:51,660 --> 00:24:54,470 ons dalk 'n paar van die uitvoer navrae, maar ons kan eintlik 501 00:24:54,470 --> 00:24:56,744 doen 'n klomp meer dinge met SQL. 502 00:24:56,744 --> 00:24:58,910 En jy sal sien, uiteindelik, in die probleem stel sewe 503 00:24:58,910 --> 00:25:01,034 dat jy 'n te maak aantal ontwerp besluite te neem, 504 00:25:01,034 --> 00:25:03,290 onder hulle gaan wees wat datatipes te gebruik. 505 00:25:03,290 --> 00:25:08,240 So, net soos in C, is daar data tipes in 'n databasis soos MySQL, 506 00:25:08,240 --> 00:25:12,640 en die data tipes wat jy het om van te kies vanaf sluit hierdie velde hier. 507 00:25:12,640 --> 00:25:17,287 Kar, varchar, Int, groot int, desimale en datum tyd, en vele ander. 508 00:25:17,287 --> 00:25:18,370 So laat ons eintlik doen. 509 00:25:18,370 --> 00:25:21,060 Kom ons maak dat ons nie hand wat jy hierdie gebruiker se tafel 510 00:25:21,060 --> 00:25:25,080 en laat my gaan voort en skep, myself, in die lesings database-- 511 00:25:25,080 --> 00:25:31,000 eintlik laat my voort te gaan en verwyder die tafel Ek het hier reeds 512 00:25:31,000 --> 00:25:32,940 sodat ons kan eintlik maak dit. 513 00:25:32,940 --> 00:25:33,550 Oeps. 514 00:25:33,550 --> 00:25:35,970 Ek gaan om dit te laat val tafel, en nou is ek 515 00:25:35,970 --> 00:25:38,337 gaan weer na die lesings databasis hier, 516 00:25:38,337 --> 00:25:40,420 Ek gaan 'n tafel te skep genoem gebruikers en laat 517 00:25:40,420 --> 00:25:43,010 doen net drie kolomme aanvanklik en klik op Go. 518 00:25:43,010 --> 00:25:44,990 >> Nou, vir die grootste deel, Weereens, dit is net 519 00:25:44,990 --> 00:25:48,570 die gebruik van hierdie grafiese hulpmiddel genoem phpMyAdmin, en wat ons nou doen 520 00:25:48,570 --> 00:25:49,600 skep 'n tafel. 521 00:25:49,600 --> 00:25:53,170 So, dit is soos om File, New, en die skep van 'n nuwe Excel lêer. 522 00:25:53,170 --> 00:25:55,440 So dit is wat my vra 'n paar vrae, van links na regs, 523 00:25:55,440 --> 00:25:58,620 Wat is die naam van die eerste kolom, En dan is die naam van die tweede kolom 524 00:25:58,620 --> 00:25:59,560 en die naam van die derde. 525 00:25:59,560 --> 00:26:00,518 So laat herskep nie. 526 00:26:00,518 --> 00:26:05,460 ID, en dan gebruikersnaam was een, en dan hash was 'n ander. 527 00:26:05,460 --> 00:26:08,970 So wat moet die data tipe wees nou vir 'n gebied soos ID? 528 00:26:08,970 --> 00:26:14,470 >> Hier is die hele lys van data tipes beskikbaar vir jou in 'n databasis, 529 00:26:14,470 --> 00:26:16,070 en vir nou, laat ons gaan net met int. 530 00:26:16,070 --> 00:26:18,160 32-bietjie waarde, doen ek nie, dink realisties Ek is 531 00:26:18,160 --> 00:26:21,484 gaan meer as 4 miljard te hê gebruikers in my rekening, in my diens, 532 00:26:21,484 --> 00:26:23,650 so ek gaan beweeg te hou op na die volgende vraag. 533 00:26:23,650 --> 00:26:25,490 Ek gaan nie om te spesifiseer 'n lengte of waardes, 534 00:26:25,490 --> 00:26:28,540 dit is nie van toepassing hier vir 'n int, per se. 535 00:26:28,540 --> 00:26:30,740 En nou kan ek spesifiseer, blykbaar, 'n standaard 536 00:26:30,740 --> 00:26:33,970 waarde, wat ek gaan nie te spesifiseer. 537 00:26:33,970 --> 00:26:36,050 'N samestelling, ek weet nie wat dit is nie. 538 00:26:36,050 --> 00:26:37,290 'N kenmerk. 539 00:26:37,290 --> 00:26:39,455 Nou is ons werklik doen 'n ontwerp besluit. 540 00:26:39,455 --> 00:26:42,580 So is daar 'n paar velde hier, nie alle van wat van toepassing is nie, maar unsigned 541 00:26:42,580 --> 00:26:43,380 net beteken wat? 542 00:26:43,380 --> 00:26:45,400 Dat die int moet wees? 543 00:26:45,400 --> 00:26:46,210 Net nie-negatief. 544 00:26:46,210 --> 00:26:48,090 So dit het 0 op up. 545 00:26:48,090 --> 00:26:51,120 Nee, ek is nie van plan om te gaan, want Ek wil elke gebruiker 'n ID te hê, 546 00:26:51,120 --> 00:26:52,470 dit kan nie nul wees. 547 00:26:52,470 --> 00:26:55,949 En dan, ons kry om 'n paar meer interessante ontwerp besluite soos hierdie. 548 00:26:55,949 --> 00:26:58,990 Ons sal terug te kom na dit in 'n oomblik, maar wat nog 'n kenmerk van die databasis 549 00:26:58,990 --> 00:27:04,200 is, is dat jy kan vertel die databasis bediener voort te gaan 550 00:27:04,200 --> 00:27:07,100 en te optimaliseer jouself, jou RAM en hardeskyf ruimte, 551 00:27:07,100 --> 00:27:11,770 sodat kies, en inserts, en verwyder, en updates is baie vinnig. 552 00:27:11,770 --> 00:27:13,250 Vergelyk dit met pset5. 553 00:27:13,250 --> 00:27:16,259 >> As jy wil om te kyk om iets in jou hash tafel, wat 554 00:27:16,259 --> 00:27:18,300 jy dink van 'n databasis, wat moes al die om te doen 555 00:27:18,300 --> 00:27:21,500 werk vir die maak van jou hash tafel vinnig. 556 00:27:21,500 --> 00:27:22,840 Dit is soos, natuurlik, jy. 557 00:27:22,840 --> 00:27:23,060 Reg? 558 00:27:23,060 --> 00:27:26,080 Jy het om te sit in al die tyd fyn tuning dinge, kry 'n hash funksie 559 00:27:26,080 --> 00:27:27,820 reg, uitzoeken hoe baie emmers te hê. 560 00:27:27,820 --> 00:27:29,611 >> Maar wat is lekker, weer, oor 'n databasis 561 00:27:29,611 --> 00:27:31,762 jy net voorspel dat al hierdie aan ander mense 562 00:27:31,762 --> 00:27:33,720 wat gedink dit deur vir jou, en wat 563 00:27:33,720 --> 00:27:37,170 Ek gaan hier onder sê indeks is dat my ID-veld 564 00:27:37,170 --> 00:27:41,149 gaan na die primêre manier van wees identifisering van gebruikers in hierdie databasis. 565 00:27:41,149 --> 00:27:42,940 Ek gaan nie om te dink van Zamyla as Zamyla, 566 00:27:42,940 --> 00:27:45,800 Ek gaan om te dink aan haar as die nommer 6. 567 00:27:45,800 --> 00:27:49,814 >> Hoekom is dit dalk beter intuïtief te dink en model 568 00:27:49,814 --> 00:27:52,480 elk van jou individuele rye met behulp 'n aantal in plaas van iets 569 00:27:52,480 --> 00:27:56,480 soos 'n string, soos die Zamyla of Gabe of meer string nog? 570 00:27:56,480 --> 00:27:57,444 Ja? 571 00:27:57,444 --> 00:28:00,117 >> GEHOOR: 'n ID is uniek? 572 00:28:00,117 --> 00:28:01,200 David J. Malan weer sê? 573 00:28:01,200 --> 00:28:02,283 GEHOOR: 'n ID is uniek? 574 00:28:02,283 --> 00:28:04,400 David J. Malan 'n ID is uniek, maar suppose-- 575 00:28:04,400 --> 00:28:06,320 soos die geval in die algemeen met gebruikers, veronderstel 576 00:28:06,320 --> 00:28:10,110 Ek het ook gesê daar kan slegs een Zamyla in die wêreld, en slegs een Gabe. 577 00:28:10,110 --> 00:28:13,730 Ek kon die uniekheid lê beperking op snare, ook, as ek wou. 578 00:28:13,730 --> 00:28:15,550 So nie 'n slegte gedagte. 579 00:28:15,550 --> 00:28:16,500 >> Publiek: meer veilig is. 580 00:28:16,500 --> 00:28:17,874 >> David J. Malan Meer veilige, hoekom? 581 00:28:17,874 --> 00:28:20,705 Publiek: Jy kan nie sê watter is wat, soos in die gebruiker. 582 00:28:20,705 --> 00:28:22,580 David J. Malan OK, jy kan nie wat gebruikers vertel 583 00:28:22,580 --> 00:28:24,380 is wat so is daar 'n privaatheid aspek aan dit, 584 00:28:24,380 --> 00:28:27,810 veral as die ID's miskien verskyn in die URLs. 585 00:28:27,810 --> 00:28:29,960 So seker nie, wat kan soort werk ook. 586 00:28:29,960 --> 00:28:30,640 Ander gedagtes? 587 00:28:30,640 --> 00:28:31,383 Ja? 588 00:28:31,383 --> 00:28:34,316 >> Publiek: Dit is makliker om te voer bedrywighede op 'n int. 589 00:28:34,316 --> 00:28:35,940 David J. Malan Dit is die werklike skopper. 590 00:28:35,940 --> 00:28:38,850 Dit is net meer doeltreffende, of makliker vir die rekenaar, 591 00:28:38,850 --> 00:28:40,431 bedrywighede uit te voer op 'n heelgetal. 592 00:28:40,431 --> 00:28:40,930 Reg? 593 00:28:40,930 --> 00:28:43,905 'N int is gewaarborg wees 32-bit, terwyl Zamyla 594 00:28:43,905 --> 00:28:47,660 is 'n paar karakters lank, Gabriel is nog 'n paar karakters lank, 595 00:28:47,660 --> 00:28:51,930 Davenport is baie lang, en dit is dus nie besonder doeltreffend te gebruik 596 00:28:51,930 --> 00:28:55,860 snare waardes te vergelyk en kyk vir velde, en werk velde, 597 00:28:55,860 --> 00:28:57,790 As jy kan wegkom met net een heelgetal. 598 00:28:57,790 --> 00:28:59,090 Net 32 ​​stukkies. 599 00:28:59,090 --> 00:29:02,570 So gebruikers, ook op hierdie manier, hoef nie te uniek wees, 600 00:29:02,570 --> 00:29:05,040 hoewel hulle waarskynlik moet wees, en selfs op hierdie manier te 601 00:29:05,040 --> 00:29:07,520 'n gebruiker kan toegelaat word om te sy of haar gebruikersnaam verander. 602 00:29:07,520 --> 00:29:10,810 >> So laat ons nou gaan dit as die primêre middel van die identifisering van die gebruiker. 603 00:29:10,810 --> 00:29:13,510 Dit word vertel van die databasis voort te gaan en te optimaliseer jouself 604 00:29:13,510 --> 00:29:17,065 sodat kyk ups op ID is super vinnig. 605 00:29:17,065 --> 00:29:19,620 AI, verskriklik naam, net beteken Auto Vermeerder, 606 00:29:19,620 --> 00:29:21,500 en dit is die tjek boks wat ons nodig het om te kyk 607 00:29:21,500 --> 00:29:24,614 om te bepaal dat die ID-veld te word outomaties opgedateer vir my, 608 00:29:24,614 --> 00:29:26,530 en dan gaan ek gaan na die reg hier 609 00:29:26,530 --> 00:29:29,279 en eerlik ek is nie regtig belangstel in meer van hierdie velde nie. 610 00:29:29,279 --> 00:29:30,630 Beslis nie vandag nie. 611 00:29:30,630 --> 00:29:33,770 >> So ek gaan hier terug te gaan, die eerste kolom, waar 612 00:29:33,770 --> 00:29:35,830 Ek moet gebruikersnaam spesifiseer en hash, en laat ons 613 00:29:35,830 --> 00:29:38,080 ten minste fokus op die tweede een vir nou. 614 00:29:38,080 --> 00:29:41,498 Int is waarskynlik nie die regte oproep, So, wat maak meer sin miskien? 615 00:29:41,498 --> 00:29:42,741 >> Publiek: teks. 616 00:29:42,741 --> 00:29:43,824 David J. Malan weer sê? 617 00:29:43,824 --> 00:29:44,710 Publiek: teks. 618 00:29:44,710 --> 00:29:44,980 David J. Malan teks? 619 00:29:44,980 --> 00:29:45,590 OK, hoor ek die teks. 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 Ons soort van 'n klomp van die keuses wat die teks in die natuur. 623 00:29:53,860 --> 00:29:55,990 So wanneer en waarom doen jy 'n paar van hierdie gebruik? 624 00:29:55,990 --> 00:29:59,560 Wel kar, in teenstelling met wat jy dalk dink, is nie 'n enkele karakter. 625 00:29:59,560 --> 00:30:01,550 Dit is 'n spesifieke aantal karakters. 626 00:30:01,550 --> 00:30:04,600 So as ons weet dat alle gebruikers moet wees soos agt karakters, 627 00:30:04,600 --> 00:30:08,490 soos gebruik te algemeen in ouer wees rekenaar stelsels, kan ek sê kar 628 00:30:08,490 --> 00:30:09,830 en dan kan ek sê 8 hier. 629 00:30:09,830 --> 00:30:12,930 Dit is wanneer die derde kolom word toepassing wanneer die skep van 'n tafel. 630 00:30:12,930 --> 00:30:15,450 >> Maar dit is soort van irriterende want sommige mense 631 00:30:15,450 --> 00:30:17,660 wil 'n langer gebruikersnaam te hê as agt karakters, 632 00:30:17,660 --> 00:30:19,743 sommige mense dalk wil 'n korter gebruikersnaam, 633 00:30:19,743 --> 00:30:22,210 so hoekom verbind myself aan 'n spesifieke nommer? 634 00:30:22,210 --> 00:30:24,710 Hoekom nie 'n veranderlike aantal karakters en net 635 00:30:24,710 --> 00:30:28,580 sê dat die maksimum lengte van 'n naam is, weet ek nie, soos 64 karakters. 636 00:30:28,580 --> 00:30:31,780 Ek kan nie dink aan enige vriende wat name het meer as 64 karakters, 637 00:30:31,780 --> 00:30:34,810 en selfs as dit is te kort om julle kon beslis stamp dit arbitrêr. 638 00:30:34,810 --> 00:30:37,330 >> So varchar is 'n veranderlike aantal karakters. 639 00:30:37,330 --> 00:30:41,010 Die teks is nie 'n slegte instink, en eerlik dat die soort van doen wat dit sê, 640 00:30:41,010 --> 00:30:45,460 maar 'n teks veld kan wees soos 65,000 grepe ten minste. 641 00:30:45,460 --> 00:30:50,790 Dit is waarskynlik overkill vir 'n gebied, en in die feit, yup, 65.535. 642 00:30:50,790 --> 00:30:53,740 Dit is waarskynlik overkill vir 'n noem, so ons sal vashou, tipies, 643 00:30:53,740 --> 00:30:56,910 met varchars vir tekstuele gebied en hash, ook. 644 00:30:56,910 --> 00:30:59,990 Hash, dit blyk, kan ons nie 'n varchar asook of iets soos dit, 645 00:30:59,990 --> 00:31:03,080 maar ons sal nie vandag fokus op die kriptografie daar en die getalle 646 00:31:03,080 --> 00:31:05,210 sodat ons kan eintlik wil gebruik vir sy lengte. 647 00:31:05,210 --> 00:31:07,430 >> Maar laat my gaan na die regterkant. 648 00:31:07,430 --> 00:31:11,280 Jy kan slegs een primêre indeks vir 'n tafel, 649 00:31:11,280 --> 00:31:16,380 maar wil ek nie enige van hierdie toe te pas, nou, gebruikersnaam, sou jy sê? 650 00:31:16,380 --> 00:31:21,980 Wat moet gebruikersnaam gebaseer op 'n vae begrip van hierdie vier opsies? 651 00:31:21,980 --> 00:31:23,340 Net deur hul name? 652 00:31:23,340 --> 00:31:24,140 >> Publiek: Unieke. 653 00:31:24,140 --> 00:31:25,100 >> David J. Malan So unieke, reg? 654 00:31:25,100 --> 00:31:28,190 So dit blyk dat nie net kon vertel 'n databasis in advance, 655 00:31:28,190 --> 00:31:30,380 dit is die primêre manier identifiseer velde. 656 00:31:30,380 --> 00:31:32,990 Jy kan ook sê dit is gaan 'n unieke gebied te wees. 657 00:31:32,990 --> 00:31:34,700 Dit gaan nie om te wees die ding wat ek staatmaak op, 658 00:31:34,700 --> 00:31:38,490 maar ek sou die databasis te hou wese het dat as toestand, sodat 659 00:31:38,490 --> 00:31:42,340 dat as ek ooit probeer om te registreer twee gebruikers met dieselfde naam, 660 00:31:42,340 --> 00:31:44,360 die databasis plat uit gaan nie om my te laat. 661 00:31:44,360 --> 00:31:47,490 Ek is dalk 'n addisionele kode het in PHP wat verhoed dat so veel nie, 662 00:31:47,490 --> 00:31:50,640 maar die databasis ook kan verseker dat dit is nooit gaan gebeur nie. 663 00:31:50,640 --> 00:31:53,370 >> Nou, as 'n eenkant, veral as jy dink oor die finale projekte, 664 00:31:53,370 --> 00:31:57,030 Hou in gedagte dit indeks en vol teks is eintlik baie nuttig. 665 00:31:57,030 --> 00:32:01,080 As jy 'n groter databasis, nie met dosyne, maar met honderde of duisende 666 00:32:01,080 --> 00:32:05,270 of selfs miljoene velde, kan jy ook vertel van die databasis in advance 667 00:32:05,270 --> 00:32:07,980 dit is 'n gebied gaan ek op te soek op 'n baie. 668 00:32:07,980 --> 00:32:10,520 Miskien is sy gebruikersnaam, Miskien is dit bio, as jy 669 00:32:10,520 --> 00:32:13,750 'n Facebook-agtige webwerf wat het die lede wat die gebruiker se toegelaat 670 00:32:13,750 --> 00:32:16,799 te red, en as jy wil vertel die databasis in advance 671 00:32:16,799 --> 00:32:20,090 Ek gaan word soek op hierdie gebied 'n baie, maar dit is nie noodwendig uniek, 672 00:32:20,090 --> 00:32:22,800 jy kan spesifiseer te skep vir my 'n indeks. 673 00:32:22,800 --> 00:32:27,990 Of jy kan ook sê laat my toe om te doen soort van arbitrêre soektogte soos Command 674 00:32:27,990 --> 00:32:30,420 of Control F, soos jy dalk in 'n woordverwerker, 675 00:32:30,420 --> 00:32:34,184 sodat jy kan arbitrêre snare kyk of substrings in hierdie veld. 676 00:32:34,184 --> 00:32:36,600 Met ander woorde, is ons om tot op die punt in die semester 677 00:32:36,600 --> 00:32:40,720 waar jy nie hoef te bekommer oor hoe om dinge te doeltreffend toe te pas. 678 00:32:40,720 --> 00:32:44,540 Jy hoef net te weet wat ontwerp besluite te so dat jy maak 679 00:32:44,540 --> 00:32:48,470 die gebruik van die regte gereedskap vir die handel om sodoende funksies 680 00:32:48,470 --> 00:32:50,380 wat ander mense vir jou gebou. 681 00:32:50,380 --> 00:32:54,240 So om saam te vat, moet slegs primêre een het, kan jy net een, 682 00:32:54,240 --> 00:32:59,630 en dit is die ding wat jy pleeg deur die gebruik van die identifisering velde uniek. 683 00:32:59,630 --> 00:33:02,710 Unieke is net soortgelyke in gees nie, maar jy dalk net soms gebruik, 684 00:33:02,710 --> 00:33:04,530 maar jy wil die databasis om dit te lê. 685 00:33:04,530 --> 00:33:08,050 Indeks beteken net preemptively versnel dinge in die toekoms 686 00:33:08,050 --> 00:33:10,230 sodat ek kan soek vir dinge in hierdie veld. 687 00:33:10,230 --> 00:33:13,700 En dan volledige teks is algemeen vir paragrawe, of essays, of 'n groot liggame 688 00:33:13,700 --> 00:33:16,270 van die teks waar jy dalk ook wil hê 689 00:33:16,270 --> 00:33:19,420 wilde kaarte soos die ekwivalent van die sterre. 690 00:33:19,420 --> 00:33:19,920 Right. 691 00:33:19,920 --> 00:33:22,580 >> So dit was soort van 'n baie om te alles op een slag. 692 00:33:22,580 --> 00:33:25,220 Kom ons kyk of ons nie kan distilleer 'n paar van hierdie eienskappe 693 00:33:25,220 --> 00:33:29,540 en dan iets te bou baie eenvoudig, maar kragtig. 694 00:33:29,540 --> 00:33:31,380 So tussen die ander ontwerp besluite jy 695 00:33:31,380 --> 00:33:34,005 uiteindelik gaan hê is saam die lyne van die stoor enjins. 696 00:33:34,005 --> 00:33:37,370 En laat my net melding maak van hierdie in afwagting van finale projekte, 697 00:33:37,370 --> 00:33:42,020 en afwagting van Let's say-- geen laat doen. 698 00:33:42,020 --> 00:33:43,820 Kom ons bou hierdie klein aansoek eerste. 699 00:33:43,820 --> 00:33:48,070 Ek gaan om te gaan in my terminale venster, en hier is nie 700 00:33:48,070 --> 00:33:52,500 slegs counter.php, wat ons nou gaan om ontslae te raak van nie meer as related, 701 00:33:52,500 --> 00:33:54,570 maar ons het 'n hele klomp dopgehou en dit 702 00:33:54,570 --> 00:33:58,080 gaan wees baie soortgelyk in die gees na wat jy sien in die probleem stel sewe. 703 00:33:58,080 --> 00:34:00,980 >> So het ons drie dopgehou sluit openbare en templates, wat 704 00:34:00,980 --> 00:34:05,040 is presies waar ons op af links Maandag met ons hele MVC paradigma. 705 00:34:05,040 --> 00:34:09,290 En om herhaling in die openbaar gaan om te gaan enige lêer wat ek wil hê dat gebruikers om werklik 706 00:34:09,290 --> 00:34:12,969 v in staat wees om te besoek in die leser via URL. 707 00:34:12,969 --> 00:34:13,502 Sjabloon. 708 00:34:13,502 --> 00:34:14,710 Wat het ons in templates? 709 00:34:14,710 --> 00:34:17,070 Watter soort dinge? 710 00:34:17,070 --> 00:34:21,659 Daar was nie veel nie, maar 'n paar lêers ten minste op Maandag. 711 00:34:21,659 --> 00:34:22,619 Ja. 712 00:34:22,619 --> 00:34:23,100 >> Publiek: Opskrif en Voetskrif? 713 00:34:23,100 --> 00:34:24,516 >> David J. Malan Opskrif en Voetskrif. 714 00:34:24,516 --> 00:34:26,679 So ons het iets soortgelyks vandag ook. 715 00:34:26,679 --> 00:34:30,330 Ons het 'n paar lêers, maar Footer ek sien, Selected ek sien, 716 00:34:30,330 --> 00:34:31,909 en dan 'n klomp van die ander lêers. 717 00:34:31,909 --> 00:34:35,482 So, dit is die ekwivalent van die V MVC oog, wat 718 00:34:35,482 --> 00:34:37,690 weer, sal 'n bietjie meer duidelik in die probleem stel sewe, 719 00:34:37,690 --> 00:34:40,380 maar dit is net 'n gids ek om 'n baie van my estetika. 720 00:34:40,380 --> 00:34:42,840 Baie van my HTML, 'n baie van my vorms. 721 00:34:42,840 --> 00:34:46,899 Intussen sluit, is 'n ander gids wat hierdie drie lêers 722 00:34:46,899 --> 00:34:48,440 en laat ons neem 'n vinnige blik op hierdie. 723 00:34:48,440 --> 00:34:51,699 >> Ek gaan om voort te gaan en maak config.php. 724 00:34:51,699 --> 00:34:54,610 Soos dit blyk, baie soos vroeër in die kwartaal, 725 00:34:54,610 --> 00:34:57,850 jy skerp ingesluit CS50 dot h met pset7. 726 00:34:57,850 --> 00:35:00,780 In vandag se voorbeeld, jy gaan die ekwivalent van wat om te doen 727 00:35:00,780 --> 00:35:03,600 met 'n eis verklaring wat effektief 728 00:35:03,600 --> 00:35:05,340 sluit hierdie paar lyne. 729 00:35:05,340 --> 00:35:08,225 So duidelik te wees, is dit 'n lêer genaamd. 730 00:35:08,225 --> 00:35:09,350 En sien wat dit doen. 731 00:35:09,350 --> 00:35:11,970 Dit is blykbaar iets te doen kriptiese, draai op fout boodskappe 732 00:35:11,970 --> 00:35:13,680 sodat jy dit kan sien in die leser. 733 00:35:13,680 --> 00:35:15,860 Dit is dan blykbaar wat twee ander lêers 734 00:35:15,860 --> 00:35:19,530 sodat dit is soos # include in C, en dan is dit een wat ons gesien het, 735 00:35:19,530 --> 00:35:22,720 en ons het staatgemaak op, dit blyk op dat inkopie mandjie soos funksies. 736 00:35:22,720 --> 00:35:25,610 >> Dit beteken 'n koekie wil heen en weer gestuur. 737 00:35:25,610 --> 00:35:27,290 So hoekom is dit interessant? 738 00:35:27,290 --> 00:35:32,460 Wel, as ons gaan terug na hierdie gids en oop, byvoorbeeld, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Let daarop dat PHP doen ondersteuning konstantes, dit is nie heeltemal soos # define in C. 741 00:35:38,840 --> 00:35:41,290 In plaas daarvan, kan jy letterlik sê gedefinieer, en kennis 742 00:35:41,290 --> 00:35:44,110 dat ek by voorbaat het gestoor vier konstantes in hierdie lêer. 743 00:35:44,110 --> 00:35:47,020 Een vir vandag se databasis vir my wagwoord vir my gebruikersnaam, 744 00:35:47,020 --> 00:35:48,690 en die naam van die bediener. 745 00:35:48,690 --> 00:35:51,644 So dit is eintlik gaan wees redelik soortgelyk in probleem die sewe. 746 00:35:51,644 --> 00:35:54,560 En laastens, en dit is waar ek gaan 'n paar mooi funksie te kry 747 00:35:54,560 --> 00:35:59,000 uit die personeel, in functions.php is 'n klomp van die kode wat ons het geskryf, 748 00:35:59,000 --> 00:36:01,040 en ek gesteel het 'n paar van hierdie van die probleem die sewe 749 00:36:01,040 --> 00:36:05,920 vir vandag, wat nie 'n klomp van die dinge en laat ons net kyk na een van hulle 750 00:36:05,920 --> 00:36:07,270 in die besonder. 751 00:36:07,270 --> 00:36:09,720 Hierdie funksie hier, navraag, gaan wees 752 00:36:09,720 --> 00:36:13,600 die PHP funksie noem ons ten einde SQL te voer. 753 00:36:13,600 --> 00:36:16,070 'N Oomblik gelede was ons met behulp van phpMyAdmin, maar dit is net 754 00:36:16,070 --> 00:36:18,720 vir soort leer doeleindes en diagnostiese doeleindes 755 00:36:18,720 --> 00:36:20,494 en vergeet jou databasis stel. 756 00:36:20,494 --> 00:36:22,660 Wanneer jy eintlik gebruik om jou databasis, julle, die mens, 757 00:36:22,660 --> 00:36:24,100 is natuurlik nie gaan word die trek van 'n web 758 00:36:24,100 --> 00:36:25,740 bladsy elke keer as iemand registreer. 759 00:36:25,740 --> 00:36:29,870 Jy gaan die kode te skryf wat inserts en verwyder gebruikers op aanvraag, 760 00:36:29,870 --> 00:36:32,490 en ons gaan om dit te doen deur middel van die soektog funksie. 761 00:36:32,490 --> 00:36:35,360 As ek blaai nou af, is daar gaan 'n paar meer funksies te wees. 762 00:36:35,360 --> 00:36:37,170 Redirect gaan 'n funksie wat ons geskryf het 763 00:36:37,170 --> 00:36:40,160 vir jou wat jy kan stuur die gebruiker na 'n ander URL, 764 00:36:40,160 --> 00:36:43,780 en lewer 'n funksie is, hou ons gesien het op Maandag, wat eintlik lewer 765 00:36:43,780 --> 00:36:48,000 'n sjabloon, maar meer oor dit in die vorm van pset7 se eie loop deur. 766 00:36:48,000 --> 00:36:50,500 Vir nou, laat ons gaan voort en doen dit. 767 00:36:50,500 --> 00:36:54,860 >> Laat my gaan in my lesings tafel en sien dat daar tans niks 768 00:36:54,860 --> 00:36:59,640 hier net nog nie, en laat my ook gaan in my openbare gids, waar 769 00:36:59,640 --> 00:37:02,780 daar is net een lêer, index.php. 770 00:37:02,780 --> 00:37:06,920 Hierdie lêer blyk te wees, super eenvoudige Op die oomblik lyk dit net soos hierdie. 771 00:37:06,920 --> 00:37:09,110 Baie soos hoe ons links af op Maandag. 772 00:37:09,110 --> 00:37:11,945 Ek is wat hierdie lêer, config.php, wat in 773 00:37:11,945 --> 00:37:15,160 'n sluit gids, wat is in dot dot, my ouers, 774 00:37:15,160 --> 00:37:17,650 en dan is dit net die lewering van hierdie lêer. 775 00:37:17,650 --> 00:37:18,960 So, wat is hierdie lêer? 776 00:37:18,960 --> 00:37:24,700 >> Kom ons oopmaak in my templates form.php, en ons sal dit sien. 777 00:37:24,700 --> 00:37:28,500 Super eenvoudige, glo hierdie vorm gaan dien deur 'n $ _GET of $ _POST. 778 00:37:28,500 --> 00:37:29,320 Vinnige gesonde verstand tjek. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Letterlik visueel soek die lêer. 781 00:37:35,690 --> 00:37:36,610 Metode gelyk aan post. 782 00:37:36,610 --> 00:37:39,280 So dit gaan nie die URL te gebruik, soos Google doen, dit gaan soort van vel 783 00:37:39,280 --> 00:37:41,030 die inligting agter die skerms en dit is 784 00:37:41,030 --> 00:37:43,580 gaan om aan 'n lêer genaamd register.php, 785 00:37:43,580 --> 00:37:45,660 en dit is die lêer Ons het nog nie geskryf 786 00:37:45,660 --> 00:37:47,610 maar wat dit gaan lyk is dit. 787 00:37:47,610 --> 00:37:52,670 >> As ek na 'n aparte bladsy Dit is wat localhost / index.php lyk. 788 00:37:52,670 --> 00:37:56,930 En weer, die bediener se net die veronderstelling index.php. 789 00:37:56,930 --> 00:37:57,910 Betree. 790 00:37:57,910 --> 00:37:59,870 So dit is waar ons is op, en wat ek wil doen 791 00:37:59,870 --> 00:38:02,450 is in staat wees om dinge te tik soos Dawid, en dan 792 00:38:02,450 --> 00:38:08,050 my selfoon nommer, wat sal sê 617-555-1212 vir nou, registreer 793 00:38:08,050 --> 00:38:09,910 en nou register.php is nie gevind nie. 794 00:38:09,910 --> 00:38:11,440 So ek het dit nodig om te implementeer. 795 00:38:11,440 --> 00:38:13,320 So laat ons vinnig sweep iets soos hierdie op. 796 00:38:13,320 --> 00:38:18,640 Laat my gaan in my openbare gids en doen gedit van register.php, 797 00:38:18,640 --> 00:38:22,300 en nou is ek gaan om voort te gaan en begin PHP af, soos ons gedoen het op Maandag, 798 00:38:22,300 --> 00:38:25,430 en naby PHP se tag, en Kom ons doen 'n paar dinge. 799 00:38:25,430 --> 00:38:28,336 >> So een, ek ken, nadat skriftelike daardie vorm, 800 00:38:28,336 --> 00:38:29,960 wat ek wil om te kyk vir die volgende. 801 00:38:29,960 --> 00:38:35,670 As dit leeg is, wat die gebruiker getik in die naam veld, 802 00:38:35,670 --> 00:38:39,860 Ek gaan om iets te sê soos verskoning ontbreek naam. 803 00:38:39,860 --> 00:38:42,380 Verskoning, intussen, is nie 'n gebou in PHP ding, 804 00:38:42,380 --> 00:38:45,970 dit is 'n funksie wat ons geskryf het in functions.php vir pset7 805 00:38:45,970 --> 00:38:47,940 sodat jy toegang tot dit. 806 00:38:47,940 --> 00:38:53,830 Anders as die ander gebied leeg, aantal, dan is ek 807 00:38:53,830 --> 00:38:58,370 gaan vra om verskoning vir die gebruiker en sê ontbrekende getal. 808 00:38:58,370 --> 00:38:59,320 Slaan hierdie lêer. 809 00:38:59,320 --> 00:39:02,640 >> Nou laat ons gaan terug na my leser, gaan terug na die forum probeer weer. 810 00:39:02,640 --> 00:39:04,070 Registreer nie. 811 00:39:04,070 --> 00:39:05,090 OK. 812 00:39:05,090 --> 00:39:06,730 Niks gebeur nie, wat goed is. 813 00:39:06,730 --> 00:39:08,120 Ek het nie 'n fout boodskap. 814 00:39:08,120 --> 00:39:11,651 Maar as in plaas daarvan, laat herlaai bladsy, en nie voorsien nie. 815 00:39:11,651 --> 00:39:12,150 Damn dit. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Doen nie. 818 00:39:17,140 --> 00:39:18,810 Registreer nie. 819 00:39:18,810 --> 00:39:20,350 Wat het ek verkeerd gedoen? 820 00:39:20,350 --> 00:39:24,860 Indien leeg, $ _POST naam. 821 00:39:24,860 --> 00:39:26,350 Sê weer? 822 00:39:26,350 --> 00:39:27,670 >> O ja, natuurlik. 823 00:39:27,670 --> 00:39:30,919 Ek het vergeet om die belangrikste deel, wat is nodig ("../ sluit / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Ek moet toegang tot die te hê verskoning funksie, wat 826 00:39:36,460 --> 00:39:37,770 Daarom niks gebeur nie. 827 00:39:37,770 --> 00:39:39,460 Die funksie nie eintlik nie bestaan ​​nie. 828 00:39:39,460 --> 00:39:40,640 So kom ons probeer dit weer. 829 00:39:40,640 --> 00:39:42,350 Kom ons herlaai die bladsy, klik Register. 830 00:39:42,350 --> 00:39:43,060 OK. 831 00:39:43,060 --> 00:39:43,770 Daar is dit. 832 00:39:43,770 --> 00:39:45,700 So, die uitset ons sien hier is die resultaat 833 00:39:45,700 --> 00:39:47,685 van die roeping van 'n verskoning funksie, super eenvoudige, 834 00:39:47,685 --> 00:39:50,060 en dit net druk uit wat ookal Ek gee dit as 'n argument. 835 00:39:50,060 --> 00:39:51,370 >> Alle reg, so laat ons saam te werk. 836 00:39:51,370 --> 00:39:54,240 Kom ons verskaf my naam soos Dawid, registreer, 837 00:39:54,240 --> 00:39:56,890 ontbreek aantal OK Let's voorsiening te maak dat, ook. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registreer nie. 840 00:39:59,250 --> 00:39:59,750 OK. 841 00:39:59,750 --> 00:40:02,760 So alles is nou goed, net mooi niks interessante gebeur. 842 00:40:02,760 --> 00:40:06,000 So nou laat ons iets meer interessante gebeur soos hierdie. 843 00:40:06,000 --> 00:40:09,980 Laat my gaan in phpMyAdmin, en laat ons eintlik 'n tabel met die naam gebruikers 844 00:40:09,980 --> 00:40:12,330 Ek gaan om dit te gee drie kolomme, en ek sal vinnig 845 00:40:12,330 --> 00:40:16,250 skep ID, en dan noem, en dan die getal, 846 00:40:16,250 --> 00:40:18,832 en die ID veld Ek is gaan verlaat as 'n int. 847 00:40:18,832 --> 00:40:20,790 Die naam veld gaan ek te verlaat as 'n varchar, 848 00:40:20,790 --> 00:40:23,257 en ons sal sê 64, ietwat arbitrêr. 849 00:40:23,257 --> 00:40:25,090 Die getal gaan ek te maak, jy weet wat? 850 00:40:25,090 --> 00:40:27,350 Ons gaan Ondersteun ons getalle hier 851 00:40:27,350 --> 00:40:31,510 so ek gaan om iets te doen soos kar en dan 10 karakters 852 00:40:31,510 --> 00:40:34,540 Max vir 'n area kode en dan sewe syfers. 853 00:40:34,540 --> 00:40:37,870 En dan hier, ek gaan spesifiseer motor inkrement hierdie veld, 854 00:40:37,870 --> 00:40:40,550 maak dit 'n primêre sleutel, en Ek gaan voort en gaan nie 855 00:40:40,550 --> 00:40:42,240 check enige van hierdie ander bokse. 856 00:40:42,240 --> 00:40:48,030 >> So toe ek nou uiteindelik op Save, en ek gaan terug na my gebruikers tafel, 857 00:40:48,030 --> 00:40:52,270 dit is hoe dit lyk as ek nou op 'n nuwe blad struktuur. 858 00:40:52,270 --> 00:40:54,550 So hierdie, om duidelik te wees, is net phpMyAdmin se manier 859 00:40:54,550 --> 00:40:58,570 sê jou databasis 'n ID, 'n naam en 'n aantal 860 00:40:58,570 --> 00:41:02,040 met die spesifieke konfigurasies en ons sal die res van die velde ignoreer 861 00:41:02,040 --> 00:41:03,140 daar vir nou. 862 00:41:03,140 --> 00:41:04,810 >> So nou wat ek wil doen? 863 00:41:04,810 --> 00:41:09,060 So as ek gaan nou in my bron-kode, as alles goed gaan 864 00:41:09,060 --> 00:41:11,190 Ek wil graag die volgende soektog uit te voer. 865 00:41:11,190 --> 00:41:14,970 Voeg in, en ek kan net sê gebruikers ek doen nie streng 866 00:41:14,970 --> 00:41:18,620 nodig om daardie terug bosluise as dit nie 'n gevaarlike woord soos gebruikers. 867 00:41:18,620 --> 00:41:22,810 Ek gaan om te sê die naam, nommer, en dan hier Ek is 868 00:41:22,810 --> 00:41:24,960 gaan nie hard-kode van die syfer van die waardes nie. 869 00:41:24,960 --> 00:41:26,760 Ek gaan twee vraagtekens te sit. 870 00:41:26,760 --> 00:41:29,320 En dit is 'n konvensie in baie tale 871 00:41:29,320 --> 00:41:31,730 waardeur as jy wil hê 'n plekhouer vir 'n string 872 00:41:31,730 --> 00:41:34,105 jy gaan om die vraag te gebruik punte, om redes wat ons sal 873 00:41:34,105 --> 00:41:36,370 kom terug om te gesels oor sekuriteit, en hier 874 00:41:36,370 --> 00:41:39,420 Ek gaan in dié om te slaag twee velde plaas naam, 875 00:41:39,420 --> 00:41:44,850 en dan post nommer, En nou het die lêer stoor. 876 00:41:44,850 --> 00:41:47,090 >> En nou gaan ek gaan hier is 'n super 877 00:41:47,090 --> 00:41:55,690 net sê rendersuccess.php, wat gaan 'n ander sjabloon te wees. 878 00:41:55,690 --> 00:41:57,380 Ek gaan regtig vinnig skep. 879 00:41:57,380 --> 00:42:06,270 Ek en Geditsuccess.php gaan net H1 sukses in die lêer te sê. 880 00:42:06,270 --> 00:42:06,990 Alle regte. 881 00:42:06,990 --> 00:42:11,312 So nou, laat ons gaan terug na die leser, waar ek besoek voor. 882 00:42:11,312 --> 00:42:14,270 Kom ons gaan voort en bevestig ek geskryf Dawid, het ek in 'n telefoonnommer, 883 00:42:14,270 --> 00:42:15,390 registreer nie. 884 00:42:15,390 --> 00:42:16,100 Damn dit. 885 00:42:16,100 --> 00:42:17,420 Wat het ek verkeerd gedoen? 886 00:42:17,420 --> 00:42:20,850 So ek sien 'n fout hier, jy het 'n fout in jou SQL syntax. 887 00:42:20,850 --> 00:42:24,900 Laat my terug na gedit spring, laat my terug te gaan na register.php, 888 00:42:24,900 --> 00:42:28,830 en wat het ek laat dit was belangrik laaste tyd? 889 00:42:28,830 --> 00:42:29,722 Ek moet hierdie. 890 00:42:29,722 --> 00:42:32,930 Jy wil hê dat die ander as uit te ken wat voorheen opgemerk het, maar ek het dit nodig. 891 00:42:32,930 --> 00:42:35,596 >> So nou, laat ons gaan terug, en hierdie was nuttig om te sien in die leser 892 00:42:35,596 --> 00:42:37,680 en dit is die rede waarom in config.php Ons spoeg uit foute. 893 00:42:37,680 --> 00:42:41,770 Kom ons gaan voort en laai, kliek Gaan voort, sukses. 894 00:42:41,770 --> 00:42:47,060 So nou laat my gaan na my databasis hier en kliek op die gebruikers, 895 00:42:47,060 --> 00:42:51,680 en blaai en sien ek nou het Dawid in my databasis hier. 896 00:42:51,680 --> 00:42:55,810 Nou tegnies hierdie webwerf nog nie op die openbare internet, 897 00:42:55,810 --> 00:42:57,890 so ek kan nie ander het mense om hier, 898 00:42:57,890 --> 00:43:01,120 maar as ek nou wou vir Byvoorbeeld, stuur vir my 'n SMS-boodskap. 899 00:43:01,120 --> 00:43:03,920 Kom ons gaan uit op 'n ledemaat hier en sien of dit werklik werk. 900 00:43:03,920 --> 00:43:07,331 Ek gaan om voort te gaan en verwyder hierdie ry 901 00:43:07,331 --> 00:43:09,080 en ons sal vervaag hierdie in die video later 902 00:43:09,080 --> 00:43:11,900 so ons het nie die hele internet SMS my 903 00:43:11,900 --> 00:43:17,270 en ons sal nou gaan na die leser en ons sal gaan oor te doseer 904 00:43:17,270 --> 00:43:22,040 en ons sal tik in verskillende aantal hier, registreer, sukses. 905 00:43:22,040 --> 00:43:25,550 >> So nou, my eie nommer is vermoedelik in die databasis, en nou is die pret deel. 906 00:43:25,550 --> 00:43:28,774 Kom ons eintlik PHP gebruik om te doen iets programmaties, 907 00:43:28,774 --> 00:43:30,940 óf uit die opdrag lyn of van elders, 908 00:43:30,940 --> 00:43:32,773 en nou is ek net gaan dit eenvoudig te hou 909 00:43:32,773 --> 00:43:36,230 en ek gaan om te gaan in my gids hier en doen die volgende. 910 00:43:36,230 --> 00:43:44,920 Gedit script kom ons sê, ons sal noem dit teks, #! / gebruiker / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 soos ons gesien het die laaste keer. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Nou gaan ek nie nodig sluit config.php, 914 00:43:55,055 --> 00:43:57,360 Selfs al sou veroorsaak 'n effense probleem. 915 00:43:57,360 --> 00:44:03,960 En nou is ek gaan om voort te gaan en sê rye, navraag, kies ster van die gebruikers, 916 00:44:03,960 --> 00:44:08,149 en nou hier gaan ek 'n tegniek om te doen van verlede tyd vir elke rye as ry. 917 00:44:08,149 --> 00:44:09,690 En ek gaan iets eenvoudig te doen. 918 00:44:09,690 --> 00:44:19,090 Printf kom ons sê die naam is dit, en die getal is dit, backslash n. 919 00:44:19,090 --> 00:44:23,320 En nou gaan ek slaag in ry quote unquote naam, 920 00:44:23,320 --> 00:44:28,140 en ry quote unquote nommer, En nou, laat ons gaan voort 921 00:44:28,140 --> 00:44:31,430 en my terminale venster chmod dit 'n + x te maak 922 00:44:31,430 --> 00:44:33,970 Dit script genoem teks uitvoerbare. 923 00:44:33,970 --> 00:44:36,080 En nou, laat ons hardloop teks. 924 00:44:36,080 --> 00:44:37,590 >> OK, so vorder. 925 00:44:37,590 --> 00:44:39,960 So ek het nou geskryf om 'n command line script, 926 00:44:39,960 --> 00:44:43,300 in 'n taal, die sogenaamde PHP, dat, as gevolg van wat vereis dat die lyn, 927 00:44:43,300 --> 00:44:46,380 het toegang tot al die opset konstantes wat ek verskaf. 928 00:44:46,380 --> 00:44:48,177 Die naam van die databasis en so meer. 929 00:44:48,177 --> 00:44:50,260 Trouens, net om duidelik te wees dat dit nie 'n gelukskoot, 930 00:44:50,260 --> 00:44:54,730 Laat my voort te gaan en te registreer, baie vinnig iemand anders soos Rob 931 00:44:54,730 --> 00:44:58,890 en Ek sal hom gee die 555-1212 nommer. 932 00:44:58,890 --> 00:45:01,557 >> En nou, as ek die script weer, neem kennis van die krag 933 00:45:01,557 --> 00:45:03,140 van wat ons doen met die databasis. 934 00:45:03,140 --> 00:45:07,680 Nou het ek dadelik gesien wat die twee ander rye is in my databasis. 935 00:45:07,680 --> 00:45:10,699 So nou, laat ons probeer om iets te doen selfs liefhebber binnekant van, 936 00:45:10,699 --> 00:45:12,740 en dit is die deel wat ons het nie vooraf getoets is, 937 00:45:12,740 --> 00:45:15,910 So het die laaste keer dat ek dit gedoen het dinge gaan verskriklik mis, 938 00:45:15,910 --> 00:45:17,120 ons het video tot daardie effek. 939 00:45:17,120 --> 00:45:18,286 >> Eintlik, ja, snaaks eenkant. 940 00:45:18,286 --> 00:45:20,480 So het die laaste tyd, in 'n lesings soos twee jaar gelede, 941 00:45:20,480 --> 00:45:23,230 het ons besluit, het ek besluit om te wees al sou dit 'n goeie idee wees 942 00:45:23,230 --> 00:45:28,150 om dinamiese e-pos in klas, die gebruik van die hele databasis CS50 943 00:45:28,150 --> 00:45:33,390 Studente wat gegee het vir ons hul getalle en hulle selfoon draers wat jy 944 00:45:33,390 --> 00:45:36,290 kan onthou van pset0, hoe om te redeneer, dit blyk 945 00:45:36,290 --> 00:45:40,650 Ek het 'n klein fout in my program en het 'n paar foute in 2012, dink ek. 946 00:45:40,650 --> 00:45:43,997 >> Waardeur, een wat ek het vir lus wat het presies hierdie soort van ding, 947 00:45:43,997 --> 00:45:46,580 iterating oor die databasis, om 'n naam uit die databasis, 948 00:45:46,580 --> 00:45:49,940 naam uit die databasis, en dan op elke herhaling van die lus ek stuur 'n e-pos. 949 00:45:49,940 --> 00:45:54,130 Maar in plaas van die stuur van 'n e-pos, ek gestuur een e-pos die eerste iterasie, 950 00:45:54,130 --> 00:45:58,200 en twee e-pos 'n tweede iterasie, gestuur drie e-pos 'n tweede iterasie, wat 951 00:45:58,200 --> 00:46:01,230 as jy kan onthou van ons bespreking van asimptotiese notasie 952 00:46:01,230 --> 00:46:06,400 hierdie groot O slegte, soos n vierkant is hoe baie boodskappe wat ek gestuur het, 953 00:46:06,400 --> 00:46:08,560 maar dit was nie eens e-pos dit was die teks boodskappe. 954 00:46:08,560 --> 00:46:12,070 >> En soos jy weet, is die bywoning is nie super hoë teen die einde van die semester 955 00:46:12,070 --> 00:46:15,360 en so het ek gedink dit oulik op sou wees die tyd om te sê, "Hoekom is jy nie klas?" 956 00:46:15,360 --> 00:46:17,880 In die teks boodskap wat ek gestuur na die hele klas, 957 00:46:17,880 --> 00:46:22,140 en dit was snaaks 50% van die hou klas, maar die ander 50%, van wie sommige 958 00:46:22,140 --> 00:46:26,102 baie bang, ek het ongelooflik verskonend soet notas 959 00:46:26,102 --> 00:46:28,560 aan die personeel vra om verskoning vir nadat die lesing gemis net 960 00:46:28,560 --> 00:46:29,530 hierdie keer, reg? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> So wat sou verskriklik mis. 963 00:46:34,030 --> 00:46:37,030 So in die gees, laat ons probeer om hierdie weer, maar net met my nommer. 964 00:46:37,030 --> 00:46:41,940 Vooraf, in functions.php, Ek het hierdie funksie geskryf hier. 965 00:46:41,940 --> 00:46:44,250 Dit is bekend as die teks, en dit neem op drie argumente. 966 00:46:44,250 --> 00:46:46,360 'N getal, 'n draer, en 'n boodskap. 967 00:46:46,360 --> 00:46:50,390 >> Ek gebruik 'n skakelaar verklaring, wat wonderlik PHP neem snare, nie net 968 00:46:50,390 --> 00:46:53,350 heelgetalle, en ek het nie implementeer al die ondersteuning vir hierdie nog, 969 00:46:53,350 --> 00:46:55,370 Ek het net gedoen AT & T en Verizon. 970 00:46:55,370 --> 00:46:57,610 Omdat dit blyk wat met hierdie draers 971 00:46:57,610 --> 00:47:00,570 hulle het e-pos na SMS poorte, waardeur jy kan eintlik 972 00:47:00,570 --> 00:47:05,529 stuur 'n e-pos na 'n adres soos telefoonnommer by vtext.com 973 00:47:05,529 --> 00:47:08,070 en indien die gebruiker het nie geblokkeer die boodskappe, sal dit gaan deur 974 00:47:08,070 --> 00:47:09,340 is 'n SMS-boodskap. 975 00:47:09,340 --> 00:47:13,270 >> Nou om dit te doen, ek gaan te hê om by te voeg een veld baie vinnig na my databasis. 976 00:47:13,270 --> 00:47:15,470 Ek gaan om te gaan in my struktuur, en ek is 977 00:47:15,470 --> 00:47:21,880 gaan om voort te gaan en voeg 'n gebied aan die einde van die tafel. 978 00:47:21,880 --> 00:47:25,227 Kom ons kliek Gaan, en ek is gaan hierdie draer te roep 979 00:47:25,227 --> 00:47:27,310 en nou is ek gaan laat dit as 'n bar teks, 980 00:47:27,310 --> 00:47:29,320 maar ons kan wees liefhebber in die toekoms. 981 00:47:29,320 --> 00:47:31,961 Ek gaan vinnig gaan in my tafel, en ek is 982 00:47:31,961 --> 00:47:34,210 gaan om ontslae te raak van Rob, want dit is 'n valse nommer, 983 00:47:34,210 --> 00:47:38,540 Ek gaan om te gaan in wysig hier en ek is gaan my draer met die hand te verander 984 00:47:38,540 --> 00:47:43,410 wees Verizon, wat dit is, en nou hier. 985 00:47:43,410 --> 00:47:44,980 >> Kom ons doen 'n vinnige gesonde verstand tjek. 986 00:47:44,980 --> 00:47:52,730 Kom ons open ons teks script, wat lyk soos hierdie, draer is% s. 987 00:47:52,730 --> 00:47:58,230 Ons het 'n baie meer fout doen nagaan as wat ek gedoen het in 2012, draer. 988 00:47:58,230 --> 00:48:01,160 En nou, ek gaan om te gaan voor en re-run die script. 989 00:48:01,160 --> 00:48:01,660 OK. 990 00:48:01,660 --> 00:48:06,100 Draer is Verizon, wat beteken nou hopelik kan ek net dit doen. 991 00:48:06,100 --> 00:48:08,360 Korrek vanjaar, hopelik, hier gaan ons. 992 00:48:08,360 --> 00:48:12,200 >> So binnekant van hierdie lus, ek is gaan nie net hierdie printf, 993 00:48:12,200 --> 00:48:15,990 Ek gaan ook die teks te roep en die gebruik van hierdie funksie herroep 994 00:48:15,990 --> 00:48:19,670 was dit 'n nommer, 'n karweier, en 'n boodskap. 995 00:48:19,670 --> 00:48:23,310 So laat ons sien, is die getal gaan wees ry quote unquote "nommer" 996 00:48:23,310 --> 00:48:31,660 ry quote unquote "draer" en die laaste een was die boodskap. 997 00:48:31,660 --> 00:48:36,250 Moet nie skroef hierdie jaar, kommapunt. 998 00:48:36,250 --> 00:48:36,780 >> OK. 999 00:48:36,780 --> 00:48:38,280 Vingers gekruis. 1000 00:48:38,280 --> 00:48:39,970 Kom ons kyk of dit werk. 1001 00:48:39,970 --> 00:48:41,720 Alle reg, so. 1002 00:48:41,720 --> 00:48:43,000 Hier gaan ons. 1003 00:48:43,000 --> 00:48:47,380 Kom ons ontsluit die telefoon, steek jou vingers, damn dit. 1004 00:48:47,380 --> 00:48:50,300 Undefined variable may-- O Wag, wag, wag, ware vinnig. 1005 00:48:50,300 --> 00:48:51,340 Real vinnig, baie vinnig. 1006 00:48:51,340 --> 00:48:53,380 Dit is heeltemal die moeite werd. 1007 00:48:53,380 --> 00:48:57,710 Laat my gryp, laat my gryp, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Dankie, die tekste het begin van iemand anders. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Laat my voort te gaan en maak werklike vinnig, dropbox.php / pos in hier. 1011 00:49:11,650 --> 00:49:12,660 Bystand. 1012 00:49:12,660 --> 00:49:14,455 Heeltemal die moeite werd. 1013 00:49:14,455 --> 00:49:17,430 Afgelaai. 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 >> Een nodig het meer lyn hier. 1017 00:49:21,380 --> 00:49:24,530 O daar is dit, dit is in Frosh Chat, dit is in register op drie. 1018 00:49:24,530 --> 00:49:28,820 Ag hello, Margo, baie dankie. 1019 00:49:28,820 --> 00:49:31,130 OK, en ek mis hierdie lyn hier. 1020 00:49:31,130 --> 00:49:33,010 So laat my vinnig gryp hierdie lyn van kode, 1021 00:49:33,010 --> 00:49:36,200 Dit sluit die pos of biblioteek dat ek eintlik wil gebruik, 1022 00:49:36,200 --> 00:49:38,300 Ek gaan vinnig terug te gaan na funksies, 1023 00:49:38,300 --> 00:49:42,337 Ek gaan om te gaan na die top van hierdie lêer en vereis hierdie lêer, asook, 1024 00:49:42,337 --> 00:49:45,420 en nou is ek gaan regtig oor my vingers wanneer ek gaan terug na die opdrag 1025 00:49:45,420 --> 00:49:49,530 script, wat binne vandag se plaaslike gasheer gids. 1026 00:49:49,530 --> 00:49:50,610 Begin teks. 1027 00:49:50,610 --> 00:49:52,720 Betree. 1028 00:49:52,720 --> 00:49:53,220 Pos. 1029 00:49:53,220 --> 00:49:53,719 Bystand. 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 Bystand. 1032 00:49:59,600 --> 00:50:01,680 Pos. 1033 00:50:01,680 --> 00:50:02,290 O, OK. 1034 00:50:02,290 --> 00:50:03,870 Hier gaan ons. 1035 00:50:03,870 --> 00:50:06,880 >> Pos kry nuwe PHP mail. 1036 00:50:06,880 --> 00:50:09,970 Het ek dit reg? 1037 00:50:09,970 --> 00:50:11,067 Damn dit. 1038 00:50:11,067 --> 00:50:12,150 Aan- O, wag, wag, wag. 1039 00:50:12,150 --> 00:50:12,649 Staan. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Ek belowe, dit is gaan so die moeite werd wees. 1042 00:50:18,630 --> 00:50:20,340 Adres. 1043 00:50:20,340 --> 00:50:24,390 Dit is waarom ek nie die voorbeelde reg voor die klas. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 Die volgende ontvangers misluk. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Kom ons probeer om een ​​laaste ding. 1048 00:50:33,040 --> 00:50:40,660 SMTP stel van, voeg adres, die adres is inderdaad dat. 1049 00:50:40,660 --> 00:50:43,980 Kom ons probeer om hierdie laaste deel in adres. 1050 00:50:43,980 --> 00:50:47,210 Ag, ek is regtig hartseer nou. 1051 00:50:47,210 --> 00:50:47,854 Dankie. 1052 00:50:47,854 --> 00:50:50,270 Maar ek waardeer regtig al die tekste wat jy het is die stuur. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Jy het hierdie David. 1055 00:50:56,320 --> 00:50:59,310 Jy blaas dit. 1056 00:50:59,310 --> 00:51:01,720 Kom ons laat dit daar en ons sal dit regmaak op Maandag. 1057 00:51:01,720 --> 00:51:04,290 Sien jy dan. 1058 00:51:04,290 --> 00:51:08,090 >> DAVEN FARNHAM: En nou diep Gedagtes deur Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 As 'n binêre boom val in 'n bos en niemand is om te C it-- [lag]. 1061 00:51:17,590 --> 00:51:18,998