1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Week 8, vervolg] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Harvard Universiteit] 3 00:00:04,000 --> 00:00:08,000 [Hierdie is CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Dit is CS50, so dit is die einde van Week 8 hier. 5 00:00:13,000 --> 00:00:16,000 Ons het natuurlik 'n bietjie van 'n orkaan vroeër hierdie week, 6 00:00:16,000 --> 00:00:19,000 so nou is dit is regtig net ek en jy in hierdie lesingsaal, 7 00:00:19,000 --> 00:00:22,000 maar vandag het ons voortgaan om ons gesprek oor PHP 8 00:00:22,000 --> 00:00:25,000 en oor die web programmering meer in die algemeen, en ons het ook die idee om 9 00:00:25,000 --> 00:00:29,000 van databasisse, veral een wat geroep is MySQL, wat is baie gewild hierdie dae, 10 00:00:29,000 --> 00:00:34,000 in 'n groot deel as gevolg van sy scalability asook omdat sy gratis en open source. 11 00:00:34,000 --> 00:00:37,000 >> Maar eers 'n blik op waar ons opgehou het die laaste keer. 12 00:00:37,000 --> 00:00:40,000 Onthou dat ons is op soek na die verskeie Frosh kitsboodskappe voorbeelde, 13 00:00:40,000 --> 00:00:44,000 en dit was die afskuwelike vorm wat ek het met sowat 15 + jaar gelede 14 00:00:44,000 --> 00:00:49,000 ten einde studente op die kampus register vir eerstejaars binnemuurse sport te hê 15 00:00:49,000 --> 00:00:52,000 sonder om werklik om te trek meer oor die werf na Wigglesworth 16 00:00:52,000 --> 00:00:56,000 'n fisiese stuk papier onder sommige Proctor se deur te skuif. 17 00:00:56,000 --> 00:00:59,000 In plaas daarvan het ons verhuis alles aanlyn, maar om te doen wat ons nodig het om gebruik te maak 18 00:00:59,000 --> 00:01:03,000 van 'n paar tegnologie, sodat die een, het ons nodig het HTML HyperText Markup Language, 19 00:01:03,000 --> 00:01:07,000 wat weer opmaak taal wat jy maak web bladsye struktureel. 20 00:01:07,000 --> 00:01:10,000 >> Met behulp van 'n bietjie van CSS van hierdie dae, Cascading Style Sheets, 21 00:01:10,000 --> 00:01:16,000 waardeur ons stylizations gebruik van die web bladsy met behulp van 'n effens anders sintaks, 22 00:01:16,000 --> 00:01:19,000 terwyl die HTML was al oor die struktuur daarvan. 23 00:01:19,000 --> 00:01:21,000 Ons moet ook 'n web-programmeertaal te voer. 24 00:01:21,000 --> 00:01:25,000 In hierdie geval, sal ons gebruik PHP, en PHP gaan toelaat dat ons 25 00:01:25,000 --> 00:01:28,000 dinamiese uitset inhoud sowel as programmatiese dinge doen soos 26 00:01:28,000 --> 00:01:33,000 die stuur van e-posse, soos die geval was op die kennis wat ons het verlede week. 27 00:01:33,000 --> 00:01:35,000 >> Onthou dat die kode vir hierdie was in 2 dele. 28 00:01:35,000 --> 00:01:38,000 Een, het ons froshims3.php, 29 00:01:38,000 --> 00:01:42,000 en dit was grootliks opmaak met 'n HTML-vorm binnekant van dit, 30 00:01:42,000 --> 00:01:45,000 'n klein bietjie van CSS hier in die styl eienskappe 31 00:01:45,000 --> 00:01:48,000 sodat die vorm self op die bladsy gesentreer word, maar as dit 32 00:01:48,000 --> 00:01:51,000 ons het 'n paar verteenwoordigende vorm insette, 'n teks veld, 'n boks, 33 00:01:51,000 --> 00:01:55,000 sommige radio knoppies, 'n uitgesoekte spyskaart, en 'n submit-knoppie. 34 00:01:55,000 --> 00:02:01,000 En via hierdie vorm, het ons na 'n lêer wat was blykbaar genoem register3.php voorgelê, 35 00:02:01,000 --> 00:02:04,000 wat self kyk 'n bietjie iets soos hierdie. 36 00:02:04,000 --> 00:02:08,000 Nou, die meeste van die kode in register3.php, onthou, was al oor die e-pos. 37 00:02:08,000 --> 00:02:11,000 Dit het 'n bietjie van die validering van die vorm wat ingedien is om seker te maak 38 00:02:11,000 --> 00:02:14,000 dat die velde was eintlik wat verwag is. 39 00:02:14,000 --> 00:02:18,000 Toe ons noem 'n paar PHP funksies met behulp van effens nuwe sintaksis, 40 00:02:18,000 --> 00:02:20,000 selfs al is dit geleen van C. 41 00:02:20,000 --> 00:02:24,000 >> Hierdie arrow operateur stel ons in staat om die gebruik van iets genoem objek-georiënteerde programmering te maak. 42 00:02:24,000 --> 00:02:27,000 Ons sal nie daarop ingaan nie in enige detail hier, maar weet vir nou 43 00:02:27,000 --> 00:02:31,000 dit is 'n manier van die funksies wat verband hou met voorwerpe, 44 00:02:31,000 --> 00:02:34,000 wat is 'n spesiale tipe van struktuur, soos ons gesien het in C. 45 00:02:34,000 --> 00:02:37,000 Maar vir nou, net op die geloof dat dit die korrekte sintaks wat gebruik word 46 00:02:37,000 --> 00:02:41,000 wanneer die gebruik van 'n biblioteek soos hierdie PHPMailer biblioteek. 47 00:02:41,000 --> 00:02:44,000 En dan deur die einde van hierdie lêer het ons dinamies gegenereer 'n e-pos 48 00:02:44,000 --> 00:02:47,000 Dit het gestuur aan my jharvard@cs50.net rekening 49 00:02:47,000 --> 00:02:50,000 van my jharvard@cs50.net rekening, 50 00:02:50,000 --> 00:02:54,000 en ons in kennis gestel die gebruiker dienooreenkomstig dat hulle geregistreer is vir hierdie sport. 51 00:02:54,000 --> 00:02:57,000 Dit is pretty much wat die Frosh kitsboodskappe site al daardie jare gelede gedoen het 52 00:02:57,000 --> 00:03:00,000 toe ek dit geïmplementeer, toegestaan ​​word, in 'n ander taal, 53 00:03:00,000 --> 00:03:02,000 maar dit wys dat jy miskien die krag wat jy het 54 00:03:02,000 --> 00:03:05,000 nou dat jy jouself kan nie net programmaties druk 55 00:03:05,000 --> 00:03:08,000 op 'n lae vlak in 'n taal soos C, maar op 'n veel hoër vlak 56 00:03:08,000 --> 00:03:11,000 met hierdie baie werklike wêreld toepassings soos e-pos om werklik op te los 57 00:03:11,000 --> 00:03:13,000 n paar werklike wêreld probleme. 58 00:03:13,000 --> 00:03:16,000 >> Nou, natuurlik, selfs al het ek hierdie script gebruik te genereer 59 00:03:16,000 --> 00:03:20,000 e-pos dinamies van jharvard@cs50.net, wat is inderdaad 'n rekening 60 00:03:20,000 --> 00:03:23,000 wat ek het toegang tot, doen baie versigtig wees om te stuur 61 00:03:23,000 --> 00:03:26,000 e-pos net van rekeninge wat is eintlik jou eie, 62 00:03:26,000 --> 00:03:30,000 sodat die dinge kry jy in 'n bietjie van die warm water in die lewe. 63 00:03:30,000 --> 00:03:35,000 Met wat gesê het, laat ons nou die oorgang tot die oplossing van 'n ander probleem heeltemal, 64 00:03:35,000 --> 00:03:37,000 wat van die behoud van state. 65 00:03:37,000 --> 00:03:39,000 Nou, wat beteken dit eintlik beteken? 66 00:03:39,000 --> 00:03:42,000 HTTP, hierdie HyperText Transfer Protocol, 67 00:03:42,000 --> 00:03:45,000 is eintlik 'n staatlose protokol, en wat dit beteken is dat 68 00:03:45,000 --> 00:03:48,000 wanneer jy trek iets soos Google.com en dan Enter 69 00:03:48,000 --> 00:03:51,000 gewoonlik jou blaaier het 'n soort van die spin-ikoon wat dan 70 00:03:51,000 --> 00:03:54,000 resultate in 'n web bladsy afgelaai, 71 00:03:54,000 --> 00:03:57,000 en dan is daardie klein ikoon stop spin, en wat inderdaad dui daarop 72 00:03:57,000 --> 00:04:02,000 dat HTTP voltooi het 'n soort van verbinding met die bediener, en dit is dit. 73 00:04:02,000 --> 00:04:05,000 HTTP is staatloos in die sin dat dit nie in stand te hou 74 00:04:05,000 --> 00:04:08,000 'n aanhoudende verbinding met die bediener in die dieselfde manier Skype nie 75 00:04:08,000 --> 00:04:11,000 of Gchat nie want met HTTP 76 00:04:11,000 --> 00:04:15,000 die aanname is dat wanneer jy 'n web bladsy wat is dit het gehaal. 77 00:04:15,000 --> 00:04:18,000 >> Nou, in werklikheid hierdie dae op webwerwe soos Facebook en Google Maps 78 00:04:18,000 --> 00:04:21,000 en Twitter en dies meer is daar 'n baie meer dinamika waarvolgens 79 00:04:21,000 --> 00:04:25,000 selfs nadat daardie ikoon stop spin wat jy kan kry in werklikheid meer updates 80 00:04:25,000 --> 00:04:29,000 van die bediener, meer tweets, meer status updates op Facebook en die wil. 81 00:04:29,000 --> 00:04:33,000 Maar selfs dit is die gebruik van 'n tegniek wat ons sal praat oor in 'n week of twee 82 00:04:33,000 --> 00:04:36,000 bekend as Ajax die gebruik van 'n taal, die sogenaamde JavaScript, 83 00:04:36,000 --> 00:04:38,000 maar aan die einde van die dag, HTTP is nog staatloos is nie. 84 00:04:38,000 --> 00:04:42,000 En tog as jy wil om een ​​of ander manier onthou dinge oor 'n gebruiker 85 00:04:42,000 --> 00:04:44,000 selfs nadat hulle van jou bediener het ontkoppel 86 00:04:44,000 --> 00:04:47,000 PHP nie bekostig om 'n manier om dit te doen 87 00:04:47,000 --> 00:04:52,000 want, soos ons gesien het die laaste keer, PHP 'n aantal superglobals, 88 00:04:52,000 --> 00:04:55,000 en 'n superglobal is, weer, 'n spesiale globale veranderlike 89 00:04:55,000 --> 00:04:59,000 wat aan u oorhandig word deur die webbediener en deur PHP self. 90 00:04:59,000 --> 00:05:02,000 >> Jy hoef nie iets te doen om waardes in te sit, 91 00:05:02,000 --> 00:05:05,000 en onder die superglobals het ons tot dusver gesien kry en plaas, 92 00:05:05,000 --> 00:05:08,000 en dit is waar vorm velde word outomaties vir jou, 93 00:05:08,000 --> 00:05:11,000 sowel as 'n paar ander wat ons nog nie gesien het nie. 94 00:05:11,000 --> 00:05:17,000 Binnekant van $ _server is 'n paar spesiale veranderlikes wat verband hou met die bediener self. 95 00:05:17,000 --> 00:05:22,000 Wat is die IP-adres, wat protokol, HTTP-of HTTPS het jy gebruik, 96 00:05:22,000 --> 00:05:25,000 wat versoek metode het jy gebruik en dies meer, so daar is 'n paar interessante, 97 00:05:25,000 --> 00:05:29,000 sappige besonderhede oor die bediener, en in die waarheid te sê, die gebruiker daar as well. 98 00:05:29,000 --> 00:05:33,000 Daar is $ _cookie, en dit is waar hierdie dinge genoem koekies gestoor word. 99 00:05:33,000 --> 00:05:36,000 Ons sal nie tyd spandeer op koekies self vandag, 100 00:05:36,000 --> 00:05:40,000 maar weet nou dat 'n koekie is net 'n klein stukkie van die inligting 101 00:05:40,000 --> 00:05:43,000 dat 'n web bediener op 'n webblaaier kan plant 102 00:05:43,000 --> 00:05:46,000 en op sy beurt sy RAM of sy rekenaar se hardeskyf 103 00:05:46,000 --> 00:05:49,000 inligting oor 'n gebruiker te stoor, byvoorbeeld, hul gebruikersnaam 104 00:05:49,000 --> 00:05:52,000 sodat hulle dit nie te tik elke keer wanneer hulle aanteken of 'n 105 00:05:52,000 --> 00:05:55,000 unieke nommer of identifiseerder vir hierdie gebruiker 106 00:05:55,000 --> 00:05:58,000 sodat jy nie om hulle te verpes met die dieselfde soort van vrae oor 107 00:05:58,000 --> 00:06:00,000 voorkeure in die toekoms, maar die meeste van belang 108 00:06:00,000 --> 00:06:02,000 reg nou is $ _session. 109 00:06:02,000 --> 00:06:07,000 >> Hierdie superglobal, wat, soos die ander, aan u oorhandig word outomaties deur PHP 110 00:06:07,000 --> 00:06:10,000 wanneer jy skryf PHP-gebaseerde webwerwe 111 00:06:10,000 --> 00:06:13,000 kan enigiets wat jy wil, strykers, heelgetalle stoor, 112 00:06:13,000 --> 00:06:16,000 swaai punte, waardes, skikkings, voorwerpe, 113 00:06:16,000 --> 00:06:20,000 regtig enigiets wat jy wil, en dit laat jou toe om dit op te slaan op so 'n wyse 114 00:06:20,000 --> 00:06:23,000 dat selfs indien die gebruiker besoek jy nou en dan 115 00:06:23,000 --> 00:06:26,000 kom terug 'n minuut van nou of 5 minute van nou, omdat 116 00:06:26,000 --> 00:06:28,000 hulle neem hul tyd voor te kliek op 'n ander skakel 117 00:06:28,000 --> 00:06:32,000 PHP sal verseker dat alles wat jy het in daardie sessie superglobal 118 00:06:32,000 --> 00:06:37,000 'n minuut of 5 minute gelede sal nog steeds daar wees wanneer die gebruiker opbrengste. 119 00:06:37,000 --> 00:06:40,000 En onder die kap hierdie superglobal is geïmplementeer deur middel van 120 00:06:40,000 --> 00:06:44,000 daardie dinge genoem koekies, maar vir nou, dit is net 'n abstraksie 121 00:06:44,000 --> 00:06:47,000 waardeur dit is soort van die programmatiese ekwivalent van 'n shopping cart. 122 00:06:47,000 --> 00:06:50,000 Wat jy ook al, die programmeerder, in daardie 123 00:06:50,000 --> 00:06:53,000 superglobal assosiatiewe skikking sal daar 'n aantal minute later 124 00:06:53,000 --> 00:06:59,000 totdat jy dit verwyder of totdat die gebruiker sy of haar browser gesluit geheel en al. 125 00:06:59,000 --> 00:07:02,000 >> Kom ons neem 'n blik op 'n voorbeeld van hoe hierdie ding is eintlik gebruik word. 126 00:07:02,000 --> 00:07:07,000 In counter.php onder vandag se stukke van die kode 127 00:07:07,000 --> 00:07:09,000 ons het die volgende reël. 128 00:07:09,000 --> 00:07:13,000 Aan die begin van hierdie lêer het ons het 'n klomp blou kommentaar, wat oninteressant vir nou. 129 00:07:13,000 --> 00:07:15,000 Maar in lyn 13 het ons 'n nuwe lyn, 130 00:07:15,000 --> 00:07:18,000 session_start, en wat eintlik nie presies wat dit sê. 131 00:07:18,000 --> 00:07:20,000 Dit begin sessies. 132 00:07:20,000 --> 00:07:25,000 Dit stel jou in staat om daardie groot superglobal $ _session te gebruik, en dit is so eenvoudig soos dit. 133 00:07:25,000 --> 00:07:30,000 Nou, as ons voortgaan om te kyk na line 16, laat ons probeer om uit te vind wat hierdie webblad gaan doen. 134 00:07:30,000 --> 00:07:35,000 If (isset ($ _SESSION ["counter") dan voort te gaan 135 00:07:35,000 --> 00:07:39,000 en stoor in-die-toonbank veranderlike, klein toonbank, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Counter"]. 137 00:07:42,000 --> 00:07:45,000 Dit blyk te wees waarby 'n plaaslike veranderlike genoem counter 138 00:07:45,000 --> 00:07:48,000 binnekant van wat dit is om 'n afskrif van alles wat binnekant van die superglobal 139 00:07:48,000 --> 00:07:52,000 sessie op die plek "counter genoem." 140 00:07:52,000 --> 00:07:56,000 Anders, blykbaar, hierdie klein plaaslike veranderlike toonbank, is geïnisialiseer tot 0. 141 00:07:56,000 --> 00:08:01,000 >> Maar dan 'n paar reëls later in 26 kennisgewing dat die sessie se afskrif van die toonbank, 142 00:08:01,000 --> 00:08:06,000 sy sleutel, het 'n nuwe waarde wat wat is die huidige waarde plus 1. 143 00:08:06,000 --> 00:08:09,000 In kort, hierdie lêer blyk te wees afhangende van 144 00:08:09,000 --> 00:08:13,000 'n teller wat se binnekant van die sessie gestoor superglobal 145 00:08:13,000 --> 00:08:16,000 deur dit te verhoog van 1, maar dit behou die eerste keer 'n afskrif van die vorige waarde 146 00:08:16,000 --> 00:08:20,000 deur die stoor dit in 'n plaaslike veranderlike genaamd $ toonbank, 147 00:08:20,000 --> 00:08:22,000 en dan af hier laat ons sien wat oorbly. 148 00:08:22,000 --> 00:08:24,000 Dit blyk dit is pretty much net HTML. 149 00:08:24,000 --> 00:08:29,000 Aan die onderkant van hierdie bladsy sien ons in lyn 37 dat ek hierdie webwerf besoek 150 00:08:29,000 --> 00:08:33,000 counter aantal kere, dus is daar 'n paar interessante eienskappe hier. 151 00:08:33,000 --> 00:08:36,000 Een, dit is duidelik 'n veranderlike, maar dit is nie voldoende om net te sit 152 00:08:36,000 --> 00:08:39,000 $ Toonbank in die liggaam van jou HTML, want natuurlik 153 00:08:39,000 --> 00:08:43,000 al is dit net daar onder jou HTML PHP gaan om te aanvaar dat net HTML. 154 00:08:43,000 --> 00:08:48,000 Wil jy letterlik $ toonbank gedruk word op die skerm. 155 00:08:48,000 --> 00:08:51,000 >> Maar in plaas daarvan deur die val in PHP mode 156 00:08:51,000 --> 00:08:55,000 met hierdie stuk van die sintaksis kan ons dinamiese voeg 'n waarde hier 157 00:08:55,000 --> 00:08:58,000 baie soortgelyk in die gees wat ons gedoen het die laaste keer met 158 00:08:58,000 --> 00:09:00,000 die invoeging van waardes in stringe. 159 00:09:00,000 --> 00:09:04,000 Trouens, dit is net 'n snelskrif notasie vir die sê van iets soos hierdie letterlik, 160 00:09:04,000 --> 00:09:12,000 druk ($ toonbank) of selfs iets soos printf (% s, counter), 161 00:09:12,000 --> 00:09:14,000 of selfs, soos jy gesien het aanlyn of in handboeke, 162 00:09:14,000 --> 00:09:17,000 daar is 'n funksie in PHP echo genoem 163 00:09:17,000 --> 00:09:20,000 wat nie die dieselfde ding, en almal van hulle is net meer asem maniere 164 00:09:20,000 --> 00:09:25,000 sê <=? 165 00:09:25,000 --> 00:09:28,000 In hierdie een geval jy hoef nie te sit 166 00:09:28,000 --> 00:09:30,000 die woord PHP na die vraagteken. 167 00:09:30,000 --> 00:09:34,000 Dit is snelskrifnotasie vir, weer, wat sien ons net 'n oomblik gelede 168 00:09:34,000 --> 00:09:37,000 wat aansluit by 'n waarde. 169 00:09:37,000 --> 00:09:39,000 >> Kom ons kyk wat die eindresultaat van hierdie is eintlik. 170 00:09:39,000 --> 00:09:43,000 Laat ek tog oorstap in ons counter.php lêer, 171 00:09:43,000 --> 00:09:47,000 en ons sal sien dat Dawid net 'n fout gemaak deur te speel met die kode. 172 00:09:47,000 --> 00:09:50,000 Kom ons gaan fix wat hy screwed up, 173 00:09:50,000 --> 00:09:54,000 en die fout blyk om daar te wees, weg, on line 37. 174 00:09:54,000 --> 00:09:59,000 Volgens die top van hierdie bladsy het ek hierdie webwerf besoek 0 times. 175 00:09:59,000 --> 00:10:02,000 Wel, laat ons nou voort te gaan, en op die top van die leser op die 176 00:10:02,000 --> 00:10:05,000 laai ikoon, en ek kliek herlaai, 177 00:10:05,000 --> 00:10:12,000 en nou is ek besoek die site 1 keer, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 En inderdaad, as ons kyk na die bron van hierdie bladsy die werklike bron kode verander, 179 00:10:16,000 --> 00:10:19,000 en let op die totale afwesigheid van enige PHP, en dit is omdat 180 00:10:19,000 --> 00:10:23,000 PHP-kode geëvalueer word of vertolk bediener kant, 181 00:10:23,000 --> 00:10:27,000 en so dit beteken dat die uitset van die PHP skrip wat uiteindelik aan die leser gestuur, 182 00:10:27,000 --> 00:10:31,000 wat in hierdie geval is 'n paar rou HTML en 'n paar rou teks. 183 00:10:31,000 --> 00:10:33,000 Wat gaan hier aan? 184 00:10:33,000 --> 00:10:37,000 >> Wel, met relatief min lyne kode Ek is in staat om te slaan 185 00:10:37,000 --> 00:10:40,000 aanhoudend oor die verloop van 'n paar sekondes, of as ons lank genoeg gewag, 186 00:10:40,000 --> 00:10:44,000 minute, selfs ure, n waarde in 'n manier dat maak HTTP 187 00:10:44,000 --> 00:10:47,000 Stateful lyk asof ons het behou 188 00:10:47,000 --> 00:10:51,000 hierdie verbinding met die bediener, en dit is net onthou wat ek gesê dat dit die laaste keer, 189 00:10:51,000 --> 00:10:55,000 maar in werklikheid is daar is 'n hele klomp van die kompleksiteit gaan op onder die kap 190 00:10:55,000 --> 00:10:59,000 wat koekies wat in staat stel PHP my hierdie illusie te gee 191 00:10:59,000 --> 00:11:02,000 van hierdie shopping cart-agtige funksie. 192 00:11:02,000 --> 00:11:05,000 Vir nou, 'n triviale voorbeeld waar ons net 'n heelgetal stoor, 193 00:11:05,000 --> 00:11:08,000 maar dat die funksie sal terug kom om van groot waarde te wees 194 00:11:08,000 --> 00:11:10,000 wanneer ons begin praat oor meer komplekse projekte, 195 00:11:10,000 --> 00:11:12,000 onder hulle probleem gestel 7. 196 00:11:12,000 --> 00:11:16,000 Dit is jou heel laaste probleem in CS50. 197 00:11:16,000 --> 00:11:19,000 Ek weet, dit is so hartseer, maar wat jy sal vind, is dat ons gaan om tot die gevolgtrekking te kom 198 00:11:19,000 --> 00:11:22,000 hierdie deel van die semester deur eintlik die oorgang 199 00:11:22,000 --> 00:11:25,000 seker van die konteks van C na die konteks van PHP 200 00:11:25,000 --> 00:11:27,000 maar, terwyl die gebruik van 'n paar van die baie dieselfde grondbeginsels 201 00:11:27,000 --> 00:11:29,000 ons het gepraat oor vir 'n geruime tyd. 202 00:11:29,000 --> 00:11:33,000 >> Die doel met pset 7 CS50 Finansies te implementeer, 203 00:11:33,000 --> 00:11:37,000 wat is jou eie weergawe van Yahoo Finansies of Google Finansies 204 00:11:37,000 --> 00:11:40,000 of selfs Etrade.com waardeur jy het die vermoë om 205 00:11:40,000 --> 00:11:43,000 voorraad pryse vir gegewe simbole kyk, maar selfs meer as dit 206 00:11:43,000 --> 00:11:48,000 jy het die vermoë om te "koop" en "verkoop" aandele 207 00:11:48,000 --> 00:11:51,000 wat verhandel word op verskeie aandelebeurse, want as hierdie tuisblad 208 00:11:51,000 --> 00:11:55,000 hier aandui, wat is werklik die mate waarin ons het begin 209 00:11:55,000 --> 00:11:59,000 die probleem stel vir jou, jy het 'n login vorm wat vra vir 'n gebruikersnaam en 'n wagwoord. 210 00:11:59,000 --> 00:12:03,000 Dit het 'n submit knoppie, maar daarna, as ons sal uiteindelik sien, 211 00:12:03,000 --> 00:12:06,000 daar is niks wat regtig aan die gang onder die kap nie, omdat dit 212 00:12:06,000 --> 00:12:09,000 bly vir jou die vermoë om nuwe gebruikers aan te registreer te implementeer, 213 00:12:09,000 --> 00:12:12,000 die vermoë om aandele te koop, voorrade te verkoop, 214 00:12:12,000 --> 00:12:14,000 om werklik te kyk huidige voorraad pryse. 215 00:12:14,000 --> 00:12:17,000 >> En inderdaad, sal dit wees as die werklike wêreld as moontlik, want ons het 216 00:12:17,000 --> 00:12:20,000 sluit in 'n bietjie van die kode wat jou sal toelaat om met 'n enkele funksie 217 00:12:20,000 --> 00:12:25,000 Yahoo Finansies, wat wonderlik gratis beskikbaar data maak om navraag te doen 218 00:12:25,000 --> 00:12:31,000 vir die soek voorraad pryse wat gebaseer is op die beurs simbool of ENKELE simbool, 219 00:12:31,000 --> 00:12:34,000 en jy kry die huidige voorraad prys van die dag terug. 220 00:12:34,000 --> 00:12:37,000 Die data wat jy eintlik sien in hierdie spesifieke pset sal wees 221 00:12:37,000 --> 00:12:40,000 as die werklike wêreld soos dit kan so kry dat jy eintlik tussenbelegsel 222 00:12:40,000 --> 00:12:43,000 met werklike wêreld aandele, werklike wêreld pryse, 223 00:12:43,000 --> 00:12:47,000 Dan sal ons sien hoeveel geld jy dalk kan maak 224 00:12:47,000 --> 00:12:51,000 oor die volgende paar dae van die speel met jou eie probleem stel. 225 00:12:51,000 --> 00:12:55,000 >> Maar laat ons die eerste stel die stadium vir hoe om iets te ontwerp wat is seker meer ingewikkeld 226 00:12:55,000 --> 00:12:59,000 as counter.php, dit is meer ingewikkeld as enige van Frosh kitsboodskappe voorbeelde wat tot dusver, 227 00:12:59,000 --> 00:13:02,000 en laat ons probeer om 'n paar paradigmas te stel dat ons in staat stel om 228 00:13:02,000 --> 00:13:06,000 beide vir pset 7 en miskien vir jou finale projek as jy iets doen web-gebaseerde 229 00:13:06,000 --> 00:13:11,000 te hou om jou kode goed georganiseer, te hou jouself sane, 230 00:13:11,000 --> 00:13:15,000 en 'n stap in die rigting saam te neem, hetsy in CS50 se finale projek 231 00:13:15,000 --> 00:13:18,000 of buite as jy nog steeds om iets in die toekoms te programmeer. 232 00:13:18,000 --> 00:13:21,000 Daar is hierdie algemene ontwerp paradigma 233 00:13:21,000 --> 00:13:24,000 in rekenaarwetenskap en meer in die algemeen in die ontwikkeling van sagteware 234 00:13:24,000 --> 00:13:27,000 bekend as MVC, model-view-kontroleerder, 235 00:13:27,000 --> 00:13:30,000 en dit is 'n dom akroniem wat 'n baie nice idee beskryf, 236 00:13:30,000 --> 00:13:34,000 wat is die skeiding van die verskillende aspekte van 'n program, 237 00:13:34,000 --> 00:13:39,000 spesifiek die behoud van die logika of die besigheid logika van 'n webwerf 238 00:13:39,000 --> 00:13:42,000 sodat enigiets wat behels dinge soos 239 00:13:42,000 --> 00:13:45,000 roep funksies en bevraagteken databasisse en dies meer 240 00:13:45,000 --> 00:13:48,000 gebeur nie onder jou HTML 241 00:13:48,000 --> 00:13:51,000 maar eerder in afsonderlike lêers, en inderdaad, daar is hierdie 'n lêer 242 00:13:51,000 --> 00:13:54,000 gewoonlik dat jy die beheerder genoem 243 00:13:54,000 --> 00:13:56,000 wat is regtig die brein agter die operasie, en ons sal sien 'n voorbeeld 244 00:13:56,000 --> 00:13:58,000 in net 'n oomblik. 245 00:13:58,000 --> 00:14:01,000 >> Daar is 'n model wat programmering-kode 246 00:14:01,000 --> 00:14:05,000 wat doen die praat met jou databases, wat praat met Yahoo Finansies en dies meer, 247 00:14:05,000 --> 00:14:08,000 en dan is daar die V in MVC, die uitsig, 248 00:14:08,000 --> 00:14:11,000 al die dinge wat aan estetika, die lêers wat eintlik bevat wat verband hou 249 00:14:11,000 --> 00:14:14,000 jou HTML, miskien jou CSS en die wil. 250 00:14:14,000 --> 00:14:17,000 Die idee hier, soos hierdie foto suggereer, is dat die beheerder 251 00:14:17,000 --> 00:14:21,000 is die lêer, soos ons sal gou sien en as jy in die besonder sien in pset 7, 252 00:14:21,000 --> 00:14:24,000 dat die hele wêreld praat via hul webblaaiers. 253 00:14:24,000 --> 00:14:27,000 Dit is die lêer wat op die openbare internet besoek kry, 254 00:14:27,000 --> 00:14:30,000 maar die kontroleerder praat met potensieel 'n model, 255 00:14:30,000 --> 00:14:34,000 wat een of meer ander lêers wat kode bevat verwant aan data, 256 00:14:34,000 --> 00:14:37,000 kode wat verband hou met databasisse en die soos, en dan praat met 257 00:14:37,000 --> 00:14:40,000 die beheerder een of meer ander lêers bekend as views, 258 00:14:40,000 --> 00:14:43,000 wat is die estetika van 'n web bladsy, templates van spesies, 259 00:14:43,000 --> 00:14:47,000 dat sommige data as inset kon neem, maar aan die einde van die dag 260 00:14:47,000 --> 00:14:50,000 die enigste logika binnekant van 'n oog moet die lewering van daardie data, 261 00:14:50,000 --> 00:14:53,000 iterating oor 'n lus en eintlik spoeg 'n paar 262 00:14:53,000 --> 00:14:56,000 HTML-gebaseerde vertoning daarvan of selfs iets soos 'n PDF. 263 00:14:56,000 --> 00:14:59,000 >> Wat is mooi oor MVC is dat jy verskillende menings kan hê 264 00:14:59,000 --> 00:15:02,000 gebaseer op die tipe van apparaat, gebaseer op die tipe van die lêer formaat wat jy eintlik 265 00:15:02,000 --> 00:15:04,000 wil om te wys aan die gebruiker. 266 00:15:04,000 --> 00:15:10,000 Kom ons neem 'n blik op 'n paar progressief meer kompleks en goed ontwerpte voorbeelde 267 00:15:10,000 --> 00:15:13,000 deur eers met weergawe 0 hier te begin. 268 00:15:13,000 --> 00:15:16,000 Laat my voort te gaan en maak vandag in ons MVC-directory 269 00:15:16,000 --> 00:15:21,000 'n lêer genaamd index.php in directory 0. 270 00:15:21,000 --> 00:15:26,000 Let op dit is 'n super eenvoudige en baie underwhelming webwerf 271 00:15:26,000 --> 00:15:29,000 wat is 'n soort van weergawe 0 van 'n tuisblad vir CS50, 272 00:15:29,000 --> 00:15:32,000 en let op hoe ons het 'n skakel na Lesings, ons het 'n skakel na Syllabus, 273 00:15:32,000 --> 00:15:35,000 en as ek die skakel na Lesings kennisgewing dat die URL 274 00:15:35,000 --> 00:15:39,000 tot bo gaan te verander lectures.php. 275 00:15:39,000 --> 00:15:44,000 As ek dan volg die skakel na Week 1 kennisgewing dat die URL verander tot week1.php. 276 00:15:44,000 --> 00:15:46,000 Daar blyk 'n redelik eenvoudige hiërargiese struktuur hier te wees. 277 00:15:46,000 --> 00:15:49,000 >> Kom ons neem 'n vinnige blik onder die kap hoe dit uitgelê, 278 00:15:49,000 --> 00:15:53,000 en inderdaad, as ek kyk na index.php dit is redelik maklik. 279 00:15:53,000 --> 00:15:57,000 Om die waarheid te sê, selfs al het ek noem dit 'n PHP-lêer daar is geen werklike programmeringskode uitmaak nie. 280 00:15:57,000 --> 00:16:01,000 Daar is 'n opmerking wat ek geskryf het hier in PHP net sodat die gebruiker nie beland dit sien. 281 00:16:01,000 --> 00:16:05,000 Natuurlik, is soos gister en eergister nie, enigiets wat in tussen PHP tags is 282 00:16:05,000 --> 00:16:08,000 kry dit vertaal word, beteken: selfs al is dit 'n kommentaar, en a comment te interpreteer 283 00:16:08,000 --> 00:16:11,000 beteken dit net aan die einde van die dag weg te gooi en nie eintlik 284 00:16:11,000 --> 00:16:15,000 stuur dit aan die leser, sodat alles hier is net die estetiese. 285 00:16:15,000 --> 00:16:20,000 As ek dit oopmaak insgelyks lectures.php dit is ook net 'n harde gekodeerde lêer. 286 00:16:20,000 --> 00:16:23,000 Dit gebeur genoem te word iets. Php, 287 00:16:23,000 --> 00:16:27,000 maar dit is regtig net html, en week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 insgelyks is net opmaak, so daar is 'n klomp van die tekortkominge van hierdie ontwerp. 289 00:16:31,000 --> 00:16:33,000 Een, dit is 'n groot hoeveelheid van die kopie / plak. 290 00:16:33,000 --> 00:16:37,000 Selfs al is die enigste ding wat onder hierdie lêers verander is die on-geordende lys, 291 00:16:37,000 --> 00:16:41,000 die li tags, Ek het egter doc tipe, HTML, kop, 292 00:16:41,000 --> 00:16:44,000 titel, beslote liggaam, naby HTML en meer 293 00:16:44,000 --> 00:16:47,000 in elke enkele lêer, wat beteken dat as ek ooit wil te herstruktureer 294 00:16:47,000 --> 00:16:50,000 hierdie webblad of restylize dit wat ek het om te gaan in en verander 295 00:16:50,000 --> 00:16:54,000 al hierdie lêers met die hand of met 'n paar massiewe vind en te vervang. 296 00:16:54,000 --> 00:17:01,000 >> Kom ons neem 'n stap in die rigting van 'n slimmer, meer dink ontwerp in weergawe 1 hier 297 00:17:01,000 --> 00:17:04,000 waardeur soos per die lees my dat ons so het ingesluit wat jy kan speel saam met 298 00:17:04,000 --> 00:17:07,000 hierdie meer rustig by die huis kennisgewing dat ons hier 299 00:17:07,000 --> 00:17:10,000 'n opsomming van die lêers in die weergawe 1 van hierdie webwerf, 300 00:17:10,000 --> 00:17:13,000 en dit blyk dat ek het dit op my geneem om faktor 301 00:17:13,000 --> 00:17:17,000 n paar algemene kode header.php en footer.php. 302 00:17:17,000 --> 00:17:20,000 Wel, laat ons neem 'n blik op wat binne die eerste van die. 303 00:17:20,000 --> 00:17:23,000 Header.php lyk bekend, 304 00:17:23,000 --> 00:17:26,000 maar sien waar kom kap dit af? 305 00:17:26,000 --> 00:17:30,000 Reg na line 19, so dit is alles wat was algemeen 306 00:17:30,000 --> 00:17:33,000 van die lêers index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 en week2.php van die vorige voorbeeld. 308 00:17:36,000 --> 00:17:40,000 Wat ek gedoen het, was kopie en sny alles wat gemeenskaplik aan al die lêers, 309 00:17:40,000 --> 00:17:44,000 sit dit in 'n aparte header-lêer, en insgelyks in footer.php 310 00:17:44,000 --> 00:17:48,000 ek het dieselfde beginsel toe te pas waarvolgens die enigste interessante lyne 311 00:17:48,000 --> 00:17:52,000 in footer.php hierdie twee, beslote liggaam en naby HTML. 312 00:17:52,000 --> 00:17:55,000 >> Maar wat beteken dit nou is, is dat in die nuwe weergawe 313 00:17:55,000 --> 00:17:59,000 index.php kennisgewing hoeveel makliker dit kan kry. 314 00:17:59,000 --> 00:18:02,000 Toegegee, 'n bietjie meer kriptiese soek, 'n bietjie minder intuïtief 315 00:18:02,000 --> 00:18:06,000 van bo na onder te volg nie, maar my God, al van daardie ontslag is nou verby. 316 00:18:06,000 --> 00:18:10,000 Ons benodig met behulp van 'n PHP funksie letterlik genoem vereis tot bo, 317 00:18:10,000 --> 00:18:15,000 wat baie herinner, onthou, C # sluit meganisme. 318 00:18:15,000 --> 00:18:17,000 Ons benodig header.php aan die bokant. 319 00:18:17,000 --> 00:18:20,000 Ons benodig footer.php aan die onderkant, en die enigste ding wat anders is 320 00:18:20,000 --> 00:18:25,000 of spesiale oor hierdie lêer is die inhoud wat bedoel is om uniek te wees om dit te. 321 00:18:25,000 --> 00:18:29,000 As ek gaan dan in, sê, lectures.php, dieselfde beginsel van toepassing is. 322 00:18:29,000 --> 00:18:32,000 Weereens, 'n paar opmerkings tot bo, maar dan Ek benodig header, vereis footer, 323 00:18:32,000 --> 00:18:35,000 en tussen dit is net die inhoud wat is eintlik verander. 324 00:18:35,000 --> 00:18:38,000 En as ons kyk in Week 1 en week 2 wil ons sien 325 00:18:38,000 --> 00:18:42,000 dat dieselfde beginsel was daar toegepas word. 326 00:18:42,000 --> 00:18:44,000 Wel, ons het nie baie gedoen daar. 327 00:18:44,000 --> 00:18:48,000 >> Kom ons neem 'n blik op die weergawe 2, wat 'n soortgelyke struktuur, 328 00:18:48,000 --> 00:18:50,000 maar nou sien ek iets anders het ingestel. 329 00:18:50,000 --> 00:18:53,000 In lyn 10 Ek het 'helpers.php, 330 00:18:53,000 --> 00:18:55,000 wat bevat blykbaar helper funksies. 331 00:18:55,000 --> 00:18:58,000 'N helper funksie is oor die algemeen 'n relatief kort funksie 332 00:18:58,000 --> 00:19:01,000 wat jy skryf om jou te help in verskillende plekke, 333 00:19:01,000 --> 00:19:04,000 en laat ons kyk wat binnekant van helpers.php is. 334 00:19:04,000 --> 00:19:07,000 In hierdie geval, dit lyk soos dit het 2 funksies. 335 00:19:07,000 --> 00:19:10,000 Onthou van die ander dag met ons kubus voorbeeld 336 00:19:10,000 --> 00:19:13,000 wat jy kan definieer jou eie funksies in PHP, en wat ek nou gedoen het, is ek 337 00:19:13,000 --> 00:19:17,000 gedefinieerde funksies genoem lewer footer en lewer header, 338 00:19:17,000 --> 00:19:21,000 die eerste wat 'n parameter genoem data, 339 00:19:21,000 --> 00:19:25,000 waarvan die standaard waarde is 'n leë verskeidenheid, soos voorgestel dat daar, 340 00:19:25,000 --> 00:19:29,000 en ons kan eintlik skryf dit selfs meer bondig in die nuutste weergawe van PHP 341 00:19:29,000 --> 00:19:32,000 deur die sê plein bracket, gesluit vierkante bracket. 342 00:19:32,000 --> 00:19:35,000 Dit beteken dat 'n leë skikking van grootte 0, maar nietemin 'n skikking. 343 00:19:35,000 --> 00:19:38,000 >> Hierdie uittreksel funksie is 'n bietjie spesiaal in daardie 344 00:19:38,000 --> 00:19:41,000 wat dit doen, is dit neem as sy argument 'n associatieve array 345 00:19:41,000 --> 00:19:45,000 wat 0 of meer sleutel waarde pare, en as jy 'n sleutel van foo 346 00:19:45,000 --> 00:19:48,000 en 'n waarde van bar die uittreksel funksie 347 00:19:48,000 --> 00:19:51,000 skep 'n situasie wat nou, soos van lyn 11, 348 00:19:51,000 --> 00:19:57,000 jy het 'n plaaslike veranderlike genaamd $ cat wie se waarde is bar. 349 00:19:57,000 --> 00:19:59,000 En as jy meer sleutels en waardes in die data verskeidenheid, 350 00:19:59,000 --> 00:20:03,000 insgelyks sou hulle onttrek word in die plaaslike omvang 351 00:20:03,000 --> 00:20:06,000 of naam ruimte sodat footer.php en 352 00:20:06,000 --> 00:20:09,000 dieselfde idee hier onder sodat header.php 353 00:20:09,000 --> 00:20:12,000 het toegang tot daardie veranderlikes. 354 00:20:12,000 --> 00:20:15,000 Om die waarheid te sê, laat my weer oopmaak header.php 355 00:20:15,000 --> 00:20:18,000 en die aandag vestig nou hoe dit lyk in hierdie weergawe. 356 00:20:18,000 --> 00:20:22,000 >> Eerder as om hard kodering CS50 as die titel vir elke enkele bladsy 357 00:20:22,000 --> 00:20:24,000 kennis van die dinamika wat moontlik nou. 358 00:20:24,000 --> 00:20:29,000 In reël 5 ek aansluit by 'n titel veranderlike, 359 00:20:29,000 --> 00:20:34,000 maar eers moet ek verby die titel veranderlike met 'n funksie genoem htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 'N simpel naam vir 'n funksie, solank as wat dit is nie, maar is dit nie regtig wat dit sê. 361 00:20:38,000 --> 00:20:41,000 Dit verseker dat enige spesiale karakters 362 00:20:41,000 --> 00:20:46,000 in die tou wat geslaag is behoorlik ontsnap HTML. 363 00:20:46,000 --> 00:20:49,000 Dit is eintlik 'n manier van die voorkoms van iets genoem 'n cross-site scripting aanval 364 00:20:49,000 --> 00:20:52,000 waardeur iemand kan kwaadwillig of per ongeluk 365 00:20:52,000 --> 00:20:55,000 spuit hul eie HTML-kode op jou webwerf 366 00:20:55,000 --> 00:20:59,000 deur die plak in die een of ander vorm, byvoorbeeld, 367 00:20:59,000 --> 00:21:02,000 iets wat jy baie het nie verwag dat, veral JavaScript-kode, 368 00:21:02,000 --> 00:21:05,000 as ons praat oor in 'n week of twee tyd. 369 00:21:05,000 --> 00:21:08,000 >> Dit is nou header.php, dit is 'n oog 370 00:21:08,000 --> 00:21:12,000 in die sin dat dit jou toelaat om esteties kyk na die inhoud van sommige datastel. 371 00:21:12,000 --> 00:21:14,000 Maar meer spesifiek, dit is 'n sjabloon. 372 00:21:14,000 --> 00:21:19,000 Dit is 'n soort van 'n bloudruk nou van wat ons wil die bladsyboskrif ('header') van elke bladsy om te lyk soos, 373 00:21:19,000 --> 00:21:23,000 maar daar is 'n paar dinamika wat ons wil hê om die titel te dinamies ingevoeg word 374 00:21:23,000 --> 00:21:26,000 wat gebaseer is op die titel veranderlike 375 00:21:26,000 --> 00:21:30,000 wat is 'n uittreksel wanneer ons geroep het, weer, 376 00:21:30,000 --> 00:21:33,000 die lewer header funksie. 377 00:21:33,000 --> 00:21:36,000 Nou, as ons kyk na die lewer footer, daar is eintlik nie veel van daardie reg nou 378 00:21:36,000 --> 00:21:40,000 want in footer.php daar is hoegenaamd geen dinamika. 379 00:21:40,000 --> 00:21:43,000 Daar kon wees, maar op die oomblik is dit 'n harde gekodeerde lys van 2 tags, 380 00:21:43,000 --> 00:21:46,000 maar dieselfde idee van toepassing is, sodat eintlik noem hoekom 381 00:21:46,000 --> 00:21:49,000 het ons tyd mors met 'n lewer kop en 'n lewer footer funksie? 382 00:21:49,000 --> 00:21:52,000 Laat my plaas gaan nou in weergawe 3, 383 00:21:52,000 --> 00:21:56,000 en in weergawe 3 in helpers het ek besluit om dit nog meer vereenvoudig. 384 00:21:56,000 --> 00:21:58,000 >> Laat my een render funksie. 385 00:21:58,000 --> 00:22:02,000 Laat my dit neem om 'n ander argument, hierdie tyd genoem sjabloon, 386 00:22:02,000 --> 00:22:05,000 wat bedoel is om die naam van 'n sjabloon, 387 00:22:05,000 --> 00:22:11,000 en dan sal ek vermetel koppel php dat die veranderlike se waarde. 388 00:22:11,000 --> 00:22:17,000 en dan as dit bestaan ​​foo.php, bar.php of header.php en footer.php, 389 00:22:17,000 --> 00:22:20,000 dan gaan ek om voort te gaan en die veranderlike data te onttrek 390 00:22:20,000 --> 00:22:23,000 en dan vereis dat die pad. 391 00:22:23,000 --> 00:22:29,000 Met ander woorde, dit nou gebruik, as ek oopmaak index.php 392 00:22:29,000 --> 00:22:32,000 Let op dat ek nie noem lewer kop nie. 393 00:22:32,000 --> 00:22:36,000 Ek het net 'n beroep lewer, maar ek slaag in 'n aangehaal waarde van header 394 00:22:36,000 --> 00:22:39,000 om duidelik te maak watter sjabloon ek eintlik wil om te laai. 395 00:22:39,000 --> 00:22:41,000 >> Dan oor hier opmerk wat ek doen. 396 00:22:41,000 --> 00:22:44,000 Ek wat in dinamiese 'n sleutel van titel, 397 00:22:44,000 --> 00:22:47,000 'n waarde van CS50, en dit ook, soos ons gesien het, 398 00:22:47,000 --> 00:22:51,000 gemaak kan word meer bondige in die nuutste weergawe van PHP 399 00:22:51,000 --> 00:22:54,000 waar kan ek die skikking funksie met vierkantige hakies vervang, 400 00:22:54,000 --> 00:22:57,000 wat ek stel, is selfs meer leesbare en seker 401 00:22:57,000 --> 00:22:59,000 'n bietjie makliker om te tik. 402 00:22:59,000 --> 00:23:02,000 En natuurlik, met die lewer footer oproep aan die onderkant, 403 00:23:02,000 --> 00:23:05,000 ons nie die moeite doen wat in 'n tweede argument, geen associatieve array, 404 00:23:05,000 --> 00:23:07,000 want daar is niks dinamiese binnekant van daardie footer. 405 00:23:07,000 --> 00:23:10,000 Dit is net 'n paar noue tags for HTML. 406 00:23:10,000 --> 00:23:14,000 Goed, ons neem stappe in die rigting van die werklik skoonmaak dinge hier, 407 00:23:14,000 --> 00:23:17,000 maar laat my oopmaak 2 finale voorbeelde. 408 00:23:17,000 --> 00:23:21,000 Hierdie een, nommer 4, kennis dat ek 'n doelbewuste besluit gemaak het nou 409 00:23:21,000 --> 00:23:26,000 deur uiteindelik met behulp van 'n paar hiërargie aan my lêers om te verbeter op die vorige voorbeeld. 410 00:23:26,000 --> 00:23:29,000 >> Let op dat in hierdie opsomming, in hierdie lees my, ek ingevoer 411 00:23:29,000 --> 00:23:32,000 'n gids en 'n templates directory 412 00:23:32,000 --> 00:23:35,000 waarvan die inhoud gaan wees die dinge wat ek wil in te sluit 413 00:23:35,000 --> 00:23:38,000 en die templates wat ek wil lewer, onderskeidelik. 414 00:23:38,000 --> 00:23:42,000 Dit is regtig my anale en probeer om dinge netjies te hou, 415 00:23:42,000 --> 00:23:45,000 verwante lêers hou saam, maar die eindresultaat 416 00:23:45,000 --> 00:23:48,000 is dat ons nou 'n effens tidier setup, maar ons moet nou onthou 417 00:23:48,000 --> 00:23:51,000 in, byvoorbeeld, index.php 418 00:23:51,000 --> 00:23:55,000 wanneer ons die lêer helpers.php 419 00:23:55,000 --> 00:24:01,000 ons nou dit nodig het via includes / helpers.php 420 00:24:01,000 --> 00:24:06,000 eerder as om net te sê helpers.php want nou dit is eintlik in 'n sub-directory. 421 00:24:06,000 --> 00:24:09,000 Nou, as 'n eenkant, sal jy sien in hierdie voorbeelde en 'n paar ander 422 00:24:09,000 --> 00:24:11,000 funksies soos vereis, sodra vereis. 423 00:24:11,000 --> 00:24:15,000 Daar is eintlik 'n funksie self genoem insluit, en hulle almal het effens verskillende gedrag. 424 00:24:15,000 --> 00:24:18,000 Ek sê hier vereis om een ​​maal te maak super duidelike dat ek slegs diegene wil 425 00:24:18,000 --> 00:24:20,000 helpers ingesluit in my projek. 426 00:24:20,000 --> 00:24:24,000 Maar as ek versigtig en as ek eintlik dink deur my logika behoorlik 427 00:24:24,000 --> 00:24:27,000 dit moet ook net voldoende om te sê vereis tot bo 428 00:24:27,000 --> 00:24:31,000 so lank as wat ek myself nie per ongeluk nie nodig dat dieselfde lêer elders. 429 00:24:31,000 --> 00:24:34,000 Trouens, dit is 'n bietjie meer doeltreffende manier van dinge doen, dan met behulp van 430 00:24:34,000 --> 00:24:38,000 vereis een keer, so ek sal dit trim af na net vereis. 431 00:24:38,000 --> 00:24:40,000 >> Laat 'n stap verder te neem. 432 00:24:40,000 --> 00:24:46,000 Hierdie laaste voorbeeld nou, weergawe 5, het selfs 'n skoner gids hiërargie. 433 00:24:46,000 --> 00:24:50,000 Let op wat ek hier gedoen het volgens die lees my in hierdie laaste weergawe 434 00:24:50,000 --> 00:24:54,000 is nou ek het my HTML-gids, wat ek al hierdie tyd het, 435 00:24:54,000 --> 00:24:58,000 maar binnekant is daar is nou net index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php en week2.php. 437 00:25:01,000 --> 00:25:05,000 Die sluit directory woon nou saam met van die HTML-gids, 438 00:25:05,000 --> 00:25:08,000 op dieselfde vlak as 'n broer of suster, om so te praat nie. 439 00:25:08,000 --> 00:25:10,000 So doen die gids Sjablonen. 440 00:25:10,000 --> 00:25:14,000 Die sleutel afhaal hier is ek 'n bietjie meer struktuur het ingestel, 441 00:25:14,000 --> 00:25:17,000 maar die belangrikste funksie is nou dat slegs die lêers 442 00:25:17,000 --> 00:25:21,000 wat moet web toeganklik is, openbaar aanspreekbaar 443 00:25:21,000 --> 00:25:25,000 deur 'n URL op die openbare internet is in my HTML-gids. 444 00:25:25,000 --> 00:25:28,000 >> Intussen het ander lêers, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, wat is waarskynlik miskien meer sensitief, 446 00:25:32,000 --> 00:25:35,000 miskien helpers het eintlik 'n paar gebruikers name en wagwoorde of 'n intellektuele 447 00:25:35,000 --> 00:25:39,000 eiendom van my, funksioneer ek wil regtig nie om die wêreld te sien, selfs al per ongeluk. 448 00:25:39,000 --> 00:25:45,000 Dit is goeie praktyk om uit te hou van die openbare HTML directory 449 00:25:45,000 --> 00:25:48,000 enige lêers wat nie self moet openbaar te wees. 450 00:25:48,000 --> 00:25:51,000 Al wat jy hoef te doen in hierdie geval wanneer jy soek op byvoorbeeld, 451 00:25:51,000 --> 00:25:55,000 die HTML-gids se index.php lêer, 452 00:25:55,000 --> 00:25:58,000 agterkom ons het net 'n bietjie meer versigtig te wees wanneer vereis 453 00:25:58,000 --> 00:26:00,000 of een keer van hierdie lêer vereis. 454 00:26:00,000 --> 00:26:03,000 Ek nodig het om eerste te doen .. om te gaan na die ouer gids, 455 00:26:03,000 --> 00:26:06,000 dan / includes / helpers.php 456 00:26:06,000 --> 00:26:12,000 terug in die lêer duik dat ek omgee te kry. 457 00:26:12,000 --> 00:26:16,000 >> Enige vrae dan op MVC 458 00:26:16,000 --> 00:26:20,000 of hierdie relatief eenvoudige inkarnasie daarvan? 459 00:26:20,000 --> 00:26:23,000 En laat my duidelik maak dat ons ons fokus nogal 'n bietjie op die 460 00:26:23,000 --> 00:26:27,000 V hier, die menings en die faktorontleding van hierdie voorleg. 461 00:26:27,000 --> 00:26:30,000 Ons het regtig nie onderskei M van C net nog nie. 462 00:26:30,000 --> 00:26:33,000 Trouens, daar is regtig geen M hier, en selfs ons C, 463 00:26:33,000 --> 00:26:36,000 kontroleerder, is regtig nie doen nie al dat daar nog baie, maar jy kry baie meer 464 00:26:36,000 --> 00:26:39,000 vertroud is met beide van daardie 2 briewe van MVC, 465 00:26:39,000 --> 00:26:43,000 of eerder, sal jy baie meer vertroud met die C 466 00:26:43,000 --> 00:26:49,000 in MVC vir probleem stel 7, dus is daar meer op die horison. 467 00:26:49,000 --> 00:26:51,000 Vrae? 468 00:26:51,000 --> 00:26:53,000 Daar is eintlik niemand hier. 469 00:26:53,000 --> 00:26:57,000 >> Goed, kom ons beweeg nou na die tweede en finale onderwerp vir vandag. 470 00:26:57,000 --> 00:27:00,000 Dit is die bekendstelling van 'n databasis. 471 00:27:00,000 --> 00:27:03,000 Tot op hierdie punt het ons het 'n paar maniere om van die stoor van data. 472 00:27:03,000 --> 00:27:05,000 Ons het gebruik veranderlikes. 473 00:27:05,000 --> 00:27:08,000 Terug in ons C lêer, I / O bespreking het ons begin met behulp van teks lêers 474 00:27:08,000 --> 00:27:11,000 en die gebruik van lêers soos fprintf, en dan het ons selfs begin 475 00:27:11,000 --> 00:27:14,000 praat oor CSV-lêers 'n bietjie, deur kommas geskei waardes, 476 00:27:14,000 --> 00:27:17,000 so al hierdie ons toegelaat om data wat gestoor word 477 00:27:17,000 --> 00:27:19,000 óf nie aanhoudend of aanhoudend. 478 00:27:19,000 --> 00:27:23,000 Maar selfs CSVs is nie regtig bevorderlik is vir soek 479 00:27:23,000 --> 00:27:25,000 en voeg en te verwyder. 480 00:27:25,000 --> 00:27:28,000 Dit is regtig net 'n dom teks lêer deur kommas geskei 481 00:27:28,000 --> 00:27:30,000 ry deur ry deur ry deur ry, so as jy wil 482 00:27:30,000 --> 00:27:32,000 soek dat lêer regtig die beste wat jy kan doen, is 'n lineêre soek. 483 00:27:32,000 --> 00:27:34,000 Jy het om te begin by die top van die lêer, lees die hele ding in, 484 00:27:34,000 --> 00:27:36,000 en kyk vir 'n paar waarde van belang. 485 00:27:36,000 --> 00:27:39,000 As jy wil plaas in dit wat jy het om dieselfde ding te doen, 486 00:27:39,000 --> 00:27:41,000 iterating oor dit en die invoeging in 'n spesifieke plek, 487 00:27:41,000 --> 00:27:45,000 en in die waarheid te sê, jy het om al van die soek logika jouself te doen. 488 00:27:45,000 --> 00:27:49,000 >> Jy nie kan doen slim ooreenstem met die patroon op 'n CSV-lêer tensy jy self skryf die kode. 489 00:27:49,000 --> 00:27:51,000 Jy nie kan doen filtrasie van 'n CSV-lêer 490 00:27:51,000 --> 00:27:53,000 tensy jy self skryf die kode. 491 00:27:53,000 --> 00:27:56,000 Sou dit nie lekker wees as iemand anders in al die moeite 492 00:27:56,000 --> 00:27:59,000 om werklik te soek maklik en invoeging maklik 493 00:27:59,000 --> 00:28:01,000 en skrap en opdatering en so meer? 494 00:28:01,000 --> 00:28:04,000 Dit is presies wat 'n databasis is. 495 00:28:04,000 --> 00:28:07,000 SQL, gestruktureerde navraagtaal, is nog 'n ander taal 496 00:28:07,000 --> 00:28:10,000 dat ons hier die bekendstelling van vandag, maar ook dit is redelik toeganklik, 497 00:28:10,000 --> 00:28:13,000 en wat ons regtig gaan om dit te doen is net pluk uit sommige van die belangrikste 498 00:28:13,000 --> 00:28:16,000 eienskappe sodat vir pset 7, en as jy iets doen web-gebaseerde, 499 00:28:16,000 --> 00:28:19,000 jou finale projek, jy het die vermoë om jouself uit te druk 500 00:28:19,000 --> 00:28:22,000 in terme van data navrae. 501 00:28:22,000 --> 00:28:25,000 Jy het die vermoë om 'n bietjie op te slaan of 'n baie van die data 502 00:28:25,000 --> 00:28:28,000 in 'n baie meer gestruktureerde wyse wat aan die einde van die dag 503 00:28:28,000 --> 00:28:32,000 maak jou lewe makliker, want met SQL jy jouself kan uitdruk 504 00:28:32,000 --> 00:28:35,000 baie meer presies, veel meer metodies ten einde te 505 00:28:35,000 --> 00:28:40,000 n subset van die data van 'n groter korpus van data terug te kry. 506 00:28:40,000 --> 00:28:45,000 >> Jy kan dink van 'n databasis, in hierdie geval, 'n SQL-databasis, regtig soos Excel 507 00:28:45,000 --> 00:28:48,000 of Nommers waar dit is 'n sigblad, 508 00:28:48,000 --> 00:28:50,000 of miskien verskeie sigblaaie, en 'n woordverwerker, sigblad, natuurlik, 509 00:28:50,000 --> 00:28:53,000 rye en kolomme, en dit is omdat 510 00:28:53,000 --> 00:28:56,000 SQL-databasisse is relationele, relationele in die sin 511 00:28:56,000 --> 00:28:59,000 dat hulle stoor data in terme van hierdie tabelle, 512 00:28:59,000 --> 00:29:01,000 rye en kolomme. 513 00:29:01,000 --> 00:29:03,000 Hulle is hoër presterende as iets soos 'n sigblad, 514 00:29:03,000 --> 00:29:05,000 en 'n spreadsheet is bedoel om gebruik te word deur 'n mens. 515 00:29:05,000 --> 00:29:08,000 'N databasis is bedoel om gebruik te word deur 'n programmeerder 516 00:29:08,000 --> 00:29:12,000 kode skryf teen dit, sodat die inkarnasie van 'n databasis 517 00:29:12,000 --> 00:29:14,000 gaan om óf command line. 518 00:29:14,000 --> 00:29:18,000 >> Een van die mees gewilde relasionele databasisse daar buite is, weer, MySQL, 519 00:29:18,000 --> 00:29:22,000 wat is wonderlik gratis, baie hoog-presterende, en dit is wat 520 00:29:22,000 --> 00:29:24,000 Facebook gebruik baie vroeg op en tot 'n mate vandag nog 521 00:29:24,000 --> 00:29:27,000 'n baie van die data op te slaan, en ons sal sien in 'n oomblik 522 00:29:27,000 --> 00:29:30,000 dat die gebruik van relatief eenvoudige instruksies 523 00:29:30,000 --> 00:29:33,000 ons kan kies data, voeg data, update data, 524 00:29:33,000 --> 00:29:37,000 vee data en die wil, maar gelukkig, is daar 'n meer gebruiker-vriendelike koppelvlak 525 00:29:37,000 --> 00:29:39,000 as net tik op 'n swart-en-wit vinnige hier. 526 00:29:39,000 --> 00:29:43,000 Ons sal gebruik vir pset 7 en buite 'n gratis program genaamd phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Die naam is toevallig. 528 00:29:45,000 --> 00:29:47,000 Die instrument gebeur geïmplementeer word in PHP, 529 00:29:47,000 --> 00:29:49,000 maar dit is fundamenteel irrelevant. 530 00:29:49,000 --> 00:29:53,000 Wat is nuttig oor phpMyAdmin, is dat dit 'n web-gebaseerde nut. 531 00:29:53,000 --> 00:29:55,000 Ons het geïnstalleer dit in die toestel vir jou, 532 00:29:55,000 --> 00:29:58,000 en met dit wat jy kan skep tabelle in 'n databasis, 533 00:29:58,000 --> 00:30:01,000 jy kan plaas data, verwyder data, en in die algemeen sien 534 00:30:01,000 --> 00:30:04,000 jou data in 'n redelik gebruikers-vriendelike omgewing. 535 00:30:04,000 --> 00:30:07,000 Jou gebruikers gaan nie phpMyAdmin te gebruik. 536 00:30:07,000 --> 00:30:09,000 >> Hierdie is eintlik net 'n administratiewe of ontwikkelaar se instrument 537 00:30:09,000 --> 00:30:12,000 met wat om te sien en te steek om jou data en uit te vind hoe om dit te struktureer, 538 00:30:12,000 --> 00:30:15,000 baie soos jy self kan gebruik Excel of getalle, 539 00:30:15,000 --> 00:30:19,000 maar dit gaan om 'n goeie manier om van die visualisering van wat gaan aan onder die enjinkap 540 00:30:19,000 --> 00:30:22,000 sodat jy kan fokus op die interessante probleemoplossing en nie soseer 541 00:30:22,000 --> 00:30:25,000 op die arcane opdragte. 542 00:30:25,000 --> 00:30:28,000 Kom ons neem 'n blik op 'n voorbeeld van die data wat tabularly gestoor word 543 00:30:28,000 --> 00:30:30,000 in 'n relasionele databasis. 544 00:30:30,000 --> 00:30:32,000 Hier is een so 'n voorbeeld. 545 00:30:32,000 --> 00:30:35,000 Nou, ongelukkig phpMyAdmin afgedwaal op die kant van die pad te gooi te veel woorde 546 00:30:35,000 --> 00:30:38,000 en grafika by jou, maar as jy net op die slyp in 547 00:30:38,000 --> 00:30:42,000 ID kolom, die gebruiker naam kolom, en die hash kolom, 548 00:30:42,000 --> 00:30:45,000 dit is 'n sigblad effektief, maar dit gebeur om 'n uittreksel te wees 549 00:30:45,000 --> 00:30:49,000 van 'n tabel binnekant van die toestel 550 00:30:49,000 --> 00:30:53,000 die gebruik van 'n lêer wat ons u voorsien in probleem stel 7. 551 00:30:53,000 --> 00:30:57,000 >> In die besonder, ons gee jou 'n lêer wat verteenwoordig 552 00:30:57,000 --> 00:31:01,000 'n gebruiker se tafel, so 'n sigblad wat gebruikers met 3 kolomme, 553 00:31:01,000 --> 00:31:05,000 waarvan een is 'n unieke ID wat begin op 1 en geïnkrementeer daarna. 554 00:31:05,000 --> 00:31:08,000 Die tweede kolom is 'n gebruikersnaam en dié van julle wat Hacker het, 555 00:31:08,000 --> 00:31:12,000 Hacker uitgawe vir pset 2, kan sommige van hierdie gebruikers name ten minste erken. 556 00:31:12,000 --> 00:31:16,000 Op die regterkant is wagwoorde, maar hulle is nie letterlike wagwoorde. 557 00:31:16,000 --> 00:31:19,000 Hulle is hashes daarvan, so dit blyk uit 558 00:31:19,000 --> 00:31:22,000 dat die stoor van wagwoorde in 'n databasis is 'n baie slegte idee. 559 00:31:22,000 --> 00:31:25,000 Jy het waarskynlik al gelees op 'n sekere punt van 'n paar webwerf 560 00:31:25,000 --> 00:31:28,000 of 'n paar maatskappy se databasis gedrang kom, en dan moet jy 561 00:31:28,000 --> 00:31:31,000 Om jou wagwoord te verander, moet jy terugbetalings op dinge te kry 562 00:31:31,000 --> 00:31:34,000 omdat 'n paar slegte man eintlik uitgebreek in jou rekening as 'n resultaat. 563 00:31:34,000 --> 00:31:38,000 >> Berging van wagwoorde in duidelike teks, ongeënkripteerde in 'n databasis 564 00:31:38,000 --> 00:31:41,000 is heeltemal asinine, en tog is dit baie amusant 565 00:31:41,000 --> 00:31:44,000 dan om te lees oor 'n paar baie bekende maatskappye 566 00:31:44,000 --> 00:31:47,000 soms in die pers wie se databasisse is gekompromitteer, 567 00:31:47,000 --> 00:31:50,000 en dat 'n deel is nie snaaks nie, maar die feit dat die databasisse bevat ongeënkripteerde 568 00:31:50,000 --> 00:31:53,000 wagwoorde is belaglik, want letterlik met een lyn van kode 569 00:31:53,000 --> 00:31:57,000 jy kan beskerm teen daardie spesifieke bedreiging, en dit is wat ons hier gedoen het. 570 00:31:57,000 --> 00:32:00,000 Selfs vir ons valse min CS50 Finansies weergawe 571 00:32:00,000 --> 00:32:03,000 ons versleutelen wagwoorde net vir 'n goeie maatreël, en die feit dat 572 00:32:03,000 --> 00:32:07,000 almal van hierdie wagwoorde begin met $ 1 $ is net 'n konvensie. 573 00:32:07,000 --> 00:32:10,000 Dit beteken net hulle is geïnkripteer of regtig hashed, 574 00:32:10,000 --> 00:32:13,000 wat is soos 'n one-way kodering funksie 575 00:32:13,000 --> 00:32:17,000 waardeur jy kan nie keer die gevolge daarvan met iets genoem MD5. 576 00:32:17,000 --> 00:32:21,000 >> Die feit dat 50 na daardie beteken dat 'n sout-waarde 577 00:32:21,000 --> 00:32:24,000 van 50 is wat gebruik word vir die hashing al behalwe vir een van hierdie wagwoorde. 578 00:32:24,000 --> 00:32:27,000 Myne, natuurlik, soos jy kan sien, HA, 579 00:32:27,000 --> 00:32:30,000 was die gebruik van 'n ander sout, so dié van julle wat het effens gepootjie 580 00:32:30,000 --> 00:32:33,000 miskien in Hacker 2, mag dit is die gevolg van ons gebruik 581 00:32:33,000 --> 00:32:36,000 'n ander hash as die ander omdat my wagwoord is eintlik dieselfde 582 00:32:36,000 --> 00:32:38,000 as 'n ander gebruiker daar. 583 00:32:38,000 --> 00:32:41,000 In werklikheid, as jy al hierdie weke wag om uit te vind 584 00:32:41,000 --> 00:32:44,000 wat daardie wagwoorde is hier was die wagwoorde wat jy uitgedaag het 585 00:32:44,000 --> 00:32:48,000 om te kraak in die Hacker uitgawe van die probleem stel 2, sodat niemand te lastig. 586 00:32:48,000 --> 00:32:50,000 In werklikheid, Malan se was dieselfde as jharvard, 587 00:32:50,000 --> 00:32:54,000 maar as ons gaan terug na hulle anders lyk. 588 00:32:54,000 --> 00:32:58,000 >> Fokus op jharvard bloedrooi stowwe te bewerk, want hulle is anders gesout. 589 00:32:58,000 --> 00:33:01,000 Die algoritme is verwoes in 'n manier dat die 590 00:33:01,000 --> 00:33:05,000 hash waarde, die geënkripteerde waarde lyk 'n bietjie anders 591 00:33:05,000 --> 00:33:08,000 omdat die insette was effens anders, maar die wagwoord onder die kap 592 00:33:08,000 --> 00:33:10,000 was nog uiteindelik bloedrooi. 593 00:33:10,000 --> 00:33:12,000 Nou, wat omgee oor hierdie? 594 00:33:12,000 --> 00:33:15,000 Wel, is ons die verskaffing van u met die monster gebruikers, die monster gebruikers name 595 00:33:15,000 --> 00:33:18,000 en hashes van hul wagwoorde sodat jy eintlik 'n paar 596 00:33:18,000 --> 00:33:23,000 kliënte vir CS50 Finansies wanneer jy eers kry van die grond af met jou kode. 597 00:33:23,000 --> 00:33:27,000 Jy sal meer tabelle te implementeer binnekant van MySQL, binnekant van die databasis. 598 00:33:27,000 --> 00:33:30,000 Jy sal meer sigblaaie te skep, effektief, maar ons het besluit om te gee jy hierdie een 599 00:33:30,000 --> 00:33:33,000 te kry wat jy begin het, en jy sal sien dat die probleem stel spesifikasie 600 00:33:33,000 --> 00:33:37,000 stap vir stap deur die proses van die invoer van hierdie tabel 601 00:33:37,000 --> 00:33:39,000 en ook verduidelik wat sommige van die kenmerke is, 602 00:33:39,000 --> 00:33:41,000 en jy sal ook sien dat ons u voorsien van die kode 603 00:33:41,000 --> 00:33:44,000 die hashing of die kodering van hierdie wagwoorde te hanteer, 604 00:33:44,000 --> 00:33:49,000 so jy hoef nie te veel bekommerd wees oor wat MD5 of iets dergeliks is eintlik alles oor. 605 00:33:49,000 --> 00:33:53,000 >> So, SQL, gestruktureerde navraagtaal taal. 606 00:33:53,000 --> 00:33:56,000 Dit is, heel eenvoudig, die taal wat ons oor te begin gebruik in pset 7 607 00:33:56,000 --> 00:34:01,000 en miskien buite data van sommige databasis aan te vra. 608 00:34:01,000 --> 00:34:06,000 Die data word weer gestoor tabularly in hierdie relasionele tabelle, kolomme en rye, 609 00:34:06,000 --> 00:34:09,000 maar met behulp van 'n paar relatief eenvoudige sintaksis soos delete, 610 00:34:09,000 --> 00:34:12,000 voeg, te werk en te kies kan ons doen presies dit. 611 00:34:12,000 --> 00:34:15,000 Ons kan uit die databasis verwyder, vul, 612 00:34:15,000 --> 00:34:19,000 opdatering van data, sowel as kies, dat is, haal uit die databasis. 613 00:34:19,000 --> 00:34:21,000 Hoe ons te werk gaan om dit te doen? 614 00:34:21,000 --> 00:34:23,000 Laat my voort te gaan in die toestel. 615 00:34:23,000 --> 00:34:28,000 Laat my trek http://localhost, 616 00:34:28,000 --> 00:34:30,000 wat, weer, is die plaaslike toestel self. 617 00:34:30,000 --> 00:34:32,000 Dit is die standaard bynaam. 618 00:34:32,000 --> 00:34:35,000 En laat my gaan na / phpMyAdmin. 619 00:34:35,000 --> 00:34:39,000 Dit gebeur met 'n spesiale URL wees dat die toestel is gedefinieerde om te verstaan 620 00:34:39,000 --> 00:34:42,000 wat vra my dadelik vir 'n gebruikersnaam en wagwoord. 621 00:34:42,000 --> 00:34:46,000 >> Soos gewoonlik, ek gaan jharvard en bloedrooi te tik, 622 00:34:46,000 --> 00:34:48,000 maar besef dit is die administrateur rekening op die rekenaar. 623 00:34:48,000 --> 00:34:53,000 Dit is net 'n toeval dat daar is ook 'n jharvard geregistreer vir CS50 Finansies. 624 00:34:53,000 --> 00:34:56,000 Jharvard, karmosyn, tik gee my die gebruiker koppelvlak wat ons gesien het, 625 00:34:56,000 --> 00:34:59,000 'n glimp van 'n oomblik gelede, en dit is 'n bietjie oorweldigend op die eerste, 626 00:34:59,000 --> 00:35:02,000 maar wees verseker, jy nooit gaan hê om die meeste van die skakels in hierdie instrument te klik. 627 00:35:02,000 --> 00:35:05,000 Sal jy uiteindelik met behulp van 'n klein subset wat is super nuttig, 628 00:35:05,000 --> 00:35:08,000 waarvan die eerste is databasisse hier. 629 00:35:08,000 --> 00:35:11,000 As ek gaan op tot databasisse, opmerk dat ek gevra om 'n databasis te skep. 630 00:35:11,000 --> 00:35:14,000 Dit is soos die skep van 'n nuwe Excel-lêer, effektief. 631 00:35:14,000 --> 00:35:18,000 Ek gaan om voort te gaan en roep hierdie lesing, en ek gaan net die veld, kollasie te ignoreer. 632 00:35:18,000 --> 00:35:20,000 Dit het te doen met die voorstelling van data daarin, 633 00:35:20,000 --> 00:35:24,000 en ek gaan te kliek skep, en nou sien as ek laat gaan van die skep 634 00:35:24,000 --> 00:35:27,000 op die linker-kant, waar dit sê nie databasisse 635 00:35:27,000 --> 00:35:30,000 Gou sou Ek sien die lesing databasis. 636 00:35:30,000 --> 00:35:32,000 >> As ek nou kliek op die linkerkant, die lesing databasis, 637 00:35:32,000 --> 00:35:34,000 Let op my tabs 'n bietjie verander. 638 00:35:34,000 --> 00:35:38,000 Ek het perfekte struktuur, SQL, uitvoer, invoer en 'n paar ander dinge. 639 00:35:38,000 --> 00:35:40,000 Struktuur is pretty much leeg. 640 00:35:40,000 --> 00:35:43,000 Geen tabelle in die databasis gevind, soos dit hier sê, 641 00:35:43,000 --> 00:35:47,000 Kom ons skep 'n tafel, en laat ons gaan voort en die skep van 'n tabel 642 00:35:47,000 --> 00:35:53,000 graag studente, en hoeveel kolomme wil ons? 643 00:35:53,000 --> 00:35:55,000 Kom ons hou hierdie eenvoudige, en laat ons rekord vir elke student 644 00:35:55,000 --> 00:35:58,000 'n ID-nommer, 'n naam en 'n e-pos adres. 645 00:35:58,000 --> 00:36:02,000 >> Ons hou dit eenvoudig soos dit, so 3 kolomme, gaan. 646 00:36:02,000 --> 00:36:05,000 Die vorm wat jy hier sien, is nou 'n bietjie slordig en oorweldigende, 647 00:36:05,000 --> 00:36:08,000 maar ons het om te gaan deur ry deur ry, so regtig vinnig laat ons gee 648 00:36:08,000 --> 00:36:14,000 die eerste kolom in die databasis 'n naam van ID vir die unieke identifikasienommer. 649 00:36:14,000 --> 00:36:17,000 Dit sal 'n heelgetal wees. Ek kan eintlik ignoreer lengte en waardes. 650 00:36:17,000 --> 00:36:21,000 'N int gaan wees 32 bits nie saak wat jy tik in daar, so kom ons laat dit leeg. 651 00:36:21,000 --> 00:36:24,000 Standaard waarde, kan ek dit null, soos omskryf. 652 00:36:24,000 --> 00:36:27,000 Ek gaan uitlos. Laat ons nie bekommer oor die standaard waardes. 653 00:36:27,000 --> 00:36:29,000 Kom ons blaai hier aan die regterkant, eienskappe. 654 00:36:29,000 --> 00:36:31,000 Dit is interessant. 655 00:36:31,000 --> 00:36:33,000 Kom ons gaan voort en ietwat arbitrêr sê dat ID's moet unsigned. 656 00:36:33,000 --> 00:36:35,000 Kom ons mors nie enige negatiewe getalle. 657 00:36:35,000 --> 00:36:37,000 >> Kom ons gaan 0 4 miljard, gee of neem, 658 00:36:37,000 --> 00:36:40,000 en dan laat ons nie raak nie enige van hierdie velde net nog daar, 659 00:36:40,000 --> 00:36:43,000 maar laat my dan tik in die naam hier onder, 660 00:36:43,000 --> 00:36:46,000 en dan die ander e-pos, sodat die vangs is e-pos 661 00:36:46,000 --> 00:36:50,000 en naam, natuurlik nie heelgetalle, so laat ons verander dit na 'n ander veld. 662 00:36:50,000 --> 00:36:53,000 Dit blyk uit varchar, veranderlike lengte char, 663 00:36:53,000 --> 00:36:56,000 is soos 'n string in 'n SQL-databasis 664 00:36:56,000 --> 00:36:59,000 maar 'n veranderlike lengte, en jy werklik beskikbaar het om dit te vertel vooraf die 665 00:36:59,000 --> 00:37:02,000 die maksimum lengte van die string nie, so ek gaan ietwat arbitrêr 666 00:37:02,000 --> 00:37:05,000 deur konvensie tipe 255 karakters. 667 00:37:05,000 --> 00:37:08,000 Ek kon sê heeltemal 32. Ek kon sê 1000. 668 00:37:08,000 --> 00:37:11,000 Jy soort van die behoefte om te besluit vir jouself gebaseer op jou demografie wat 669 00:37:11,000 --> 00:37:14,000 die langste student se naam en gaan met daardie nommer of 'n bietjie groter, 670 00:37:14,000 --> 00:37:17,000 maar wat is mooi oor 'n varchar is dit nie gaan om te mors 671 00:37:17,000 --> 00:37:19,000 255 bytes op elke student se naam. 672 00:37:19,000 --> 00:37:23,000 As dit is DAVID dit gaan nie 'n hele 255 bytes te gebruik, 673 00:37:23,000 --> 00:37:26,000 maar dit is 'n bogrens, so ek sal gaan met 255 net deur konvensie, 674 00:37:26,000 --> 00:37:30,000 maar ons kon debat wat tot 'n laer waarde wees, en vir e-pos adres 675 00:37:30,000 --> 00:37:34,000 net om konsekwent te wees 255, maar weer, ons kan dieselfde debat. 676 00:37:34,000 --> 00:37:36,000 Maar ek gaan 'n ander ding om te doen hier op die regterkant. 677 00:37:36,000 --> 00:37:40,000 >> Wat is kragtig oor 'n databasis is dat dit 'n baie swaar werk te doen 678 00:37:40,000 --> 00:37:42,000 of komplekse werk vir jou. 679 00:37:42,000 --> 00:37:46,000 In die besonder, het ek regtig omgee nie wat my student se ID-nommers is. 680 00:37:46,000 --> 00:37:49,000 Dit is net bedoel om 'n unieke identifikasienommer in 'n databasis 681 00:37:49,000 --> 00:37:52,000 so ek het 'n 32-bis bondige voorstelling van daardie student 682 00:37:52,000 --> 00:37:55,000 so dat ek een of ander manier van die uniek identifiseer 683 00:37:55,000 --> 00:37:58,000 sodat daar nie miskien 2 Davids, byvoorbeeld, in 'n klas. 684 00:37:58,000 --> 00:38:01,000 Om die waarheid te sê, ek gaan hierdie AI boks, motor inkrement om seker te maak, 685 00:38:01,000 --> 00:38:04,000 sodat die databasis, MySQL, figure uit 686 00:38:04,000 --> 00:38:08,000 wat elke nuut ingevoeg student se ID gaan wees. 687 00:38:08,000 --> 00:38:11,000 Ek hoef nie eens te bekommer oor wat in my kode, 688 00:38:11,000 --> 00:38:13,000 en ek gaan ook iets onder die indeks menu te kies. 689 00:38:13,000 --> 00:38:17,000 Die indeks drop down hier primêre, unieke, 690 00:38:17,000 --> 00:38:19,000 indeks en full text. 691 00:38:19,000 --> 00:38:21,000 Jy kan dalk raai wat 'n paar van hierdie dinge is, 692 00:38:21,000 --> 00:38:24,000 maar dit blyk in relasionele databasisse 693 00:38:24,000 --> 00:38:28,000 jy die programmeerder of die databasis administrateur preemptively 694 00:38:28,000 --> 00:38:32,000 gee wenke om die databasis as tot watter velde 695 00:38:32,000 --> 00:38:34,000 in 'n tabel is 'n bietjie spesiale. 696 00:38:34,000 --> 00:38:37,000 >> Byvoorbeeld, in hierdie geval ek gaan om te sê dat die ID 697 00:38:37,000 --> 00:38:42,000 gaan om 'n primêre indeks, andersins bekend as 'n primêre sleutel. 698 00:38:42,000 --> 00:38:44,000 Wat dit beteken per definisie is dat die ID voortaan 699 00:38:44,000 --> 00:38:48,000 sal identifiseer studente in hierdie tabel. 700 00:38:48,000 --> 00:38:53,000 Geen student sal dieselfde ID het omdat ek instelling van hierdie beperking of hierdie indeks. 701 00:38:53,000 --> 00:38:55,000 Verder, wat dit vir my gaan doen, is dit gaan om te sê 702 00:38:55,000 --> 00:38:58,000 MySQL dat ID is 'n spesiale. 703 00:38:58,000 --> 00:39:03,000 Ek is veral omgee ID, so gaan voort en doen jou fancy datastruktuur se magie, 704 00:39:03,000 --> 00:39:05,000 die opbou van 'n soort van die boom. 705 00:39:05,000 --> 00:39:08,000 Tipies is dit iets wat die B-boom, wat ons nie kyk na weke gelede genoem, 706 00:39:08,000 --> 00:39:11,000 maar dit is 'n ander so 'n datastruktuur soortgelyke in gees aan die binêre bome 707 00:39:11,000 --> 00:39:15,000 en probeer dat ons kyk na, maar dit gaan om te sê 708 00:39:15,000 --> 00:39:18,000 die databasis hierdie veld is so belangrik dat ek waarskynlik 709 00:39:18,000 --> 00:39:22,000 wil in staat wees om dit te soek op, gaan voort en die bou van 'n paar fancy 710 00:39:22,000 --> 00:39:25,000 data struktuur in die geheue soektogte te bespoedig sodat ideaal 711 00:39:25,000 --> 00:39:28,000 hulle is konstante tyd of ten minste so naby as moontlik 712 00:39:28,000 --> 00:39:32,000 sodat dit nie oorgaan in 'n lineêre soek, wat nie van plan om 713 00:39:32,000 --> 00:39:34,000 die mees hoë verrigting van benadering. 714 00:39:34,000 --> 00:39:37,000 In teenstelling hiermee, kan e-pos adres is 'n primêre sleutel. 715 00:39:37,000 --> 00:39:41,000 >> In teorie, almal se e-pos adres is uniek, tensy jou 'n paar rekening deel, 716 00:39:41,000 --> 00:39:45,000 maar dit is oor die algemeen nie goed nie iets soos 'n tou te gebruik 717 00:39:45,000 --> 00:39:49,000 as 'n primêre sleutel, want as sy doel in die lewe is om te identifiseer 718 00:39:49,000 --> 00:39:55,000 rye in jou tabel daar is geen rede om 255 bytes maksimaal te gebruik 719 00:39:55,000 --> 00:39:58,000 te identifiseer iemand as jy kan wegkom met net 4 bytes 720 00:39:58,000 --> 00:40:00,000 of 'n 32-bis int. 721 00:40:00,000 --> 00:40:03,000 In die algemeen moet 'n primêre sleutel kort en bondig wees 722 00:40:03,000 --> 00:40:07,000 en verkieslik iets soos 'n heelgetal of 'n groot int, wat gebeur met 64 stukkies. 723 00:40:07,000 --> 00:40:11,000 Maar 'n e-pos adres moet uniek wees en een van die kenmerke van 'n databasis te 724 00:40:11,000 --> 00:40:14,000 is uniekheid vir my af te dwing. 725 00:40:14,000 --> 00:40:18,000 Deur die kies van unieke hier langs e-pos, selfs al e-pos self 726 00:40:18,000 --> 00:40:21,000 is van die skerm af, ek sê vir die databasis 727 00:40:21,000 --> 00:40:23,000 vertrou my nie. 728 00:40:23,000 --> 00:40:26,000 Laat my nie voeg in die databasis 729 00:40:26,000 --> 00:40:29,000 dieselfde e-posadres twee keer, selfs as ek 'n idioot en ek kan nie 730 00:40:29,000 --> 00:40:32,000 baie goed met my ifs en anders ifs en werklike PHP-kode 731 00:40:32,000 --> 00:40:37,000 en Ek het per ongeluk laat die gebruiker te registreer met 'n bestaande e-pos adres 732 00:40:37,000 --> 00:40:40,000 die databasis is nog 'n ander vlak van verdediging vir korrektheid 733 00:40:40,000 --> 00:40:44,000 om te verseker dat duplikaat e-pos adres nie beland in die tabel. 734 00:40:44,000 --> 00:40:49,000 >> Nou, in teenstelling, vir naam jy waarskynlik wil nie te maak dat unieke 735 00:40:49,000 --> 00:40:51,000 want dan kon daar nooit 2 Davids of 2 Mike Smiths, byvoorbeeld, 736 00:40:51,000 --> 00:40:55,000 in jou databasis, sodat 'n mens sal ons net uitlos. 737 00:40:55,000 --> 00:40:58,000 Ek gaan om voort te gaan en kliek behalwe aan die onderkant reg, 738 00:40:58,000 --> 00:41:02,000 en alles lyk goed, maar let hier 739 00:41:02,000 --> 00:41:04,000 dit is 'n deel dat ons nou nie te veel tyd spandeer op 740 00:41:04,000 --> 00:41:07,000 omdat die sintaks is 'n bietjie ingewikkeld, en ons het nie om tabelle te skep 741 00:41:07,000 --> 00:41:10,000 alles wat dikwels, maar SQL self is 'n taal, 742 00:41:10,000 --> 00:41:13,000 die sintaks vir wat reg is hier wat ek uitgelig. 743 00:41:13,000 --> 00:41:18,000 Wat phpMyAdmin regtig nie, dit skep 'n web-gebaseerde GUI vir jou 744 00:41:18,000 --> 00:41:23,000 waarmee jy kan tyd bespaar en nie met die hand te tik 745 00:41:23,000 --> 00:41:26,000 'n taamlike lang SQL navraag soos dit. 746 00:41:26,000 --> 00:41:29,000 >> Met ander woorde, as jy wil handmatig hierdie tabel, 747 00:41:29,000 --> 00:41:32,000 óf op daardie swart-en-wit vinnige of selfs in phpMyAdmin 748 00:41:32,000 --> 00:41:35,000 deur gebruik te maak van hierdie ander blad, hierdie SQL-blad waar jy kan tik in enige SQL-navrae 749 00:41:35,000 --> 00:41:38,000 jy wil, eerlik te wees, dit sou geneem het vir my 'n minuut 750 00:41:38,000 --> 00:41:41,000 om werklik te dink aan die hele sintaksis, en selfs dan het ek waarskynlik sou hê 751 00:41:41,000 --> 00:41:45,000 het 'n paar spelfoute, so hierdie hulpmiddel is nuttig vir dinge soos wat, en dit is ook insiggewend. 752 00:41:45,000 --> 00:41:49,000 Jy kan begin om af te lei wat die sintaks is 753 00:41:49,000 --> 00:41:52,000 net deur die mooi kleur kodering dat phpMyAdmin is die toevoeging van 754 00:41:52,000 --> 00:41:54,000 vir ons visuele gerief. 755 00:41:54,000 --> 00:41:56,000 Maar laat ons nou doen in plaas. 756 00:41:56,000 --> 00:42:00,000 Laat my gaan na die Voeg in-oortjie op die top, en laat my gaan voort en voeg byvoorbeeld 757 00:42:00,000 --> 00:42:04,000 'n ID van Let's sê eintlik ek gee nie om nie. 758 00:42:04,000 --> 00:42:07,000 Dit gaan om motor inkrement. Ek gaan die databasis met hierdie transaksie te laat. 759 00:42:07,000 --> 00:42:11,000 Maar ek sal Dawid, en my e-pos moet malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Kom ons gaan voort hier en in Mike Smith as 'n ander een. 761 00:42:16,000 --> 00:42:18,000 Ek gee myself 'n laaste naam so goed, 762 00:42:18,000 --> 00:42:22,000 en ons sal hom smith@example.com, 763 00:42:22,000 --> 00:42:24,000 en dan waar ek volgende gaan? 764 00:42:24,000 --> 00:42:27,000 Wel, dit lyk soos die gaan, is die knoppie te klik, en voila. 765 00:42:27,000 --> 00:42:30,000 Kennisgewing aan die top 2 rye ingevoeg. 766 00:42:30,000 --> 00:42:32,000 Dit is die werklike SQL query. 767 00:42:32,000 --> 00:42:36,000 Dit is die phpMyAdmin instrument uitgevoer vir my, 768 00:42:36,000 --> 00:42:40,000 maar die eindresultaat, kennisgewing, as ek nou na die browse tab, 769 00:42:40,000 --> 00:42:43,000 2 rye in hierdie tabel om te sien, baie herinner esteties 770 00:42:43,000 --> 00:42:46,000 van die tafel ons vroeër gesien het vir ons gebruikers uit pset 7, 771 00:42:46,000 --> 00:42:51,000 een van wie is David Malan, een van wie is nou Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Maar net om duidelik te wees, het ek nie nodig phpMyAdmin te gebruik, 773 00:42:54,000 --> 00:42:56,000 en inderdaad, jy gaan binnekort skryf-kode vir pset 7 774 00:42:56,000 --> 00:43:01,000 wat automatiseert die proses van die toevoeging van rye, die verwydering van rye, afhangende van rye en dies meer, 775 00:43:01,000 --> 00:43:04,000 so laat my plaas gaan na die SQL-blad hier 776 00:43:04,000 --> 00:43:14,000 en tik SELECT * FROM studente waar 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Met ander woorde veronderstel nou jy het 779 00:43:21,000 --> 00:43:26,000 n HTML-vorm, en die gebruiker intik in hul e-pos adres, onder ander velde, 780 00:43:26,000 --> 00:43:29,000 en die doel is nou in PHP op die agterkant kode 781 00:43:29,000 --> 00:43:31,000 om werklik te kyk op daardie gebruiker se ander besonderhede. 782 00:43:31,000 --> 00:43:34,000 Wat is jou volle naam? Wat is jou ID-nommer? 783 00:43:34,000 --> 00:43:37,000 Jy kan 'n SQL-navraag soos hierdie skryf, kies * van studente 784 00:43:37,000 --> 00:43:40,000 waar e-pos = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 En as ek klik op gaan, let op dat ek moet, en ek kry, nie net een ry terug. 786 00:43:46,000 --> 00:43:50,000 Mike is weggelaat uit hierdie resultaat te stel, as die versameling van rye 787 00:43:50,000 --> 00:43:53,000 is oor die algemeen genoem word, omdat hy nie die dieselfde e-pos adres as my. 788 00:43:53,000 --> 00:43:57,000 >> Nou, weer, hier vir pset 7 jy gebruik phpMyAdmin as 'n administratiewe hulpmiddel 789 00:43:57,000 --> 00:44:00,000 en 'n pedagogiese hulpmiddel om jou manier om te leer 790 00:44:00,000 --> 00:44:03,000 rondom die wêreld van SQL, maar aan die einde van die dag 791 00:44:03,000 --> 00:44:08,000 jy gaan om te skryf hierdie navrae binnekant van die werklike PHP-kode, 792 00:44:08,000 --> 00:44:11,000 en so gestem bly in Zamyla walkthrough in die besonder 793 00:44:11,000 --> 00:44:14,000 waar jy 'n toer van die verspreiding-kode vir hierdie probleem stel 794 00:44:14,000 --> 00:44:18,000 waar ons aan julle gegee het nie net die estetika vir die aanmelding bladsy 795 00:44:18,000 --> 00:44:21,000 en die mooi sexy logo wat sê CS50 Finansies, maar ons het ook aan julle gegee het 796 00:44:21,000 --> 00:44:24,000 'n klomp van die funksies wat sal maak dat jou lewe 'n bietjie makliker. 797 00:44:24,000 --> 00:44:27,000 Ons het ook geskryf deel van die pset vir jou, 798 00:44:27,000 --> 00:44:32,000 die aanmelding gedeelte van dit in die besonder, te gee jou 'n gevoel van 'n verteenwoordigende ontwerp 799 00:44:32,000 --> 00:44:36,000 wat gebruik maak eintlik 'n kontroleerder, byvoorbeeld, jeug, 800 00:44:36,000 --> 00:44:40,000 login.php en dies meer, en dan sal jy sien die pset ook 'n templates directory 801 00:44:40,000 --> 00:44:43,000 wat al van jou siening, al die estetika. 802 00:44:43,000 --> 00:44:46,000 En so gaan die algehele workflow in pset 7 te wees dat 803 00:44:46,000 --> 00:44:49,000 jou gebruikers besoek 'n kontroleerder via 'n URL in 'n leser. 804 00:44:49,000 --> 00:44:53,000 Dat kontroleerder bevat PHP-kode wat jy geskryf het, en binnekant van jou PHP-kode 805 00:44:53,000 --> 00:44:57,000 kan 'n paar lyne van SQL Genestel tussen dubbele aanhalingstekens 806 00:44:57,000 --> 00:45:00,000 en geslaag aan 'n funksie wat ons geskryf genaamd navraag 807 00:45:00,000 --> 00:45:03,000 wat jou sal help jy praat met die databasis sonder die gebruik van iets soos 808 00:45:03,000 --> 00:45:05,000 'n administratiewe hulpmiddel soos phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Jy sal in staat wees om SQL-stellings in PHP-kode te skryf 810 00:45:08,000 --> 00:45:11,000 en terug te kry 'n PHP array van die resultaat te stel, 811 00:45:11,000 --> 00:45:14,000 van die rye wat eintlik ooreenstem met die soektog. 812 00:45:14,000 --> 00:45:18,000 En insgelyks sal jy in staat wees om inserts of verwyder om te doen 813 00:45:18,000 --> 00:45:22,000 of updates of iets dergeliks, die sintaksis waarvoor is redelik soortgelyk, 814 00:45:22,000 --> 00:45:25,000 en jy sal sien van 'n paar aanlyn verwysings, van die verspreiding kode 815 00:45:25,000 --> 00:45:29,000 en van die pset pak self presies hoe om te gaan oor om dit te doen. 816 00:45:29,000 --> 00:45:33,000 Besef uiteindelik het ons net regtig krap die oppervlak van SQL 817 00:45:33,000 --> 00:45:36,000 en van MySQL, maar die krag daarvan is regtig dat dit bevry u 818 00:45:36,000 --> 00:45:40,000 om te fokus op die probleme wat jy wil om op te los, die gebruik gevalle wat jy wil om te implementeer 819 00:45:40,000 --> 00:45:43,000 sonder om so veel bekommerd wees nie, ten minste vroeg op, 820 00:45:43,000 --> 00:45:47,000 oor waar en hoe om jou databasis te stoor en te deursoek, 821 00:45:47,000 --> 00:45:50,000 en dit is letterlik waar Facebook self het sy begin 822 00:45:50,000 --> 00:45:53,000 met behulp van MySQL en dan met behulp van meer MySQL bedieners en dan meer MySQL bedieners 823 00:45:53,000 --> 00:45:57,000 voor lank totdat hulle moes dan werklik begin dink hard oor hoe om 824 00:45:57,000 --> 00:46:00,000 stoor van data, hoe om dinge te selfs meer doeltreffend stoor, 825 00:46:00,000 --> 00:46:04,000 so selfs al sal ons as vanselfsprekend aanvaar die feit dat indekse en unieke beperkings 826 00:46:04,000 --> 00:46:08,000 en so meer net werk daar is 'n baie interessante gesprek 827 00:46:08,000 --> 00:46:12,000 dat dit kan uiteindelik almal lei tot, so besef dat ons net krap die oppervlak 828 00:46:12,000 --> 00:46:17,000 van wat uiteindelik vir jou of jou projekte raak nogal 'n bietjie van die groot data. 829 00:46:17,000 --> 00:46:22,000 >> Met wat gesê het, laat ons hier eindig nie, en ons sal jou volgende week sien. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]