1 00:00:00,000 --> 00:00:10,393 >> [Musikken afspilles] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: Okay. 4 00:00:12,120 --> 00:00:12,830 Velkommen tilbage. 5 00:00:12,830 --> 00:00:13,890 Dette er CS50. 6 00:00:13,890 --> 00:00:15,570 Dette er slutningen af ​​uge 8. 7 00:00:15,570 --> 00:00:18,360 Og som du ved, har vi temmelig almindelig kontortid i et par 8 00:00:18,360 --> 00:00:21,090 af spisesale, herunder Annenberg. 9 00:00:21,090 --> 00:00:23,860 Og nogle af holdet venligt tog nogle billeder på det seneste. 10 00:00:23,860 --> 00:00:26,230 Og til ære for Halloween, vi troede, vi havde 11 00:00:26,230 --> 00:00:30,160 deler en, der hellere fangede os ved overraskelse her i Annenberg Hall bare 12 00:00:30,160 --> 00:00:31,490 den anden aften. 13 00:00:31,490 --> 00:00:36,300 Din klassekammerat Jacob poserede for dette billede, men var mere morsomt 14 00:00:36,300 --> 00:00:39,760 var på Facebook, den efterfølgende samtale, der skete bagefter. 15 00:00:39,760 --> 00:00:43,020 >> Hans første indlæg i svar til hans foto var dette. 16 00:00:43,020 --> 00:00:46,740 Et par minutter senere, besluttede han til en op selv med dette. 17 00:00:46,740 --> 00:00:53,800 Det gik derefter at gå til denne, og derefter endnu mere underholdende 18 00:00:53,800 --> 00:00:55,320 er, når hans mor ringede i. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 Og så i sidste ende, det synes dette var blot 21 00:01:01,800 --> 00:01:04,860 en vidunderlig kneb for en spille det der foregår. 22 00:01:04,860 --> 00:01:07,080 >> Så hvis du gerne vil at se Jacob og andre, 23 00:01:07,080 --> 00:01:10,880 blandt dem Cynthia Meng, der er bag kulisserne på CS50 zone personale, 24 00:01:10,880 --> 00:01:13,970 hoved til denne URL, og denne leg her. 25 00:01:13,970 --> 00:01:18,810 Så uden videre, vi i dag fortsætte denne kig på web programmering, 26 00:01:18,810 --> 00:01:21,810 og selve skabelsen af ​​programmer der ikke kører på din kommando linje, 27 00:01:21,810 --> 00:01:24,080 men i stedet køre inde i en browser. 28 00:01:24,080 --> 00:01:26,320 >> Formentlig nu, eller meget snart, du kommer 29 00:01:26,320 --> 00:01:30,200 at være midt i gennemførelsen din egen web-server, som 30 00:01:30,200 --> 00:01:31,700 er forskellig fra webprogrammering. 31 00:01:31,700 --> 00:01:36,210 Webserveren i pset6 handler om skrive software, der ved, hvordan man tager 32 00:01:36,210 --> 00:01:39,300 HTTP-anmodninger fra en browser, eller endda fra dig, et menneske, 33 00:01:39,300 --> 00:01:42,340 med et program kaldet Telnet, og derefter reagere på disse anmodninger enten 34 00:01:42,340 --> 00:01:48,600 ved at spytte ud en HTML-fil eller en jpeg, eller en gif, eller endda en php fil. 35 00:01:48,600 --> 00:01:52,490 >> Men med en web-server, er det ikke formodes at bare åbne en PHP-fil, 36 00:01:52,490 --> 00:01:55,260 noget, der sluttede i .php, og derefter spytte indholdet ud. 37 00:01:55,260 --> 00:01:58,440 Det er meningen at gøre hvad filen først? 38 00:01:58,440 --> 00:01:59,390 Så at sige. 39 00:01:59,390 --> 00:02:04,060 Ikke kompilere det, vi sagde i mandags, men rather-- Så fortolke den. 40 00:02:04,060 --> 00:02:08,070 >> PHP er et fortolket sprog, og så en af ​​de vigtigste funktioner i din web 41 00:02:08,070 --> 00:02:11,550 server, omend gennemføres af os, er denne evne til din webserver 42 00:02:11,550 --> 00:02:12,490 at lægge mærke til, oh. 43 00:02:12,490 --> 00:02:14,580 Dette er en fil, der sluttede i .php. 44 00:02:14,580 --> 00:02:17,970 Lad mig ikke bare sende det til bruger ligesom det er statisk indhold, 45 00:02:17,970 --> 00:02:20,970 men hellere lade mig læse det linje linie, fra venstre mod højre, og fortolke den. 46 00:02:20,970 --> 00:02:23,030 >> Og for at gøre, at du fyre vil hovedsageligt 47 00:02:23,030 --> 00:02:26,520 punt til et program i apparatet, og på en masse af edb-systemer, 48 00:02:26,520 --> 00:02:27,500 bare kaldet PHP. 49 00:02:27,500 --> 00:02:30,579 Det er navnet på PHP den sprog egen tolk. 50 00:02:30,579 --> 00:02:33,120 Så det stykke, vi gennemfører for dig, og hvad der er tilbage for dig, 51 00:02:33,120 --> 00:02:35,240 i sidste ende er et antal stykker, blandt hvilke 52 00:02:35,240 --> 00:02:37,960 er ved at gennemføre støtte for statisk indhold. 53 00:02:37,960 --> 00:02:40,180 >> Men nu, og med problem sæt syv, er du 54 00:02:40,180 --> 00:02:43,660 vil begynde at overgangen til faktisk skriver PHP kode 55 00:02:43,660 --> 00:02:45,970 der bliver fortolket i at tale med en bagende 56 00:02:45,970 --> 00:02:47,960 database, der lagrer information. 57 00:02:47,960 --> 00:02:51,020 Så lad os bedre at forstå først et par af disse superglobale variabler 58 00:02:51,020 --> 00:02:53,720 og hvor meget strøm du komme ud af boksen for fri 59 00:02:53,720 --> 00:02:55,250 med et sprog som PHP. 60 00:02:55,250 --> 00:02:57,350 Ting du ikke har at gennemføre selv. 61 00:02:57,350 --> 00:03:01,700 >> Så så vi på mandag $ _GET, som er en superglobal, 62 00:03:01,700 --> 00:03:05,496 der er bare PHP taler for en global variabel, du kan få adgang til overalt. 63 00:03:05,496 --> 00:03:06,620 Og hvad der er inde i $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Hvad er inde i dette superglobal at vi ser? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Sikkert statistisk på mindst én person kender. 68 00:03:19,020 --> 00:03:21,590 Hvad er inde i $ _GET? 69 00:03:21,590 --> 00:03:22,426 Ja? 70 00:03:22,426 --> 00:03:24,130 >> PUBLIKUM: Det er de variabler du lægger i søgestrengen. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. MALAN: Perfect. 72 00:03:24,530 --> 00:03:26,488 Det er de variabler, du sætte i søgestrengen. 73 00:03:26,488 --> 00:03:29,910 Så i vores ældre eksempel omimplementere Google, når vi havde 74 00:03:29,910 --> 00:03:34,130 en URL, og derefter spørgsmålstegn, som afgrænser begyndelsen af ​​HTTP 75 00:03:34,130 --> 00:03:37,950 parametre, så havde vi q lig noget, ligesom q er lig med katte, 76 00:03:37,950 --> 00:03:41,500 hvad ville automatisk gå inde af at $ _GET super global for dig, 77 00:03:41,500 --> 00:03:47,430 på grund af PHP, er en nøgle af Q, og værdien heraf af katte. 78 00:03:47,430 --> 00:03:51,250 >> Med andre ord, $ _GET og alle disse ting er associative arrays, 79 00:03:51,250 --> 00:03:54,530 hash tabeller slags, at opbevaring af nøgler og værdier. 80 00:03:54,530 --> 00:03:57,980 Nu tilbage i pset5, hash tabel, du måske har gennemført, 81 00:03:57,980 --> 00:04:00,220 eller prøv du måske har gennemført, virkelig 82 00:04:00,220 --> 00:04:04,010 var faktisk en associativ array, en datastruktur 83 00:04:04,010 --> 00:04:07,220 hvor du kan knytte nøgler med værdier. 84 00:04:07,220 --> 00:04:09,690 >> Men i pset5 var værdierne trivielt. 85 00:04:09,690 --> 00:04:12,430 Værdien var hovedsagelig sandt eller falsk. 86 00:04:12,430 --> 00:04:13,900 Er ord i ordbogen? 87 00:04:13,900 --> 00:04:18,279 Så når du hashet et ord som æble at se, om Apple er i ordbogen, 88 00:04:18,279 --> 00:04:21,820 din check funktion formentlig returnerede sandt eller falsk. 89 00:04:21,820 --> 00:04:24,120 Så det er effektivt værdi, vi får tilbage. 90 00:04:24,120 --> 00:04:26,456 >> Men vi så på mandag kort, kan du sikkert 91 00:04:26,456 --> 00:04:28,830 associere mere interessant værdier end bare sandt eller falsk 92 00:04:28,830 --> 00:04:30,790 med nøgler, som Apple. 93 00:04:30,790 --> 00:04:33,909 Du kunne faktisk returnere en vilkårlig streng, og faktisk, 94 00:04:33,909 --> 00:04:36,200 det er, hvad $ _GET og disse andre variabler lade dig gøre. 95 00:04:36,200 --> 00:04:40,595 >> Så $ _POST er ens i ånden, men hvis du sender en formular med posten, 96 00:04:40,595 --> 00:04:44,490 en anden HTTP metode, der er bruges til ting som kreditkort, 97 00:04:44,490 --> 00:04:48,410 og private oplysninger, og selv binær information som billeder, 98 00:04:48,410 --> 00:04:51,840 disse ting ender inde i $ _POST. 99 00:04:51,840 --> 00:04:53,770 Og faktisk for filer som JPEG-filer og whatnot, 100 00:04:53,770 --> 00:04:58,290 der er endda en anden, der ikke er heroppe kaldet $ _FILES så godt. 101 00:04:58,290 --> 00:05:01,280 >> Så server vil vi ikke dvæle ved alt meget, men det giver dig adgang 102 00:05:01,280 --> 00:05:04,860 for at sortere på lavere plan detaljer om selve serveren at du bruger. 103 00:05:04,860 --> 00:05:07,430 Cookie og session, selvom, vi faktisk se nu. 104 00:05:07,430 --> 00:05:10,940 Det sidste er det, vi bruger til at gennemføre forestillingen om en indkøbskurv. 105 00:05:10,940 --> 00:05:14,480 En super enkel, men tilbagekaldelse at vi havde dette eksempel her, 106 00:05:14,480 --> 00:05:17,640 tælle hvor mange gange du havde besøgt denne side før. 107 00:05:17,640 --> 00:05:20,850 >> Men i dag, i stedet for bare at se på virkningen af ​​denne, lad os åbne 108 00:05:20,850 --> 00:05:22,640 Chromes Inspector, som du kan normalt 109 00:05:22,640 --> 00:05:25,740 gøre ved at højreklikke eller holde Ctrl klikke et sted på en webside, 110 00:05:25,740 --> 00:05:27,250 og vælg derefter inspicere element. 111 00:05:27,250 --> 00:05:31,600 Eller du kan gå gennem menuerne at vi beskriver i pset6 spec. 112 00:05:31,600 --> 00:05:35,020 Og jeg har tænkt mig at fanen Netværk her, og lad os se et øjeblik 113 00:05:35,020 --> 00:05:37,590 HTTP trafik, der er gå frem og tilbage. 114 00:05:37,590 --> 00:05:40,929 >> Lad mig først gå videre og klar Chromes cache. 115 00:05:40,929 --> 00:05:43,470 Så nogle af jer måske være bekendt med denne teknik allerede 116 00:05:43,470 --> 00:05:45,790 og vi kommer til at bruge det for debugging formål her. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Nu er vi som computer forskere vil begynde 119 00:05:50,890 --> 00:05:53,920 gør dette til fejlsøgning formål, hvorved 120 00:05:53,920 --> 00:05:55,910 Vi vil rydde cachen, typisk, så vi 121 00:05:55,910 --> 00:05:57,670 kan slippe af med ting, der kaldes cookies. 122 00:05:57,670 --> 00:06:01,700 Så er du sikkert generelt bekendt med, hvad cookies er, eller i det mindste 123 00:06:01,700 --> 00:06:04,370 at de eksisterer, men hvad er din forståelse af dem, 124 00:06:04,370 --> 00:06:06,920 som blot en bruger af computere, hvad er en cookie? 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 >> PUBLIKUM: Det er lidt of-- godt, ikke bit i en periode på datalogi. 128 00:06:14,391 --> 00:06:18,303 Det er et stykke data, som et website sender til dig for 129 00:06:18,303 --> 00:06:20,209 at være i stand til at registrere statistikker om dig. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, godt. 131 00:06:21,250 --> 00:06:24,980 Så det er et stykke data, som et server, sætter på din computer, 132 00:06:24,980 --> 00:06:28,840 og lad os generalisere det selv mere, det er en nøgle value-- godt, 133 00:06:28,840 --> 00:06:30,064 der bliver mere præcis. 134 00:06:30,064 --> 00:06:31,980 Det er et stykke information, et stykke data, 135 00:06:31,980 --> 00:06:34,430 at en server er i stand at sætte på din computer 136 00:06:34,430 --> 00:06:38,592 og meget ofte, serveren gør dette således at huske, hvem du er. 137 00:06:38,592 --> 00:06:40,300 Så for eksempel odds er du sandsynligvis 138 00:06:40,300 --> 00:06:42,982 logget ind på sites som Facebook, eller Gmail eller andre før, 139 00:06:42,982 --> 00:06:44,940 og du logger ind med din brugernavn og adgangskode, 140 00:06:44,940 --> 00:06:49,000 og derefter efter, at et bestemt antal minutter eller timer eller endda dage, 141 00:06:49,000 --> 00:06:52,970 serveren husker, at du er i virkeligheden logget ind. 142 00:06:52,970 --> 00:06:54,600 Nu, hvordan er det egentlig, der sker? 143 00:06:54,600 --> 00:06:58,630 Fordi du bestemt ikke genindtastning dit brugernavn og din adgangskode, hver gang 144 00:06:58,630 --> 00:07:00,760 du navigerer til et forskellig side på Facebook. 145 00:07:00,760 --> 00:07:02,570 Så det viser sig cookies er svaret. 146 00:07:02,570 --> 00:07:05,360 >> En cookie du kan tænke på som, Lidt ligesom en digital hånd 147 00:07:05,360 --> 00:07:09,200 stempel, som du kan få på en forlystelsespark park eller en klub, der hovedsagelig 148 00:07:09,200 --> 00:07:11,740 angiver, at du har været her før, og du har allerede 149 00:07:11,740 --> 00:07:16,070 vist dit id til dørmanden, for Eksempelvis og at klubben eller parken 150 00:07:16,070 --> 00:07:19,050 bør nu antage, at du har autentificeret allerede. 151 00:07:19,050 --> 00:07:21,270 Du har allerede blevet identificeret af den. 152 00:07:21,270 --> 00:07:24,740 >> Så med det i tankerne, Lad os åbne counter her. 153 00:07:24,740 --> 00:07:27,220 Lad mig gå videre, jeg lige gjorde, og fjerne alle mine cookies. 154 00:07:27,220 --> 00:07:29,970 Og nu, hvad jeg har tænkt mig at gøre, er holde Shift, bare for god foranstaltning, 155 00:07:29,970 --> 00:07:31,740 og med magt genindlæse siden. 156 00:07:31,740 --> 00:07:34,170 Shift bare sørg at intet bliver cached. 157 00:07:34,170 --> 00:07:36,850 Og her er anmodningen der gik frem og tilbage. 158 00:07:36,850 --> 00:07:41,560 Så herovre har vi en anmodning, og lad mig zoome ind hernede, og en masse af dette 159 00:07:41,560 --> 00:07:44,710 er en slags uinteressante oplysninger om nu, at browseren har automatisk 160 00:07:44,710 --> 00:07:47,800 sendt, men lad os klikke på Vis Kilde for at se de rå overskrifter. 161 00:07:47,800 --> 00:07:51,700 >> Og hvis du har dykket ned pset6 allerede, du vil helt sikkert genkende ting 162 00:07:51,700 --> 00:07:54,990 som dette, og måske nogle af disse andre linjer her, 163 00:07:54,990 --> 00:07:59,040 men hvad er mere interessant for i dag hvis jeg rulle ned, for ikke at anmodningen 164 00:07:59,040 --> 00:08:02,870 men at den såkaldte reaktion, denne linje sandsynligvis ser bekendt. 165 00:08:02,870 --> 00:08:04,977 Det er en god ting når du ser en 200 OK. 166 00:08:04,977 --> 00:08:07,060 Tilsyneladende er dato og tid på serveren 167 00:08:07,060 --> 00:08:08,268 og der er en masse ting. 168 00:08:08,268 --> 00:08:09,290 Åh, det er interessant. 169 00:08:09,290 --> 00:08:13,430 >> Slår ud, når du bruger PHP, i det mindste i denne server, 170 00:08:13,430 --> 00:08:16,360 serveren spytter hvad version af PHP du bruger. 171 00:08:16,360 --> 00:08:18,962 Hvilket faktisk, for sikkerhed formål, er ikke en god ting. 172 00:08:18,962 --> 00:08:21,170 Men, vi vil komme tilbage til det en anden gang måske. 173 00:08:21,170 --> 00:08:25,740 Men nu er den saftige linje i dag, og vi så kort nogle af disse, 174 00:08:25,740 --> 00:08:29,240 Jeg tror med Facebook, når vi jordet omkring Inspector dengang, 175 00:08:29,240 --> 00:08:33,380 sæt cookie er hvad er plantning det lille stykke information 176 00:08:33,380 --> 00:08:34,890 på din computer. 177 00:08:34,890 --> 00:08:37,490 >> Dette er en HTTP header det er effektivt 178 00:08:37,490 --> 00:08:39,970 fortælle din browser, Chrome, IE, uanset hvad, 179 00:08:39,970 --> 00:08:44,480 hey browser butik på brugerens harddisk, eller i brugerens RAM, 180 00:08:44,480 --> 00:08:49,680 en nøgle kaldes PHPSESSID, som er en stenografi notation for session-id, 181 00:08:49,680 --> 00:08:53,670 og give det en værdi på 0vlk8t, prik, prik, prik. 182 00:08:53,670 --> 00:08:56,480 En virkelig lang pseudo tilfældige alfanumerisk streng. 183 00:08:56,480 --> 00:08:59,480 Det er bare en rigtig stor antal, men det er kodet med bogstaver og tal 184 00:08:59,480 --> 00:09:03,550 således at størrelsen af ​​det kan være endnu større end tal alene. 185 00:09:03,550 --> 00:09:06,947 Og derefter, ved den måde, Sti = /, at betyder blot, at denne cookie skal være 186 00:09:06,947 --> 00:09:08,780 forbundet med helhed af hjemmesiden, 187 00:09:08,780 --> 00:09:11,150 ikke kun en specifik side det hele. 188 00:09:11,150 --> 00:09:12,930 Så dette er, at den virtuelle hånd stempel. 189 00:09:12,930 --> 00:09:16,330 Det er som om serveren, Facebook, eller i vores tilfælde apparatet, 190 00:09:16,330 --> 00:09:21,140 har bogstaveligt talt skrevet 0vlk8t og så videre, på din hånd. 191 00:09:21,140 --> 00:09:24,360 Læg mærke til hvad serverens, ikke gør, er det ikke 192 00:09:24,360 --> 00:09:27,730 lagring mit brugernavn, sikkert ikke opbevare min adgangskode. 193 00:09:27,730 --> 00:09:31,710 >> I stedet synes at være lagring pseudo tilfældig information 194 00:09:31,710 --> 00:09:35,010 så ingen kan gætte hvad min hånd stempel er. 195 00:09:35,010 --> 00:09:37,590 På serversiden, mellemtiden, serveren 196 00:09:37,590 --> 00:09:40,370 kommer til at huske, sandsynligvis i en database eller noget, 197 00:09:40,370 --> 00:09:46,490 at brugeren, som i fremtiden præsenterer en hånd stempel 0vlk8t, dot, 198 00:09:46,490 --> 00:09:51,440 dot, dot, bør være forbundet med dette særlig indkøbskurv, så at sige. 199 00:09:51,440 --> 00:09:55,060 Med andre ord, hvis jeg nu gå tilbage her og genindlæs denne side, 200 00:09:55,060 --> 00:09:58,020 hvordan serveren kender at jeg besøgte en gang? 201 00:09:58,020 --> 00:10:01,730 >> Eller hvis jeg gør det igen, hvordan gør serveren vide, at jeg har besøgt det to gange? 202 00:10:01,730 --> 00:10:04,680 Tja, hvis jeg går ned til dette seneste anmodning, som 203 00:10:04,680 --> 00:10:09,150 er nu den tredje, som jeg har sendt i alt, mærke min anmodning nu. 204 00:10:09,150 --> 00:10:11,300 Der er stadig dette anmode om op her, samme 205 00:10:11,300 --> 00:10:15,040 som før, er der stadig en hel masse ting, som vi har ignoreret som før, 206 00:10:15,040 --> 00:10:19,350 men den allersidste header dette tid, fordi jeg har været her før, 207 00:10:19,350 --> 00:10:21,980 er en præsentation af denne virtuelle hånd stempel. 208 00:10:21,980 --> 00:10:28,957 >> Hvorved denne linje her, ikke indstillet cookie men cookie kolon PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 det er bare min browser automatiske præsentation af denne hånd stempel således, at 210 00:10:32,040 --> 00:10:37,910 nu serveren, så snart den opdager, ooh, det er brugeren 0vlk8t prik, prik, prik, 211 00:10:37,910 --> 00:10:42,010 Jeg kan nu huske, hvem han eller hun er og reassociere med brugeren uanset 212 00:10:42,010 --> 00:10:46,450 oplysninger, som jeg vil, og alle at information kan lagres af dig, 213 00:10:46,450 --> 00:10:50,130 programmør, i $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Så for at være klar, hvis jeg åbner op reelle hurtig i gedit, at den faktiske fil, counter.php, 215 00:10:57,170 --> 00:11:02,340 i min lokale vært offentlig fortegnelse som før, bemærke, ja, 216 00:11:02,340 --> 00:11:06,860 Jeg i sidste ende lagring $ _SESSION Citat citat slut "tæller" 217 00:11:06,860 --> 00:11:10,110 værdien af ​​det foregående tæller, som Jeg får fra disse linjer heroppe, at vi 218 00:11:10,110 --> 00:11:13,010 så på sidste gang plus en. 219 00:11:13,010 --> 00:11:14,980 Så under kølerhjelmen, det er alle cookies er. 220 00:11:14,980 --> 00:11:17,563 Det er netop den slags digital hånd stempel går frem og tilbage, 221 00:11:17,563 --> 00:11:20,450 og helt ærligt, hvis du åbner Chromes Inspektør på ethvert websted 222 00:11:20,450 --> 00:11:22,580 du besøger i dag, med super høj sandsynlighed, 223 00:11:22,580 --> 00:11:25,450 du kommer til at se måske en, måske en halv snes cookies 224 00:11:25,450 --> 00:11:26,650 blive husket af dig. 225 00:11:26,650 --> 00:11:29,500 >> Og værre endnu, hvis de, websted, du besøger 226 00:11:29,500 --> 00:11:32,640 alle reklamer, som er sikkert helt almindelige i dag, 227 00:11:32,640 --> 00:11:36,100 og hvis de reklamer kommer fra nogle centrale parti, nogen 228 00:11:36,100 --> 00:11:39,000 som Google eller AdWords, som de ringe til et af deres produkter 229 00:11:39,000 --> 00:11:42,880 eller andre sådanne sælgere som sælge annoncer, hvad er interessant, 230 00:11:42,880 --> 00:11:46,510 og helt ærligt, hvad er lidt bekymrende, hvordan HTTP fungerer, 231 00:11:46,510 --> 00:11:50,855 er, at hvis du har en annonce indlejret i Facebook.com, og Google.com, 232 00:11:50,855 --> 00:11:54,240 og Harvard.edu helst antal af hjemmesider, så det er sådan 233 00:11:54,240 --> 00:11:58,130 at der er en mellemvej mand, der afsoner up annoncer for alle tre af disse hjemmesider, 234 00:11:58,130 --> 00:12:02,110 det viser sig, at cookies er per domæne. 235 00:12:02,110 --> 00:12:05,910 >> Så hvis du har en annonce, der kommer fra samme selskab på forskellige hjemmesider, 236 00:12:05,910 --> 00:12:11,140 at virksomheden effektivt kan spore, hvem du er på tværs af alle disse websteder. 237 00:12:11,140 --> 00:12:13,140 Harvard måske ikke kender du besøger Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook måske ikke kender og du besøger Harvard. 239 00:12:15,306 --> 00:12:18,160 Men uanset ad tjeneste de bruger, hvis dette domæne er 240 00:12:18,160 --> 00:12:21,710 til stede i både Harvard.edu web sider og Facebook.com websider, 241 00:12:21,710 --> 00:12:26,850 denne midterste mand sikkert ved, hvem du er på grund af disse cookies deles 242 00:12:26,850 --> 00:12:30,910 på tværs af, eller rettere, at såkaldte mellemmand. 243 00:12:30,910 --> 00:12:33,820 >> Så vi vil vende tilbage til dette i sikkerhedsmæssige konsekvenser deraf, 244 00:12:33,820 --> 00:12:37,170 men der er en masse oplysninger bliver gemt om dig hver gang du 245 00:12:37,170 --> 00:12:40,120 besøge de fleste enhver webside på internettet, og det er virkelig 246 00:12:40,120 --> 00:12:42,877 reducerer dette meget enkel mekanisme. 247 00:12:42,877 --> 00:12:44,710 Hvad sker der, derefter, hvis det du er super paranoid 248 00:12:44,710 --> 00:12:48,190 og du beslutter at gå ind i Chrome eller IE eller hvad og slukke dine cookies? 249 00:12:48,190 --> 00:12:49,365 Hvad sker der? 250 00:12:49,365 --> 00:12:50,790 Ja? 251 00:12:50,790 --> 00:12:53,170 Du really-- du har gjort det rigtigt? 252 00:12:53,170 --> 00:12:54,350 OK. 253 00:12:54,350 --> 00:12:55,994 Nej, gå videre. 254 00:12:55,994 --> 00:12:59,645 >> PUBLIKUM: Visse hjemmesider ikke har en funktion uden at det gerne Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. MALAN: Yeah! 256 00:13:00,520 --> 00:13:02,311 Så visse hjemmesider vil bare stoppe med at arbejde. 257 00:13:02,311 --> 00:13:05,520 Og i de fleste websites i disse dage der fundamentalt afhængige af cookies, 258 00:13:05,520 --> 00:13:08,360 især hvis de har du logger i, er de bare kommer til at bryde. 259 00:13:08,360 --> 00:13:10,360 Fordi overveje alternativ, hvis hjemmesiden 260 00:13:10,360 --> 00:13:14,480 har ingen mulighed for at huske, hvem du er, og derfor din web browser er ikke 261 00:13:14,480 --> 00:13:16,949 repræsenterer med hver HTTP anmodning fra denne hånd stempel, 262 00:13:16,949 --> 00:13:18,740 effektivt en hjemmeside ligesom Facebooks igangværende 263 00:13:18,740 --> 00:13:22,050 nødt til at bede dig om at logge ind hver darn gang 264 00:13:22,050 --> 00:13:26,200 du skifter sider, eller klikke på et link, som er helt sikkert ikke en særlig god brugeroplevelse 265 00:13:26,200 --> 00:13:26,920 oplevelse. 266 00:13:26,920 --> 00:13:30,020 >> Således at der også er blandt de afvejninger. 267 00:13:30,020 --> 00:13:34,140 Så uden videre, lad os tage for givet, at med web-programmering, 268 00:13:34,140 --> 00:13:37,630 i sprog som PHP, kan du huske information som den i problem sæt 269 00:13:37,630 --> 00:13:41,550 syv, når du implementerer din egen E * Trade-lignende website med til at købe 270 00:13:41,550 --> 00:13:45,710 og sælge aktier, vil du huske præcis hvad brugeren har købt og solgt 271 00:13:45,710 --> 00:13:49,110 og som han eller hun er ved hjælp af denne samling. 272 00:13:49,110 --> 00:13:51,110 Men vi får brug for en amatør måde end email 273 00:13:51,110 --> 00:13:52,640 at begynde at holde information omkring. 274 00:13:52,640 --> 00:13:53,140 Right? 275 00:13:53,140 --> 00:13:56,780 >> I mandags talte vi om Frosh IM'er og hvordan i version en af ​​denne hjemmeside, 276 00:13:56,780 --> 00:14:00,250 år siden, alle vi gjorde var e-mail til Proctor, der er 277 00:14:00,250 --> 00:14:04,250 ansvaret for de intramurale sportsgrene program, navn og køn, 278 00:14:04,250 --> 00:14:07,330 og hvorvidt de er en kaptajn, og kollegiet af en person, der er 279 00:14:07,330 --> 00:14:10,136 tilmelding til en intramurale sport. 280 00:14:10,136 --> 00:14:13,010 Så det er ikke dårligt, men han eller hun derefter måtte trold gennem deres e-mail, 281 00:14:13,010 --> 00:14:16,010 lave et regneark eller noget lignende at for at holde alt organiseret. 282 00:14:16,010 --> 00:14:19,750 Så sikkert vi som programmører kan gøre dette for at proctor. 283 00:14:19,750 --> 00:14:22,970 Og så indtaster i SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 som kommer til at se temmelig anderledes både C og PHP, 285 00:14:26,050 --> 00:14:30,990 og du vil dykke i langt flere hænder på PHP og problem sæt syv, men også SQL, 286 00:14:30,990 --> 00:14:35,310 eller SQL, dette er et sprog, du bruger til at tale med en database. 287 00:14:35,310 --> 00:14:36,480 >> Men hvad er en database? 288 00:14:36,480 --> 00:14:38,440 Nå du tænker på en database, i hvert fald for nu, 289 00:14:38,440 --> 00:14:41,750 som blot at være som en Excel-fil, eller hvis du er en Mac-bruger nogle numre fil, 290 00:14:41,750 --> 00:14:44,400 eller hvis du er en Google Apps bruger et Google-regneark, 291 00:14:44,400 --> 00:14:49,120 Det er i realiteten en database, eller virkelig specifikt en relationel database. 292 00:14:49,120 --> 00:14:53,070 En relationsdatabase er lige noget, der har rækker og kolonner, 293 00:14:53,070 --> 00:14:56,440 og du kan gemme alle slags oplysningerne i disse rækker eller kolonner. 294 00:14:56,440 --> 00:15:00,480 >> Men hvad er rart om SQL, og om faktiske databaser, ikke blot 295 00:15:00,480 --> 00:15:04,910 regneark eller Google regneark, er, at du kan bruge et sprog 296 00:15:04,910 --> 00:15:09,000 til rent faktisk at udføre forespørgsler til indsætte data, for at fjerne data, 297 00:15:09,000 --> 00:15:11,620 at lede efter data, selv vigtigst, og man 298 00:15:11,620 --> 00:15:16,110 ikke behøver at bruge det forholdsvis manuelt som du måske typisk en Google 299 00:15:16,110 --> 00:15:17,690 regneark som denne. 300 00:15:17,690 --> 00:15:22,217 >> Så i SQL, der er en masse af grundlæggende erklæringer eller stykker 301 00:15:22,217 --> 00:15:23,300 funktionalitet indbygget. 302 00:15:23,300 --> 00:15:26,450 Der er mange flere end disse, men du kan gå en enorm distance 303 00:15:26,450 --> 00:15:28,620 blot ved at vide, at dette sprog kaldes 304 00:15:28,620 --> 00:15:30,840 SQL har mindst fire udsagn, du kan udnytte. 305 00:15:30,840 --> 00:15:34,420 >> Slet, til fjernelse af data, Indsæt til at tilføje rækker, 306 00:15:34,420 --> 00:15:37,340 Update, til at ændre rækker, og Valg, 307 00:15:37,340 --> 00:15:39,860 for at komme tilbage rækker og det er faktisk, hvad SQL gør. 308 00:15:39,860 --> 00:15:43,810 Det fungerer udelukkende på rækker, så at når du indsætter eller fjerne, 309 00:15:43,810 --> 00:15:47,470 eller opdatere eller vælge hvad du er komme tilbage som en såkaldt resultat sæt, 310 00:15:47,470 --> 00:15:49,690 som en matrix af rækker. 311 00:15:49,690 --> 00:15:51,700 En flok af rækker fra en tabel. 312 00:15:51,700 --> 00:15:54,050 >> Så tilbage i dag, og selv den dag i dag, 313 00:15:54,050 --> 00:15:56,560 du kan interagere med database ved hjælp af en kommandolinje, 314 00:15:56,560 --> 00:15:59,691 men det er ikke særlig sjovt at bruge denne sorte og hvide stil vindue 315 00:15:59,691 --> 00:16:02,190 og faktisk udføre kommandoer og stikke omkring din database. 316 00:16:02,190 --> 00:16:06,054 En grafisk brugergrænseflade eller GUI, er langt mere at foretrække, velsagtens, 317 00:16:06,054 --> 00:16:08,970 og så det værktøj, vi anbefaler og forudinstalleret for dig på apparatet 318 00:16:08,970 --> 00:16:10,580 kaldes phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 Det er en total tilfældighed, at den Navnet på denne ting har PHP i det, 320 00:16:14,060 --> 00:16:17,430 det betyder bare, at de mennesker, der skrev dette program selv 321 00:16:17,430 --> 00:16:18,670 skrev det i PHP. 322 00:16:18,670 --> 00:16:23,740 >> Men det er i sidste ende om at administrere en database-server, ligesom en MySQL-server 323 00:16:23,740 --> 00:16:26,589 at du måske har, som du gør i CS50 apparatet. 324 00:16:26,589 --> 00:16:29,130 Så der er flere detaljer her end vi nødt til at bekymre sig om i dag, 325 00:16:29,130 --> 00:16:33,280 men hvad er centrale er, at på den venstre side er en liste over de databaser 326 00:16:33,280 --> 00:16:36,040 at du har på din computer, på din CS50 apparat, 327 00:16:36,040 --> 00:16:40,090 eller kommer de endelige projekter, som du måske har på en tredjepart, en virksomheds 328 00:16:40,090 --> 00:16:43,415 hjemmeside eller web-server, der du kan betale for rummet. 329 00:16:43,415 --> 00:16:45,290 Så til venstre er det databaser, hvoraf den ene 330 00:16:45,290 --> 00:16:48,750 er pset7 som jeg lånt fra næste uger pset, og derefter på toppen 331 00:16:48,750 --> 00:16:51,570 der bemærker der er en bundt af faner, hvoraf den ene 332 00:16:51,570 --> 00:16:55,150 er databaser, SQL, status, brugere, eksport og så videre. 333 00:16:55,150 --> 00:16:56,900 Så du kan gå en lang måde blot ved at realisere 334 00:16:56,900 --> 00:16:59,770 at de fleste af brugergrænsefladen er i øverste venstre kolonne 335 00:16:59,770 --> 00:17:02,650 og på tværs af øverste højre op dér. 336 00:17:02,650 --> 00:17:04,980 Så hvad kan vi egentlig gøre med dette? 337 00:17:04,980 --> 00:17:08,609 Nå, lad os begynde at skabe en bit af information som følger. 338 00:17:08,609 --> 00:17:11,760 >> Antag at følgende er tilfældet, som vil være i blot et par dage, 339 00:17:11,760 --> 00:17:14,440 du ønsker at gennemføre en hjemmeside, kaldet CS50 Finance, 340 00:17:14,440 --> 00:17:17,328 og denne hjemmeside kan du købe citere citat slut og sælge aktier. 341 00:17:17,328 --> 00:17:19,619 Og det kommer til at regne ud prisen for disse bestande, 342 00:17:19,619 --> 00:17:22,380 i sidste ende, som du vil se, ved at tale med Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Hvilket vidunderligt, har en gratis service hvor du kan passere i en bestand ticker 344 00:17:26,250 --> 00:17:29,830 ligesom GOOG for Google, og det vil give dig tilbage Googles nuværende bestand 345 00:17:29,830 --> 00:17:32,250 pris inden for de seneste få minutter mindst. 346 00:17:32,250 --> 00:17:35,080 >> Så du vil bruge det, i sidste ende, at foregive for brugeren 347 00:17:35,080 --> 00:17:37,750 at købe og sælge faktiske lagre ved hjælp af virtuelle penge, 348 00:17:37,750 --> 00:17:39,750 men det allerførste brugeren kommer til at se 349 00:17:39,750 --> 00:17:43,850 er dette login skærm, som beder dem for deres brugernavn og adgangskode. 350 00:17:43,850 --> 00:17:46,540 Og så en af ​​de første udfordringer til dig i pset7 351 00:17:46,540 --> 00:17:50,460 vil være at implementere bagenden database, regneark, hvis du vil, 352 00:17:50,460 --> 00:17:53,369 der kommer til at gemme brugernavne og adgangskoder 353 00:17:53,369 --> 00:17:56,660 og i sidste ende, hvad bestandene de ejer, og hvor mange, og hvor mange penge de har, 354 00:17:56,660 --> 00:18:00,110 så en masse andre ting i andre tabeller eller regneark. 355 00:18:00,110 --> 00:18:05,020 >> Så lad os tage et kig på, hvordan dette kan synes ved første øjekast. 356 00:18:05,020 --> 00:18:06,980 Jeg har tænkt mig at gå tilbage til apparatet, og jeg er 357 00:18:06,980 --> 00:18:14,102 kommer til at gå til denne URL her phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 og du vil se, at det tager mig til en grænseflade 359 00:18:16,060 --> 00:18:18,520 præcis som vi oplevede på skærmbillede, og her er jeg 360 00:18:18,520 --> 00:18:21,560 have en ekstra database kaldet forelæsning for i dag 361 00:18:21,560 --> 00:18:24,280 og lad mig gå videre først og klik på pset7. 362 00:18:24,280 --> 00:18:27,940 >> Jeg synes at have et par muligheder, én for ny, for at skabe en ny tabel, 363 00:18:27,940 --> 00:18:30,770 og et link til brugere, som er en tabel jeg allerede har oprettet. 364 00:18:30,770 --> 00:18:31,790 Så hvad er en tabel? 365 00:18:31,790 --> 00:18:33,740 Så hvis du har brugt Excel før, og hvis du har 366 00:18:33,740 --> 00:18:37,110 brugte numre eller Google Regneark, du åbner et vindue 367 00:18:37,110 --> 00:18:39,350 og du får en hel masse af rækker og kolonner, 368 00:18:39,350 --> 00:18:43,120 men så du normalt har regneark langs bunden, eller separate faner. 369 00:18:43,120 --> 00:18:46,140 Du kan tænke på hver regneark som en tabel 370 00:18:46,140 --> 00:18:51,150 således at databasen, i sidste ende, er en kombination af en eller flere tabeller, en 371 00:18:51,150 --> 00:18:54,064 eller flere regneark, i verden af ​​en normal regneark. 372 00:18:54,064 --> 00:18:55,980 Så lad mig gå videre og klik på dette regneark 373 00:18:55,980 --> 00:18:59,420 at jeg premade, kaldet brugere, alias 374 00:18:59,420 --> 00:19:00,700 Database tabel. 375 00:19:00,700 --> 00:19:04,130 Og hvis jeg rulle ned her, Lad mig zoome ud en smule, 376 00:19:04,130 --> 00:19:08,479 dette er hvad phpMyAdmin fortæller os, er inde i denne tabel lige nu. 377 00:19:08,479 --> 00:19:11,020 Det er lidt forvirrende i starten blik fordi UI er ikke 378 00:19:11,020 --> 00:19:15,140 den smukkeste ting i verden, men Det interessante er denne del her. 379 00:19:15,140 --> 00:19:17,970 ID, brugernavn og hash. 380 00:19:17,970 --> 00:19:20,510 >> På forhånd, og du vil blive afleveret dette i problem sæt syv, 381 00:19:20,510 --> 00:19:25,050 Vi giver dig en fil, der indeholder en super lille database tabel, lånt faktisk 382 00:19:25,050 --> 00:19:27,070 fra hacker udgave af problem indstille to, 383 00:19:27,070 --> 00:19:29,480 inden i hvilken der er seks rækker. 384 00:19:29,480 --> 00:19:32,720 En for Belinda alle helt ned til én for Zamyla, 385 00:19:32,720 --> 00:19:35,980 og bemærk til venstre for dem brugernavne er unikke id'er som en, 386 00:19:35,980 --> 00:19:39,410 to, tre, fire, fem, seks, heltal, og derefter til højre er hashes. 387 00:19:39,410 --> 00:19:42,780 >> Og hvis, odds er, har du ikke gøre hacker udgave problem indstille to, 388 00:19:42,780 --> 00:19:46,560 men en hash er ligesom en krypteret adgangskode med et par forbehold. 389 00:19:46,560 --> 00:19:49,470 Og så, hvad du ser her, er de krypterede versioner af alle seks 390 00:19:49,470 --> 00:19:52,950 af vores adgangskoder fra problem indstille to hacker udgave. 391 00:19:52,950 --> 00:19:56,500 Nu til venstre er blot nogle GUI ting, redigere denne række, kopiere denne række, 392 00:19:56,500 --> 00:19:57,630 slette denne række. 393 00:19:57,630 --> 00:19:59,840 >> Men hvad er interessant nu er det følgende. 394 00:19:59,840 --> 00:20:03,810 Jeg kan faktisk begynde eksperimentere med denne tabel. 395 00:20:03,810 --> 00:20:07,330 Så hvis jeg går og klik på SQL fane, får jeg denne store tekstfelt. 396 00:20:07,330 --> 00:20:10,190 Og det er ikke, hvordan vi kommer til at gøre det, når faktisk at skrive kode. 397 00:20:10,190 --> 00:20:12,700 For at være klar, phpMyAdmin er blot et værktøj, der er 398 00:20:12,700 --> 00:20:16,450 vil lade os poke databasen og lad os eksperimentere med forespørgsler. 399 00:20:16,450 --> 00:20:19,430 >> Så for eksempel antage, Jeg udføre netop dette. 400 00:20:19,430 --> 00:20:22,820 Select, som er en af ​​dem søgeord, jeg nævnte tidligere, stjerne, 401 00:20:22,820 --> 00:20:25,900 som repræsenterer alle kolonnerne i en tabel. 402 00:20:25,900 --> 00:20:26,820 Fra hvad bordet? 403 00:20:26,820 --> 00:20:27,990 Nå, brugere. 404 00:20:27,990 --> 00:20:29,950 Og meddelelse er der denne underlige konvention i SQL 405 00:20:29,950 --> 00:20:32,140 hvor du rent faktisk bruger tilbage flåter typisk 406 00:20:32,140 --> 00:20:35,940 ikke enlige citater og ikke dobbelte anførselstegn når du taler om tabeller navne 407 00:20:35,940 --> 00:20:38,990 så bagsiden citat er den ting på øverste venstre på tastaturet mest 408 00:20:38,990 --> 00:20:39,720 sandsynligt. 409 00:20:39,720 --> 00:20:41,850 >> Så lad mig gå videre nu og bare lade det alene 410 00:20:41,850 --> 00:20:46,020 og rul ned og klik på Go, og vi er faktisk kommer til at se de samme ting. 411 00:20:46,020 --> 00:20:52,410 Vi har netop gennemført en SQL-forespørgsel siger vælge alt stjerne 412 00:20:52,410 --> 00:20:55,610 fra tabel kaldet brugere, og hvad du får tilbage, er dette. 413 00:20:55,610 --> 00:20:58,400 I sidste ende, vil vi være i stand til at gøre det samme i kode, 414 00:20:58,400 --> 00:21:02,109 men for nu alle jeg ville gøre var at se det i min browser. 415 00:21:02,109 --> 00:21:03,900 Jamen så lad os gøre noget lidt anderledes. 416 00:21:03,900 --> 00:21:08,330 Lad mig gå tilbage til fanen SQL, og lad os bare sige, at hvad? 417 00:21:08,330 --> 00:21:11,520 Zamyla har mistet alle hendes penge, og derfor er det 418 00:21:11,520 --> 00:21:13,190 tid for os at slette hende som bruger. 419 00:21:13,190 --> 00:21:14,630 Hun er ikke længere logge ind. 420 00:21:14,630 --> 00:21:18,870 >> Så jeg har tænkt mig at sige slette from-- godt opretholde aktivering 421 00:21:18,870 --> 00:21:23,080 for konsistens, slette fra brugerne, hvor. 422 00:21:23,080 --> 00:21:25,430 Og så kan vi have disse prædikater, eller disse 423 00:21:25,430 --> 00:21:31,180 kvalifikationskampe, i slutningen af ​​min redegørelse hvor og hvordan kan jeg slette Zamyla? 424 00:21:31,180 --> 00:21:34,190 Ved hendes navn Zamyla, så kolonne, en af ​​kolonnerne 425 00:21:34,190 --> 00:21:37,950 blev navngivet, så hvor name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 Og her vil jeg bruge dobbelt citater eller enkelte anførselstegn, 427 00:21:40,000 --> 00:21:42,958 du kun bruge bagsiden flåter, når taler om navne, for eksempel, 428 00:21:42,958 --> 00:21:45,130 af tabeller eller felter. 429 00:21:45,130 --> 00:21:47,440 Og lad mig så klik Go her. 430 00:21:47,440 --> 00:21:50,400 Og nu, websiden er være lidt forkrampede. 431 00:21:50,400 --> 00:21:53,620 >> Eller ønsker du virkelig at udføre slette fra brugerne, hvor navnet er lig Zamyla? 432 00:21:53,620 --> 00:21:54,680 Ja. 433 00:21:54,680 --> 00:22:01,900 Så nu, hvis vi går tilbage til min tabel ved at klikke brugere, bemærk at Hm. 434 00:22:01,900 --> 00:22:02,530 Jeg goofed. 435 00:22:02,530 --> 00:22:04,070 Og i virkeligheden, jeg slags klikkede væk så hurtigt 436 00:22:04,070 --> 00:22:06,195 du ikke engang se den rød fejlmeddelelse, måske. 437 00:22:06,195 --> 00:22:07,649 Hvad gjorde jeg forkert? 438 00:22:07,649 --> 00:22:09,690 PUBLIKUM: Du har ikke brug for at udnytte hendes navn. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Ja jeg kapitaliseret hendes navn, 440 00:22:11,260 --> 00:22:13,770 men hendes username-- faktisk jeg lavet et par fejl, right? 441 00:22:13,770 --> 00:22:16,720 One, hendes brugernavn er zamyla, små bogstaver Z, 442 00:22:16,720 --> 00:22:20,140 og kolonne navn er brugernavn, ikke navn, så lad os gøre det igen. 443 00:22:20,140 --> 00:22:25,750 Lad mig gå videre og slette fra brugerne, hvor 444 00:22:25,750 --> 00:22:28,990 brugernavn lig citat citat slut "Zamyla". 445 00:22:28,990 --> 00:22:29,490 Okay? 446 00:22:29,490 --> 00:22:32,600 Så det ser lidt bedre, så lad mig gå rulle ned og klik på Go. 447 00:22:32,600 --> 00:22:34,730 Det er stadig til yell på mig at være sikker. 448 00:22:34,730 --> 00:22:37,500 Jeg klikker på Ja, og nu ser vi, ærligt dette skete, virkelig 449 00:22:37,500 --> 00:22:39,870 hurtigt, mindre end en andet bestemt, dette 450 00:22:39,870 --> 00:22:41,720 er præcis den forespørgsel, der blev henrettet. 451 00:22:41,720 --> 00:22:45,617 For at bekræfte, lad mig klikker brugere og faktisk nu Zamyla er væk. 452 00:22:45,617 --> 00:22:46,700 Lad os nu gøre det modsatte. 453 00:22:46,700 --> 00:22:49,320 Antag, at Gabe ønsker at registrere for hjemmesiden. 454 00:22:49,320 --> 00:22:52,825 Hvad er SQL-forespørgslen, hvad er kommando jeg kunne skrive for at tilføje Gabe? 455 00:22:52,825 --> 00:22:54,200 Jamen det er temmelig ligetil. 456 00:22:54,200 --> 00:22:58,260 Sæt ind i brugere, og nu det bliver lidt kryptisk. 457 00:22:58,260 --> 00:23:03,190 Jeg har brug for at angive, at serveren, hvilke områder, jeg ønsker at tildele. 458 00:23:03,190 --> 00:23:06,630 Jeg er faktisk ligeglad hvad Gabe ID nummer er, så jeg har tænkt mig at springe. 459 00:23:06,630 --> 00:23:11,360 Jeg i stedet kommer til at sige brugernavn, hash, og derefter 460 00:23:11,360 --> 00:23:14,960 de værdier, jeg ønsker at sætte Der kommer til at være Gabe. 461 00:23:14,960 --> 00:23:16,800 Og så hans hash, jeg ikke kender. 462 00:23:16,800 --> 00:23:19,900 Så for nu, vil jeg efterlade det som en stor at gøre. 463 00:23:19,900 --> 00:23:21,650 Vi vil komme tilbage til at problemet indstillet 464 00:23:21,650 --> 00:23:23,390 spec på, hvordan du rent faktisk gør det. 465 00:23:23,390 --> 00:23:24,630 >> Så bemærke, igen, syntaks. 466 00:23:24,630 --> 00:23:28,430 Indsæt i tabellen navn, så en parentes liste over de felter, 467 00:23:28,430 --> 00:23:30,980 de kolonner, du ønsker at tilføje værdier til og så bare 468 00:23:30,980 --> 00:23:34,495 nøjagtig den samme bestilling tilbage til ret af de værdier, du vil tilføje, 469 00:23:34,495 --> 00:23:36,870 og det er bare indpakning fordi Teksten er lidt lang. 470 00:23:36,870 --> 00:23:38,520 Så lad mig nu klik på Go. 471 00:23:38,520 --> 00:23:39,830 En række skal indsættes. 472 00:23:39,830 --> 00:23:43,020 Og nu, hvis jeg gå tilbage til brugere, hvad er interessant 473 00:23:43,020 --> 00:23:48,960 er, at ikke kun er Gabe nu i database, hvilket tilsyneladende er hans id? 474 00:23:48,960 --> 00:23:49,820 >> Jamen det er syv. 475 00:23:49,820 --> 00:23:51,479 Hvorfor er det syv, når jeg ikke tilføje det? 476 00:23:51,479 --> 00:23:54,020 Så også dette er en af ​​de funktioner, du får af databasen. 477 00:23:54,020 --> 00:23:55,750 En masse indbygget funktionalitet. 478 00:23:55,750 --> 00:23:57,950 Det viser sig, at når oprettet denne tabel, 479 00:23:57,950 --> 00:24:01,390 Jeg prækonfigurerede det automatisk tildele en ID på en sådan måde 480 00:24:01,390 --> 00:24:02,480 at det intervaller. 481 00:24:02,480 --> 00:24:05,470 Så hvis du nogensinde har jordet rundt, og kigget på, hvad dit Facebook ID 482 00:24:05,470 --> 00:24:09,292 nummer er, i disse dage er det ikke rigtig en ting at gøre, men Facebook som et API, 483 00:24:09,292 --> 00:24:11,750 Application Programming Interface, hvorved du kan komme tilbage 484 00:24:11,750 --> 00:24:14,430 en hel bunke af data om dig selv, om dine venner, 485 00:24:14,430 --> 00:24:15,347 og dine forbindelser. 486 00:24:15,347 --> 00:24:17,430 Og hvad der plejede at være venlig cool, tilbage i dag, 487 00:24:17,430 --> 00:24:19,510 var at se op, hvad din Facebook ID-nummer var. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg, for eksempel, er tre 489 00:24:22,390 --> 00:24:23,890 siden han var forfatter til webstedet. 490 00:24:23,890 --> 00:24:27,610 Og som historien går, skabte han to testkonti, brugere et og to, 491 00:24:27,610 --> 00:24:28,690 som han derefter slettes. 492 00:24:28,690 --> 00:24:32,780 Og så, Zuck, som er hans brugernavn på Facebook, er ID-nummer tre, 493 00:24:32,780 --> 00:24:36,110 og for os alle har numre meget større end tre i disse dage. 494 00:24:36,110 --> 00:24:37,980 Faktisk, på et tidspunkt Facebook flyttes væk 495 00:24:37,980 --> 00:24:42,410 fra selv ved hjælp af en int, som er en 32-bit værdi, til anvendelse 496 00:24:42,410 --> 00:24:44,480 det næste skridt op, væsentlige en lang lang så 497 00:24:44,480 --> 00:24:47,150 at de kunne rumme endnu flere brugere at registrere sig. 498 00:24:47,150 --> 00:24:49,420 Så en sjov lille historisk kendsgerning. 499 00:24:49,420 --> 00:24:51,660 >> Så det er bare at grundlæggende syntaks, som 500 00:24:51,660 --> 00:24:54,470 vi kunne udføre et par forespørgsler, men vi kan faktisk 501 00:24:54,470 --> 00:24:56,744 gøre en masse flere ting med SQL. 502 00:24:56,744 --> 00:24:58,910 Og du vil se, i sidste ende, i problemet sæt syv 503 00:24:58,910 --> 00:25:01,034 at du er nødt til at gøre en Antallet af design beslutninger, 504 00:25:01,034 --> 00:25:03,290 blandt dem vil være hvad datatyper at bruge. 505 00:25:03,290 --> 00:25:08,240 Så ligesom i C, er der data typer i en database, som MySQL, 506 00:25:08,240 --> 00:25:12,640 og de typer data, du nødt til at vælge fra inkludere disse felter her. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, Int, stor int, decimal og dato tid, og mange andre. 508 00:25:17,287 --> 00:25:18,370 Så lad os rent faktisk gør dette. 509 00:25:18,370 --> 00:25:21,060 Lad os lade som om, at vi ikke gjorde hånd, du denne brugers bord 510 00:25:21,060 --> 00:25:25,080 og lad mig gå videre og skabe, for mig selv, i forelæsningerne database-- 511 00:25:25,080 --> 00:25:31,000 faktisk lade mig gå videre og slette tabellen, jeg har i her allerede 512 00:25:31,000 --> 00:25:32,940 således at vi rent faktisk kan skabe dette. 513 00:25:32,940 --> 00:25:33,550 Hovsa. 514 00:25:33,550 --> 00:25:35,970 Jeg har tænkt mig at droppe dette bord, og nu er jeg 515 00:25:35,970 --> 00:25:38,337 vil gå igen til foredrag database herovre, 516 00:25:38,337 --> 00:25:40,420 Jeg har tænkt mig at oprette en tabel kaldet brugere og lad os 517 00:25:40,420 --> 00:25:43,010 bare gøre tre kolonner oprindeligt og klik på Go. 518 00:25:43,010 --> 00:25:44,990 >> Nu, for det meste, igen, det er bare 519 00:25:44,990 --> 00:25:48,570 ved hjælp af dette grafiske værktøj kaldet phpMyAdmin, og hvad vi laver nu 520 00:25:48,570 --> 00:25:49,600 er at skabe et bord. 521 00:25:49,600 --> 00:25:53,170 Så dette er som at gå på Filer, Ny, og skabe en ny Excel-fil. 522 00:25:53,170 --> 00:25:55,440 Så det spørger mig et par spørgsmål, fra venstre mod højre, 523 00:25:55,440 --> 00:25:58,620 hvad er navnet på den første kolonne, og derefter navnet på den anden kolonne 524 00:25:58,620 --> 00:25:59,560 og navnet på den tredje. 525 00:25:59,560 --> 00:26:00,518 Så lad os genskabe denne. 526 00:26:00,518 --> 00:26:05,460 ID og derefter brugernavn var én, og derefter hash var en anden. 527 00:26:05,460 --> 00:26:08,970 Så hvad skal datatypen være nu for et felt som ID? 528 00:26:08,970 --> 00:26:14,470 >> Her er hele listen over datatyper til rådighed for dig i en database, 529 00:26:14,470 --> 00:26:16,070 og lad os nu bare gå med int. 530 00:26:16,070 --> 00:26:18,160 32-bit værdi, det gør jeg ikke tænke realistisk jeg 531 00:26:18,160 --> 00:26:21,484 kommer til at have mere end 4 milliarder brugere på min konto, i min tjeneste, 532 00:26:21,484 --> 00:26:23,650 så jeg har tænkt mig at holde bevægelige videre til det næste spørgsmål. 533 00:26:23,650 --> 00:26:25,490 Jeg har ikke tænkt mig at specificere en længde eller værdier, 534 00:26:25,490 --> 00:26:28,540 Det er ikke relevant her for en int, per se. 535 00:26:28,540 --> 00:26:30,740 Og nu kan jeg angive, tilsyneladende en standard 536 00:26:30,740 --> 00:26:33,970 værdi, som jeg ikke vil angive. 537 00:26:33,970 --> 00:26:36,050 En sortering, ved jeg ikke, hvad det er. 538 00:26:36,050 --> 00:26:37,290 En attribut. 539 00:26:37,290 --> 00:26:39,455 Nu er vi rent faktisk gør har et design beslutning. 540 00:26:39,455 --> 00:26:42,580 Så der er et par områder her, ikke alle af hvilke der ved men usigneret 541 00:26:42,580 --> 00:26:43,380 betyder bare, hvad? 542 00:26:43,380 --> 00:26:45,400 At int skal være? 543 00:26:45,400 --> 00:26:46,210 Blot ikke-negativ. 544 00:26:46,210 --> 00:26:48,090 Så det må være 0 på op. 545 00:26:48,090 --> 00:26:51,120 Nej, jeg har ikke tænkt mig at kontrollere, fordi Jeg vil hver bruger skal have et ID, 546 00:26:51,120 --> 00:26:52,470 det kan ikke være null. 547 00:26:52,470 --> 00:26:55,949 Og så får vi til nogle mere interessante design beslutninger som denne. 548 00:26:55,949 --> 00:26:58,990 Vi kommer tilbage til dette om et øjeblik, men hvad en anden funktion i databasen 549 00:26:58,990 --> 00:27:04,200 er, at du kan fortælle databaseserveren gå videre 550 00:27:04,200 --> 00:27:07,100 og optimere dig selv, din RAM og din plads på harddisken, 551 00:27:07,100 --> 00:27:11,770 så vælger, og skær, og sletter, og opdateringer er virkelig hurtig. 552 00:27:11,770 --> 00:27:13,250 Kontrast dette med pset5. 553 00:27:13,250 --> 00:27:16,259 >> Hvis du ønskede at se op noget i din hash tabel, som 554 00:27:16,259 --> 00:27:18,300 du tænker på som en database, der havde at gøre alle 555 00:27:18,300 --> 00:27:21,500 arbejde for at gøre din hash tabel hurtigt. 556 00:27:21,500 --> 00:27:22,840 Det er ligesom, naturligvis, du. 557 00:27:22,840 --> 00:27:23,060 Right? 558 00:27:23,060 --> 00:27:26,080 Du var nødt til at sætte i al den tid bøde tuning ting, at få en hash-funktion 559 00:27:26,080 --> 00:27:27,820 højre, regne ud, hvordan mange spande at have. 560 00:27:27,820 --> 00:27:29,611 >> Men hvad er rart, igen, om en database 561 00:27:29,611 --> 00:27:31,762 du bare punt alle dette til andre mennesker 562 00:27:31,762 --> 00:27:33,720 der har tænkt dette igennem for dig, og hvad 563 00:27:33,720 --> 00:27:37,170 Jeg har tænkt mig at sige her under indeks er, at mit ID felt 564 00:27:37,170 --> 00:27:41,149 vil være den primære måde identificere brugere i denne database. 565 00:27:41,149 --> 00:27:42,940 Jeg har ikke tænkt mig at tænke af Zamyla som Zamyla, 566 00:27:42,940 --> 00:27:45,800 Jeg har tænkt mig at tænke på hende som nummer 6. 567 00:27:45,800 --> 00:27:49,814 >> Hvorfor er det måske bedre intuitivt at tænke på og model 568 00:27:49,814 --> 00:27:52,480 hver af dine individuelle rækker ved hjælp af et nummer i stedet for noget 569 00:27:52,480 --> 00:27:56,480 som en snor, som Zamyla eller Gabe eller længere snor stadig? 570 00:27:56,480 --> 00:27:57,444 Ja? 571 00:27:57,444 --> 00:28:00,117 >> PUBLIKUM: Et id er unik? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: Sig igen? 573 00:28:01,200 --> 00:28:02,283 PUBLIKUM: Et id er unik? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: An ID er unik, men suppose-- 575 00:28:04,400 --> 00:28:06,320 som tilfældet i almindelighed med brugernavne, formoder 576 00:28:06,320 --> 00:28:10,110 Jeg sagde også, at der kun kan være én Zamyla i verden, og kun én Gabe. 577 00:28:10,110 --> 00:28:13,730 Jeg kunne pålægge det unikke pres på strengene, også, hvis jeg ønskede. 578 00:28:13,730 --> 00:28:15,550 Så ikke en dårlig tanke. 579 00:28:15,550 --> 00:28:16,500 >> PUBLIKUM: Mere sikker. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Mere sikker, hvorfor? 581 00:28:17,874 --> 00:28:20,705 PUBLIKUM: Du kan ikke sige, hvilken er der, som i brugeren. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, du kan ikke fortælle hvilken bruger 583 00:28:22,580 --> 00:28:24,380 er der så der er en privatliv aspekt til det, 584 00:28:24,380 --> 00:28:27,810 især hvis id'er måske optræder i de webadresser. 585 00:28:27,810 --> 00:28:29,960 Så sikker, at kunne slags arbejde, også. 586 00:28:29,960 --> 00:28:30,640 Andre tanker? 587 00:28:30,640 --> 00:28:31,383 Ja? 588 00:28:31,383 --> 00:28:34,316 >> PUBLIKUM: Det er nemmere at udføre operationer på en int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. MALAN: Det er den virkelige kicker. 590 00:28:35,940 --> 00:28:38,850 Det er bare mere effektive, eller lettere for computeren, 591 00:28:38,850 --> 00:28:40,431 til at udføre operationer på et heltal. 592 00:28:40,431 --> 00:28:40,930 Right? 593 00:28:40,930 --> 00:28:43,905 En int er garanteret at være 32-bit, hvorimod Zamyla 594 00:28:43,905 --> 00:28:47,660 er et par tegn, Gabriel er et par flere tegn, 595 00:28:47,660 --> 00:28:51,930 Davenport er virkelig lang, og så det er ikke særlig effektivt at bruge 596 00:28:51,930 --> 00:28:55,860 strenge at sammenligne værdier og ser for felter, og opdatere felter, 597 00:28:55,860 --> 00:28:57,790 hvis du kan komme væk med kun én heltal. 598 00:28:57,790 --> 00:28:59,090 Blot 32 bit. 599 00:28:59,090 --> 00:29:02,570 Så brugernavne, også, på denne måde, behøver ikke at være unikke, 600 00:29:02,570 --> 00:29:05,040 selv om de burde nok være, og endda også på denne måde 601 00:29:05,040 --> 00:29:07,520 en bruger kunne få lov til ændre sit brugernavn. 602 00:29:07,520 --> 00:29:10,810 >> Så lad os nu forlade dette som primære middel til at identificere brugeren. 603 00:29:10,810 --> 00:29:13,510 Dette fortæller databasen gå videre og optimere dig selv 604 00:29:13,510 --> 00:29:17,065 så det blik ups på ID er super hurtig. 605 00:29:17,065 --> 00:29:19,620 AI, forfærdeligt navngivet, bare betyder Auto Interval, 606 00:29:19,620 --> 00:29:21,500 og dette er check kasse vi nødt til at tjekke 607 00:29:21,500 --> 00:29:24,614 at angive, at ID-feltet til opdateres automatisk for mig, 608 00:29:24,614 --> 00:29:26,530 og så vil jeg Rul til højre her 609 00:29:26,530 --> 00:29:29,279 og helt ærligt jeg er ikke rigtig interesseret i mere af disse områder. 610 00:29:29,279 --> 00:29:30,630 Bestemt ikke i dag. 611 00:29:30,630 --> 00:29:33,770 >> Så jeg har tænkt mig at gå tilbage her, til den første kolonne, hvor 612 00:29:33,770 --> 00:29:35,830 Jeg har brug for at angive brugernavn og hash, og lad os 613 00:29:35,830 --> 00:29:38,080 mindst fokus på én for nu. 614 00:29:38,080 --> 00:29:41,498 Int er nok ikke den rigtige opkald, så hvad er mere fornuftigt måske? 615 00:29:41,498 --> 00:29:42,741 >> PUBLIKUM: Tekst. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: Sig igen? 617 00:29:43,824 --> 00:29:44,710 PUBLIKUM: Tekst. 618 00:29:44,710 --> 00:29:44,980 DAVID J. MALAN: Tekst? 619 00:29:44,980 --> 00:29:45,590 OK, jeg hørte tekst. 620 00:29:45,590 --> 00:29:46,090 Hvad ellers? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Vi slags har en flok valgmuligheder der er tekstmæssige i naturen. 623 00:29:53,860 --> 00:29:55,990 Så hvornår og hvorfor, gør du bruge nogle af disse? 624 00:29:55,990 --> 00:29:59,560 Nå char, i modsætning til hvad du måske tror, ​​er ikke et enkelt tegn. 625 00:29:59,560 --> 00:30:01,550 Det er et bestemt antal tegn. 626 00:30:01,550 --> 00:30:04,600 Så hvis vi ved, at alle brugernavne skal ligne otte tegn, 627 00:30:04,600 --> 00:30:08,490 som plejede at være almindelig i ældre edb-systemer, kunne jeg sige char 628 00:30:08,490 --> 00:30:09,830 og så kunne jeg sige 8 her. 629 00:30:09,830 --> 00:30:12,930 Det er, når den tredje kolonne bliver anvendelig, når du opretter en tabel. 630 00:30:12,930 --> 00:30:15,450 >> Men det er slags irriterende fordi nogle mennesker måske 631 00:30:15,450 --> 00:30:17,660 ønsker at have en længere brugernavn end otte tegn, 632 00:30:17,660 --> 00:30:19,743 nogle mennesker måske ønsker at har en kortere brugernavn, 633 00:30:19,743 --> 00:30:22,210 så hvorfor forpligte mig til et bestemt nummer? 634 00:30:22,210 --> 00:30:24,710 Hvorfor ikke have en variabel Antallet af tegn og kun 635 00:30:24,710 --> 00:30:28,580 siger, at den maksimale længde for et navn er, ved jeg ikke, ligesom 64 tegn. 636 00:30:28,580 --> 00:30:31,780 Jeg kan ikke tænke på nogen venner, der har navne længere end 64 tegn, 637 00:30:31,780 --> 00:30:34,810 og selv hvis det er for kort, du kunne sikkert bump det op vilkårligt. 638 00:30:34,810 --> 00:30:37,330 >> Så varchar er en variabel Antallet af tegn. 639 00:30:37,330 --> 00:30:41,010 Tekst er ikke en dårlig instinkt, og ærligt den slags gør hvad det siger, 640 00:30:41,010 --> 00:30:45,460 men et tekstfelt kan være ligesom 65.000 bytes mindst. 641 00:30:45,460 --> 00:30:50,790 Det er sandsynligvis overkill for en område, og i virkeligheden, yup, 65.535. 642 00:30:50,790 --> 00:30:53,740 Det er sandsynligvis overkill for en navn, så vi vil holde, typisk 643 00:30:53,740 --> 00:30:56,910 med varchars for tekstmæssige marken og hash, også. 644 00:30:56,910 --> 00:30:59,990 Hash, viser det sig, kunne vi gøre en VARCHAR så godt eller noget lignende, 645 00:30:59,990 --> 00:31:03,080 men vi vil ikke fokusere i dag på kryptografi der og de numre 646 00:31:03,080 --> 00:31:05,210 at vi kan faktisk vil bruge til dens længde. 647 00:31:05,210 --> 00:31:07,430 >> Men lad mig rulle ned til højre. 648 00:31:07,430 --> 00:31:11,280 Du kan kun have én primært indeks for en tabel, 649 00:31:11,280 --> 00:31:16,380 men ønsker jeg at anvende nogen af ​​disse, nu, at brugernavn, ville du sige? 650 00:31:16,380 --> 00:31:21,980 Hvad skal brugernavn være baseret på en vag forståelse af disse fire muligheder? 651 00:31:21,980 --> 00:31:23,340 Lige ved deres navne? 652 00:31:23,340 --> 00:31:24,140 >> PUBLIKUM: Unique. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. MALAN: Så unik, right? 654 00:31:25,100 --> 00:31:28,190 Så det viser sig, at ikke kun kunne du fortæller en database, i forvejen, 655 00:31:28,190 --> 00:31:30,380 dette er den primære måde identificere områder. 656 00:31:30,380 --> 00:31:32,990 Du kan også sige, det er vil være en unik område. 657 00:31:32,990 --> 00:31:34,700 Det kommer ikke til at være de ting, jeg stole på, 658 00:31:34,700 --> 00:31:38,490 men jeg vil gerne databasen til har i det væsentlige at hvis tilstand, så 659 00:31:38,490 --> 00:31:42,340 at hvis jeg nogensinde forsøgt at registrere to brugere med samme navn, 660 00:31:42,340 --> 00:31:44,360 databasen flade ud vil ikke lade mig. 661 00:31:44,360 --> 00:31:47,490 Jeg måske har nogle ekstra kode i PHP der forhindrer så meget, 662 00:31:47,490 --> 00:31:50,640 men databasen også kan sikre at der aldrig kommer til at ske. 663 00:31:50,640 --> 00:31:53,370 >> Nu, da en side, især da du synes om afgangsprojekter, 664 00:31:53,370 --> 00:31:57,030 husk det indeks og fuld tekst er faktisk ret nyttigt. 665 00:31:57,030 --> 00:32:01,080 Hvis du har en større database, ikke med snesevis, men med hundreder eller tusinder 666 00:32:01,080 --> 00:32:05,270 eller endda millioner af felter kan du også fortælle databasen i forvejen 667 00:32:05,270 --> 00:32:07,980 dette er et område, jeg har tænkt mig at søge på en masse. 668 00:32:07,980 --> 00:32:10,520 Måske dens brugernavn, måske er det bio, hvis du er 669 00:32:10,520 --> 00:32:13,750 at lave en Facebook-lignende hjemmeside, har stykker at brugerens tilladt 670 00:32:13,750 --> 00:32:16,799 at spare, og hvis du ønsker at fortæller databasen i forvejen 671 00:32:16,799 --> 00:32:20,090 Jeg har tænkt mig at være at søge på dette område en masse, men det er ikke nødvendigvis enestående, 672 00:32:20,090 --> 00:32:22,800 du kan angive oprette mig et indeks. 673 00:32:22,800 --> 00:32:27,990 Eller du kan sige også tillade mig at gøre slags vilkårlige søgninger som Command 674 00:32:27,990 --> 00:32:30,420 eller Kontrol F, ligesom du måske i et tekstbehandlingsprogram, 675 00:32:30,420 --> 00:32:34,184 så man kunne se vilkårlige strenge eller understrenge på dette område. 676 00:32:34,184 --> 00:32:36,600 Med andre ord, vi får til det punkt i semesteret 677 00:32:36,600 --> 00:32:40,720 hvor du ikke behøver at bekymre dig om hvordan man gennemfører tingene effektivt. 678 00:32:40,720 --> 00:32:44,540 Du skal bare have at vide om, hvad design beslutninger at gøre, så du er 679 00:32:44,540 --> 00:32:48,470 bruger de rigtige værktøjer til handel med henblik på at udnytte funktioner 680 00:32:48,470 --> 00:32:50,380 at andre mennesker har bygget for dig. 681 00:32:50,380 --> 00:32:54,240 Så for at opsummere, bør kun primær har en, kan du kun have én, 682 00:32:54,240 --> 00:32:59,630 og det er de ting, du forpligte sig til bruger til at identificere områder entydigt. 683 00:32:59,630 --> 00:33:02,710 Unique er bare ens i ånden, men du måske kun lejlighedsvis bruge det, 684 00:33:02,710 --> 00:33:04,530 men du vil have databasen til at pålægge det. 685 00:33:04,530 --> 00:33:08,050 Indeks betyder blot præventivt fremskynde tingene op i fremtiden 686 00:33:08,050 --> 00:33:10,230 så jeg kan søge efter ting i dette område. 687 00:33:10,230 --> 00:33:13,700 Og så fulde tekst er generelt for afsnit eller essays eller store organer 688 00:33:13,700 --> 00:33:16,270 af tekst, hvor du måske også ønsker at have 689 00:33:16,270 --> 00:33:19,420 wild cards som svarer til stjerne. 690 00:33:19,420 --> 00:33:19,920 Højre. 691 00:33:19,920 --> 00:33:22,580 >> Så det var slags en masse at alle på en gang. 692 00:33:22,580 --> 00:33:25,220 Lad os se om vi ikke kan destillere et par af disse funktioner 693 00:33:25,220 --> 00:33:29,540 og derefter bygge noget forholdsvis enkel, men kraftfuld. 694 00:33:29,540 --> 00:33:31,380 Så blandt andet designbeslutninger du er 695 00:33:31,380 --> 00:33:34,005 i sidste ende kommer til at have, er sammen linjerne i opbevaring motorer. 696 00:33:34,005 --> 00:33:37,370 Og lad mig bare gøre omtale af dette i forventning om afgangsprojekter, 697 00:33:37,370 --> 00:33:42,020 og foregribelse af lad os say-- nej lad os gøre dette. 698 00:33:42,020 --> 00:33:43,820 Lad os bygge dette lille ansøgning først. 699 00:33:43,820 --> 00:33:48,070 Jeg har tænkt mig at gå ind i min terminal vindue, og her er ikke 700 00:33:48,070 --> 00:33:52,500 kun counter.php, som vi nu går at slippe af med, da der ikke længere er germane, 701 00:33:52,500 --> 00:33:54,570 men vi har en hel masse af telefonbøger og dette 702 00:33:54,570 --> 00:33:58,080 kommer til at være meget ens i ånden til hvad du vil se i problem sæt syv. 703 00:33:58,080 --> 00:34:00,980 >> Så vi har tre mapper omfatter offentlige og skabeloner, som 704 00:34:00,980 --> 00:34:05,040 er præcis, hvor vi slap på Mandag med hele vores MVC paradigme. 705 00:34:05,040 --> 00:34:09,290 Og for at opsummere, i det offentlige kommer til at gå enhver fil, som jeg vil have at brugere faktisk 706 00:34:09,290 --> 00:34:12,969 v kunne besøge i deres browser via en URL. 707 00:34:12,969 --> 00:34:13,502 Skabelon. 708 00:34:13,502 --> 00:34:14,710 Hvad gjorde vi sætte i skabeloner? 709 00:34:14,710 --> 00:34:17,070 Hvilken slags ting? 710 00:34:17,070 --> 00:34:21,659 Der var ikke meget, men et par filer i det mindste på mandag. 711 00:34:21,659 --> 00:34:22,619 Ja. 712 00:34:22,619 --> 00:34:23,100 >> PUBLIKUM: Sidehoved og sidefod? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: Sidehoved og sidefod. 714 00:34:24,516 --> 00:34:26,679 Så vi har noget lignende i dag, også. 715 00:34:26,679 --> 00:34:30,330 Vi har fået et par flere filer, men Footer Jeg ser, Header jeg ser, 716 00:34:30,330 --> 00:34:31,909 og derefter en masse andre filer. 717 00:34:31,909 --> 00:34:35,482 Så dette er ækvivalent V MVC synspunkt, som, 718 00:34:35,482 --> 00:34:37,690 igen, vil være en smule mere klart problem sæt syv, 719 00:34:37,690 --> 00:34:40,380 men dette er blot en mappe jeg sætte en masse af mine æstetik. 720 00:34:40,380 --> 00:34:42,840 En masse af min HTML, en masse af mine former. 721 00:34:42,840 --> 00:34:46,899 I mellemtiden, omfatter en anden bibliotek, der har disse tre filer 722 00:34:46,899 --> 00:34:48,440 og lad os tage et hurtigt kig på disse. 723 00:34:48,440 --> 00:34:51,699 >> Jeg har tænkt mig at gå videre og åbne op config.php. 724 00:34:51,699 --> 00:34:54,610 Da det viser sig, meget ligesom tidligere i udtrykket, 725 00:34:54,610 --> 00:34:57,850 dig skarp inkluderet CS50 dot h med pset7. 726 00:34:57,850 --> 00:35:00,780 I dagens eksempel, du vil at gøre det svarer til, at 727 00:35:00,780 --> 00:35:03,600 med et krav erklæring der effektivt 728 00:35:03,600 --> 00:35:05,340 omfatter disse forskellige linjer. 729 00:35:05,340 --> 00:35:08,225 Så for at være klar, dette er en fil kaldet config.php. 730 00:35:08,225 --> 00:35:09,350 Og læg mærke til, hvad det gør. 731 00:35:09,350 --> 00:35:11,970 Det er tilsyneladende at gøre noget kryptiske, tænde fejlmeddelelser 732 00:35:11,970 --> 00:35:13,680 så du kan se dem i browseren. 733 00:35:13,680 --> 00:35:15,860 Det er da, tilsyneladende kræver mindst to andre filer 734 00:35:15,860 --> 00:35:19,530 så det er ligesom #include i C, og så denne ene vi kunne se, 735 00:35:19,530 --> 00:35:22,720 og vi har påberåbt sig, dette tændes at indkøbsvognen lignende funktionalitet. 736 00:35:22,720 --> 00:35:25,610 >> Det betyder, at en cookie sendes frem og tilbage. 737 00:35:25,610 --> 00:35:27,290 Så hvorfor er det interessant? 738 00:35:27,290 --> 00:35:32,460 Tja, hvis vi går tilbage til dette bibliotek og åbne for eksempel 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Bemærk, at PHP understøtter også konstanter, det er ikke helt ligesom #define i C. 741 00:35:38,840 --> 00:35:41,290 I stedet kan du bogstaveligt talt sige defineret, og varsel 742 00:35:41,290 --> 00:35:44,110 at jeg har gemt på forhånd fire konstanter i denne fil. 743 00:35:44,110 --> 00:35:47,020 En for dagens database, for mit password, for mit brugernavn, 744 00:35:47,020 --> 00:35:48,690 og efter navnet på den server. 745 00:35:48,690 --> 00:35:51,644 Så disse er faktisk kommer til at være temmelig ens i problem sæt syv. 746 00:35:51,644 --> 00:35:54,560 Og endelig, og dette er, hvor jeg er kommer til at få nogle nice funktioner 747 00:35:54,560 --> 00:35:59,000 fra personalet, i functions.php er en flok af kode, vi har skrevet, 748 00:35:59,000 --> 00:36:01,040 og jeg stjal nogle af dette fra problem sæt syv 749 00:36:01,040 --> 00:36:05,920 for i dag, der gør en masse ting og lad os bare se på en af ​​dem 750 00:36:05,920 --> 00:36:07,270 i særdeleshed. 751 00:36:07,270 --> 00:36:09,720 Denne funktion her, forespørgsel, bliver 752 00:36:09,720 --> 00:36:13,600 PHP-funktionen vi kalder med henblik på at udføre SQL. 753 00:36:13,600 --> 00:36:16,070 For et øjeblik siden var vi ved hjælp af phpMyAdmin, men det er bare 754 00:36:16,070 --> 00:36:18,720 til sortering af læring, og diagnostiske formål 755 00:36:18,720 --> 00:36:20,494 og glemmer din database sæt. 756 00:36:20,494 --> 00:36:22,660 Når du rent faktisk bruger din database, du som menneske, 757 00:36:22,660 --> 00:36:24,100 er naturligvis ikke vil at trække en web 758 00:36:24,100 --> 00:36:25,740 side hver gang nogen registre. 759 00:36:25,740 --> 00:36:29,870 Du kommer til at skrive kode, indstik og sletter brugere on-demand, 760 00:36:29,870 --> 00:36:32,490 og vi vil gøre dette ved hjælp af forespørgslen funktion. 761 00:36:32,490 --> 00:36:35,360 Hvis jeg nu rulle ned, er der kommer til at være et par flere funktioner. 762 00:36:35,360 --> 00:36:37,170 Redirect vil være en funktion, vi skrev 763 00:36:37,170 --> 00:36:40,160 for dig, der giver dig mulighed for sende brugeren til en anden URL, 764 00:36:40,160 --> 00:36:43,780 og gøre er en funktion, helt ligesom vi så på mandag, der rent faktisk gør 765 00:36:43,780 --> 00:36:48,000 en skabelon, men mere på disse i form for pset7 egen gåtur gennem. 766 00:36:48,000 --> 00:36:50,500 For nu, lad os gå videre og gøre dette. 767 00:36:50,500 --> 00:36:54,860 >> Lad mig gå ind i mit foredrag bord og se, at der er i øjeblikket intet 768 00:36:54,860 --> 00:36:59,640 her endnu, og lad mig også gå ind i min offentlige mappe, hvor 769 00:36:59,640 --> 00:37:02,780 der er bare en fil, index.php. 770 00:37:02,780 --> 00:37:06,920 Denne fil ser ud til at være super enkel i det øjeblik, det ser bare sådan ud. 771 00:37:06,920 --> 00:37:09,110 Meget gerne, hvordan vi slap på mandag. 772 00:37:09,110 --> 00:37:11,945 Jeg kræver denne fil, config.php, som er i 773 00:37:11,945 --> 00:37:15,160 en indeholder mappen, som er i dot dot, mine forældre, 774 00:37:15,160 --> 00:37:17,650 og så er det bare at gøre denne fil. 775 00:37:17,650 --> 00:37:18,960 Så hvad er denne fil? 776 00:37:18,960 --> 00:37:24,700 >> Lad os åbne op i mine skabeloner form.php, og vi vil se dette. 777 00:37:24,700 --> 00:37:28,500 Super enkel, tilsyneladende denne formular er kommer til at indsende en $ _GET eller $ _POST. 778 00:37:28,500 --> 00:37:29,320 Hurtig tilregnelighed check. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Bogstaveligt talt visuelt søge i filen. 781 00:37:35,690 --> 00:37:36,610 Metode er lig med indlæg. 782 00:37:36,610 --> 00:37:39,280 Så det kommer ikke til at bruge URL'en, ligesom Google gør, det kommer til at sortere af skind 783 00:37:39,280 --> 00:37:41,030 oplysningerne bag kulisserne, og det er 784 00:37:41,030 --> 00:37:43,580 kommer til at underkaste sig en fil kaldet register.php, 785 00:37:43,580 --> 00:37:45,660 og det er den fil vi har endnu ikke skrevet 786 00:37:45,660 --> 00:37:47,610 men hvad dette foregår at ligne er dette. 787 00:37:47,610 --> 00:37:52,670 >> Hvis jeg går til en separat side Dette er hvad localhost / index.php ser ud. 788 00:37:52,670 --> 00:37:56,930 Og igen, serverens bare antager index.php. 789 00:37:56,930 --> 00:37:57,910 Enter. 790 00:37:57,910 --> 00:37:59,870 Så det er, hvor vi er på, og hvad jeg ønsker at gøre 791 00:37:59,870 --> 00:38:02,450 er i stand til at skrive ting som David, og derefter 792 00:38:02,450 --> 00:38:08,050 mit telefonnummer, som vil sige 617-555-1212 for nu, registrere 793 00:38:08,050 --> 00:38:09,910 og nu register.php blev ikke fundet. 794 00:38:09,910 --> 00:38:11,440 Så jeg er nødt til at gennemføre dette. 795 00:38:11,440 --> 00:38:13,320 Så lad os hurtigt pisk noget som dette op. 796 00:38:13,320 --> 00:38:18,640 Lad mig gå ind i min offentlige mappe og gøre gedit af register.php, 797 00:38:18,640 --> 00:38:22,300 og nu vil jeg gå videre og starte PHP mode, som vi gjorde i mandags, 798 00:38:22,300 --> 00:38:25,430 og tæt PHP tag, og lad os gøre et par ting. 799 00:38:25,430 --> 00:38:28,336 >> Så en, jeg kender, fra have skrevet denne form 800 00:38:28,336 --> 00:38:29,960 at jeg ønsker at kontrollere, om følgende. 801 00:38:29,960 --> 00:38:35,670 Hvis den er tom, hvad brugeren indtastes til navnet feltet, så 802 00:38:35,670 --> 00:38:39,860 Jeg har tænkt mig at sige noget ligesom undskylde mangler navn. 803 00:38:39,860 --> 00:38:42,380 Undskylde, i mellemtiden, er ikke en indbygget PHP ting, 804 00:38:42,380 --> 00:38:45,970 Det er en funktion, vi skrev i functions.php for pset7 805 00:38:45,970 --> 00:38:47,940 så du har adgang til det. 806 00:38:47,940 --> 00:38:53,830 Else, hvis det andet felt er tom, nummer, så er jeg 807 00:38:53,830 --> 00:38:58,370 kommer til at undskylde over for bruger og sige manglende tal. 808 00:38:58,370 --> 00:38:59,320 Gem denne fil. 809 00:38:59,320 --> 00:39:02,640 >> Lad os nu gå tilbage til min browser, gå tilbage til forummet prøv igen. 810 00:39:02,640 --> 00:39:04,070 Registrer. 811 00:39:04,070 --> 00:39:05,090 OK. 812 00:39:05,090 --> 00:39:06,730 Intet skete, hvilket er godt. 813 00:39:06,730 --> 00:39:08,120 Jeg fik ikke en fejlmeddelelse. 814 00:39:08,120 --> 00:39:11,651 Men hvis man i stedet, lad os genindlæse denne side, og ikke give noget. 815 00:39:11,651 --> 00:39:12,150 Damn det. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Gør det. 818 00:39:17,140 --> 00:39:18,810 Registrer. 819 00:39:18,810 --> 00:39:20,350 Hvad gjorde jeg forkert? 820 00:39:20,350 --> 00:39:24,860 Hvis tom, $ _POST navn. 821 00:39:24,860 --> 00:39:26,350 Sig igen? 822 00:39:26,350 --> 00:39:27,670 >> Åh, selvfølgelig. 823 00:39:27,670 --> 00:39:30,919 Jeg har glemt den vigtigste del, som er kræve ("../ includes / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Jeg har brug for at have adgang til det undskylder funktion, som 826 00:39:36,460 --> 00:39:37,770 Derfor er der intet skete. 827 00:39:37,770 --> 00:39:39,460 Funktionen faktisk ikke eksisterer. 828 00:39:39,460 --> 00:39:40,640 Så lad os prøve det igen. 829 00:39:40,640 --> 00:39:42,350 Lad os genindlæse siden, skal du klikke på Register. 830 00:39:42,350 --> 00:39:43,060 OK. 831 00:39:43,060 --> 00:39:43,770 Der er det. 832 00:39:43,770 --> 00:39:45,700 Så output vi ser her er resultatet 833 00:39:45,700 --> 00:39:47,685 kalde en undskylder funktion, super enkel, 834 00:39:47,685 --> 00:39:50,060 og det bare udskrives uanset Jeg giver det som et argument. 835 00:39:50,060 --> 00:39:51,370 >> Okay, så lad os samarbejde. 836 00:39:51,370 --> 00:39:54,240 Lad os give mit navn ligesom David, kan du registrere, 837 00:39:54,240 --> 00:39:56,890 manglende antal OK lad os fastsætte, at også. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registrer. 840 00:39:59,250 --> 00:39:59,750 OK. 841 00:39:59,750 --> 00:40:02,760 Så alt er godt nu, bare ingenting interessant sker. 842 00:40:02,760 --> 00:40:06,000 Så lad os nu gøre noget mere interessant ske på denne måde. 843 00:40:06,000 --> 00:40:09,980 Lad mig gå ind i phpMyAdmin, og lad os faktisk oprette en tabel kaldet brugere, 844 00:40:09,980 --> 00:40:12,330 Jeg har tænkt mig at give det tre kolonner, og jeg vil hurtigt 845 00:40:12,330 --> 00:40:16,250 skabe id, og derefter navn og derefter nummer, 846 00:40:16,250 --> 00:40:18,832 og ID-feltet er jeg vil forlade som int. 847 00:40:18,832 --> 00:40:20,790 Navnefeltet jeg har tænkt mig at forlade som en varchar, 848 00:40:20,790 --> 00:40:23,257 og vi vil sige 64, noget vilkårligt. 849 00:40:23,257 --> 00:40:25,090 Det nummer jeg har tænkt mig at gøre, ved du hvad? 850 00:40:25,090 --> 00:40:27,350 Vi går ind i støtte amerikanske tal her, 851 00:40:27,350 --> 00:40:31,510 så jeg har tænkt mig at gøre noget ligesom char og derefter 10 tegn 852 00:40:31,510 --> 00:40:34,540 max for et område kode og derefter syv cifre. 853 00:40:34,540 --> 00:40:37,870 Og så herovre, vil jeg specificere auto tilvækst dette område, 854 00:40:37,870 --> 00:40:40,550 gør dette til en primær nøgle, og Jeg har tænkt mig at gå videre og ikke 855 00:40:40,550 --> 00:40:42,240 kontrollere ethvert af disse andre kasser. 856 00:40:42,240 --> 00:40:48,030 >> Så når jeg nu endelig klikker på Gem, og jeg går tilbage til mine brugere bord, 857 00:40:48,030 --> 00:40:52,270 dette er, hvad det ser ud, hvis jeg nu klikke et nyt faneblad struktur. 858 00:40:52,270 --> 00:40:54,550 Så dette, at være klar, er bare phpMyAdmin måde 859 00:40:54,550 --> 00:40:58,570 at sige din database tabel har et ID, et navn og et nummer 860 00:40:58,570 --> 00:41:02,040 med disse særlige konfigurationer og vi vil ignorere resten af ​​felterne 861 00:41:02,040 --> 00:41:03,140 der for nu. 862 00:41:03,140 --> 00:41:04,810 >> Så nu, hvad ønsker jeg at gøre? 863 00:41:04,810 --> 00:41:09,060 Så hvis jeg går nu ind i mit kildekode, hvis alt er godt 864 00:41:09,060 --> 00:41:11,190 Jeg ønsker at udføre følgende forespørgsel. 865 00:41:11,190 --> 00:41:14,970 Sæt ind, og jeg kan bare siger brugerne gør jeg ikke strengt 866 00:41:14,970 --> 00:41:18,620 brug dem tilbage flåter, hvis det er ikke en farlig ord som brugere. 867 00:41:18,620 --> 00:41:22,810 Jeg har tænkt mig at sige navnet, nummer, og så her jeg 868 00:41:22,810 --> 00:41:24,960 ikke kommer til hård kode den ciffer af værdierne endnu. 869 00:41:24,960 --> 00:41:26,760 Jeg har tænkt mig at sætte to spørgsmålstegn. 870 00:41:26,760 --> 00:41:29,320 Og det er en konvention på mange sprog 871 00:41:29,320 --> 00:41:31,730 hvorved hvis du vil have pladsholder for en streng 872 00:41:31,730 --> 00:41:34,105 du kommer til at bruge det spørgsmål varemærker, af årsager vi får 873 00:41:34,105 --> 00:41:36,370 komme tilbage til at chatte om sikkerhed, og her 874 00:41:36,370 --> 00:41:39,420 Jeg har tænkt mig at passere i de to felter skrive navn, 875 00:41:39,420 --> 00:41:44,850 og derefter sende nummer, og nu gemme filen. 876 00:41:44,850 --> 00:41:47,090 >> Og nu jeg har tænkt mig at gå ned her er en super 877 00:41:47,090 --> 00:41:55,690 blot sige rendersuccess.php, som kommer til at være en anden skabelon. 878 00:41:55,690 --> 00:41:57,380 Jeg har tænkt mig at lave rigtig hurtigt. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php og jeg bare at sige H1 succes i filen. 880 00:42:06,270 --> 00:42:06,990 Ok. 881 00:42:06,990 --> 00:42:11,312 Så nu, lad os gå tilbage til browser, hvor jeg besøgte før. 882 00:42:11,312 --> 00:42:14,270 Lad os gå videre og bekræfte at jeg skrev i David, jeg skrev i et telefonnummer, 883 00:42:14,270 --> 00:42:15,390 registrere. 884 00:42:15,390 --> 00:42:16,100 Damn det. 885 00:42:16,100 --> 00:42:17,420 Hvad gjorde jeg forkert? 886 00:42:17,420 --> 00:42:20,850 Så jeg ser en fejl her, du har en fejl i din SQL-syntaks. 887 00:42:20,850 --> 00:42:24,900 Lad mig springe tilbage til gedit, så lad mig gå tilbage til register.php, 888 00:42:24,900 --> 00:42:28,830 og hvad gjorde jeg udelade at var vigtigt sidste gang? 889 00:42:28,830 --> 00:42:29,722 Jeg har brug for dette. 890 00:42:29,722 --> 00:42:32,930 Du ønsker at vide, at andre end fra har bemærket før, men jeg har brug for dette. 891 00:42:32,930 --> 00:42:35,596 >> Så lad os nu gå tilbage, og dette var nyttigt at se i browseren 892 00:42:35,596 --> 00:42:37,680 og det er derfor i config.php vi spytte ud fejl. 893 00:42:37,680 --> 00:42:41,770 Lad os gå videre og genindlæse, Klik på Fortsæt, succes. 894 00:42:41,770 --> 00:42:47,060 Så lad mig nu gå over til min database her og klik på Brugere 895 00:42:47,060 --> 00:42:51,680 og gennemse, og læg mærke til jeg nu har David i min database her. 896 00:42:51,680 --> 00:42:55,810 Nu teknisk denne hjemmeside er endnu ikke på det offentlige internet, 897 00:42:55,810 --> 00:42:57,890 så jeg kan ikke have andre folk i at sætte her, 898 00:42:57,890 --> 00:43:01,120 men hvis jeg nu ville, for Eksempelvis sende mig en sms. 899 00:43:01,120 --> 00:43:03,920 Lad os gå ud på en lemmer her og se om det rent faktisk virker. 900 00:43:03,920 --> 00:43:07,331 Jeg har tænkt mig at gå videre og slette denne række 901 00:43:07,331 --> 00:43:09,080 og vi vil sløre dette i videoen senere 902 00:43:09,080 --> 00:43:11,900 så vi har ikke Hele internet sms'e mig, 903 00:43:11,900 --> 00:43:17,270 og vi vil nu gå op til browser, og vi vil gå over til foredrag 904 00:43:17,270 --> 00:43:22,040 og vi vil skrive i forskellige nummer her, tilmeld, succes. 905 00:43:22,040 --> 00:43:25,550 >> Så nu mit eget nummer er formentlig i databasen, og nu er den sjove del. 906 00:43:25,550 --> 00:43:28,774 Lad os rent faktisk at bruge PHP til at gøre noget programmeringsmæssigt, 907 00:43:28,774 --> 00:43:30,940 enten fra kommandolinjen linje eller fra et andet sted, 908 00:43:30,940 --> 00:43:32,773 og for nu er jeg bare kommer til at holde det simpelt 909 00:43:32,773 --> 00:43:36,230 og jeg har tænkt mig at gå ind i min biblioteket her og gøre følgende. 910 00:43:36,230 --> 00:43:44,920 Gedit script lad os sige, vi får kalder det tekst, #! / user / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 ligesom vi oplevede sidste gang. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Nu vil jeg kræver omfatter config.php, 914 00:43:55,055 --> 00:43:57,360 selvom dette måske inducere en lille fejl. 915 00:43:57,360 --> 00:44:03,960 Og nu jeg har tænkt mig at gå videre og sige rækker, forespørgsel, skal du vælge stjerne fra brugerne, 916 00:44:03,960 --> 00:44:08,149 og nu her vil jeg gøre en teknik fra sidste gang for hver rækker som række. 917 00:44:08,149 --> 00:44:09,690 Og jeg har tænkt mig at gøre noget simpelt. 918 00:44:09,690 --> 00:44:19,090 Printf lad os sige navn er dette, og nummer er det, backslash n. 919 00:44:19,090 --> 00:44:23,320 Og nu vil jeg til at passere i række citerer citat slut navn, 920 00:44:23,320 --> 00:44:28,140 og rækken citat Citat slut nummer, og lad os nu gå videre 921 00:44:28,140 --> 00:44:31,430 og min terminal vindue chmod denne a + x for at gøre 922 00:44:31,430 --> 00:44:33,970 dette script kaldet tekst eksekverbare. 923 00:44:33,970 --> 00:44:36,080 Og lad os nu køre tekst. 924 00:44:36,080 --> 00:44:37,590 >> OK, så fremskridt. 925 00:44:37,590 --> 00:44:39,960 Så jeg har nu skrevet en kommandolinje script, 926 00:44:39,960 --> 00:44:43,300 på et sprog, kaldet PHP, at på grund af at kræve linje, 927 00:44:43,300 --> 00:44:46,380 har adgang til alle dem konfiguration konstanter, som jeg er specificeret. 928 00:44:46,380 --> 00:44:48,177 Navnet på databasen, og så videre. 929 00:44:48,177 --> 00:44:50,260 I virkeligheden blot være klart at dette ikke er en fluke, 930 00:44:50,260 --> 00:44:54,730 lad mig gå videre og registrere, rigtig hurtigt, en anden ligesom Rob 931 00:44:54,730 --> 00:44:58,890 og vil give ham 555-1212 nummer. 932 00:44:58,890 --> 00:45:01,557 >> Og nu, hvis jeg kører scriptet igen, bemærk magt 933 00:45:01,557 --> 00:45:03,140 af, hvad vi gør med databasen. 934 00:45:03,140 --> 00:45:07,680 Nu har jeg straks set, hvad to andre rækker er i min database. 935 00:45:07,680 --> 00:45:10,699 Så lad os nu prøve at gøre noget selv amatør inde i, 936 00:45:10,699 --> 00:45:12,740 og det er den del, vi har ikke testes på forhånd, 937 00:45:12,740 --> 00:45:15,910 så sidste gang jeg gjorde det tingene gik grueligt galt, 938 00:45:15,910 --> 00:45:17,120 vi har video herom. 939 00:45:17,120 --> 00:45:18,286 >> Faktisk, ja, sjove side. 940 00:45:18,286 --> 00:45:20,480 Så sidste gang, i en foredrag ligesom for to år siden, 941 00:45:20,480 --> 00:45:23,230 besluttede vi, besluttede jeg, at være alt dette ville være en rigtig god idé 942 00:45:23,230 --> 00:45:28,150 til dynamisk at generere e-mails i klasse, ved hjælp af hele databasen CS50 943 00:45:28,150 --> 00:45:33,390 studerende, som havde givet os deres numre og deres cellphone luftfartsselskaber, som du 944 00:45:33,390 --> 00:45:36,290 måske husker fra pset0, hvordan at ræsonnere, viser det sig 945 00:45:36,290 --> 00:45:40,650 Jeg havde en mindre fejl i mit program og gjorde et par fejl i 2012, tror jeg. 946 00:45:40,650 --> 00:45:43,997 >> Hvorved, jeg havde for løkke, gjorde præcis denne slags ting, 947 00:45:43,997 --> 00:45:46,580 iteration i databasen, at få et navn fra databasen, 948 00:45:46,580 --> 00:45:49,940 navn fra databasen, og derefter på hver iteration af denne løkke jeg sendte en e-mail. 949 00:45:49,940 --> 00:45:54,130 Men i stedet for at sende en e-mail, jeg sendt en e-mail den første iteration, 950 00:45:54,130 --> 00:45:58,200 og to e-mails en anden iteration, sendt tre e-mails en anden iteration, som 951 00:45:58,200 --> 00:46:01,230 som du måske husker fra vores diskussion af asymptotisk notation 952 00:46:01,230 --> 00:46:06,400 denne store O i dårlige, ligesom n kvadreret er, hvor mange beskeder jeg har sendt, 953 00:46:06,400 --> 00:46:08,560 men det var endnu ikke e-mails det var tekstbeskeder. 954 00:46:08,560 --> 00:46:12,070 >> Og som du ved, fremmøde er ikke super høj mod slutningen af ​​semestret 955 00:46:12,070 --> 00:46:15,360 og så jeg tænkte det ville være sød ved tid til at sige: "Hvorfor er du ikke klasse?" 956 00:46:15,360 --> 00:46:17,880 I sms'en jeg sendt til hele klassen, 957 00:46:17,880 --> 00:46:22,140 og det var sjovt at lide 50% af klasse, men de resterende 50%, hvoraf 958 00:46:22,140 --> 00:46:26,102 ellevild, jeg sendte utroligt apologetiske søde noter 959 00:46:26,102 --> 00:46:28,560 til personalet undskylde for have forpasset foredraget bare 960 00:46:28,560 --> 00:46:29,530 denne gang, ikke? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> Så det ville grueligt galt. 963 00:46:34,030 --> 00:46:37,030 Så i denne ånd, lad os prøve denne igen, men blot med mit nummer. 964 00:46:37,030 --> 00:46:41,940 På forhånd i functions.php, Jeg har skrevet denne funktion her. 965 00:46:41,940 --> 00:46:44,250 Det hedder tekst, og det tager i tre argumenter. 966 00:46:44,250 --> 00:46:46,360 Et antal, en bærer, og en besked. 967 00:46:46,360 --> 00:46:50,390 >> Jeg bruger en switch-statement, som vidunderligt PHP tage strenge, ikke bare 968 00:46:50,390 --> 00:46:53,350 heltal, og jeg havde ikke gennemføre al den støtte for dette endnu, 969 00:46:53,350 --> 00:46:55,370 Jeg har netop gjort AT & T og Verizon. 970 00:46:55,370 --> 00:46:57,610 Fordi det viser sig at med disse luftfartsselskaber 971 00:46:57,610 --> 00:47:00,570 de har e-mail til SMS-gateways, hvor du kan faktisk 972 00:47:00,570 --> 00:47:05,529 Send en e-mail til en adresse ligesom telefonnummer på vtext.com 973 00:47:05,529 --> 00:47:08,070 og hvis brugeren ikke har blokeret meddelelserne, vil det gå igennem 974 00:47:08,070 --> 00:47:09,340 er en tekstbesked. 975 00:47:09,340 --> 00:47:13,270 >> Nu for at gøre dette, vil jeg nødt til at tilføje ét felt virkelig hurtigt til min database. 976 00:47:13,270 --> 00:47:15,470 Jeg har tænkt mig at gå ind i min struktur, og jeg er 977 00:47:15,470 --> 00:47:21,880 vil gå videre og tilføje en felt ved slutningen af ​​tabellen. 978 00:47:21,880 --> 00:47:25,227 Lad os klikke på Gå, og jeg er vil kalde dette luftfartsselskab 979 00:47:25,227 --> 00:47:27,310 og for nu jeg har tænkt mig at forlade dette som en bar tekst, 980 00:47:27,310 --> 00:47:29,320 men vi kan være mere avanceret i fremtiden. 981 00:47:29,320 --> 00:47:31,961 Jeg har tænkt mig at gå hurtigt ind i mit bord, og jeg er 982 00:47:31,961 --> 00:47:34,210 kommer til at slippe af med Rob, fordi det er en falsk nummer, 983 00:47:34,210 --> 00:47:38,540 Jeg har tænkt mig at gå ind i edit her, og jeg er kommer til at ændre min karriere manuelt 984 00:47:38,540 --> 00:47:43,410 at være Verizon, som det er, og nu herovre. 985 00:47:43,410 --> 00:47:44,980 >> Lad os gøre en hurtig sanity check. 986 00:47:44,980 --> 00:47:52,730 Lad os åbne vores tekst script, som ser sådan ud, bærer er% s. 987 00:47:52,730 --> 00:47:58,230 Vi laver en masse mere fejl kontrol, end jeg gjorde i 2012, bærer. 988 00:47:58,230 --> 00:48:01,160 Og nu, jeg har tænkt mig at gå fremad og re-køre scriptet. 989 00:48:01,160 --> 00:48:01,660 OK. 990 00:48:01,660 --> 00:48:06,100 Carrier er Verizon, hvilket betyder, nu forhåbentlig kan jeg gøre netop dette. 991 00:48:06,100 --> 00:48:08,360 Korrekt dette år, forhåbentlig, her er vi gå. 992 00:48:08,360 --> 00:48:12,200 >> Så inde i denne for-løkke, er jeg vil ikke kun har denne printf, 993 00:48:12,200 --> 00:48:15,990 Jeg vil også ringe til tekst og brugen af ​​denne funktion tilbagekaldelse 994 00:48:15,990 --> 00:48:19,670 var det tager et nummer, et bærer, og en besked. 995 00:48:19,670 --> 00:48:23,310 Så lad os se, er nummer kommer til at være rækken citat citat slut "nummer" 996 00:48:23,310 --> 00:48:31,660 rækken citat citat slut "transportør" og den sidste var beskeden. 997 00:48:31,660 --> 00:48:36,250 Må ikke skrue op dette år, semikolon. 998 00:48:36,250 --> 00:48:36,780 >> OK. 999 00:48:36,780 --> 00:48:38,280 Fingrene krydsede. 1000 00:48:38,280 --> 00:48:39,970 Lad os se om det virker. 1001 00:48:39,970 --> 00:48:41,720 Okay, så. 1002 00:48:41,720 --> 00:48:43,000 Her går vi. 1003 00:48:43,000 --> 00:48:47,380 Lad os låse telefonen op, krydse fingre, for fanden. 1004 00:48:47,380 --> 00:48:50,300 Undefined variable may-- oh Vent, vent, vent, real hurtigt. 1005 00:48:50,300 --> 00:48:51,340 Rigtig hurtigt, virkelig hurtigt. 1006 00:48:51,340 --> 00:48:53,380 Det er fuldstændig det værd. 1007 00:48:53,380 --> 00:48:57,710 Lad mig få fat i, lad mig få fat i, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Tak, teksterne har startet fra en anden. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Lad mig gå videre og åbne op real hurtig, dropbox.php / mail her. 1011 00:49:11,650 --> 00:49:12,660 Standby. 1012 00:49:12,660 --> 00:49:14,455 Fuldstændig værd. 1013 00:49:14,455 --> 00:49:17,430 Downloads. 1014 00:49:17,430 --> 00:49:18,560 OK, kilde src8m. 1015 00:49:18,560 --> 00:49:19,700 OK. 1016 00:49:19,700 --> 00:49:21,380 >> Har brug for en mere linje her. 1017 00:49:21,380 --> 00:49:24,530 Oh der er det, det er i Frosh IM, det er i register på tre. 1018 00:49:24,530 --> 00:49:28,820 Oh hej, Margo, mange tak. 1019 00:49:28,820 --> 00:49:31,130 OK, og jeg manglede denne linje her. 1020 00:49:31,130 --> 00:49:33,010 Så lad mig hurtigt fat denne linje kode, 1021 00:49:33,010 --> 00:49:36,200 som omfatter mail eller biblioteket at jeg faktisk vil bruge, 1022 00:49:36,200 --> 00:49:38,300 Jeg har tænkt mig at hurtigt gå tilbage til funktioner, 1023 00:49:38,300 --> 00:49:42,337 Jeg har tænkt mig at gå til toppen af ​​denne fil og kræver denne fil så godt, 1024 00:49:42,337 --> 00:49:45,420 og nu vil jeg virkelig krydse min fingre, når jeg gå tilbage til kommandoen 1025 00:49:45,420 --> 00:49:49,530 line script, som er inde i dagens lokale vært bibliotek. 1026 00:49:49,530 --> 00:49:50,610 Kør 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 Åh, OK. 1034 00:50:02,290 --> 00:50:03,870 Her går vi. 1035 00:50:03,870 --> 00:50:06,880 >> Mail får ny PHP mailer. 1036 00:50:06,880 --> 00:50:09,970 Har jeg gør det rigtigt? 1037 00:50:09,970 --> 00:50:11,067 Damn det. 1038 00:50:11,067 --> 00:50:12,150 At-- åh, vent, vent, vent. 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 Jeg lover, det er kommer til at være så det værd. 1042 00:50:18,630 --> 00:50:20,340 Adresse. 1043 00:50:20,340 --> 00:50:24,390 Det er derfor jeg ikke gør eksempler lige før klassen. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 De følgende modtagere mislykkedes. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Lad os prøve en sidste ting. 1048 00:50:33,040 --> 00:50:40,660 SMTP indstilles fra, tilsæt adresse, adressen er faktisk, at. 1049 00:50:40,660 --> 00:50:43,980 Lad os prøve denne sidste del i adresse. 1050 00:50:43,980 --> 00:50:47,210 Øv, jeg er virkelig ked af det lige nu. 1051 00:50:47,210 --> 00:50:47,854 Tak. 1052 00:50:47,854 --> 00:50:50,270 Men jeg virkelig værdsætter alle de tekster, du har været at sende. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Du har fået denne David. 1055 00:50:56,320 --> 00:50:59,310 Du blæser det. 1056 00:50:59,310 --> 00:51:01,720 Lad os overlade det der og vi vil løse på mandag. 1057 00:51:01,720 --> 00:51:04,290 Se dig derefter. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: Og nu Deep Tanker ved Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 Hvis et binært træ falder i en skov og ingen er omkring til C it-- [klukker]. 1061 00:51:17,590 --> 00:51:18,998