1 00:00:00,000 --> 00:00:10,393 >> [MUSIC SPILLE] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: All right. 4 00:00:12,120 --> 00:00:12,830 Velkommen tilbake. 5 00:00:12,830 --> 00:00:13,890 Dette er CS50. 6 00:00:13,890 --> 00:00:15,570 Dette er slutten av uke 8. 7 00:00:15,570 --> 00:00:18,360 Og som du vet, vi har ganske vanlig kontortid i noen 8 00:00:18,360 --> 00:00:21,090 av spisesalene, inkludert Annenberg. 9 00:00:21,090 --> 00:00:23,860 Og noen av teamet ber tok noen bilder i det siste. 10 00:00:23,860 --> 00:00:26,230 Og til ære for Halloween, vi trodde vi skulle 11 00:00:26,230 --> 00:00:30,160 dele en som heller fanget oss av overraskelse her i Annenberg Hall bare 12 00:00:30,160 --> 00:00:31,490 den andre natten. 13 00:00:31,490 --> 00:00:36,300 Din klassekamerat Jacob poserte for dette bildet, men var mer morsomt 14 00:00:36,300 --> 00:00:39,760 var på Facebook, den påfølgende samtale som skjedde etterpå. 15 00:00:39,760 --> 00:00:43,020 >> Hans første innlegg svar til hans bilde var dette. 16 00:00:43,020 --> 00:00:46,740 Noen få minutter senere, bestemte han til en opp seg selv med dette. 17 00:00:46,740 --> 00:00:53,800 Det gikk på da å gå til dette, og da, enda mer morsom måte 18 00:00:53,800 --> 00:00:55,320 er når hans mor stemte i. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 Og så til slutt, det synes dette var bare 21 00:01:01,800 --> 00:01:04,860 en fantastisk ruse for en spille som skjer. 22 00:01:04,860 --> 00:01:07,080 >> Så, hvis du ønsker å se Jacob og andre, 23 00:01:07,080 --> 00:01:10,880 blant dem Cynthia Meng, er hvem bak kulissene av CS50 sonen ansatte, 24 00:01:10,880 --> 00:01:13,970 hodet til denne nettadressen, og dette stykket her. 25 00:01:13,970 --> 00:01:18,810 Så uten videre, vi i dag fortsette denne titt på web-programmering, 26 00:01:18,810 --> 00:01:21,810 og selve etableringen av programmer som ikke kjøre på kommandolinjen, 27 00:01:21,810 --> 00:01:24,080 men i stedet kjøre innsiden av en nettleser. 28 00:01:24,080 --> 00:01:26,320 >> Antagelig nå, eller svært kort tid, du kommer 29 00:01:26,320 --> 00:01:30,200 å være midt i å implementere din egen web server, som 30 00:01:30,200 --> 00:01:31,700 er forskjellig fra web-programmering. 31 00:01:31,700 --> 00:01:36,210 Webserveren i pset6 handler om å skrive programvare som vet å ta 32 00:01:36,210 --> 00:01:39,300 HTTP-forespørsler fra en nettleser, eller til og med fra deg, et menneske, 33 00:01:39,300 --> 00:01:42,340 med et program som heter Telnet, og deretter svare på disse forespørslene enten 34 00:01:42,340 --> 00:01:48,600 ved å spytte ut en HTML-fil, eller en jpeg, eller en gif, eller enda en php-fil. 35 00:01:48,600 --> 00:01:52,490 >> Men med en web server, er det ikke ment å bare åpne en PHP-fil, 36 00:01:52,490 --> 00:01:55,260 noe som ender i php, og så spytte ut innholdet. 37 00:01:55,260 --> 00:01:58,440 Det er ment å gjøre hva til denne filen først? 38 00:01:58,440 --> 00:01:59,390 Så å si. 39 00:01:59,390 --> 00:02:04,060 Ikke kompilere det, sa vi på mandag, men rather-- Så tolke den. 40 00:02:04,060 --> 00:02:08,070 >> PHP er et tolket språk, og så en av de viktigste funksjonene i nett 41 00:02:08,070 --> 00:02:11,550 server, enskjønt implementert av oss, er denne evnen til webserveren 42 00:02:11,550 --> 00:02:12,490 å legge merke til, oh. 43 00:02:12,490 --> 00:02:14,580 Dette er en fil som slutter på .php. 44 00:02:14,580 --> 00:02:17,970 La meg ikke bare sende den til brukeren som det er statisk innhold, 45 00:02:17,970 --> 00:02:20,970 men heller la meg lese den linjen ved linje, fra venstre til høyre, og tolke den. 46 00:02:20,970 --> 00:02:23,030 >> Og for å gjøre, som du Gutta vil i hovedsak 47 00:02:23,030 --> 00:02:26,520 punt til et program i apparatet, og på en rekke datasystemer, 48 00:02:26,520 --> 00:02:27,500 bare kalt PHP. 49 00:02:27,500 --> 00:02:30,579 Det er navnet på PHP på språkets egen tolk. 50 00:02:30,579 --> 00:02:33,120 Så, det stykke vi gjennomføre for deg, og det som er igjen for deg, 51 00:02:33,120 --> 00:02:35,240 til slutt, er en rekke av stykker, blant hvilke 52 00:02:35,240 --> 00:02:37,960 implementerer støtte for statisk innhold. 53 00:02:37,960 --> 00:02:40,180 >> Men nå, og med Problemet satt syv, du er 54 00:02:40,180 --> 00:02:43,660 kommer til å begynne å overgang til faktisk skrive PHP-kode 55 00:02:43,660 --> 00:02:45,970 som blir tolket i å snakke med en back end 56 00:02:45,970 --> 00:02:47,960 database som lagrer informasjon. 57 00:02:47,960 --> 00:02:51,020 Så la oss bedre forstå først et par av disse superglobals 58 00:02:51,020 --> 00:02:53,720 og hvor mye strøm du komme seg ut av boksen for gratis 59 00:02:53,720 --> 00:02:55,250 med et språk som PHP. 60 00:02:55,250 --> 00:02:57,350 Ting du ikke trenger å gjennomføre selv. 61 00:02:57,350 --> 00:03:01,700 >> Så, vi så på mandag $ _GET, som er en superglobal, 62 00:03:01,700 --> 00:03:05,496 som er bare PHP taler for en global variabelen du får tilgang til noe. 63 00:03:05,496 --> 00:03:06,620 Og hva som er inne på $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Hva er inni denne 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å Minst én person vet. 68 00:03:19,020 --> 00:03:21,590 Hva er inni på $ _GET? 69 00:03:21,590 --> 00:03:22,426 Yeah? 70 00:03:22,426 --> 00:03:24,130 >> PUBLIKUM: Det er de variablene du putter i søkestrengen. 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 variablene du satt i søkestrengen. 73 00:03:26,488 --> 00:03:29,910 Så, i våre eldre eksempel på reimplementing Google når vi hadde 74 00:03:29,910 --> 00:03:34,130 en URL, og deretter spørsmålstegn, som avgrenser starten av HTTP 75 00:03:34,130 --> 00:03:37,950 parametere, så vi hadde q lik noe, som q lik katter, 76 00:03:37,950 --> 00:03:41,500 hva ville automatisk gå inn av at $ _GET super globalt for deg, 77 00:03:41,500 --> 00:03:47,430 på grunn av PHP, er en nøkkel av Q, og derav av verdi for katter. 78 00:03:47,430 --> 00:03:51,250 >> Med andre ord, $ _GET og alle disse tingene er assosiative arrays, 79 00:03:51,250 --> 00:03:54,530 hash tabeller slags, at butikk nøkler og verdier. 80 00:03:54,530 --> 00:03:57,980 Nå, tilbake i pset5, hash Tabellen du kanskje har implementert, 81 00:03:57,980 --> 00:04:00,220 eller prøver du kanskje har implementert, egentlig 82 00:04:00,220 --> 00:04:04,010 var effektivt en assosiativ array, en datastruktur 83 00:04:04,010 --> 00:04:07,220 der du kan knytte taster med verdier. 84 00:04:07,220 --> 00:04:09,690 >> Men i pset5, var verdiene trivielt. 85 00:04:09,690 --> 00:04:12,430 Verdien var egentlig sant eller usant. 86 00:04:12,430 --> 00:04:13,900 Er ordet i ordboka? 87 00:04:13,900 --> 00:04:18,279 Så, når du hashet et ord som apple for å se om Apple er i ordboken, 88 00:04:18,279 --> 00:04:21,820 sjekken funksjon formodentlig returnert sant eller usant. 89 00:04:21,820 --> 00:04:24,120 Så, det er effektivt verdi vi får tilbake. 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 knytte mer interessant verdier enn bare sant eller usant 92 00:04:28,830 --> 00:04:30,790 med nøkler, som eple. 93 00:04:30,790 --> 00:04:33,909 Du kan faktisk returnere en vilkårlig streng, og faktisk, 94 00:04:33,909 --> 00:04:36,200 det er hva $ _GET og disse andre variabler lar deg gjøre. 95 00:04:36,200 --> 00:04:40,595 >> Så $ _POST er lik i ånden, men hvis du sender inn et skjema via post, 96 00:04:40,595 --> 00:04:44,490 en annen HTTP-metoden som er brukt til ting som kredittkort, 97 00:04:44,490 --> 00:04:48,410 og privat informasjon, og selv binær informasjon som bilder, 98 00:04:48,410 --> 00:04:51,840 disse tingene ende opp inne på $ _POST. 99 00:04:51,840 --> 00:04:53,770 Og faktisk etter filer som JPEG-bilder og whatnot, 100 00:04:53,770 --> 00:04:58,290 det er enda en annen som ikke er her oppe kalt $ _files også. 101 00:04:58,290 --> 00:05:01,280 >> Så, server vi vil ikke dvele på også mye, men det gir deg tilgang 102 00:05:01,280 --> 00:05:04,860 å sortere på lavere nivå detaljer om selve serveren du bruker. 103 00:05:04,860 --> 00:05:07,430 Cookie og økt, skjønt, vi vil effektivt se nå. 104 00:05:07,430 --> 00:05:10,940 Det siste er det vi bruker for å implementere oppfatningen av en handlekurv. 105 00:05:10,940 --> 00:05:14,480 En super enkel en, men tilbakekalling at vi hadde dette eksempelet her, 106 00:05:14,480 --> 00:05:17,640 telle hvor mange ganger du hadde besøkt denne siden før. 107 00:05:17,640 --> 00:05:20,850 >> Men i dag, i stedet for å bare se på Effekten av dette, la oss åpne 108 00:05:20,850 --> 00:05:22,640 Chrome Inspector, som du kan vanligvis 109 00:05:22,640 --> 00:05:25,740 gjøre ved å høyreklikke eller kontroll klikke hvor som helst på en webside, 110 00:05:25,740 --> 00:05:27,250 og velg deretter inspisere element. 111 00:05:27,250 --> 00:05:31,600 Eller du kan gå gjennom menyene som vi beskriver i pset6 sin spec. 112 00:05:31,600 --> 00:05:35,020 Og jeg kommer til kategorien Nettverk her, og la oss se på et øyeblikk 113 00:05:35,020 --> 00:05:37,590 HTTP-trafikk som er går frem og tilbake. 114 00:05:37,590 --> 00:05:40,929 >> La meg først gå videre og klar Chrome buffer. 115 00:05:40,929 --> 00:05:43,470 Så noen av dere kan bli kjent med denne teknikken allerede 116 00:05:43,470 --> 00:05:45,790 og vi kommer til å bruke den for debugging formål her. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Nå er vi som datamaskinen Forskerne kommer til å starte 119 00:05:50,890 --> 00:05:53,920 gjør dette for debugging formål, hvorved 120 00:05:53,920 --> 00:05:55,910 vi vil tømme bufferen, typisk, slik at vi 121 00:05:55,910 --> 00:05:57,670 kan bli kvitt ting som kalles cookies. 122 00:05:57,670 --> 00:06:01,700 Så du er nok generelt kjent med hva cookies er, eller i det minste 123 00:06:01,700 --> 00:06:04,370 at de eksisterer, men hva er din forståelse av dem, 124 00:06:04,370 --> 00:06:06,920 som bare en bruker av datamaskiner, hva er en cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Yeah. 127 00:06:09,990 --> 00:06:14,391 >> PUBLIKUM: Det er litt of-- vel, ikke bit i en periode på informatikk. 128 00:06:14,391 --> 00:06:18,303 Det er et stykke data som et nettsted sender til deg for 129 00:06:18,303 --> 00:06:20,209 å være i stand til å ta opp statistikk på deg. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, bra. 131 00:06:21,250 --> 00:06:24,980 Så det er et stykke data som et server, setter på datamaskinen, 132 00:06:24,980 --> 00:06:28,840 og la oss generalisere det enda mer, er det en viktig value-- godt, 133 00:06:28,840 --> 00:06:30,064 som begynner å bli mer presis. 134 00:06:30,064 --> 00:06:31,980 Det er et stykke informasjon, et stykke av data, 135 00:06:31,980 --> 00:06:34,430 at en server er i stand å sette på din datamaskin 136 00:06:34,430 --> 00:06:38,592 og svært ofte, gjør serveren dette slik som å huske hvem du er. 137 00:06:38,592 --> 00:06:40,300 Så for eksempel, odds er du sannsynligvis 138 00:06:40,300 --> 00:06:42,982 logget inn på nettsteder som Facebook, eller Gmail, eller andre før, 139 00:06:42,982 --> 00:06:44,940 og du logge inn med din brukernavn og passord, 140 00:06:44,940 --> 00:06:49,000 og deretter etter at, i et visst antall av minutter eller timer eller dager, 141 00:06:49,000 --> 00:06:52,970 serveren husker at du er faktisk logget inn. 142 00:06:52,970 --> 00:06:54,600 Nå, hvordan er det egentlig som skjer? 143 00:06:54,600 --> 00:06:58,630 Fordi du absolutt ikke å måtte skrive brukernavn og passord hver gang 144 00:06:58,630 --> 00:07:00,760 du navigerer til et annen side på Facebook. 145 00:07:00,760 --> 00:07:02,570 Så det viser seg at cookies er svaret. 146 00:07:02,570 --> 00:07:05,360 >> En cookie du kan tenke på som, slags liker, en digital hånd 147 00:07:05,360 --> 00:07:09,200 stempel som du kan få på en fornøyelses park eller en klubb som i hovedsak 148 00:07:09,200 --> 00:07:11,740 indikerer at du har vært her før, og du har allerede 149 00:07:11,740 --> 00:07:16,070 vist din ID til dørvakt, for eksempel, og at klubben eller parken 150 00:07:16,070 --> 00:07:19,050 skal nå anta at du har godkjent allerede. 151 00:07:19,050 --> 00:07:21,270 Du har allerede blitt identifisert av den. 152 00:07:21,270 --> 00:07:24,740 >> Så med det i tankene, La oss åpne opp teller her. 153 00:07:24,740 --> 00:07:27,220 La meg gå videre, jeg bare gjorde det, og fjerne alle mine cookies. 154 00:07:27,220 --> 00:07:29,970 Og nå hva jeg skal gjøre er hold Shift, bare for godt mål, 155 00:07:29,970 --> 00:07:31,740 og tvangs oppdater siden. 156 00:07:31,740 --> 00:07:34,170 Skift bare sørg at ingenting blir lagret. 157 00:07:34,170 --> 00:07:36,850 Og her er forespørselen som gikk frem og tilbake. 158 00:07:36,850 --> 00:07:41,560 Så over her har vi en forespørsel, og la meg zoome inn her nede, og mye av dette 159 00:07:41,560 --> 00:07:44,710 er liksom uinteressante detaljer for nå som nettleseren har automatisk 160 00:07:44,710 --> 00:07:47,800 sendt, men la oss klikk på Vis Kilde for å se de rå overskrifter. 161 00:07:47,800 --> 00:07:51,700 >> Og hvis du har prøvd seg på pset6 allerede, vil du sikkert kjenne igjen ting 162 00:07:51,700 --> 00:07:54,990 som dette, og kanskje noen av disse andre linjer her, 163 00:07:54,990 --> 00:07:59,040 men hva er mer interessant for dag hvis jeg rulle ned, ikke til forespørselen 164 00:07:59,040 --> 00:08:02,870 men til den såkalte respons, denne linjen trolig ser kjent ut. 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 Angivelig er dette dato og klokkeslett på serveren 167 00:08:07,060 --> 00:08:08,268 og det er en haug med ting. 168 00:08:08,268 --> 00:08:09,290 Å, dette er interessant. 169 00:08:09,290 --> 00:08:13,430 >> Det viser seg at når du bruker PHP, i det minste i denne serveren, 170 00:08:13,430 --> 00:08:16,360 serveren spytter ut hva versjon av PHP du bruker. 171 00:08:16,360 --> 00:08:18,962 Som, faktisk, for sikkerhet formål, er ikke en god ting. 172 00:08:18,962 --> 00:08:21,170 Men, vil vi komme tilbake til det en annen gang kanskje. 173 00:08:21,170 --> 00:08:25,740 Men nå er dette den saftig linje i dag, og vi så kort noen av disse, 174 00:08:25,740 --> 00:08:29,240 Jeg tror med Facebook når vi stakk rundt Inspector på den tiden, 175 00:08:29,240 --> 00:08:33,380 sett cookie er det som er å plante at lite stykke informasjon 176 00:08:33,380 --> 00:08:34,890 på din datamaskin. 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 forteller nettleseren din, Chrome, IE, uansett, 179 00:08:39,970 --> 00:08:44,480 hei browser butikken på brukerens harddisk eller i brukerens RAM, 180 00:08:44,480 --> 00:08:49,680 en nøkkel kalles PHPSESSID, som er en stenografi notasjon for session-ID, 181 00:08:49,680 --> 00:08:53,670 og gi den en verdi på 0vlk8t, prikk, prikk, prikk. 182 00:08:53,670 --> 00:08:56,480 En veldig lang pseudo tilfeldig alfanumerisk streng. 183 00:08:56,480 --> 00:08:59,480 Det er bare en virkelig stort tall, men det er kodet med bokstaver og tall 184 00:08:59,480 --> 00:09:03,550 slik at størrelsen av det kan bli enda større enn tallene alene. 185 00:09:03,550 --> 00:09:06,947 Og så, forresten, Sti = /, at betyr bare at denne informasjonskapselen skal være 186 00:09:06,947 --> 00:09:08,780 forbundet med helhet på nettsiden, 187 00:09:08,780 --> 00:09:11,150 ikke bare et spesifikt siden hele greia. 188 00:09:11,150 --> 00:09:12,930 Så dette er at virtuelle hånd stempel. 189 00:09:12,930 --> 00:09:16,330 Det er som om serveren, Facebook, eller i vårt tilfelle apparatet, 190 00:09:16,330 --> 00:09:21,140 har bokstavelig talt skrevet 0vlk8t og så videre, på hånden din. 191 00:09:21,140 --> 00:09:24,360 Legg merke til hva serverens, ikke gjør er det ikke 192 00:09:24,360 --> 00:09:27,730 lagring av brukernavnet mitt, sikkert ikke lagre passordet mitt. 193 00:09:27,730 --> 00:09:31,710 >> I stedet ser det ut til å være lagring pseudo tilfeldig informasjon 194 00:09:31,710 --> 00:09:35,010 slik at ingen kan gjette hva min hånd stempel er. 195 00:09:35,010 --> 00:09:37,590 På serversiden, i mellomtiden, serveren 196 00:09:37,590 --> 00:09:40,370 kommer til å huske, sannsynligvis i en database eller noe, 197 00:09:40,370 --> 00:09:46,490 at brukeren, som i fremtiden presenterer en håndstempel 0vlk8t, prikk, 198 00:09:46,490 --> 00:09:51,440 prikk, prikk, bør være knyttet til dette Særlig handlekurv, så å si. 199 00:09:51,440 --> 00:09:55,060 Med andre ord, hvis jeg nå gå tilbake hit og åpne denne siden, 200 00:09:55,060 --> 00:09:58,020 hvordan serveren vet som jeg besøkte en gang? 201 00:09:58,020 --> 00:10:01,730 >> Eller hvis jeg gjør det igjen, hvordan serveren vet at jeg har besøkt det to ganger? 202 00:10:01,730 --> 00:10:04,680 Vel, hvis jeg går ned til dette nyeste forespørsel, som 203 00:10:04,680 --> 00:10:09,150 Nå er den tredje som jeg har sendt totalt, legge merke til min forespørsel nå. 204 00:10:09,150 --> 00:10:11,300 Det er fortsatt dette be opp her, samme 205 00:10:11,300 --> 00:10:15,040 som før, det er fortsatt en hel haug av ting som vi har oversett som før, 206 00:10:15,040 --> 00:10:19,350 men den aller siste header, dette tid, fordi jeg har vært her før, 207 00:10:19,350 --> 00:10:21,980 er en presentasjon av denne virtuelle hånd stempel. 208 00:10:21,980 --> 00:10:28,957 >> Hvor denne linjen her, ikke satt cookie men cookie kolon PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 det er bare min leseren automatisk presentasjonen av denne håndstempel, slik at 210 00:10:32,040 --> 00:10:37,910 Nå serveren, så snart den er klar, ooh, dette bruker 0vlk8t prikk, prikk, prikk, 211 00:10:37,910 --> 00:10:42,010 Nå kan jeg huske hvem han eller hun er og opprette tilknytningen med den brukeren uansett 212 00:10:42,010 --> 00:10:46,450 informasjonen jeg vil, og alle at informasjonen kan lagres av deg, 213 00:10:46,450 --> 00:10:50,130 programmerer, i $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Så for å være klar, hvis jeg åpner opp virkelig rask i gedit at selve filen, counter.php, 215 00:10:57,170 --> 00:11:02,340 i min lokale verten offentlig katalog som før, legge merke til at, ja, 216 00:11:02,340 --> 00:11:06,860 Jeg er i siste instans lagring i $ _SESSION Quote unquote "teller" 217 00:11:06,860 --> 00:11:10,110 verdien av telleren som tidligere Jeg får fra disse linjene her oppe at vi 218 00:11:10,110 --> 00:11:13,010 sett på sist gang pluss en. 219 00:11:13,010 --> 00:11:14,980 Så under panseret, det er alle informasjonskapsler er. 220 00:11:14,980 --> 00:11:17,563 Det er bare den slags digital hånd stempel går frem og tilbake, 221 00:11:17,563 --> 00:11:20,450 og ærlig hvis du åpner Chrome Inspektør på hvilken som helst nettside 222 00:11:20,450 --> 00:11:22,580 du besøker i dag, med super høy sannsynlighet, 223 00:11:22,580 --> 00:11:25,450 du kommer til å se kanskje en, kanskje et halvt dusin cookies 224 00:11:25,450 --> 00:11:26,650 blir husket av deg. 225 00:11:26,650 --> 00:11:29,500 >> Og enda verre, hvis de nettstedet du besøker 226 00:11:29,500 --> 00:11:32,640 alle har annonser, som er sikkert ganske vanlig i dag, 227 00:11:32,640 --> 00:11:36,100 og hvis disse annonsene kommer fra noen sentrale parti, noen 228 00:11:36,100 --> 00:11:39,000 som Google eller AdWords som de ringe en av sine produkter 229 00:11:39,000 --> 00:11:42,880 eller andre slike leverandører som selge annonser, det som er interessant, 230 00:11:42,880 --> 00:11:46,510 og ærlig hva som er en liten betenkelig, om hvordan HTTP fungerer, 231 00:11:46,510 --> 00:11:50,855 er at hvis du har en annonse innebygd i Facebook.com, og Google.com, 232 00:11:50,855 --> 00:11:54,240 og Harvard.edu, ubegrenset antall av nettsteder, så det er slik 233 00:11:54,240 --> 00:11:58,130 at det er en middelaldrende mann som soner opp annonser for alle tre av disse nettstedene, 234 00:11:58,130 --> 00:12:02,110 det viser seg at cookies er per domene. 235 00:12:02,110 --> 00:12:05,910 >> Så hvis du har en annonse som kommer fra samme selskap på ulike nettsteder, 236 00:12:05,910 --> 00:12:11,140 at selskapet effektivt kan spore hvem som du er over alle disse nettstedene. 237 00:12:11,140 --> 00:12:13,140 Harvard kanskje ikke vet du besøker Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook er kanskje ikke kjenner og du besøker Harvard. 239 00:12:15,306 --> 00:12:18,160 Men uansett ad service de bruker om at domenet er 240 00:12:18,160 --> 00:12:21,710 tilstede i begge Harvard.edu web sider og Facebook.com nettsider, 241 00:12:21,710 --> 00:12:26,850 dette midt mann sikkert vet hvem du er på grunn av disse informasjonskapslene blir delt 242 00:12:26,850 --> 00:12:30,910 tvers, eller snarere å, at såkalt mellommann. 243 00:12:30,910 --> 00:12:33,820 >> Så vi vil komme tilbake til dette i sikkerhetsimplikasjoner av disse, 244 00:12:33,820 --> 00:12:37,170 men det er mye informasjon blir lagret om deg hver gang du 245 00:12:37,170 --> 00:12:40,120 besøke de fleste hvilken som helst webside på Internett og det virkelig 246 00:12:40,120 --> 00:12:42,877 reduserer til denne svært enkel mekanisme. 247 00:12:42,877 --> 00:12:44,710 Hva skjer da, hvis du er super paranoid 248 00:12:44,710 --> 00:12:48,190 og du bestemmer deg for å gå inn i Chrome eller IE eller hva, og slå av informasjonskapslene? 249 00:12:48,190 --> 00:12:49,365 Hva skjer? 250 00:12:49,365 --> 00:12:50,790 Yeah? 251 00:12:50,790 --> 00:12:53,170 Du really-- du har gjort dette riktig? 252 00:12:53,170 --> 00:12:54,350 OK. 253 00:12:54,350 --> 00:12:55,994 Nei, gå videre. 254 00:12:55,994 --> 00:12:59,645 >> PUBLIKUM: Enkelte nettsteder har ikke en funksjon uten det liker 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 nettsteder vil bare slutte å jobbe. 257 00:13:02,311 --> 00:13:05,520 Og i de fleste nettsteder i disse dager som fundamentalt avhengige av cookies, 258 00:13:05,520 --> 00:13:08,360 spesielt hvis de har du logger i, er de bare kommer til å bryte. 259 00:13:08,360 --> 00:13:10,360 Fordi vurdere alternativ, hvis nettsiden 260 00:13:10,360 --> 00:13:14,480 har ingen mulighet til å huske hvem du er, og derfor nettleseren er ikke 261 00:13:14,480 --> 00:13:16,949 representerer med hver HTTP anmodning fra denne hånden stempel, 262 00:13:16,949 --> 00:13:18,740 effektivt et nettsted som Facebooks pågå 263 00:13:18,740 --> 00:13:22,050 til å be deg om å logg inn hver darn gang 264 00:13:22,050 --> 00:13:26,200 du bytter side, eller klikk på en lenke, som er sikkert ikke en spesielt god brukeropplevelse 265 00:13:26,200 --> 00:13:26,920 opplevelse. 266 00:13:26,920 --> 00:13:30,020 >> Slik at det også er blant de avveininger. 267 00:13:30,020 --> 00:13:34,140 Så uten videre, la oss ta for gitt at med web-programmering, 268 00:13:34,140 --> 00:13:37,630 i språk som PHP, kan du huske informasjon som det i oppgavesettet 269 00:13:37,630 --> 00:13:41,550 syv når du implementere din egen E * Trade-lignende nettside med å kjøpe 270 00:13:41,550 --> 00:13:45,710 og selge aksjer, vil du huske nøyaktig hva brukeren har kjøpt og solgt 271 00:13:45,710 --> 00:13:49,110 og hvem han eller hun er ved hjelp av denne sesjonen. 272 00:13:49,110 --> 00:13:51,110 Men vi kommer til å trenge en mer avansert måte enn e-post 273 00:13:51,110 --> 00:13:52,640 å begynne å holde informasjon rundt. 274 00:13:52,640 --> 00:13:53,140 Høyre? 275 00:13:53,140 --> 00:13:56,780 >> På mandag, snakket vi om Frosh direktemeldinger og hvordan i versjon en av den nettsiden, 276 00:13:56,780 --> 00:14:00,250 år siden, alt vi gjorde var e-post til Proctor som finnes 277 00:14:00,250 --> 00:14:04,250 ansvarlig for egenutført sport program, navnet, og kjønn, 278 00:14:04,250 --> 00:14:07,330 og hvorvidt de er en kaptein, og dorm av noen som er 279 00:14:07,330 --> 00:14:10,136 registrering av en egenutført sport. 280 00:14:10,136 --> 00:14:13,010 Så det er ikke dårlig, men han eller hun deretter måtte troll gjennom sin e-post, 281 00:14:13,010 --> 00:14:16,010 lage et regneark eller noe sånt det, for å holde alt organisert. 282 00:14:16,010 --> 00:14:19,750 Så sikkert vi som programmerere kan gjøre dette for at Proctor. 283 00:14:19,750 --> 00:14:22,970 Og så inn i SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 som kommer til å se pen annerledes enn både C og PHP, 285 00:14:26,050 --> 00:14:30,990 og du vil dykke i mye flere hender på PHP og oppgavesettet syv men også SQL, 286 00:14:30,990 --> 00:14:35,310 eller SQL, er dette et språk som du bruker til å snakke til en database. 287 00:14:35,310 --> 00:14:36,480 >> Men hva er en database? 288 00:14:36,480 --> 00:14:38,440 Vel du tenker på en database, i hvert fall for nå, 289 00:14:38,440 --> 00:14:41,750 som bare blir som en Excel-fil, eller hvis du er en Mac-bruker et tall fil, 290 00:14:41,750 --> 00:14:44,400 eller hvis du er en Google Apps bruker et Google-regneark, 291 00:14:44,400 --> 00:14:49,120 det er effektivt en database, eller egentlig spesielt en relasjonsdatabase. 292 00:14:49,120 --> 00:14:53,070 En relasjonsdatabase er bare noe som har rader og kolonner, 293 00:14:53,070 --> 00:14:56,440 og du kan lagre alle typer informasjonen i disse rader eller kolonner. 294 00:14:56,440 --> 00:15:00,480 >> Men hva er fint om SQL, og om faktiske databaser, ikke bare 295 00:15:00,480 --> 00:15:04,910 regneark eller Google-regneark, er at du kan bruke et språk 296 00:15:04,910 --> 00:15:09,000 å faktisk kjøre spørringer til sette inn data, for å fjerne data, 297 00:15:09,000 --> 00:15:11,620 for å lete etter data, selv viktigst, og du 298 00:15:11,620 --> 00:15:16,110 trenger ikke å bruke det ganske manuelt som du kanskje vanligvis et Google 299 00:15:16,110 --> 00:15:17,690 regneark som dette. 300 00:15:17,690 --> 00:15:22,217 >> Så i SQL, er det en haug med prinsipielle uttalelser eller biter 301 00:15:22,217 --> 00:15:23,300 av funksjonalitet innebygd. 302 00:15:23,300 --> 00:15:26,450 Det er mange flere enn disse, men du kan gå en stor avstand 303 00:15:26,450 --> 00:15:28,620 bare ved å vite at dette språket kalles 304 00:15:28,620 --> 00:15:30,840 SQL har minst fire påstander du kan utnytte. 305 00:15:30,840 --> 00:15:34,420 >> Slette, for å fjerne data, Sett inn, for å legge til rader, 306 00:15:34,420 --> 00:15:37,340 Update, for endring rader, og velge, 307 00:15:37,340 --> 00:15:39,860 for å komme tilbake rader og det er faktisk hva SQL gjør. 308 00:15:39,860 --> 00:15:43,810 Den opererer helt på rader slik at når du setter inn, eller fjerne, 309 00:15:43,810 --> 00:15:47,470 eller oppdatere, eller velg hva du er å komme tilbake som en såkalt resultatsett, 310 00:15:47,470 --> 00:15:49,690 som en rekke rader. 311 00:15:49,690 --> 00:15:51,700 En haug med rader fra en tabell. 312 00:15:51,700 --> 00:15:54,050 >> Så tilbake i dag, og selv den dag i dag, 313 00:15:54,050 --> 00:15:56,560 du kan samhandle med database ved hjelp av en kommandolinje, 314 00:15:56,560 --> 00:15:59,691 men det er ikke spesielt morsomt å bruke svart og hvit stil vindu 315 00:15:59,691 --> 00:16:02,190 og faktisk utføre kommandoer og rote rundt databasen. 316 00:16:02,190 --> 00:16:06,054 Et grafisk brukergrensesnitt, eller GUI, er mye mer å foretrekke, uten tvil, 317 00:16:06,054 --> 00:16:08,970 og så verktøyet vi anbefaler, og forhåndsinstallert for deg på apparatet 318 00:16:08,970 --> 00:16:10,580 kalles phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 Det er en total tilfeldighet at Navnet på denne tingen har PHP i det, 320 00:16:14,060 --> 00:16:17,430 det betyr bare at folket som skrev dette programmet 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 til syvende og sist om å administrere en databaseserver, som en MySQL server 323 00:16:23,740 --> 00:16:26,589 at du kan ha, som du gjør, i CS50 apparatet. 324 00:16:26,589 --> 00:16:29,130 Så det er flere detaljer her enn vi trenger å bry seg om i dag, 325 00:16:29,130 --> 00:16:33,280 men hva er nøkkelen er at på venstre side er en liste over databasene 326 00:16:33,280 --> 00:16:36,040 at du har på datamaskinen, på CS50 apparatet, 327 00:16:36,040 --> 00:16:40,090 eller komme endelige prosjekter som du kanskje ha på en tredjepart, et selskaps 328 00:16:40,090 --> 00:16:43,415 nettside eller web server, som du kan betale for plass. 329 00:16:43,415 --> 00:16:45,290 Så til venstre er den databaser, hvorav ett 330 00:16:45,290 --> 00:16:48,750 er pset7 som jeg lånte fra neste uker PSet, og deretter på toppen 331 00:16:48,750 --> 00:16:51,570 Det merker det er en haug med faner, hvorav den ene 332 00:16:51,570 --> 00:16:55,150 er databaser, SQL, status, brukere, eksport og så videre. 333 00:16:55,150 --> 00:16:56,900 Så du kan gå en lang måte bare ved å realisere 334 00:16:56,900 --> 00:16:59,770 at det meste av brukergrensesnittet er i øvre venstre kolonne 335 00:16:59,770 --> 00:17:02,650 og øverst der oppe. 336 00:17:02,650 --> 00:17:04,980 Så hva kan vi egentlig gjøre med dette? 337 00:17:04,980 --> 00:17:08,609 Vel, la oss begynne å lage en bit av informasjon som følger. 338 00:17:08,609 --> 00:17:11,760 >> Anta at følgende er tilfelle, som vil være i løpet av få dager, 339 00:17:11,760 --> 00:17:14,440 du ønsker å implementere en nettside, kalt CS50 Finans, 340 00:17:14,440 --> 00:17:17,328 og denne nettsiden kan du kjøpe sitere unquote og selge aksjer. 341 00:17:17,328 --> 00:17:19,619 Og det kommer til å regne ut prisen på disse aksjene, 342 00:17:19,619 --> 00:17:22,380 til slutt som du ser, ved å snakke med Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Hvilke, fantastisk, har en gratis tjeneste der du kan passere i en aksje ticker 344 00:17:26,250 --> 00:17:29,830 som GOOG for Google, og det vil gi deg tilbake Googles nåværende aksje 345 00:17:29,830 --> 00:17:32,250 pris innenfor det siste noen minutter minst. 346 00:17:32,250 --> 00:17:35,080 >> Så du kommer til å bruke det, i siste instans, å late for brukeren 347 00:17:35,080 --> 00:17:37,750 å kjøpe og selge faktiske bestandene som bruker virtuelle penger, 348 00:17:37,750 --> 00:17:39,750 men det aller første brukeren kommer til å se 349 00:17:39,750 --> 00:17:43,850 er dette innloggingsbildet som ber dem for deres brukernavn og passord. 350 00:17:43,850 --> 00:17:46,540 Og så, en av den første utfordringer for deg i pset7 351 00:17:46,540 --> 00:17:50,460 kommer til å være å implementere bakenden database, regneark hvis du vil, 352 00:17:50,460 --> 00:17:53,369 som kommer til å lagre brukernes navn og passord 353 00:17:53,369 --> 00:17:56,660 og til slutt hvilke aksjer de eier, og hvor mange, og hvor mye penger de har, 354 00:17:56,660 --> 00:18:00,110 så en haug med andre ting i andre tabeller eller regneark. 355 00:18:00,110 --> 00:18:05,020 >> Så la oss ta en titt på hvordan dette kan synes ved første øyekast. 356 00:18:05,020 --> 00:18:06,980 Jeg kommer til å gå tilbake til apparatet og jeg er 357 00:18:06,980 --> 00:18:14,102 kommer til å gå til denne nettadressen her phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 og du vil se at det tar meg til et grensesnitt 359 00:18:16,060 --> 00:18:18,520 akkurat som vi så på skjermbilde, og her jeg 360 00:18:18,520 --> 00:18:21,560 har en ekstra database kalt foredrag for i dag 361 00:18:21,560 --> 00:18:24,280 og la meg gå videre først og klikk på pset7. 362 00:18:24,280 --> 00:18:27,940 >> Jeg synes å ha et par alternativer, ett for nye, for å lage en ny tabell, 363 00:18:27,940 --> 00:18:30,770 og en link til brukerne, som er en tabell jeg allerede opprettet. 364 00:18:30,770 --> 00:18:31,790 Så hva er en tabell? 365 00:18:31,790 --> 00:18:33,740 Så hvis du brukte Excel før, og hvis du har 366 00:18:33,740 --> 00:18:37,110 brukte tall eller Google Regneark, åpner du opp et vindu 367 00:18:37,110 --> 00:18:39,350 og du får en hel haug av rader og kolonner, 368 00:18:39,350 --> 00:18:43,120 men da du vanligvis har regneark langs bunnen, eller egne faner. 369 00:18:43,120 --> 00:18:46,140 Du kan tenke på hver regneark som en tabell 370 00:18:46,140 --> 00:18:51,150 slik at databasen, til slutt, er en Kombinasjonen av en eller flere tabeller, en 371 00:18:51,150 --> 00:18:54,064 eller flere regneark, i verden av en normal regneark. 372 00:18:54,064 --> 00:18:55,980 Så la meg gå videre og klikk på dette regnearket 373 00:18:55,980 --> 00:18:59,420 at jeg forhåndslagde, kalt brukere, a.k.a. 374 00:18:59,420 --> 00:19:00,700 Databasetabell. 375 00:19:00,700 --> 00:19:04,130 Og hvis jeg ruller nedover her, la meg zoome ut litt, 376 00:19:04,130 --> 00:19:08,479 dette er hva phpMyAdmin forteller oss er inne i denne tabellen akkurat nå. 377 00:19:08,479 --> 00:19:11,020 Det er litt forvirrende i begynnelsen blikk fordi UI er ikke 378 00:19:11,020 --> 00:19:15,140 den peneste i verden, men hva som er interessant er denne delen her. 379 00:19:15,140 --> 00:19:17,970 ID, brukernavn og hasj. 380 00:19:17,970 --> 00:19:20,510 >> På forhånd, og du vil være handed dette i oppgavesettet syv, 381 00:19:20,510 --> 00:19:25,050 Vi gir deg en fil som inneholder en super liten database tabellen, lånte faktisk 382 00:19:25,050 --> 00:19:27,070 fra hacker-utgaven av problemet satt to, 383 00:19:27,070 --> 00:19:29,480 på innsiden av hvilke der er seks rader. 384 00:19:29,480 --> 00:19:32,720 En for Belinda hele helt ned til en for Zamyla, 385 00:19:32,720 --> 00:19:35,980 og legg merke til venstre for de brukernavn er unike ID-er som en, 386 00:19:35,980 --> 00:19:39,410 to, tre, fire, fem, seks, heltall, og deretter til høyre er hashes. 387 00:19:39,410 --> 00:19:42,780 >> Og hvis, oddsen er, gjorde du ikke gjøre hacker utgave problemet satt to, 388 00:19:42,780 --> 00:19:46,560 men en hash er akkurat som en kryptert passordet med noen advarsler. 389 00:19:46,560 --> 00:19:49,470 Og så, det du ser her er de krypterte versjoner av alle seks 390 00:19:49,470 --> 00:19:52,950 av våre passord fra problem satt to er hacker-utgaven. 391 00:19:52,950 --> 00:19:56,500 Nå til venstre er bare noen GUI ting, redigerer denne raden, kopiere denne raden, 392 00:19:56,500 --> 00:19:57,630 slette denne raden. 393 00:19:57,630 --> 00:19:59,840 >> Men det som er interessant Nå er følgende. 394 00:19:59,840 --> 00:20:03,810 Jeg kan faktisk begynne eksperimentere med denne tabellen. 395 00:20:03,810 --> 00:20:07,330 Så hvis jeg går og klikk på SQL fane, får jeg denne store tekstboksen. 396 00:20:07,330 --> 00:20:10,190 Og dette er ikke hvordan vi skal gjør det når faktisk skrive kode. 397 00:20:10,190 --> 00:20:12,700 For å være klar, phpMyAdmin er bare et verktøy som er 398 00:20:12,700 --> 00:20:16,450 kommer til å la oss rote rundt i databasen og la oss eksperimentere med spørringer. 399 00:20:16,450 --> 00:20:19,430 >> Så for eksempel, anta Jeg utføre akkurat dette. 400 00:20:19,430 --> 00:20:22,820 Select, som er en av dem ordene jeg nevnte tidligere, stjerne, 401 00:20:22,820 --> 00:20:25,900 som representerer alle kolonnene i en tabell. 402 00:20:25,900 --> 00:20:26,820 Fra hva bordet? 403 00:20:26,820 --> 00:20:27,990 Vel, brukere. 404 00:20:27,990 --> 00:20:29,950 Og legg merke til det er dette rare konvensjonen i SQL 405 00:20:29,950 --> 00:20:32,140 hvor du faktisk bruker tilbake flått, typisk 406 00:20:32,140 --> 00:20:35,940 ikke apostrof og ikke doble anførselstegn når du snakker om bord navn, 407 00:20:35,940 --> 00:20:38,990 så bak sitatet er tingen på øverst til venstre på tastaturet mest 408 00:20:38,990 --> 00:20:39,720 sannsynlig. 409 00:20:39,720 --> 00:20:41,850 >> Så la meg gå videre nå og bare la det alene 410 00:20:41,850 --> 00:20:46,020 og bla ned og klikk Go, og vi er faktisk kommer til å se det samme. 411 00:20:46,020 --> 00:20:52,410 Vi har nettopp gjennomført en SQL-spørring sier velg alt stjerners 412 00:20:52,410 --> 00:20:55,610 fra tabell kalt brukere, og hva du får tilbake er dette. 413 00:20:55,610 --> 00:20:58,400 Til syvende og sist, vil vi være i stand til å gjøre det samme i kode, 414 00:20:58,400 --> 00:21:02,109 men for nå alt jeg ønsket å ikke var ser det i nettleseren min. 415 00:21:02,109 --> 00:21:03,900 Vel la oss gjøre noe litt annerledes. 416 00:21:03,900 --> 00:21:08,330 La meg gå tilbake til kategorien SQL, og la oss bare si at det som? 417 00:21:08,330 --> 00:21:11,520 Zamyla har mistet alle hennes penger, og derfor er det 418 00:21:11,520 --> 00:21:13,190 tid for oss å slette henne som bruker. 419 00:21:13,190 --> 00:21:14,630 Hun ikke lenger å logge inn. 420 00:21:14,630 --> 00:21:18,870 >> Så jeg kommer til å si slette from-- vel, vedlikeholde kapitalisering 421 00:21:18,870 --> 00:21:23,080 for konsistens, slette fra brukerne der. 422 00:21:23,080 --> 00:21:25,430 Og så kan vi ha disse predikater, eller disse 423 00:21:25,430 --> 00:21:31,180 kvalifiseringer, på slutten av min uttalelse hvor og hvordan kan jeg slette Zamyla? 424 00:21:31,180 --> 00:21:34,190 Ved hennes navn Zamyla, så kolonne, en av kolonnene 425 00:21:34,190 --> 00:21:37,950 ble kåret, så der name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 Og her jeg bruke doble sitater eller enkle anførselstegn, 427 00:21:40,000 --> 00:21:42,958 du bare bruker ryggen flått når snakker om navnene, for eksempel, 428 00:21:42,958 --> 00:21:45,130 av tabeller eller felt. 429 00:21:45,130 --> 00:21:47,440 Og la meg klikke Gå hit. 430 00:21:47,440 --> 00:21:50,400 Og nå, er nettsiden blir litt uptight. 431 00:21:50,400 --> 00:21:53,620 >> Eller vil du virkelig ønsker å utføre slette fra brukerne der navn lik Zamyla? 432 00:21:53,620 --> 00:21:54,680 Ja. 433 00:21:54,680 --> 00:22:01,900 Så nå, hvis vi går tilbake til mitt bord ved å klikke brukere, merker at Hm. 434 00:22:01,900 --> 00:22:02,530 Jeg goofed. 435 00:22:02,530 --> 00:22:04,070 Og faktisk, jeg slags klikket bort så fort 436 00:22:04,070 --> 00:22:06,195 du ikke engang se red feilmeldingen, kanskje. 437 00:22:06,195 --> 00:22:07,649 Hva har jeg gjort galt? 438 00:22:07,649 --> 00:22:09,690 PUBLIKUM: Du trenger ikke å utnytte hennes navn. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Ja, jeg kapitalisert hennes navn, 440 00:22:11,260 --> 00:22:13,770 men hennes username-- faktisk jeg gjorde et par feil, ikke sant? 441 00:22:13,770 --> 00:22:16,720 One, er hennes brukernavn zamyla, små bokstaver Z, 442 00:22:16,720 --> 00:22:20,140 og kolonnenavnet er brukernavn, ikke navn, så la oss gjøre dette igjen. 443 00:22:20,140 --> 00:22:25,750 La meg gå videre og slette fra brukere der 444 00:22:25,750 --> 00:22:28,990 brukernavn lik quote unquote "Zamyla". 445 00:22:28,990 --> 00:22:29,490 All right? 446 00:22:29,490 --> 00:22:32,600 Så dette ser litt bedre, la meg gå bla ned og klikk OK. 447 00:22:32,600 --> 00:22:34,730 Det er fortsatt kommer til å kjefte på meg for å være sikker. 448 00:22:34,730 --> 00:22:37,500 Jeg klikker Ja, og nå ser vi, oppriktig dette skjedde, egentlig 449 00:22:37,500 --> 00:22:39,870 rask, mindre enn én andre sikkert, dette 450 00:22:39,870 --> 00:22:41,720 er nøyaktig den spørringen som ble henrettet. 451 00:22:41,720 --> 00:22:45,617 For å bekrefte, la meg klikke brukere og faktisk nå Zamyla er borte. 452 00:22:45,617 --> 00:22:46,700 Nå la oss gjøre det motsatte. 453 00:22:46,700 --> 00:22:49,320 Anta at Gabe ønsker å registrere for nettstedet. 454 00:22:49,320 --> 00:22:52,825 Hva er SQL-spørring, hva er kommando jeg kan skrive for å legge til Gabe? 455 00:22:52,825 --> 00:22:54,200 Vel det er ganske grei. 456 00:22:54,200 --> 00:22:58,260 Sett inn brukere, og nå det blir litt kryptisk. 457 00:22:58,260 --> 00:23:03,190 Jeg trenger å spesifisere, til serveren, hvilke felt jeg ønsker å tildele. 458 00:23:03,190 --> 00:23:06,630 Jeg vet egentlig ikke om hva Gabe ID tallet er, så jeg kommer til å hoppe over det. 459 00:23:06,630 --> 00:23:11,360 Jeg er i stedet kommer til å si brukernavn, hash, og deretter 460 00:23:11,360 --> 00:23:14,960 de verdiene jeg ønsker å sette det kommer til å være Gabe. 461 00:23:14,960 --> 00:23:16,800 Og da hans hasj, jeg vet ikke. 462 00:23:16,800 --> 00:23:19,900 Så for nå, kommer jeg til å la det som en stor å gjøre. 463 00:23:19,900 --> 00:23:21,650 Vi vil komme tilbake til at i det problemet satt 464 00:23:21,650 --> 00:23:23,390 spec for hvordan du faktisk gjør det. 465 00:23:23,390 --> 00:23:24,630 >> Så legger merke til, igjen, syntaksen. 466 00:23:24,630 --> 00:23:28,430 Sett inn tabellnavn, deretter en parentes liste av feltene, 467 00:23:28,430 --> 00:23:30,980 kolonnene du vil legge til verdier til, og så bare 468 00:23:30,980 --> 00:23:34,495 de samme bestilling igjen å høyre for de verdiene du ønsker å legge til, 469 00:23:34,495 --> 00:23:36,870 og det er bare å pakke fordi teksten er litt lang. 470 00:23:36,870 --> 00:23:38,520 Så nå la meg klikker på Start. 471 00:23:38,520 --> 00:23:39,830 En rad satt inn. 472 00:23:39,830 --> 00:23:43,020 Og nå hvis jeg går tilbake til brukere, hva er interessant 473 00:23:43,020 --> 00:23:48,960 er at ikke bare er Gabe nå i database, hva er tydeligvis hans ID? 474 00:23:48,960 --> 00:23:49,820 >> Vel det er sju. 475 00:23:49,820 --> 00:23:51,479 Hvorfor er det sju da jeg ikke legge det? 476 00:23:51,479 --> 00:23:54,020 Så også dette er en av de funksjonene du får av databasen. 477 00:23:54,020 --> 00:23:55,750 Mange innebygd funksjonalitet. 478 00:23:55,750 --> 00:23:57,950 Det viser seg at når opprettet denne tabellen, 479 00:23:57,950 --> 00:24:01,390 Jeg forhåndskonfigurert det er automatisk tilordne en ID på en slik måte 480 00:24:01,390 --> 00:24:02,480 at det intervaller. 481 00:24:02,480 --> 00:24:05,470 Så hvis du noen gang har lett rundt, og så på hva din Facebook-ID 482 00:24:05,470 --> 00:24:09,292 tallet er, i disse dager er det ikke egentlig en ting å gjøre, men Facebook som et API, 483 00:24:09,292 --> 00:24:11,750 Application Programming Interface, hvor du kan komme tilbake 484 00:24:11,750 --> 00:24:14,430 en hel haug med data om selv, om dine venner, 485 00:24:14,430 --> 00:24:15,347 og tilkoblingene. 486 00:24:15,347 --> 00:24:17,430 Og det som pleide å være snill kult, tilbake i dag, 487 00:24:17,430 --> 00:24:19,510 var å slå opp hva 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 forfatteren av nettstedet. 490 00:24:23,890 --> 00:24:27,610 Og som historien går, skapte han to testkontoer, brukere en og to, 491 00:24:27,610 --> 00:24:28,690 som han deretter slettet. 492 00:24:28,690 --> 00:24:32,780 Og så, Zuck, er som hans brukernavn på Facebook, er ID nummer tre, 493 00:24:32,780 --> 00:24:36,110 og alle av oss har tall mye større enn tre i disse dager. 494 00:24:36,110 --> 00:24:37,980 Faktisk, på et tidspunkt Facebook flyttet bort 495 00:24:37,980 --> 00:24:42,410 fra selv å bruke en int, som er en 32-biters verdi, til å bruke 496 00:24:42,410 --> 00:24:44,480 neste steg opp, egentlig en lang lang så 497 00:24:44,480 --> 00:24:47,150 at de kunne imøtekomme enda flere brukere som registrerer seg. 498 00:24:47,150 --> 00:24:49,420 Så en morsom liten historisk faktum. 499 00:24:49,420 --> 00:24:51,660 >> Så det er bare grunnleggende syntaks som 500 00:24:51,660 --> 00:24:54,470 vi kan gjennomføre et par spørringer, men vi kan faktisk 501 00:24:54,470 --> 00:24:56,744 gjøre en haug flere ting med SQL. 502 00:24:56,744 --> 00:24:58,910 Og du vil se, til slutt, i oppgavesettet syv 503 00:24:58,910 --> 00:25:01,034 at du må lage en antall design beslutninger, 504 00:25:01,034 --> 00:25:03,290 blant dem kommer til å være hvilke data typer å bruke. 505 00:25:03,290 --> 00:25:08,240 Så akkurat som i C, er det data typer i en database, som MySQL, 506 00:25:08,240 --> 00:25:12,640 og datatypene du har å velge fra inkludere disse feltene her. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, Int, stor int, desimal og dato tid, og mange andre. 508 00:25:17,287 --> 00:25:18,370 Så la oss faktisk gjør dette. 509 00:25:18,370 --> 00:25:21,060 La oss late som vi ikke hånden du denne brukerens tabellen 510 00:25:21,060 --> 00:25:25,080 og la meg gå videre og skape, for meg selv, i forelesningene database-- 511 00:25:25,080 --> 00:25:31,000 faktisk la meg gå videre og slett bordet jeg har i her allerede 512 00:25:31,000 --> 00:25:32,940 slik at vi faktisk kan lage dette. 513 00:25:32,940 --> 00:25:33,550 Uff da. 514 00:25:33,550 --> 00:25:35,970 Jeg kommer til å slippe dette tabellen, og nå er jeg 515 00:25:35,970 --> 00:25:38,337 kommer til å gå igjen til forelese database over her, 516 00:25:38,337 --> 00:25:40,420 Jeg kommer til å opprette en tabell kalt brukere og la oss 517 00:25:40,420 --> 00:25:43,010 bare gjøre tre kolonner utgangspunktet og klikk OK. 518 00:25:43,010 --> 00:25:44,990 >> Nå, for det meste, igjen, dette er bare 519 00:25:44,990 --> 00:25:48,570 bruker dette grafisk verktøy kalt phpMyAdmin, og hva vi gjør nå 520 00:25:48,570 --> 00:25:49,600 er å skape et bord. 521 00:25:49,600 --> 00:25:53,170 Så dette er som å gå File, New, og skape en ny Excel-fil. 522 00:25:53,170 --> 00:25:55,440 Så det å spørre meg noen spørsmål, fra venstre til høyre, 523 00:25:55,440 --> 00:25:58,620 hva er navnet på den første kolonnen, og deretter navnet på den andre kolonnen 524 00:25:58,620 --> 00:25:59,560 og navnet på den tredje. 525 00:25:59,560 --> 00:26:00,518 Så la oss gjenskape dette. 526 00:26:00,518 --> 00:26:05,460 ID, og ​​deretter brukernavnet var en, og deretter hash var en annen. 527 00:26:05,460 --> 00:26:08,970 Så hva bør datatypen være nå for et felt som ID? 528 00:26:08,970 --> 00:26:14,470 >> Her er hele listen over datatyper tilgjengelig for deg i en database, 529 00:26:14,470 --> 00:26:16,070 og nå kan vi bare gå med int. 530 00:26:16,070 --> 00:26:18,160 32-biters verdi, vet jeg ikke tenke realistisk jeg er 531 00:26:18,160 --> 00:26:21,484 kommer til å ha mer enn 4 milliarder brukere i kontoen min, i min tjeneste, 532 00:26:21,484 --> 00:26:23,650 så jeg kommer til å holde i bevegelse videre til neste spørsmål. 533 00:26:23,650 --> 00:26:25,490 Jeg kommer ikke til å spesifisere en lengde eller verdier, 534 00:26:25,490 --> 00:26:28,540 det er ikke aktuelt her for en int, per se. 535 00:26:28,540 --> 00:26:30,740 Og nå kan jeg spesifisere, tilsynelatende, en standard 536 00:26:30,740 --> 00:26:33,970 verdi, som jeg ikke kommer til å spesifisere. 537 00:26:33,970 --> 00:26:36,050 En sortering, jeg vet ikke hva det er. 538 00:26:36,050 --> 00:26:37,290 Et attributt. 539 00:26:37,290 --> 00:26:39,455 Nå er vi faktisk gjør har et design beslutning. 540 00:26:39,455 --> 00:26:42,580 Så det er noen felt her, ikke alle som er aktuelt, men usignerte 541 00:26:42,580 --> 00:26:43,380 betyr bare hva? 542 00:26:43,380 --> 00:26:45,400 At int må være? 543 00:26:45,400 --> 00:26:46,210 Bare ikke-negative. 544 00:26:46,210 --> 00:26:48,090 Så det må være 0 på opp. 545 00:26:48,090 --> 00:26:51,120 Nei, jeg kommer ikke til å sjekke fordi Jeg ønsker hver bruker skal ha en 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 da får vi litt mer interessante designbeslutninger som dette. 548 00:26:55,949 --> 00:26:58,990 Vi vil komme tilbake til dette i et øyeblikk, men hva en annen funksjon i database 549 00:26:58,990 --> 00:27:04,200 er, er at du kan fortelle databaseserveren gå videre 550 00:27:04,200 --> 00:27:07,100 og optimalisere deg selv, din RAM og harddiskplass, 551 00:27:07,100 --> 00:27:11,770 slik som velger, og innstikk, og sletter, og oppdateringer er virkelig rask. 552 00:27:11,770 --> 00:27:13,250 Kontrast til dette med pset5. 553 00:27:13,250 --> 00:27:16,259 >> Hvis du ønsker å slå opp noe i hash table, som 554 00:27:16,259 --> 00:27:18,300 du tenker på som en database, som måtte gjøre alt 555 00:27:18,300 --> 00:27:21,500 arbeide for å gjøre din hash table fort. 556 00:27:21,500 --> 00:27:22,840 Det er som, selvsagt, du. 557 00:27:22,840 --> 00:27:23,060 Høyre? 558 00:27:23,060 --> 00:27:26,080 Du måtte sette inn hele tiden bot tuning ting, får en hash-funksjon 559 00:27:26,080 --> 00:27:27,820 rett, å finne ut hvordan mange bøtter å ha. 560 00:27:27,820 --> 00:27:29,611 >> Men det som er fint, igjen, om en database er 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 som har tenkt dette gjennom for deg, og hva 563 00:27:33,720 --> 00:27:37,170 Jeg kommer til å si her i henhold til indeks er at min ID-feltet 564 00:27:37,170 --> 00:27:41,149 kommer til å være den primære måten å identifisere brukere i denne databasen. 565 00:27:41,149 --> 00:27:42,940 Jeg kommer ikke til å tenke av Zamyla som Zamyla, 566 00:27:42,940 --> 00:27:45,800 Jeg kommer til å tenke på henne som nummer 6. 567 00:27:45,800 --> 00:27:49,814 >> Hvorfor er det kanskje bedre intuitivt å tenke på og modell 568 00:27:49,814 --> 00:27:52,480 hver av dine individuelle rader med et tall i stedet for noe 569 00:27:52,480 --> 00:27:56,480 som en snor, som Zamyla eller Gabe eller lengre streng fortsatt? 570 00:27:56,480 --> 00:27:57,444 Yeah? 571 00:27:57,444 --> 00:28:00,117 >> PUBLIKUM: En ID er unik? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: Si det igjen? 573 00:28:01,200 --> 00:28:02,283 PUBLIKUM: En ID er unik? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: En ID er unik, men suppose-- 575 00:28:04,400 --> 00:28:06,320 som tilfellet generelt med brukernavn, anta 576 00:28:06,320 --> 00:28:10,110 Jeg sier også at det kan bare være én Zamyla i verden, og bare én Gabe. 577 00:28:10,110 --> 00:28:13,730 Jeg kunne pålegge det unike begrensningen på strenger, også, hvis jeg ønsket. 578 00:28:13,730 --> 00:28:15,550 Så det er ikke en dårlig tanke. 579 00:28:15,550 --> 00:28:16,500 >> PUBLIKUM: Sikrere. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Sikrere, hvorfor? 581 00:28:17,874 --> 00:28:20,705 PUBLIKUM: Du kan ikke fortelle hvilke er som, som i bruks. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, du kan ikke fortelle hvilken bruker 583 00:28:22,580 --> 00:28:24,380 er noe så det er en personvern aspekt til det, 584 00:28:24,380 --> 00:28:27,810 spesielt hvis de IDer kanskje vises i nettadresser. 585 00:28:27,810 --> 00:28:29,960 Så sikker, som kunne type arbeid, også. 586 00:28:29,960 --> 00:28:30,640 Andre tanker? 587 00:28:30,640 --> 00:28:31,383 Yeah? 588 00:28:31,383 --> 00:28:34,316 >> PUBLIKUM: Det er enklere å utføre operasjoner 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 mer effektiv, eller enklere for datamaskinen, 591 00:28:38,850 --> 00:28:40,431 å utføre operasjoner på et heltall. 592 00:28:40,431 --> 00:28:40,930 Høyre? 593 00:28:40,930 --> 00:28:43,905 En int er garantert å være 32-bit, mens Zamyla 594 00:28:43,905 --> 00:28:47,660 er noen få tegn, Gabriel er noen flere tegn, 595 00:28:47,660 --> 00:28:51,930 Davenport er veldig lang, og så det er ikke spesielt effektivt å bruke 596 00:28:51,930 --> 00:28:55,860 strenger å sammenligne verdier og ser for felt, og oppdatere felt, 597 00:28:55,860 --> 00:28:57,790 hvis du kan komme unna med bare ett heltall. 598 00:28:57,790 --> 00:28:59,090 Bare 32 bits. 599 00:28:59,090 --> 00:29:02,570 Så brukernavn, også, på denne måten, trenger ikke å være unik, 600 00:29:02,570 --> 00:29:05,040 selv om de sannsynligvis burde være, og selv i dette altfor 601 00:29:05,040 --> 00:29:07,520 en bruker kan få lov til å endre sitt brukernavn. 602 00:29:07,520 --> 00:29:10,810 >> Så la oss nå la dette som primære middel for å identifisere brukeren. 603 00:29:10,810 --> 00:29:13,510 Dette forteller databasen gå videre og optimalisere selv 604 00:29:13,510 --> 00:29:17,065 slik at ser ups på ID er super rask. 605 00:29:17,065 --> 00:29:19,620 AI, fryktelig kalt, bare betyr Auto Increment, 606 00:29:19,620 --> 00:29:21,500 og dette er sjekken boksen vi må sjekke 607 00:29:21,500 --> 00:29:24,614 å spesifisere at ID-feltet til oppdateres automatisk for meg, 608 00:29:24,614 --> 00:29:26,530 og så kommer jeg til å bla til høyre her 609 00:29:26,530 --> 00:29:29,279 og ærlig jeg er egentlig ikke interessert i noen flere av disse feltene. 610 00:29:29,279 --> 00:29:30,630 Absolutt ikke i dag. 611 00:29:30,630 --> 00:29:33,770 >> Så jeg kommer til å gå tilbake hit, til den første kolonne, der 612 00:29:33,770 --> 00:29:35,830 Jeg trenger å oppgi brukernavn og hasj, og la oss 613 00:29:35,830 --> 00:29:38,080 minst fokus på andre en for nå. 614 00:29:38,080 --> 00:29:41,498 Int er sannsynligvis ikke den rette samtalen, så hva gjør mer fornuftig kanskje? 615 00:29:41,498 --> 00:29:42,741 >> PUBLIKUM: Tekst. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: Si det igjen? 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 teksten. 620 00:29:45,590 --> 00:29:46,090 Hva annet? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Vi slags har en haug med valg som er tekstlige i naturen. 623 00:29:53,860 --> 00:29:55,990 Så når, og hvorfor, gjør du bruker noen av disse? 624 00:29:55,990 --> 00:29:59,560 Vel røye, i motsetning til hva du kanskje tror, ​​er ikke en eneste karakter. 625 00:29:59,560 --> 00:30:01,550 Det er et bestemt antall tegn. 626 00:30:01,550 --> 00:30:04,600 Så hvis vi vet at alle brukernavn må være som åtte tegn, 627 00:30:04,600 --> 00:30:08,490 som anvendt for å være vanlig i eldre datasystemer, jeg kunne si røye 628 00:30:08,490 --> 00:30:09,830 og da kunne jeg si 8 her. 629 00:30:09,830 --> 00:30:12,930 Det er da den tredje kolonnen blir aktuelt når du oppretter en tabell. 630 00:30:12,930 --> 00:30:15,450 >> Men det er litt irriterende fordi noen mennesker kan 631 00:30:15,450 --> 00:30:17,660 ønsker å ha en lengre brukernavn enn åtte tegn, 632 00:30:17,660 --> 00:30:19,743 noen mennesker kan ønske å har en kortere brukernavn, 633 00:30:19,743 --> 00:30:22,210 så hvorfor forplikte meg til et bestemt nummer? 634 00:30:22,210 --> 00:30:24,710 Hvorfor ikke ha en variabel antall tegn og bare 635 00:30:24,710 --> 00:30:28,580 sier at den maksimale lengden av et navn er, vet jeg ikke, i likhet med 64 tegn. 636 00:30:28,580 --> 00:30:31,780 Jeg kan ikke tenke på noen venner som har navn lengre enn 64 tegn, 637 00:30:31,780 --> 00:30:34,810 og selv om det er for kort du kunne sikkert bump det opp vilkårlig. 638 00:30:34,810 --> 00:30:37,330 >> Så varchar er en variabel antall tegn. 639 00:30:37,330 --> 00:30:41,010 Innholdet er ikke en dårlig instinkt, og ærlig den slags gjør det de sier, 640 00:30:41,010 --> 00:30:45,460 men et tekstfelt kan være som 65.000 bytes minst. 641 00:30:45,460 --> 00:30:50,790 Det er sannsynligvis overkill for en feltet, og faktisk, yup, 65535. 642 00:30:50,790 --> 00:30:53,740 Det er sannsynligvis overkill for en navn, så vi vil holde, typisk, 643 00:30:53,740 --> 00:30:56,910 med varchars for tekstlig feltet og hasj, også. 644 00:30:56,910 --> 00:30:59,990 Hasj, viser det seg, kan vi gjøre en varchar så godt eller noe sånt, 645 00:30:59,990 --> 00:31:03,080 men vi vil ikke fokusere i dag på kryptografi der og tallene 646 00:31:03,080 --> 00:31:05,210 Det kan vi faktisk ønsker å bruke for sin lengde. 647 00:31:05,210 --> 00:31:07,430 >> Men la meg bla ned til høyre. 648 00:31:07,430 --> 00:31:11,280 Du kan bare ha én Hovedindeksen på et bord, 649 00:31:11,280 --> 00:31:16,380 men jeg ønsker å bruke noen av disse, nå, for å brukernavn, ville du si? 650 00:31:16,380 --> 00:31:21,980 Hva skal brukernavn være basert på en vag forståelse av disse fire alternativene? 651 00:31:21,980 --> 00:31:23,340 Bare ved navnene deres? 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, ikke sant? 654 00:31:25,100 --> 00:31:28,190 Så det viser seg at ikke bare kunne du forteller en database, på forhånd, 655 00:31:28,190 --> 00:31:30,380 Dette er den primære måten å identifisere felt. 656 00:31:30,380 --> 00:31:32,990 Du kan også si at dette er kommer til å bli et unikt felt. 657 00:31:32,990 --> 00:31:34,700 Det kommer ikke til å være det jeg stole på, 658 00:31:34,700 --> 00:31:38,490 men jeg vil gjerne databasen til hovedsak har at hvis tilstand, så 659 00:31:38,490 --> 00:31:42,340 at hvis jeg noen gang prøvd å registrere to brukere med samme navn, 660 00:31:42,340 --> 00:31:44,360 databasen flate ut er ikke til å la meg. 661 00:31:44,360 --> 00:31:47,490 Jeg har kanskje noen ekstra kode i PHP som hindrer så mye, 662 00:31:47,490 --> 00:31:50,640 men databasen også kan sørge at det aldri kommer til å skje. 663 00:31:50,640 --> 00:31:53,370 >> Nå, som en side, særlig ettersom du tenker på endelige prosjektene, 664 00:31:53,370 --> 00:31:57,030 husk det indeksen og full teksten er faktisk ganske nyttig. 665 00:31:57,030 --> 00:32:01,080 Hvis du har en større database, ikke med dusinvis, men med hundrevis eller tusenvis 666 00:32:01,080 --> 00:32:05,270 eller millioner av felt, kan du også fortelle databasen på forhånd 667 00:32:05,270 --> 00:32:07,980 dette er et felt jeg skal å være søker på mye. 668 00:32:07,980 --> 00:32:10,520 Kanskje det brukernavn, kanskje det er bio, hvis du er 669 00:32:10,520 --> 00:32:13,750 å lage en Facebook-lignende nettsted som har avsnitt som brukerens tillatt 670 00:32:13,750 --> 00:32:16,799 å spare, og hvis du ønsker å fortelle databasen på forhånd 671 00:32:16,799 --> 00:32:20,090 Jeg kommer til å være søker på dette feltet mye, men det er ikke nødvendigvis unik, 672 00:32:20,090 --> 00:32:22,800 du kan spesifisere lage meg en indeks. 673 00:32:22,800 --> 00:32:27,990 Eller, kan du si også tillate meg å gjøre slags vilkårlige søk som Command 674 00:32:27,990 --> 00:32:30,420 eller Ctrl F, som deg kanskje i et tekstbehandlingsprogram, 675 00:32:30,420 --> 00:32:34,184 slik at du kan se vilkårlige strenger eller unders på dette feltet. 676 00:32:34,184 --> 00:32:36,600 Med andre ord, vi får til det punktet i semesteret 677 00:32:36,600 --> 00:32:40,720 der du ikke trenger å bekymre deg hvordan å implementere ting effektivt. 678 00:32:40,720 --> 00:32:44,540 Du trenger bare å vite om hva design beslutninger for å gjøre slik at du er 679 00:32:44,540 --> 00:32:48,470 bruke de riktige verktøyene for handelen for å utnytte funksjoner 680 00:32:48,470 --> 00:32:50,380 at andre mennesker har bygget for deg. 681 00:32:50,380 --> 00:32:54,240 Så til oppsummering, bør bare primær har en, kan du bare ha en, 682 00:32:54,240 --> 00:32:59,630 og det er den tingen du forplikter deg til hjelp til å identifisere felt unikt. 683 00:32:59,630 --> 00:33:02,710 Unik er bare lik i ånden, men kanskje du bare sporadisk bruker det, 684 00:33:02,710 --> 00:33:04,530 men du vil at databasen til å pålegge den. 685 00:33:04,530 --> 00:33:08,050 Indeks betyr bare preemptively fart på sakene i fremtiden 686 00:33:08,050 --> 00:33:10,230 slik at jeg kan søke etter ting i dette feltet. 687 00:33:10,230 --> 00:33:13,700 Og så fulltekst er generelt for avsnitt, eller essays, eller store kropper 688 00:33:13,700 --> 00:33:16,270 av teksten der du kan også være lurt å ha 689 00:33:16,270 --> 00:33:19,420 jokere som tilsvarer stjerne. 690 00:33:19,420 --> 00:33:19,920 Høyre. 691 00:33:19,920 --> 00:33:22,580 >> Så det var litt en masse til alle på en gang. 692 00:33:22,580 --> 00:33:25,220 La oss se om vi ikke kan destillere et par av disse funksjonene 693 00:33:25,220 --> 00:33:29,540 og deretter bygge noe ganske enkel, men kraftig. 694 00:33:29,540 --> 00:33:31,380 Så blant annet design beslutninger du er 695 00:33:31,380 --> 00:33:34,005 til slutt kommer til å ha det sammen linjene av lagringsmotorer. 696 00:33:34,005 --> 00:33:37,370 Og la meg bare gjøre omtale av dette i påvente av endelige prosjektene, 697 00:33:37,370 --> 00:33:42,020 og påvente av la oss say-- nei la oss gjøre dette. 698 00:33:42,020 --> 00:33:43,820 La oss bygge denne lille programmet først. 699 00:33:43,820 --> 00:33:48,070 Jeg kommer til å gå inn i min terminal vinduet, og i her ikke er 700 00:33:48,070 --> 00:33:52,500 bare counter.php, som vi nå går å bli kvitt så ikke lenger germane, 701 00:33:52,500 --> 00:33:54,570 men vi har en hel haug av kataloger og dette 702 00:33:54,570 --> 00:33:58,080 kommer til å være svært like i ånden til hva du vil se i oppgavesettet sju. 703 00:33:58,080 --> 00:34:00,980 >> Så vi har tre kataloger omfatter offentlig og maler, som 704 00:34:00,980 --> 00:34:05,040 er akkurat der vi slapp på Mandag med hele vår MVC paradigme. 705 00:34:05,040 --> 00:34:09,290 Og til oppsummering, i det offentlige kommer til å gå enhver fil som jeg ønsker brukerne faktisk 706 00:34:09,290 --> 00:34:12,969 v kunne besøke i deres nettleser via URL. 707 00:34:12,969 --> 00:34:13,502 Mal. 708 00:34:13,502 --> 00:34:14,710 Hva gjorde vi satt i maler? 709 00:34:14,710 --> 00:34:17,070 Hva slags ting? 710 00:34:17,070 --> 00:34:21,659 Det var ikke mye, men et par filer minst på mandag. 711 00:34:21,659 --> 00:34:22,619 Yeah. 712 00:34:22,619 --> 00:34:23,100 >> PUBLIKUM: Header og bunntekst? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: Header og bunntekst. 714 00:34:24,516 --> 00:34:26,679 Så har vi noe lignende i dag, også. 715 00:34:26,679 --> 00:34:30,330 Vi har fått noen flere filer, men Footer jeg ser, Header jeg ser, 716 00:34:30,330 --> 00:34:31,909 og deretter en haug med andre filer. 717 00:34:31,909 --> 00:34:35,482 Så dette er tilsvar av V MVC visningen, som, 718 00:34:35,482 --> 00:34:37,690 igjen, vil være litt mer klart i oppgavesettet syv, 719 00:34:37,690 --> 00:34:40,380 men dette er bare en mappe jeg er legger mye av mine estetikk. 720 00:34:40,380 --> 00:34:42,840 Mye av min HTML, mange av mine former. 721 00:34:42,840 --> 00:34:46,899 I mellomtiden, omfatter, er en annen katalog som har disse tre filene 722 00:34:46,899 --> 00:34:48,440 og la oss ta en rask titt på disse. 723 00:34:48,440 --> 00:34:51,699 >> Jeg kommer til å gå videre og åpne opp config.php. 724 00:34:51,699 --> 00:34:54,610 Som det viser seg, mye som tidligere i begrepet, 725 00:34:54,610 --> 00:34:57,850 du skarpe inkludert CS50 dot h med pset7. 726 00:34:57,850 --> 00:35:00,780 I dagens eksempel, du kommer for å gjøre det tilsvarende av at 727 00:35:00,780 --> 00:35:03,600 med en krever uttalelse som effektivt 728 00:35:03,600 --> 00:35:05,340 inkluderer disse flere linjer. 729 00:35:05,340 --> 00:35:08,225 Så for å være klar, er dette en fil kalt config.php. 730 00:35:08,225 --> 00:35:09,350 Og legg merke til hva det gjør. 731 00:35:09,350 --> 00:35:11,970 Det er tydeligvis gjør noe kryptiske, snu på feilmeldinger 732 00:35:11,970 --> 00:35:13,680 slik at du kan se dem i nettleseren. 733 00:35:13,680 --> 00:35:15,860 Det er, da, tydeligvis krever to andre filer 734 00:35:15,860 --> 00:35:19,530 så dette er som #include i C, og så dette vi fikk se, 735 00:35:19,530 --> 00:35:22,720 og vi har stolt på, slås denne på som handlekurv lignende funksjonalitet. 736 00:35:22,720 --> 00:35:25,610 >> Dette betyr en cookie vilje bli sendt frem og tilbake. 737 00:35:25,610 --> 00:35:27,290 Så hvorfor er dette interessant? 738 00:35:27,290 --> 00:35:32,460 Vel, hvis vi går tilbake til denne katalog og åpne opp, for eksempel, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Legg merke til at PHP støtter også konstanter, det er ikke helt som #define i C. 741 00:35:38,840 --> 00:35:41,290 I stedet, du bokstavelig talt sier definert, og varsel 742 00:35:41,290 --> 00:35:44,110 som jeg har lagret på forhånd fire konstanter i denne filen. 743 00:35:44,110 --> 00:35:47,020 En for dagens database, for passordet mitt, for mitt brukernavn, 744 00:35:47,020 --> 00:35:48,690 og for navnet på serveren. 745 00:35:48,690 --> 00:35:51,644 Så disse er faktisk kommer til å være ganske lik i oppgavesettet sju. 746 00:35:51,644 --> 00:35:54,560 Og til slutt, og det er der jeg er kommer til å få noen fine funksjonalitet 747 00:35:54,560 --> 00:35:59,000 fra de ansatte, i functions.php er en haug med kode vi har skrevet, 748 00:35:59,000 --> 00:36:01,040 og jeg stjal noe av dette fra oppgavesettet syv 749 00:36:01,040 --> 00:36:05,920 for i dag, gjør at en haug med ting og la oss bare se på en av dem 750 00:36:05,920 --> 00:36:07,270 spesielt. 751 00:36:07,270 --> 00:36:09,720 Denne funksjonen her, spørring, kommer til å være 752 00:36:09,720 --> 00:36:13,600 PHP-funksjonen vi kaller for å kjøre SQL. 753 00:36:13,600 --> 00:36:16,070 Et øyeblikk siden var vi ved hjelp phpMyAdmin, men det er bare 754 00:36:16,070 --> 00:36:18,720 for slags læringsformål og diagnostiske formål 755 00:36:18,720 --> 00:36:20,494 og glemme databasen sett. 756 00:36:20,494 --> 00:36:22,660 Når du faktisk bruker din database, du, det menneskelige, 757 00:36:22,660 --> 00:36:24,100 er åpenbart ikke kommer å være å trekke opp en web 758 00:36:24,100 --> 00:36:25,740 siden hver gang noen registrerer. 759 00:36:25,740 --> 00:36:29,870 Du kommer til å skrive kode som innstikk og sletter brukere på etterspørsel, 760 00:36:29,870 --> 00:36:32,490 og vi kommer til å gjøre dette ved hjelp av spørringsfunksjonen. 761 00:36:32,490 --> 00:36:35,360 Hvis jeg ruller nå nede, det er kommer til å bli noen flere funksjoner. 762 00:36:35,360 --> 00:36:37,170 Omadresser kommer til å være en funksjon vi skrev 763 00:36:37,170 --> 00:36:40,160 for deg som lar deg sender brukeren til en annen URL, 764 00:36:40,160 --> 00:36:43,780 og gjengi er en funksjon, ganske like vi så på mandag, som faktisk gjør 765 00:36:43,780 --> 00:36:48,000 en mal, men mer på disse i form av pset7 egen spasertur gjennom. 766 00:36:48,000 --> 00:36:50,500 For nå, la oss gå videre og gjøre dette. 767 00:36:50,500 --> 00:36:54,860 >> La meg gå inn i mitt foredrag bord og se at det er i dag ingenting 768 00:36:54,860 --> 00:36:59,640 her ennå, og la meg også gå inn i min offentlig katalog, hvor 769 00:36:59,640 --> 00:37:02,780 det er bare én fil, index.php. 770 00:37:02,780 --> 00:37:06,920 Denne filen ser ut til å være superenkel i øyeblikket, ser det akkurat som dette. 771 00:37:06,920 --> 00:37:09,110 Veldig mye som hvordan vi slapp på mandag. 772 00:37:09,110 --> 00:37:11,945 Jeg krever denne filen, config.php, som er i 773 00:37:11,945 --> 00:37:15,160 en inkluderer katalogen, som er i dot dot, mine foreldre, 774 00:37:15,160 --> 00:37:17,650 og da er det bare å gjengi denne filen. 775 00:37:17,650 --> 00:37:18,960 Så hva er denne filen? 776 00:37:18,960 --> 00:37:24,700 >> La oss åpne opp i mine maler form.php, og vi får se dette. 777 00:37:24,700 --> 00:37:28,500 Super enkelt, tydeligvis dette skjemaet er kommer til å sende med en $ _GET eller $ _POST. 778 00:37:28,500 --> 00:37:29,320 Hurtig tilregnelighet sjekk. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Bokstavelig talt visuelt søke filen. 781 00:37:35,690 --> 00:37:36,610 Metoden tilsvarer innlegg. 782 00:37:36,610 --> 00:37:39,280 Så det ikke kommer til å bruke nettadressen, som Google gjør, det kommer til å sortere av hide 783 00:37:39,280 --> 00:37:41,030 informasjonen bak kulissene og det er 784 00:37:41,030 --> 00:37:43,580 kommer til å sende inn til en fil som heter register.php, 785 00:37:43,580 --> 00:37:45,660 og det er filen Vi har ennå ikke skrevet 786 00:37:45,660 --> 00:37:47,610 men hva dette kommer å se ut som dette. 787 00:37:47,610 --> 00:37:52,670 >> Hvis jeg går til en egen side Dette er hva localhost / index.php ser ut. 788 00:37:52,670 --> 00:37:56,930 Og igjen, er serveren bare antar index.php. 789 00:37:56,930 --> 00:37:57,910 Enter. 790 00:37:57,910 --> 00:37:59,870 Så det er der vi er på, og hva jeg ønsker å gjøre 791 00:37:59,870 --> 00:38:02,450 er kunne skrive ting som David, og deretter 792 00:38:02,450 --> 00:38:08,050 telefonnummeret mitt, som vil si 617-555-1212 for nå, registrer 793 00:38:08,050 --> 00:38:09,910 og nå register.php ble ikke funnet. 794 00:38:09,910 --> 00:38:11,440 Så jeg trenger for å gjennomføre dette. 795 00:38:11,440 --> 00:38:13,320 Så la oss raskt piske noe sånt som dette opp. 796 00:38:13,320 --> 00:38:18,640 La meg gå inn i min offentlig katalog og gjøre gedit av register.php, 797 00:38:18,640 --> 00:38:22,300 og nå kommer jeg til å gå videre og starter PHP-modus, som vi gjorde på mandag, 798 00:38:22,300 --> 00:38:25,430 og nær PHP sin tag, og la oss gjøre et par ting. 799 00:38:25,430 --> 00:38:28,336 >> Så en, jeg vet, fra ha skrevet at form, 800 00:38:28,336 --> 00:38:29,960 at jeg ønsker å se etter følgende. 801 00:38:29,960 --> 00:38:35,670 Hvis det er tomt, hva brukeren skrevet inn i navnefeltet, og deretter 802 00:38:35,670 --> 00:38:39,860 Jeg kommer til å si noe som beklager mangler navn. 803 00:38:39,860 --> 00:38:42,380 Beklager, i mellomtiden, er ikke en innebygd PHP ting, 804 00:38:42,380 --> 00:38:45,970 det er en funksjon vi skrev i functions.php for pset7 805 00:38:45,970 --> 00:38:47,940 slik at du har tilgang til den. 806 00:38:47,940 --> 00:38:53,830 Else if det andre feltet er tom, nummer, da er jeg 807 00:38:53,830 --> 00:38:58,370 kommer til å be om unnskyldning til bruker og si mangler nummer. 808 00:38:58,370 --> 00:38:59,320 Lagre denne filen. 809 00:38:59,320 --> 00:39:02,640 >> Nå la oss gå tilbake til nettleseren min, gå tilbake til forumet prøv igjen. 810 00:39:02,640 --> 00:39:04,070 Registrere. 811 00:39:04,070 --> 00:39:05,090 OK. 812 00:39:05,090 --> 00:39:06,730 Ingenting har skjedd, noe som er bra. 813 00:39:06,730 --> 00:39:08,120 Jeg fikk ikke en feilmelding. 814 00:39:08,120 --> 00:39:11,651 Men hvis du i stedet, la oss laste dette side, og ikke gi noe. 815 00:39:11,651 --> 00:39:12,150 Pokker. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Gjøre det. 818 00:39:17,140 --> 00:39:18,810 Registrere. 819 00:39:18,810 --> 00:39:20,350 Hva har jeg gjort galt? 820 00:39:20,350 --> 00:39:24,860 Dersom tomt, $ _POST navn. 821 00:39:24,860 --> 00:39:26,350 Si igjen? 822 00:39:26,350 --> 00:39:27,670 >> Oh, selvfølgelig. 823 00:39:27,670 --> 00:39:30,919 Jeg glemte den viktigste delen, som er require ("../ inkluderer / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Jeg trenger å ha tilgang til beklager funksjon, som 826 00:39:36,460 --> 00:39:37,770 Derfor ingenting skjedde. 827 00:39:37,770 --> 00:39:39,460 Funksjonen faktisk ikke eksisterer. 828 00:39:39,460 --> 00:39:40,640 Så la oss prøve dette igjen. 829 00:39:40,640 --> 00:39:42,350 La oss oppdater siden, klikker du på Registrer. 830 00:39:42,350 --> 00:39:43,060 OK. 831 00:39:43,060 --> 00:39:43,770 Det er det. 832 00:39:43,770 --> 00:39:45,700 Så, resultatet vi er se her er resultatet 833 00:39:45,700 --> 00:39:47,685 for å ringe en unnskyldning funksjon, super enkelt, 834 00:39:47,685 --> 00:39:50,060 og det skrives bare ut uansett Jeg gir det som et argument. 835 00:39:50,060 --> 00:39:51,370 >> Greit, så la oss samarbeide. 836 00:39:51,370 --> 00:39:54,240 La oss gi mitt navn som David, registrere, 837 00:39:54,240 --> 00:39:56,890 mangler nummer OK la oss gi det også. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registrere. 840 00:39:59,250 --> 00:39:59,750 OK. 841 00:39:59,750 --> 00:40:02,760 Så alt er bra nå, bare ingenting interessant som skjer. 842 00:40:02,760 --> 00:40:06,000 Så nå la oss gjøre noe mer interessant skje som dette. 843 00:40:06,000 --> 00:40:09,980 La meg gå inn i phpMyAdmin, og la oss faktisk lage en tabell kalt brukere, 844 00:40:09,980 --> 00:40:12,330 Jeg kommer til å gi det tre kolonner, og jeg vil raskt 845 00:40:12,330 --> 00:40:16,250 lage ID, og ​​deretter navn, og deretter nummer, 846 00:40:16,250 --> 00:40:18,832 og ID-feltet er jeg kommer til å forlate som en int. 847 00:40:18,832 --> 00:40:20,790 Navnet feltet jeg kommer å forlate som en varchar, 848 00:40:20,790 --> 00:40:23,257 og vi vil si 64, noe vilkårlig. 849 00:40:23,257 --> 00:40:25,090 Tallet jeg kommer å gjøre, vet du hva? 850 00:40:25,090 --> 00:40:27,350 Vi går inn i støtte amerikanske tall her, 851 00:40:27,350 --> 00:40:31,510 så jeg kommer til å gjøre noe som røye og deretter 10 tegn 852 00:40:31,510 --> 00:40:34,540 max for et retningsnummer og deretter sju siffer. 853 00:40:34,540 --> 00:40:37,870 Og så over her, kommer jeg til å angi auto tilvekst dette feltet, 854 00:40:37,870 --> 00:40:40,550 gjøre dette til en primærnøkkel, og Jeg kommer til å gå videre og ikke 855 00:40:40,550 --> 00:40:42,240 kontrollere en hvilken som helst av disse andre bokser. 856 00:40:42,240 --> 00:40:48,030 >> Så når jeg nå endelig klikker på Lagre, og jeg går tilbake til min bruker tabell, 857 00:40:48,030 --> 00:40:52,270 dette er hva det ser ut som om jeg nå klikke en ny fane struktur. 858 00:40:52,270 --> 00:40:54,550 Så dette, for å være klar, er bare phpMyAdmin måte 859 00:40:54,550 --> 00:40:58,570 si din database tabell har en ID, et navn, og et antall 860 00:40:58,570 --> 00:41:02,040 med de spesielle konfigurasjoner og vi vil ignorere resten av feltene 861 00:41:02,040 --> 00:41:03,140 der for nå. 862 00:41:03,140 --> 00:41:04,810 >> Så nå hva ønsker jeg å gjøre? 863 00:41:04,810 --> 00:41:09,060 Så hvis jeg går nå inn i min kildekoden, hvis alt er bra 864 00:41:09,060 --> 00:41:11,190 Jeg ønsker å kjøre følgende spørring. 865 00:41:11,190 --> 00:41:14,970 Sett inn, og jeg kan bare sier brukerne jeg ikke strengt 866 00:41:14,970 --> 00:41:18,620 trenger disse tilbake flått hvis det er ikke et farlig ord som brukere. 867 00:41:18,620 --> 00:41:22,810 Jeg kommer til å si navn, nummer, og så her er jeg 868 00:41:22,810 --> 00:41:24,960 ikke kommer til hardt koden den sifret av verdiene ennå. 869 00:41:24,960 --> 00:41:26,760 Jeg kommer til å sette to spørsmålstegn. 870 00:41:26,760 --> 00:41:29,320 Og dette er en konvensjon på mange språk 871 00:41:29,320 --> 00:41:31,730 der hvis du vil ha en plassholder for en streng 872 00:41:31,730 --> 00:41:34,105 du kommer til å bruke spørsmålet merkene, av grunner vi vil 873 00:41:34,105 --> 00:41:36,370 komme tilbake til å prate om sikkerhet, og her 874 00:41:36,370 --> 00:41:39,420 Jeg kommer til å passere i de to felt legge inn navn, 875 00:41:39,420 --> 00:41:44,850 og deretter legge nummer, og nå lagre filen. 876 00:41:44,850 --> 00:41:47,090 >> Og nå kommer jeg til å gå ned her er en super 877 00:41:47,090 --> 00:41:55,690 bare si rendersuccess.php, som kommer til å være en annen mal. 878 00:41:55,690 --> 00:41:57,380 Jeg kommer til å lage veldig fort. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php og jeg skal bare å si H1 suksess i denne filen. 880 00:42:06,270 --> 00:42:06,990 OK. 881 00:42:06,990 --> 00:42:11,312 Så nå, la oss gå tilbake til nettleser, hvor jeg har besøkt før. 882 00:42:11,312 --> 00:42:14,270 La oss gå videre og bekrefte at jeg skrev i David, skrev jeg i et telefonnummer, 883 00:42:14,270 --> 00:42:15,390 registrer deg. 884 00:42:15,390 --> 00:42:16,100 Pokker. 885 00:42:16,100 --> 00:42:17,420 Hva har jeg gjort galt? 886 00:42:17,420 --> 00:42:20,850 Så jeg ser en feil her, du ha en feil i din SQL-syntaks. 887 00:42:20,850 --> 00:42:24,900 La meg gå tilbake til gedit, la meg gå tilbake til register.php, 888 00:42:24,900 --> 00:42:28,830 og hva gjorde jeg utelater at var viktig forrige gang? 889 00:42:28,830 --> 00:42:29,722 Jeg trenger dette. 890 00:42:29,722 --> 00:42:32,930 Du ønsker å vite at andre enn fra har lagt merke til før, men jeg trenger dette. 891 00:42:32,930 --> 00:42:35,596 >> Så nå la oss gå tilbake, og dette var nyttig å se i nettleseren 892 00:42:35,596 --> 00:42:37,680 og det er derfor i config.php vi spytter ut feil. 893 00:42:37,680 --> 00:42:41,770 La oss gå videre og laste, klikker Fortsett, suksess. 894 00:42:41,770 --> 00:42:47,060 Så nå la meg gå over til min database her og klikk på Brukere, 895 00:42:47,060 --> 00:42:51,680 og bla, og merker jeg nå har David i databasen min her. 896 00:42:51,680 --> 00:42:55,810 Nå teknisk dette nettstedet er ennå ikke på det offentlige internett, 897 00:42:55,810 --> 00:42:57,890 så jeg kan ikke ha andre folk i å sette her, 898 00:42:57,890 --> 00:43:01,120 men hvis jeg nå lyst til, for eksempel, send meg en tekstmelding. 899 00:43:01,120 --> 00:43:03,920 La oss gå ut på en lem her og se om dette faktisk fungerer. 900 00:43:03,920 --> 00:43:07,331 Jeg kommer til å gå videre og slette denne raden 901 00:43:07,331 --> 00:43:09,080 og vi vil viske dette ut i video senere 902 00:43:09,080 --> 00:43:11,900 slik at vi ikke har Hele internett tekste meg, 903 00:43:11,900 --> 00:43:17,270 og vi vil nå gå opp til Nettleseren og vi vil gå over til å forelese 904 00:43:17,270 --> 00:43:22,040 og vi vil skrive i forskjellige nummeret her, registrere, suksess. 905 00:43:22,040 --> 00:43:25,550 >> Så nå, er mitt eget nummer antagelig i databasen, og nå den morsomme delen. 906 00:43:25,550 --> 00:43:28,774 La oss faktisk bruker PHP til å gjøre noe programmatisk, 907 00:43:28,774 --> 00:43:30,940 enten fra kommando linje eller fra et annet sted, 908 00:43:30,940 --> 00:43:32,773 og for nå er jeg bare kommer til å holde det enkelt 909 00:43:32,773 --> 00:43:36,230 og jeg kommer til å gå inn i min katalogen her og gjør følgende. 910 00:43:36,230 --> 00:43:44,920 Gedit script la oss si, vi vil kall det tekst, #! / bruker / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 som vi så forrige gang. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Nå skal jeg krever inkluderer config.php, 914 00:43:55,055 --> 00:43:57,360 selv om dette kan indusere en liten feil. 915 00:43:57,360 --> 00:44:03,960 Og nå kommer jeg til å gå videre og si rader, spørring, velger stjerne fra brukere, 916 00:44:03,960 --> 00:44:08,149 og nå her jeg kommer til å gjøre en teknikk fra forrige gang for hvert rader som rad. 917 00:44:08,149 --> 00:44:09,690 Og jeg kommer til å gjøre noe enkelt. 918 00:44:09,690 --> 00:44:19,090 Printf la oss si navn er dette, og nummer er dette, backslash n. 919 00:44:19,090 --> 00:44:23,320 Og nå kommer jeg til å passere i rad sitere unquote navn, 920 00:44:23,320 --> 00:44:28,140 og rad quote unquote nummer, og nå la oss gå videre 921 00:44:28,140 --> 00:44:31,430 og min terminalvindu chmod dette a + x å gjøre 922 00:44:31,430 --> 00:44:33,970 dette skriptet heter tekst kjørbar. 923 00:44:33,970 --> 00:44:36,080 Og nå la oss kjøre teksten. 924 00:44:36,080 --> 00:44:37,590 >> OK, så fremgang. 925 00:44:37,590 --> 00:44:39,960 Så jeg har nå skrevet en kommandolinjeskriptet, 926 00:44:39,960 --> 00:44:43,300 på et språk som heter PHP, som, på grunn av at krever linje, 927 00:44:43,300 --> 00:44:46,380 har tilgang til alle de konfigurasjonen konstanter at jeg spesifiserte. 928 00:44:46,380 --> 00:44:48,177 Navnet på databasen og så videre. 929 00:44:48,177 --> 00:44:50,260 Faktisk, bare for å være klar at dette ikke er et lykketreff, 930 00:44:50,260 --> 00:44:54,730 la meg gå videre og registrere, veldig fort, noen andre som Rob 931 00:44:54,730 --> 00:44:58,890 og vil gi ham 555-1212 nummer. 932 00:44:58,890 --> 00:45:01,557 >> Og nå, hvis jeg kjører skriptet igjen, merke strøm 933 00:45:01,557 --> 00:45:03,140 av hva vi gjør med databasen. 934 00:45:03,140 --> 00:45:07,680 Nå har jeg umiddelbart sett hva andre to rader er i min database. 935 00:45:07,680 --> 00:45:10,699 Så nå la oss prøve å gjøre noe enda mer avansert på innsiden av, 936 00:45:10,699 --> 00:45:12,740 og dette er den delen vi har ikke testet på forhånd, 937 00:45:12,740 --> 00:45:15,910 så sist gang jeg gjorde dette ting gikk fryktelig galt, 938 00:45:15,910 --> 00:45:17,120 vi har video til at effekten. 939 00:45:17,120 --> 00:45:18,286 >> Egentlig, ja, morsom side. 940 00:45:18,286 --> 00:45:20,480 Så siste gang, i en forelese som to år siden, 941 00:45:20,480 --> 00:45:23,230 vi bestemte oss, bestemte jeg meg, for å være alt dette ville være en god idé 942 00:45:23,230 --> 00:45:28,150 å dynamisk generere e-post i klasse, med hele databasen CS50 943 00:45:28,150 --> 00:45:33,390 studenter, som hadde gitt oss sine tall og deres mobiltelefon operatører som du 944 00:45:33,390 --> 00:45:36,290 kanskje husker fra pset0, hvordan å resonnere, viser det seg 945 00:45:36,290 --> 00:45:40,650 Jeg hadde en mindre feil i mitt program og gjorde et par feil i 2012, tror jeg. 946 00:45:40,650 --> 00:45:43,997 >> Der, en jeg hadde for løkke som gjorde akkurat denne typen ting, 947 00:45:43,997 --> 00:45:46,580 iterere over hele databasen, å få et navn fra databasen, 948 00:45:46,580 --> 00:45:49,940 navn fra databasen, og deretter på hver gjentakelse av at løkken jeg sendte en e-post. 949 00:45:49,940 --> 00:45:54,130 Men i stedet for å sende en e-post, jeg sendte en e-post første iterasjon, 950 00:45:54,130 --> 00:45:58,200 og to e-poster om andre iterasjon, sendte tre e-poster i andre iterasjon, som 951 00:45:58,200 --> 00:46:01,230 som du kanskje husker fra vår drøfting av asymptotisk notasjon 952 00:46:01,230 --> 00:46:06,400 denne store O av dårlig, som n squared er hvor mange meldinger jeg har sendt, 953 00:46:06,400 --> 00:46:08,560 men det var ikke engang e-post det var tekstmeldinger. 954 00:46:08,560 --> 00:46:12,070 >> Og som dere vet, er ikke til stede super høy mot slutten av semesteret 955 00:46:12,070 --> 00:46:15,360 og så jeg trodde det ville være søt på tid til å si: "Hvorfor er ikke du klasse?" 956 00:46:15,360 --> 00:46:17,880 I tekstmeldingen jeg sendt til hele klassen, 957 00:46:17,880 --> 00:46:22,140 og det var morsomt å like 50% av klasse, men de øvrige 50%, hvorav noen 958 00:46:22,140 --> 00:46:26,102 hetta ut, sendte jeg utrolig unnskyldende søte toner 959 00:46:26,102 --> 00:46:28,560 til de ansatte beklaget etter å ha gått glipp av forelesningen bare 960 00:46:28,560 --> 00:46:29,530 dette en gang, ikke sant? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> Så det ville fryktelig forkjært. 963 00:46:34,030 --> 00:46:37,030 Så i denne ånd, la oss prøve dette igjen, men bare med nummeret mitt. 964 00:46:37,030 --> 00:46:41,940 På forhånd, functions.php, Jeg har skrevet denne funksjonen her. 965 00:46:41,940 --> 00:46:44,250 Det kalles tekst, og det tar inn tre argumenter. 966 00:46:44,250 --> 00:46:46,360 En rekke, en bærer, og en melding. 967 00:46:46,360 --> 00:46:50,390 >> Jeg bruker en bryter uttalelse, som vidunderlig PHP ta strenger, ikke bare 968 00:46:50,390 --> 00:46:53,350 heltall, og jeg ikke implementere all den støtte for dette ennå, 969 00:46:53,350 --> 00:46:55,370 Jeg har nettopp gjort AT & T og Verizon. 970 00:46:55,370 --> 00:46:57,610 Fordi det viser seg at med disse bærere 971 00:46:57,610 --> 00:47:00,570 de har e-post til SMS-gatewayer, hvor du faktisk kan 972 00:47:00,570 --> 00:47:05,529 send en e-post til en adresse som telefonnummer på vtext.com 973 00:47:05,529 --> 00:47:08,070 og hvis brukeren har ikke blokkert meldingene, vil det gå gjennom 974 00:47:08,070 --> 00:47:09,340 er en tekstmelding. 975 00:47:09,340 --> 00:47:13,270 >> Nå for å gjøre dette, er jeg nødt til å legge ett felt veldig fort til min database. 976 00:47:13,270 --> 00:47:15,470 Jeg kommer til å gå inn min struktur, og jeg er 977 00:47:15,470 --> 00:47:21,880 kommer til å gå videre og legge en felt på slutten av tabellen. 978 00:47:21,880 --> 00:47:25,227 La oss klikke Go, og jeg er kommer til å kalle dette carrier 979 00:47:25,227 --> 00:47:27,310 og for nå kommer jeg til å forlate dette som en bar tekst, 980 00:47:27,310 --> 00:47:29,320 men vi kan være mer avansert i fremtiden. 981 00:47:29,320 --> 00:47:31,961 Jeg kommer til å gå raskt i mitt bord, og jeg er 982 00:47:31,961 --> 00:47:34,210 kommer til å kvitte seg med Rob, fordi det er en falsk nummer, 983 00:47:34,210 --> 00:47:38,540 Jeg kommer til å gå inn i edit her, og jeg er kommer til å endre min operatør manuelt 984 00:47:38,540 --> 00:47:43,410 å være Verizon, som det er, og nå over her. 985 00:47:43,410 --> 00:47:44,980 >> La oss gjøre en rask tilregnelighet sjekk. 986 00:47:44,980 --> 00:47:52,730 La oss åpne opp vår tekst script, som ser slik ut, er carrier% s. 987 00:47:52,730 --> 00:47:58,230 Vi gjør mye mer feil sjekker enn jeg gjorde i 2012, transportør. 988 00:47:58,230 --> 00:48:01,160 Og nå, jeg kommer til å gå fremover og re-kjøre skriptet. 989 00:48:01,160 --> 00:48:01,660 OK. 990 00:48:01,660 --> 00:48:06,100 Carrier er Verizon, som betyr nå forhåpentligvis kan jeg gjøre akkurat dette. 991 00:48:06,100 --> 00:48:08,360 Riktig dette året, forhåpentligvis, here we go. 992 00:48:08,360 --> 00:48:12,200 >> Så innsiden av dette for loop, jeg er skal ikke bare ha denne printf, 993 00:48:12,200 --> 00:48:15,990 Jeg er også tenkt å ringe tekst og bruken av denne funksjonen tilbakekalling 994 00:48:15,990 --> 00:48:19,670 var det tar for et tall, en bærer, og en melding. 995 00:48:19,670 --> 00:48:23,310 Så la oss se, er antallet kommer til å være rad quote unquote "nummer", 996 00:48:23,310 --> 00:48:31,660 rad quote unquote "carrier" og den siste var melding. 997 00:48:31,660 --> 00:48:36,250 Ikke skru opp dette året, semikolon. 998 00:48:36,250 --> 00:48:36,780 >> OK. 999 00:48:36,780 --> 00:48:38,280 Vi krysser fingrene. 1000 00:48:38,280 --> 00:48:39,970 La oss se om dette fungerer. 1001 00:48:39,970 --> 00:48:41,720 All right, så. 1002 00:48:41,720 --> 00:48:43,000 Here we go. 1003 00:48:43,000 --> 00:48:47,380 La oss låse opp telefonen, krysse fingrene, for faen. 1004 00:48:47,380 --> 00:48:50,300 Udefinert variabel may-- oh Vent, vent, vent, virkelig rask. 1005 00:48:50,300 --> 00:48:51,340 Virkelig fort, virkelig rask. 1006 00:48:51,340 --> 00:48:53,380 Dette er absolutt verdt det. 1007 00:48:53,380 --> 00:48:57,710 La meg ta, la meg ta, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Takk, tekstene har startet fra noen andre. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 La meg gå videre og åpne opp virke rask, dropbox.php / mail her. 1011 00:49:11,650 --> 00:49:12,660 Standby. 1012 00:49:12,660 --> 00:49:14,455 Totalt verdt det. 1013 00:49:14,455 --> 00:49:17,430 Nedlastinger. 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 >> Trenger en mer linje her. 1017 00:49:21,380 --> 00:49:24,530 Oh det er det, det er i Frosh Direktemeldinger, er det i registeret på tre. 1018 00:49:24,530 --> 00:49:28,820 Oh hei, Margo, tusen takk. 1019 00:49:28,820 --> 00:49:31,130 OK, og jeg manglet denne linjen her. 1020 00:49:31,130 --> 00:49:33,010 Så la meg raskt hente denne linjen med kode, 1021 00:49:33,010 --> 00:49:36,200 som inkluderer post eller biblioteket at jeg faktisk ønsker å bruke, 1022 00:49:36,200 --> 00:49:38,300 Jeg kommer til å raskt gå tilbake til funksjoner, 1023 00:49:38,300 --> 00:49:42,337 Jeg kommer til å gå til toppen av dette fil og krever denne filen også, 1024 00:49:42,337 --> 00:49:45,420 og nå skal jeg virkelig krysse min fingrene når jeg går tilbake til kommando 1025 00:49:45,420 --> 00:49:49,530 linje script, som er på innsiden av dagens lokale verten katalogen. 1026 00:49:49,530 --> 00:49:50,610 Kjø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 Oh, OK. 1034 00:50:02,290 --> 00:50:03,870 Here we go. 1035 00:50:03,870 --> 00:50:06,880 >> Mail får ny PHP mailer. 1036 00:50:06,880 --> 00:50:09,970 Gjorde jeg dette riktig? 1037 00:50:09,970 --> 00:50:11,067 Pokker. 1038 00:50:11,067 --> 00:50:12,150 To-- oh, 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, dette er kommer til å være så verdt det. 1042 00:50:18,630 --> 00:50:20,340 Adresse. 1043 00:50:20,340 --> 00:50:24,390 Dette er grunnen til at jeg ikke gjør det eksempler rett før klassen. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 Følgende mottakere mislyktes. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 La oss prøve en siste ting. 1048 00:50:33,040 --> 00:50:40,660 SMTP satt fra, legger adresse, adressen er faktisk at. 1049 00:50:40,660 --> 00:50:43,980 La oss prøve denne siste delen i adressen. 1050 00:50:43,980 --> 00:50:47,210 Aw, jeg er virkelig trist akkurat nå. 1051 00:50:47,210 --> 00:50:47,854 Takk. 1052 00:50:47,854 --> 00:50:50,270 Men jeg setter pris på alt tekstene du har vært å sende. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Du har fått dette David. 1055 00:50:56,320 --> 00:50:59,310 Du blåser det. 1056 00:50:59,310 --> 00:51:01,720 La oss la det være det og vi vil fikse på mandag. 1057 00:51:01,720 --> 00:51:04,290 Se deg da. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: Og nå 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 tre faller i skogen og ingen er rundt til C it-- [humrer]. 1061 00:51:17,590 --> 00:51:18,998