1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [8. týždeň, pokračovanie] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [To je CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> To je CS50, takže to je koniec týždňa 8 tu. 5 00:00:13,000 --> 00:00:16,000 Samozrejme sme mali trochu hurikánu na začiatku tohto týždňa, 6 00:00:16,000 --> 00:00:19,000 takže teraz to je naozaj len ty a ja v tomto prednáškovej sále, 7 00:00:19,000 --> 00:00:22,000 ale dnes budeme pokračovať v rozhovore o PHP 8 00:00:22,000 --> 00:00:25,000 a asi programovanie pre web všeobecne, a tiež predstaviť myšlienku 9 00:00:25,000 --> 00:00:29,000 databáz, obzvlášť jeden nazvaný MySQL, ktorá je veľmi populárny v týchto dňoch, 10 00:00:29,000 --> 00:00:34,000 z veľkej časti preto, že jeho škálovateľnosti, rovnako ako preto, že jeho bytia zadarmo a open source. 11 00:00:34,000 --> 00:00:37,000 >> Ale najprv, pohľad na to, kde sme skončili minule. 12 00:00:37,000 --> 00:00:40,000 Pripomeňme si, že sme sa pozerali na niekoľkých príkladoch Frosh Chatu, 13 00:00:40,000 --> 00:00:44,000 a to bol ohavný formulár, ktorý som prišiel s asi 15 + rokov 14 00:00:44,000 --> 00:00:49,000 aby mal študentov na akademickej pôde registra pre šport prvák intramurálních 15 00:00:49,000 --> 00:00:52,000 bez toho aby ste museli trek už cez dvor k Wigglesworth 16 00:00:52,000 --> 00:00:56,000 posuňte fyzickej kus papiera pod nejaké Proctor dverám. 17 00:00:56,000 --> 00:00:59,000 Namiesto toho sme sa presťahovali všetko on-line, ale k tomu, že sme potrebovali využiť 18 00:00:59,000 --> 00:01:03,000 niekoľkých technológií, tak jeden, sme potrebovali HTML, Hypertext Markup Language, 19 00:01:03,000 --> 00:01:07,000 čo je opäť to značkovací jazyk, s ktorým si urobíte webové stránky štrukturálne. 20 00:01:07,000 --> 00:01:10,000 >> Pomocou trochu CSS v týchto dňoch, kaskádové štýly, 21 00:01:10,000 --> 00:01:16,000 kedy používame stylizations webové stránky pomocou mierne odlišnú syntax, 22 00:01:16,000 --> 00:01:19,000 vzhľadom k tomu, HTML bolo o štruktúre ich. 23 00:01:19,000 --> 00:01:21,000 Musíme tiež zaviesť webový programovací jazyk. 24 00:01:21,000 --> 00:01:25,000 V tomto prípade budeme používať PHP, a PHP bude, aby nám 25 00:01:25,000 --> 00:01:28,000 pre dynamické výstupné obsah rovnako ako tomu programové veci, ako je 26 00:01:28,000 --> 00:01:33,000 odosielanie e-mailov, ako tomu bolo v prípade poznámku sme nechali minulý týždeň. 27 00:01:33,000 --> 00:01:35,000 >> Pripomeňme si, že kód pre tento bol na 2 časti. 28 00:01:35,000 --> 00:01:38,000 Jeden sme mali froshims3.php, 29 00:01:38,000 --> 00:01:42,000 a toto bolo veľmi značky s HTML formulármi vnútri nej, 30 00:01:42,000 --> 00:01:45,000 trošku CSS tu v štýle atribúty 31 00:01:45,000 --> 00:01:48,000 takže by forma sám sa sústredil na stránke, ale okrem toho 32 00:01:48,000 --> 00:01:51,000 sme mali nejaké reprezentatívny formulára vstupy, textové pole, začiarkavacie políčko, 33 00:01:51,000 --> 00:01:55,000 nejaké rádio tlačidla, zvoľte menu, a tlačidlo Odoslať. 34 00:01:55,000 --> 00:02:01,000 A prostredníctvom tohto formulára, sme podali na súbore, ktorý bol zrejme volal register3.php, 35 00:02:01,000 --> 00:02:04,000 ktorá sama o sebe vyzerala trochu niečo takého. 36 00:02:04,000 --> 00:02:08,000 Teraz, väčšina kódu v register3.php, odvolanie, bolo o e-mailu. 37 00:02:08,000 --> 00:02:11,000 Je predsa trochu validácie na formulári, ktorý bol predložený, aby sa ubezpečil 38 00:02:11,000 --> 00:02:14,000 že pole bolo skutočne za predpokladu, že boli očakávané. 39 00:02:14,000 --> 00:02:18,000 Potom sme zavolali niektoré PHP funkcie pomocou mierne novú syntax, 40 00:02:18,000 --> 00:02:20,000 aj keď to požičal si od C. 41 00:02:20,000 --> 00:02:24,000 >> Táto šípka operátor nám umožňuje využiť niečo, čo nazýva objektovo orientované programovanie. 42 00:02:24,000 --> 00:02:27,000 Nepôjdeme do toho v každom detaile tu, ale viem teraz 43 00:02:27,000 --> 00:02:31,000 je to spôsob, ako mať funkcie spojené s objektmi, 44 00:02:31,000 --> 00:02:34,000 ktoré sú špeciálny typ štruktúry, ako sme videli v C. 45 00:02:34,000 --> 00:02:37,000 Ale teraz, len sa na viere, že je to správna syntax pre použitie 46 00:02:37,000 --> 00:02:41,000 Pri použití knižnice sa páči táto knižnica PHPMailer. 47 00:02:41,000 --> 00:02:44,000 A potom na konci tohto súboru sme dynamicky generované e-mail 48 00:02:44,000 --> 00:02:47,000 ktoré poslali na môj jharvard@cs50.net účet 49 00:02:47,000 --> 00:02:50,000 z môjho jharvard@cs50.net účtu, 50 00:02:50,000 --> 00:02:54,000 a sme informovali užívateľov spôsobom, že bolo zapísané pre tento šport. 51 00:02:54,000 --> 00:02:57,000 To je presne to, čo Frosh IM stránku, kde bolo pred rokmi 52 00:02:57,000 --> 00:03:00,000 keď som implementoval, poskytnuté v inom jazyku, 53 00:03:00,000 --> 00:03:02,000 ale to vám ukáže snáď moc, že ​​máte 54 00:03:02,000 --> 00:03:05,000 teraz, že sa môžete vyjadriť nielen programovo 55 00:03:05,000 --> 00:03:08,000 na nízkej úrovni v jazyku ako C, ale na oveľa vyššej úrovni 56 00:03:08,000 --> 00:03:11,000 s týmito veľmi reálnych aplikáciách, ako je e-mail, aby skutočne riešiť 57 00:03:11,000 --> 00:03:13,000 niektoré skutočné svetové problémy. 58 00:03:13,000 --> 00:03:16,000 >> Teraz, samozrejme, aj keď tento skript použiť pre generovanie niektorých 59 00:03:16,000 --> 00:03:20,000 e-maily dynamicky z jharvard@cs50.net, čo je naozaj účet 60 00:03:20,000 --> 00:03:23,000 že mám prístup k to byť docela opatrní na odoslanie 61 00:03:23,000 --> 00:03:26,000 e-mail iba z účtov, ktoré sú v skutočnosti vlastné, 62 00:03:26,000 --> 00:03:30,000 lesť veci vám v trochu teplej vody v živote. 63 00:03:30,000 --> 00:03:35,000 Vďaka, že povedal, poďme sa teraz prechod na riešenie iný problém úplne, 64 00:03:35,000 --> 00:03:37,000 že oporných štátov. 65 00:03:37,000 --> 00:03:39,000 A teraz, čo to vlastne znamená? 66 00:03:39,000 --> 00:03:42,000 HTTP, táto hypertext transfer protocol, 67 00:03:42,000 --> 00:03:45,000 je vlastne bez štátnej príslušnosti protokol, a čo to znamená, že 68 00:03:45,000 --> 00:03:48,000 keď vytiahnuť niečo ako Google.com a potom stlačte kláves Enter 69 00:03:48,000 --> 00:03:51,000 obvykle Váš prehliadač má nejaký pradenia ikony, ktoré potom 70 00:03:51,000 --> 00:03:54,000 vyústi v určitej webovej stránky sú stiahnuté, 71 00:03:54,000 --> 00:03:57,000 a potom že sa malá ikona zastaví spinning, a že skutočne naznačuje, 72 00:03:57,000 --> 00:04:02,000 že HTTP dokončil nejaké pripojenie k serveru a je to. 73 00:04:02,000 --> 00:04:05,000 HTTP je bez štátnej príslušnosti v tom zmysle, že neudržiava 74 00:04:05,000 --> 00:04:08,000 trvalé pripojenie k serveru rovnakým spôsobom Skype robí 75 00:04:08,000 --> 00:04:11,000 alebo Gchat robí preto, že s HTTP 76 00:04:11,000 --> 00:04:15,000 Predpokladom je, že potom, čo ste priniesol webovú stránku, ktorá je to. 77 00:04:15,000 --> 00:04:18,000 >> Teraz, v skutočnosti v týchto dňoch na weby ako Facebook a Google Maps 78 00:04:18,000 --> 00:04:21,000 a Twitter a ako by to oveľa viac dynamiky, kedy 79 00:04:21,000 --> 00:04:25,000 aj potom, ikona prestane točiť, môžete v skutočnosti získať ďalšie aktualizácie 80 00:04:25,000 --> 00:04:29,000 zo servera, viac tweety, viac o stave aktualizácie na Facebooku a podobne. 81 00:04:29,000 --> 00:04:33,000 Ale aj to je použitie techniky, ktoré budeme hovoriť o za týždeň alebo dva 82 00:04:33,000 --> 00:04:36,000 známy ako Ajax pomocou jazyka s názvom JavaScript, 83 00:04:36,000 --> 00:04:38,000 ale na konci dňa, HTTP je stále nestavové. 84 00:04:38,000 --> 00:04:42,000 A napriek tomu, ak chcete, aby nejako spomenúť, čo o užívateľovi 85 00:04:42,000 --> 00:04:44,000 aj potom, čo som odpojený od servera 86 00:04:44,000 --> 00:04:47,000 PHP sa Vám poskytnú prostriedky, ako to dosiahnuť 87 00:04:47,000 --> 00:04:52,000 pretože, ako sme videli minule, PHP má rad superglobála, 88 00:04:52,000 --> 00:04:55,000 a superglobal je opäť špeciálny globálne premenné 89 00:04:55,000 --> 00:04:59,000 , Ktorý je odovzdaný pre Vás webový server a samotným PHP. 90 00:04:59,000 --> 00:05:02,000 >> Nemusíte robiť nič, aby hodnoty v ňom, 91 00:05:02,000 --> 00:05:05,000 a medzi superglobála sme videli doteraz, sú get a post, 92 00:05:05,000 --> 00:05:08,000 ktoré je miesto, kde sú polia formulára umiestniť automaticky za vás, 93 00:05:08,000 --> 00:05:11,000 rovnako ako pár ďalších, ktoré sme ešte nevideli. 94 00:05:11,000 --> 00:05:17,000 Vnútri $ _SERVER sú niektoré špeciálne premenné vzťahujúce sa k serveru samotnom. 95 00:05:17,000 --> 00:05:22,000 Čo je to IP adresa, aký protokol, HTTP alebo HTTPS ste používali, 96 00:05:22,000 --> 00:05:25,000 Čo žiadosť metódu ste a podobne, takže je tu niečo zaujímavé, 97 00:05:25,000 --> 00:05:29,000 šťavnaté podrobnosti o serveri, a v skutočnosti, že používateľ sa tam tiež. 98 00:05:29,000 --> 00:05:33,000 Tam je $ _cookie, čo je miesto, kde sa tieto veci tzv cookies sú uložené. 99 00:05:33,000 --> 00:05:36,000 Nebudeme tráviť čas na cookies seba dnes, 100 00:05:36,000 --> 00:05:40,000 ale viem, že teraz cookie je len malý kúsok informácií 101 00:05:40,000 --> 00:05:43,000 že webový server môže zasadiť vo webovom prehliadači 102 00:05:43,000 --> 00:05:46,000 a následne jeho RAM alebo svojho počítača pevný disk 103 00:05:46,000 --> 00:05:49,000 za účelom uloženia informácií o používateľovi, napríklad, ich užívateľského mena 104 00:05:49,000 --> 00:05:52,000 tak, aby nemuseli písať to zakaždým, keď sa prihláste alebo nejaký 105 00:05:52,000 --> 00:05:55,000 jedinečné číslo alebo identifikátor pre tohto užívateľa 106 00:05:55,000 --> 00:05:58,000 takže nemusíte obťažovať im rovnaké druhy otázok o 107 00:05:58,000 --> 00:06:00,000 preferencie v budúcnosti, ale väčšina z úrokov 108 00:06:00,000 --> 00:06:02,000 Práve teraz je $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Tento superglobal, ktoré, rovnako ako ostatné, je odovzdaný k vám automaticky PHP 110 00:06:07,000 --> 00:06:10,000 keď píšete PHP-založené webové stránky 111 00:06:10,000 --> 00:06:13,000 môžete uložiť všetko, čo chcete, reťazce, celé čísla, 112 00:06:13,000 --> 00:06:16,000 plávajúce body, hodnoty, polia, objekty, 113 00:06:16,000 --> 00:06:20,000 Naozaj čokoľvek, čo chcete, a to vám umožní uložiť takým spôsobom, 114 00:06:20,000 --> 00:06:23,000 , Že aj v prípade, že užívateľ navštívi ťa tu a tam 115 00:06:23,000 --> 00:06:26,000 vráti minútu od teraz, alebo 5 minút od teraz, pretože 116 00:06:26,000 --> 00:06:28,000 berú svoj čas pred kliknutím na nejaký iný odkaz 117 00:06:28,000 --> 00:06:32,000 PHP zabezpečí, že čokoľvek, čo dať do tej relácie superglobal 118 00:06:32,000 --> 00:06:37,000 O minútu alebo 5 minút pred bude ešte keď užívateľ vráti. 119 00:06:37,000 --> 00:06:40,000 A pod kapotou je to superglobal vykonávané pomocou 120 00:06:40,000 --> 00:06:44,000 tieto veci tzv cookies, ale teraz, je to len abstrakcia 121 00:06:44,000 --> 00:06:47,000 kedy je to niečo ako programové ekvivalentu nákupného košíka. 122 00:06:47,000 --> 00:06:50,000 Či už ste, programátor, dal v tom, že 123 00:06:50,000 --> 00:06:53,000 superglobal asociatívne pole tam bude nejaké číslo z minúty neskôr 124 00:06:53,000 --> 00:06:59,000 kým ju neodstránite, alebo kým užívateľ ukončí svoj prehliadač dohromady. 125 00:06:59,000 --> 00:07:02,000 >> Poďme sa pozrieť na príklad toho, ako sa tá vec skutočne použitá. 126 00:07:02,000 --> 00:07:07,000 V counter.php medzi dnešnými kusy kódu 127 00:07:07,000 --> 00:07:09,000 máme nasledujúci riadok. 128 00:07:09,000 --> 00:07:13,000 Na začiatku tohto súboru máme veľa modrých pripomienky, ktoré sú nezaujímavých pre túto chvíľu. 129 00:07:13,000 --> 00:07:15,000 Ale v riadku 13 máme nový riadok, 130 00:07:15,000 --> 00:07:18,000 session_start, a že vlastne robí presne to, čo hovorí. 131 00:07:18,000 --> 00:07:20,000 Začína zasadnutí. 132 00:07:20,000 --> 00:07:25,000 To vám umožní používať túto veľkú superglobal $ _SESSION, a je to tak jednoduché. 133 00:07:25,000 --> 00:07:30,000 Teraz, keď budeme pokračovať sa pozrieť na riadku 16, skúsme zistiť, čo táto internetová stránka bude robiť. 134 00:07:30,000 --> 00:07:35,000 If (isset ($ _SESSION ["counter"]) potom choďte do toho 135 00:07:35,000 --> 00:07:39,000 a obchod v boji premenné, malá čítač, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Counter"]. 137 00:07:42,000 --> 00:07:45,000 To sa zdá byť deklarovaní lokálnu premennú pomenovanú counter 138 00:07:45,000 --> 00:07:48,000 vnútri ktorej je uvedenie kópiu, čo je vo vnútri superglobal 139 00:07:48,000 --> 00:07:52,000 volal zasadnutí v umiestnení "pultu". 140 00:07:52,000 --> 00:07:56,000 Else, zdá sa, že tento malý lokálny premenná čítač inicializovaný na 0. 141 00:07:56,000 --> 00:08:01,000 >> Ale potom o pár riadkov neskôr v 26 oznámenia, že zasadnutie je kópia čítače, 142 00:08:01,000 --> 00:08:06,000 jeho kľúč, má novú hodnotu priradenú, ktorý je jeho aktuálna hodnota plus 1. 143 00:08:06,000 --> 00:08:09,000 Stručne povedané, tento súbor sa zdá byť aktualizácia 144 00:08:09,000 --> 00:08:13,000 čítač, ktorý je uložený vo vnútri zasadnutí superglobal 145 00:08:13,000 --> 00:08:16,000 podľa zvyšovanie to o 1, ale najprv udrží kópiu predchádzajúcej hodnoty 146 00:08:16,000 --> 00:08:20,000 uložením do lokálnej premennej s názvom $ counter, 147 00:08:20,000 --> 00:08:22,000 a potom sem sa pozrime, čo zostáva. 148 00:08:22,000 --> 00:08:24,000 Ukázalo sa, že je to skoro len HTML. 149 00:08:24,000 --> 00:08:29,000 V dolnej časti tejto stránky vidíme v súlade 37, ktoré som navštívil tieto stránky 150 00:08:29,000 --> 00:08:33,000 číslo čítača časov, takže je tu pár zaujímavých funkcií tu. 151 00:08:33,000 --> 00:08:36,000 Jeden, to je jasne variabilný, ale to nestačí len dať 152 00:08:36,000 --> 00:08:39,000 $ Counter v tele vášho HTML, pretože samozrejme 153 00:08:39,000 --> 00:08:43,000 ak je to len tam medzi vaše PHP HTML sa bude predpokladať, že je to práve HTML. 154 00:08:43,000 --> 00:08:48,000 Tie doslova Chcete $ counter ktoré majú byť vytlačené na obrazovke. 155 00:08:48,000 --> 00:08:51,000 >> Ale namiesto toho tým, že upustí do režimu PHP 156 00:08:51,000 --> 00:08:55,000 s týmto kusom syntaxe môžeme dynamicky vložiť hodnotu tu 157 00:08:55,000 --> 00:08:58,000 veľmi podobné v duchu toho, čo sme minule s 158 00:08:58,000 --> 00:09:00,000 vkladanie hodnôt do reťazcov. 159 00:09:00,000 --> 00:09:04,000 V skutočnosti, to je len skrátený zápis pre ostatných niečo také doslova, 160 00:09:04,000 --> 00:09:12,000 print ($ counter), alebo aj niečo ako printf (% s, pult), 161 00:09:12,000 --> 00:09:14,000 alebo dokonca, ako ste možno videli on-line alebo v učebniciach, 162 00:09:14,000 --> 00:09:17,000 je tu funkcia v PHP nazýva echo 163 00:09:17,000 --> 00:09:20,000 ktorý robí to isté, a všetky z nich sú len dlhšie vinuté spôsoby 164 00:09:20,000 --> 00:09:25,000 povedať 00:09:28,000 V tomto jednom prípade nemusíte dať 166 00:09:28,000 --> 00:09:30,000 Slovo PHP za otáznikom. 167 00:09:30,000 --> 00:09:34,000 To je skratka pre zápis, znovu to, čo sme práve videli pred chvíľou 168 00:09:34,000 --> 00:09:37,000 ktorý je opakujúci nejakú hodnotu. 169 00:09:37,000 --> 00:09:39,000 >> Pozrime sa, čo konečný výsledok to vlastne je. 170 00:09:39,000 --> 00:09:43,000 Nechaj ma ísť aj do nášho counter.php súboru, 171 00:09:43,000 --> 00:09:47,000 a budeme vidieť, že David práve urobil chybu tým, že hrá s kódom tam. 172 00:09:47,000 --> 00:09:50,000 Poďme opravu bez ohľadu na to posral, 173 00:09:50,000 --> 00:09:54,000 a chyba sa zdá byť tam, preč, on-line 37. 174 00:09:54,000 --> 00:09:59,000 Podľa hornej časti tejto stránky som navštívila túto stránku 0 krát. 175 00:09:59,000 --> 00:10:02,000 Dobre, poďme do toho hneď, a na hornej časti prehliadača kliknite na 176 00:10:02,000 --> 00:10:05,000 znovu na ikonu, a ja kliknite na tlačidlo znova, 177 00:10:05,000 --> 00:10:12,000 a teraz som navštívil stránky 1 čas, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 A skutočne, ak sa pozrieme na zdroje tejto stránky aktuálne zdrojový kód sa mení, 179 00:10:16,000 --> 00:10:19,000 a všimnite si úplnú absenciu akéhokoľvek PHP, a to preto, že 180 00:10:19,000 --> 00:10:23,000 PHP kód je hodnotený alebo interpretovaný na strane servera, 181 00:10:23,000 --> 00:10:27,000 a tak to znamená, že výstup z PHP skriptu je to, čo nakoniec poslal do prehliadača, 182 00:10:27,000 --> 00:10:31,000 ktorá je v tomto prípade niektorých surovín a HTML a niektoré obyčajného textu. 183 00:10:31,000 --> 00:10:33,000 Čo sa to tu deje? 184 00:10:33,000 --> 00:10:37,000 >> No, s pomerne málo riadkov kódu som schopný ukladať 185 00:10:37,000 --> 00:10:40,000 trvalo v priebehu niekoľkých sekúnd, alebo ak sme čakali dosť dlho, 186 00:10:40,000 --> 00:10:44,000 minút, a to aj hodiny, nejaké hodnoty tak, že je HTTP 187 00:10:44,000 --> 00:10:47,000 Zdá sa stavovú ako keď sme zachované 188 00:10:47,000 --> 00:10:51,000 toto spojenie k serveru, a to len spomenul, čo som povedal, to naposledy, 189 00:10:51,000 --> 00:10:55,000 ale v skutočnosti je tu celá partia zložitosti deje pod kapotou 190 00:10:55,000 --> 00:10:59,000 zahŕňajúce súbory cookie, ktoré je umožňujúci PHP, aby mi túto ilúziu 191 00:10:59,000 --> 00:11:02,000 tohto nákupného košíka, ako funkcia. 192 00:11:02,000 --> 00:11:05,000 Pre túto chvíľu, triviálne príklad, kde sme len obyčajné ukladanie celé číslo, 193 00:11:05,000 --> 00:11:08,000 ale, že funkcia vráti sa k mať veľkú hodnotu 194 00:11:08,000 --> 00:11:10,000 keď začneme hovoriť o zložitejších projektov, 195 00:11:10,000 --> 00:11:12,000 medzi nimi problém nastaviť 7. 196 00:11:12,000 --> 00:11:16,000 To je vaša úplne posledný problém nastaviť CS50. 197 00:11:16,000 --> 00:11:19,000 Ja viem, že je to tak smutné, ale to, čo nájdete, je, že budeme uzatvárať 198 00:11:19,000 --> 00:11:22,000 táto časť semestra vlastne prechod 199 00:11:22,000 --> 00:11:25,000 z kontextu C určite súvislosti PHP 200 00:11:25,000 --> 00:11:27,000 ale pri použití niektorej z úplne rovnakých základoch 201 00:11:27,000 --> 00:11:29,000 sme hovorili o nejakú dobu. 202 00:11:29,000 --> 00:11:33,000 >> Cieľ s PSet 7 je zaviesť CS50 Financie, 203 00:11:33,000 --> 00:11:37,000 ktoré je vaše vlastné verzie Yahoo Finance alebo Google financií 204 00:11:37,000 --> 00:11:40,000 alebo dokonca Etrade.com pričom si majú schopnosť 205 00:11:40,000 --> 00:11:43,000 vyhľadať ceny akcií pre dané symboly, ale aj viac než to 206 00:11:43,000 --> 00:11:48,000 máte možnosť "kúpiť" a "predať" akcie 207 00:11:48,000 --> 00:11:51,000 ktoré sú obchodované na rôznych burzách, pretože ako úvodnú stránku 208 00:11:51,000 --> 00:11:55,000 tu naznačuje, čo je naozaj, do akej miery sme začali 209 00:11:55,000 --> 00:11:59,000 Problém sada pre vás, máte prihlasovací formulár, ktorý sa pýta na užívateľské meno a heslo. 210 00:11:59,000 --> 00:12:03,000 Má tlačidlo Odoslať, ale potom, ako budeme nakoniec vidieť, 211 00:12:03,000 --> 00:12:06,000 nie je nič naozaj deje pod kapotou ešte, pretože to 212 00:12:06,000 --> 00:12:09,000 zostáva pre vás realizovať schopnosť registrovať nových užívateľov, 213 00:12:09,000 --> 00:12:12,000 schopnosť nakupovať akcie, predať akcie, 214 00:12:12,000 --> 00:12:14,000 skutočne vyhľadať aktuálne ceny akcií. 215 00:12:14,000 --> 00:12:17,000 >> A skutočne, to bude ako skutočný svet, ako je to možné, pretože sme 216 00:12:17,000 --> 00:12:20,000 patrí kus kódu, ktorý umožní vám jednu funkciu 217 00:12:20,000 --> 00:12:25,000 na dotaz Yahoo Finance, ktorá nádherne dáva k dispozícii zdarma údajov 218 00:12:25,000 --> 00:12:31,000 pre vyhľadanie cien akcií na základe burzový symbol alebo burzové symbol, 219 00:12:31,000 --> 00:12:34,000 a dostanete späť aktuálnu cenu akcií dňa. 220 00:12:34,000 --> 00:12:37,000 Údaje, ktoré ste vlastne vidieť v tomto konkrétnom PSet bude 221 00:12:37,000 --> 00:12:40,000 asi tak reálnom svete, ako to môže dostať tak, že ste vlastne prepojenie 222 00:12:40,000 --> 00:12:43,000 so skutočným svetom zásob z reálneho sveta cenách, 223 00:12:43,000 --> 00:12:47,000 a uvidíme, koľko peňazí môžete urobiť snáď 224 00:12:47,000 --> 00:12:51,000 v priebehu najbližších niekoľkých dňoch hrania s vlastnou problém sade. 225 00:12:51,000 --> 00:12:55,000 >> Ale poďme najprv nastaviť scénu, ako navrhnúť niečo, čo je určite zložitejšie 226 00:12:55,000 --> 00:12:59,000 ako counter.php, že je to zložitejšie, než ktorýkoľvek z Frosh príkladov Chatu tak ďaleko, 227 00:12:59,000 --> 00:13:02,000 a skúsme predstaviť niekoľko paradigiem tu, ktoré umožňujú nám 228 00:13:02,000 --> 00:13:06,000 ako pre PSet 7 a možno pre konečného projektu, ak nemáte niečo na základe web 229 00:13:06,000 --> 00:13:11,000 aby váš kód dobre organizovaná, udržať si zdravý rozum, 230 00:13:11,000 --> 00:13:15,000 a urobiť krok smerom spolupracovať, či už v záverečnej projektu CS50 tieto 231 00:13:15,000 --> 00:13:18,000 alebo mimo, ak budete pokračovať naprogramovať niečo v budúcnosti. 232 00:13:18,000 --> 00:13:21,000 Tam je to všeobecný návrh paradigma 233 00:13:21,000 --> 00:13:24,000 v informatike a vo vývoji softvéru všeobecne 234 00:13:24,000 --> 00:13:27,000 známy ako MVC, model view radiče, 235 00:13:27,000 --> 00:13:30,000 a to je hlúpe skratka, ktorá popisuje veľmi pekný nápad, 236 00:13:30,000 --> 00:13:34,000 ktorý je oddelenie rôznych aspektov programu, 237 00:13:34,000 --> 00:13:39,000 konkrétne vedenie samostatné logiku alebo obchodné logiku webové stránky 238 00:13:39,000 --> 00:13:42,000 takže všetko, čo zahŕňa veci ako 239 00:13:42,000 --> 00:13:45,000 volanie funkcií a dotazovanie databáz a podobne 240 00:13:45,000 --> 00:13:48,000 sa stane nie medzi vašou HTML 241 00:13:48,000 --> 00:13:51,000 ale skôr v samostatných súboroch, a naozaj, tam je to jeden súbor 242 00:13:51,000 --> 00:13:54,000 zvyčajne, že ste volal správca 243 00:13:54,000 --> 00:13:56,000 To je naozaj mozgom operácie, a uvidíme príklad 244 00:13:56,000 --> 00:13:58,000 z toho za chvíľu. 245 00:13:58,000 --> 00:14:01,000 >> Tam je model, ktorý je programovanie kódu 246 00:14:01,000 --> 00:14:05,000 že robí hovoriť na zoznam databáz, ktoré hovoria pre Yahoo Finance a podobne, 247 00:14:05,000 --> 00:14:08,000 a potom je tu V v MVC, pohľady, 248 00:14:08,000 --> 00:14:11,000 všetky veci, ktoré sa vzťahuje k estetike, súbory, ktoré skutočne obsahujú 249 00:14:11,000 --> 00:14:14,000 Vaša HTML, možno vaše CSS a podobne. 250 00:14:14,000 --> 00:14:17,000 Myšlienka, ako tento obrázok naznačuje, je to, že sa regulátor 251 00:14:17,000 --> 00:14:21,000 je súbor, ako skoro uvidíte, a ako budete predovšetkým vidieť v PSet 7, 252 00:14:21,000 --> 00:14:24,000 že svet hovorí prostredníctvom svojich webových prehliadačov. 253 00:14:24,000 --> 00:14:27,000 To je súbor, ktorý sa na na verejnom internete, 254 00:14:27,000 --> 00:14:30,000 ale regulátor hovorí potenciálne modelu, 255 00:14:30,000 --> 00:14:34,000 ktorý je jeden alebo viac ďalších súborov, ktoré obsahujú kód vzťahujúce sa k údajom, 256 00:14:34,000 --> 00:14:37,000 kód vzťahujúce sa k databázam a podobne, a potom to hovorí 257 00:14:37,000 --> 00:14:40,000 regulátor jeden alebo viac iných súborov známe ako zobrazenie, 258 00:14:40,000 --> 00:14:43,000 ktoré sú estetika webové stránky, vzory druhov, 259 00:14:43,000 --> 00:14:47,000 , Ktoré by mohli mať niektoré údaje ako vstup, ale na konci dňa 260 00:14:47,000 --> 00:14:50,000 iba logika vnútri cieľom by malo byť stvárnenie týchto údajov, 261 00:14:50,000 --> 00:14:53,000 iterácia slučky a vlastne pľuvať niektoré 262 00:14:53,000 --> 00:14:56,000 HTML-based stvárnenie ich, alebo dokonca niečo ako PDF. 263 00:14:56,000 --> 00:14:59,000 >> Čo je pekné o MVC je, že môžete mať rôzne názory 264 00:14:59,000 --> 00:15:02,000 v závislosti od typu zariadenia, na základe typu formát súboru, ktorý ste skutočne 265 00:15:02,000 --> 00:15:04,000 Chcem ukázať užívateľovi. 266 00:15:04,000 --> 00:15:10,000 Poďme sa pozrieť na niekoľko postupne zložitejšie a dobre navrhnutý príkladov 267 00:15:10,000 --> 00:15:13,000 tým, že začína najprv s verziou 0 tu. 268 00:15:13,000 --> 00:15:16,000 Nechaj ma ísť napred a otvoriť v našom adresári MVC dnes 269 00:15:16,000 --> 00:15:21,000 súbor s názvom index.php v adresári 0. 270 00:15:21,000 --> 00:15:26,000 Všimnite to je super jednoduchá a veľmi nezaujatý web 271 00:15:26,000 --> 00:15:29,000 to je druh verzia 0 z domovskej stránky pre CS50, 272 00:15:29,000 --> 00:15:32,000 a všimnite si, ako máme odkaz na prednášky, máme odkaz na osnovy, 273 00:15:32,000 --> 00:15:35,000 a keď som na odkaz na prednášky oznámenia, že URL 274 00:15:35,000 --> 00:15:39,000 až hore sa chystá zmeniť lectures.php. 275 00:15:39,000 --> 00:15:44,000 Keby som Potom nasledujte odkaz na týždeň 1 upozornenie, že adresa URL sa zmení na week1.php. 276 00:15:44,000 --> 00:15:46,000 Zdá sa, že pomerne jednoduchý hierarchickú štruktúru tu. 277 00:15:46,000 --> 00:15:49,000 >> Poďme sa rýchlo pozrieť pod kapotu, ako je to stanovené, 278 00:15:49,000 --> 00:15:53,000 a naozaj, keď som sa na index.php je to celkom jednoduché. 279 00:15:53,000 --> 00:15:57,000 V skutočnosti, aj keď som volal tento súbor PHP tam žiadny skutočný programový kód. 280 00:15:57,000 --> 00:16:01,000 Je tu poznámka, že som tu písal v PHP len tak, že používateľ nemá skončiť vidieť to. 281 00:16:01,000 --> 00:16:05,000 Samozrejme, rovnako ako predtým, všetko, čo je medzi tagy PHP 282 00:16:05,000 --> 00:16:08,000 dostane vykladať, aj keď je to komentár, a interpretovať komentár 283 00:16:08,000 --> 00:16:11,000 znamená len aby zahodil to na konci dňa a v skutočnosti 284 00:16:11,000 --> 00:16:15,000 poslať do prehliadača, takže všetko tu je len estetika. 285 00:16:15,000 --> 00:16:20,000 Ak som otvoriť podobne lectures.php aj toto je len ťažko kódovaný súbor. 286 00:16:20,000 --> 00:16:23,000 Stáva sa to nazvať niečo. Php, 287 00:16:23,000 --> 00:16:27,000 ale je to naozaj len. html, a week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 podobne sú len značkovacie, takže je tu veľa nedostatkov tohto návrhu. 289 00:16:31,000 --> 00:16:33,000 Jeden, že je to obrovské množstvo copy / paste. 290 00:16:33,000 --> 00:16:37,000 Aj keď jediná vec, ktorá mení medzi týmito súbormi je neusporiadané zoznam, 291 00:16:37,000 --> 00:16:41,000 Ak tagy, som však mať doc typ, HTML, hlava, 292 00:16:41,000 --> 00:16:44,000 Názov, úzkym telo, úzkym HTML a viac 293 00:16:44,000 --> 00:16:47,000 v každom súbore, čo znamená, že ak by som niekedy chcel reštrukturalizáciu 294 00:16:47,000 --> 00:16:50,000 táto webová stránka alebo restylize to musím ísť a zmeniť 295 00:16:50,000 --> 00:16:54,000 všetky tieto súbory ručne alebo s niektorými masívne nájsť a nahradiť. 296 00:16:54,000 --> 00:17:01,000 >> Poďme sa krok smerom k múdrejší, už myslí dizajnu vo verzii 1 tu 297 00:17:01,000 --> 00:17:04,000 pričom podľa čítal mi, že sme súčasťou, takže môžete hrať spolu s 298 00:17:04,000 --> 00:17:07,000 Tieto pokojnejšie doma upozornenie, že tu máme 299 00:17:07,000 --> 00:17:10,000 súhrn súborov vo verzii 1 tohto webu, 300 00:17:10,000 --> 00:17:13,000 a zdá sa, že som si vzal to na seba, aby vytknúť 301 00:17:13,000 --> 00:17:17,000 niektoré spoločné kód, header.php a footer.php. 302 00:17:17,000 --> 00:17:20,000 No, poďme sa pozrieť na to, čo je vo vnútri prvý z nich. 303 00:17:20,000 --> 00:17:23,000 Header.php vyzerá povedome, 304 00:17:23,000 --> 00:17:26,000 ale v prípade, keď to dostať odrezať? 305 00:17:26,000 --> 00:17:30,000 Hneď po linke 19, tak to je všetko, čo bolo bežné 306 00:17:30,000 --> 00:17:33,000 od spisov index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 a week2.php z predchádzajúceho príkladu. 308 00:17:36,000 --> 00:17:40,000 To, čo som urobil, bolo, kopírovanie a strih všetko, čo bolo spoločné pre všetky tieto súbory, 309 00:17:40,000 --> 00:17:44,000 vložte ho do samostatného hlavičkového súboru, a podobne v footer.php 310 00:17:44,000 --> 00:17:48,000 som použiť rovnaký princíp, podľa ktorého len zaujímavé linky 311 00:17:48,000 --> 00:17:52,000 v footer.php sú títo dvaja, úzkym telom a úzkym HTML. 312 00:17:52,000 --> 00:17:55,000 >> Ale čo to znamená, že sa v novej verzii 313 00:17:55,000 --> 00:17:59,000 zo dňa index.php oznámenia, koľko jednoduchšie to môže dostať. 314 00:17:59,000 --> 00:18:02,000 Je pravda, že trochu viac mystický hľadáte, trochu menej intuitívne 315 00:18:02,000 --> 00:18:06,000 sledovať zhora nadol, ale môj Bože, je celý tento nadbytočnosti preč. 316 00:18:06,000 --> 00:18:10,000 Požadujeme pomocou PHP funkcie doslova volala vyžadujú až hore, 317 00:18:10,000 --> 00:18:15,000 ktorý je veľmi pripomínajúci, spomenúť, ze C je # include mechanizmus. 318 00:18:15,000 --> 00:18:17,000 Požadujeme header.php v hornej časti. 319 00:18:17,000 --> 00:18:20,000 Požadujeme footer.php na dne, a jediná vec, ktorá sa líši 320 00:18:20,000 --> 00:18:25,000 alebo osobitné o tomto súbore je obsah, ktorý je predurčený byť jedinečný pre neho. 321 00:18:25,000 --> 00:18:29,000 Ak by som potom ísť do, povedzme, lectures.php, platí rovnaký princíp. 322 00:18:29,000 --> 00:18:32,000 Opäť platí, že niektoré komentáre až hore, ale potom som si vyžadujú hlavičku, pätu vyžadujú, 323 00:18:32,000 --> 00:18:35,000 a medzi je to len obsah, ktorý sa skutočne zmenil. 324 00:18:35,000 --> 00:18:38,000 A ak sme sa pozreli do týždňa 1 a 2. týždeň by sme vidieť 325 00:18:38,000 --> 00:18:42,000 , Že rovnaký princíp bol uplatnený tam. 326 00:18:42,000 --> 00:18:44,000 No, nie sme úplne hotový tam. 327 00:18:44,000 --> 00:18:48,000 >> Poďme sa pozrieť na verziu 2, ktorá má podobnú štruktúru, 328 00:18:48,000 --> 00:18:50,000 nevšimnúť teraz som predstavil niečo iné. 329 00:18:50,000 --> 00:18:53,000 V riadku 10 som predstavil helpers.php, 330 00:18:53,000 --> 00:18:55,000 ktorý zrejme obsahuje pomocné funkcie. 331 00:18:55,000 --> 00:18:58,000 Pomocná funkcia je všeobecne relatívne krátky funkcie 332 00:18:58,000 --> 00:19:01,000 že píšete, aby vám pomohol v rôznych miestach, 333 00:19:01,000 --> 00:19:04,000 a pozrieme sa, čo je vo vnútri helpers.php. 334 00:19:04,000 --> 00:19:07,000 V tomto prípade, to vyzerá, že má 2 funkcie. 335 00:19:07,000 --> 00:19:10,000 Spomeňte si na druhý deň s našou kocky napríklad 336 00:19:10,000 --> 00:19:13,000 môžete definovať svoje vlastné funkcie v PHP, a to, čo som urobil teraz je, že som 337 00:19:13,000 --> 00:19:17,000 definované funkcie tzv robí päty a robí hlavičku, 338 00:19:17,000 --> 00:19:21,000 Prvý z nich sa parameter nazýva dát, 339 00:19:21,000 --> 00:19:25,000 ktorého hodnota je prázdne pole, ako navrhuje tam, 340 00:19:25,000 --> 00:19:29,000 a môžeme skutočne písať to ešte stručne v najnovšej verzii PHP 341 00:19:29,000 --> 00:19:32,000 tým, otvorené hranatú zátvorku, uzavretá hranatú zátvorku. 342 00:19:32,000 --> 00:19:35,000 To znamená, že prázdne pole o veľkosti 0, ale napriek tomu celú škálu. 343 00:19:35,000 --> 00:19:38,000 >> Tento extrakt funkcia je trochu zvláštne v tom, že 344 00:19:38,000 --> 00:19:41,000 čo to robí, je to berie ako svoj argument asociatívne pole 345 00:19:41,000 --> 00:19:45,000 že má 0 alebo viac kľúčových párov hodnoty, a ak máte kľúč foo 346 00:19:45,000 --> 00:19:48,000 a hodnota baru extraktu funkcie 347 00:19:48,000 --> 00:19:51,000 vytvára situáciu, v ktorej sa ako linky 11, 348 00:19:51,000 --> 00:19:57,000 máte lokálnu premennú pomenovanú $ foo, ktorého hodnota je bar. 349 00:19:57,000 --> 00:19:59,000 A ak by ste mali viac kľúčov a hodnôt v dátovom poli, 350 00:19:59,000 --> 00:20:03,000 Podobne by mali byť extrahované do miestnej rozsahu 351 00:20:03,000 --> 00:20:06,000 alebo menný priestor tak, aby footer.php a 352 00:20:06,000 --> 00:20:09,000 Rovnaký nápad sem tak, že header.php 353 00:20:09,000 --> 00:20:12,000 majú prístup k týmto premenným. 354 00:20:12,000 --> 00:20:15,000 V skutočnosti, dovoľte mi otvoriť znova header.php 355 00:20:15,000 --> 00:20:18,000 a upozorniť na čo teraz to vyzerá, že v tejto verzii. 356 00:20:18,000 --> 00:20:22,000 >> Skôr než tvrdé kódovanie CS50 ako titul pre každú jednotlivú stránku 357 00:20:22,000 --> 00:20:24,000 Všimnite si dynamiku, ktorá je možné teraz. 358 00:20:24,000 --> 00:20:29,000 V súlade 5 som ozvenou titulu premennú, 359 00:20:29,000 --> 00:20:34,000 ale najprv som okolo, že titul premennú funkciu nazvanú htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Hlúpy názov pre funkciu, ak je to, ale je to naozaj robí to, čo hovorí. 361 00:20:38,000 --> 00:20:41,000 To zaisťuje, že všetky špeciálne znaky 362 00:20:41,000 --> 00:20:46,000 v reťazci, ktorý bol prijatý v roku riadne unikol HTML. 363 00:20:46,000 --> 00:20:49,000 To je vlastne spôsob, ako sa vyhnúť niečo nazýva cross site scripting útoku 364 00:20:49,000 --> 00:20:52,000 kedy niekto môže zlomyseľne alebo omylom 365 00:20:52,000 --> 00:20:55,000 aplikovať vlastné HTML do svojich webových stránok 366 00:20:55,000 --> 00:20:59,000 vložením do niektorej z foriem, napríklad, 367 00:20:59,000 --> 00:21:02,000 niečo, čo nebolo celkom očakával, najmä JavaScript kód, 368 00:21:02,000 --> 00:21:05,000 ako budeme hovoriť v týždni či dva času. 369 00:21:05,000 --> 00:21:08,000 >> To teraz header.php, je to pohľad 370 00:21:08,000 --> 00:21:12,000 v tom zmysle, že umožňuje zobraziť esteticky obsah nejakého súboru dát. 371 00:21:12,000 --> 00:21:14,000 Ale konkrétne, je to šablóna. 372 00:21:14,000 --> 00:21:19,000 To je akýsi plánu teraz o tom, čo chceme záhlaví každej stránky vyzerať, 373 00:21:19,000 --> 00:21:23,000 ale tam je nejaký dynamizmus v tom, že chceme, aby titul bol dynamicky vkladá 374 00:21:23,000 --> 00:21:26,000 vychádza na titulnej premenné 375 00:21:26,000 --> 00:21:30,000 , Ktorá bola extrahovaná, keď sme hovorili, znovu, 376 00:21:30,000 --> 00:21:33,000 render hlavičku funkcie. 377 00:21:33,000 --> 00:21:36,000 Teraz, keď sme sa pozreli na omietky pätu, že to vlastne nie je moc využitie tohto práva teraz 378 00:21:36,000 --> 00:21:40,000 pretože v footer.php nie je dynamika vôbec. 379 00:21:40,000 --> 00:21:43,000 Tam by mohlo byť, ale v tejto chvíli je to ťažké kódované zoznam 2 tagov, 380 00:21:43,000 --> 00:21:46,000 ale rovnaký nápad platí, tak, že v skutočnosti naznačuje, prečo 381 00:21:46,000 --> 00:21:49,000 sme strácať čas s vykreslenie hlavičky a päty vykreslenie funkcie? 382 00:21:49,000 --> 00:21:52,000 Nechaj ma ísť miesto teraz do verzie 3, 383 00:21:52,000 --> 00:21:56,000 a vo verzii 3 v pomáhajúcich som sa rozhodla zjednodušiť ešte viac. 384 00:21:56,000 --> 00:21:58,000 >> Dovoľte mi, aby som ešte jednu činí funkciu. 385 00:21:58,000 --> 00:22:02,000 Dovoľte mi, aby som si to vziať ešte jeden argument, tentoraz nazvaný šablóna, 386 00:22:02,000 --> 00:22:05,000 ktorá má byť názov šablóny, 387 00:22:05,000 --> 00:22:11,000 a potom som sa zreťaziť opovážlivý. php na tejto premennej hodnoty, 388 00:22:11,000 --> 00:22:17,000 a potom, ak existuje foo.php, bar.php alebo header.php a footer.php, 389 00:22:17,000 --> 00:22:20,000 potom budem pokračovať a extrahovať dáta premenných 390 00:22:20,000 --> 00:22:23,000 a potom vyžadovať, aby cestu. 391 00:22:23,000 --> 00:22:29,000 Inými slovami, používať teraz, keď som otvoriť index.php 392 00:22:29,000 --> 00:22:32,000 Všimnite si, že nemám volať vykreslenie hlavičku už. 393 00:22:32,000 --> 00:22:36,000 Len som zavolať robí, ale odovzdám v citovanej hodnoty hlavičky 394 00:22:36,000 --> 00:22:39,000 aby bolo jasné, ktorá šablóna som vlastne chcem načítať. 395 00:22:39,000 --> 00:22:41,000 >> Potom sem všimnete, čo robím. 396 00:22:41,000 --> 00:22:44,000 Ja som okolo v dynamicky kľúčom titulu, 397 00:22:44,000 --> 00:22:47,000 hodnota CS50, a to tiež, ako sme videli, 398 00:22:47,000 --> 00:22:51,000 by mohli byť stručnejšie v najnovšej verzii PHP 399 00:22:51,000 --> 00:22:54,000 , Kde by som mohol nahradiť pole funkciu hranatých zátvorkách, 400 00:22:54,000 --> 00:22:57,000 ktorý navrhujem, je ešte čitateľné a určite 401 00:22:57,000 --> 00:22:59,000 trochu jednoduchšie písať. 402 00:22:59,000 --> 00:23:02,000 A samozrejme, s render pätu volania na dne, 403 00:23:02,000 --> 00:23:05,000 nemáme obťažovať prejde v druhom argumente vôbec, žiadne asociatívne pole, 404 00:23:05,000 --> 00:23:07,000 pretože tam nič dynamické vnútri tejto päty. 405 00:23:07,000 --> 00:23:10,000 Je to len niekoľko zavrieť tagy pre HTML. 406 00:23:10,000 --> 00:23:14,000 Dobré, berieme kroky k rýchle vyčistenie veci tu, 407 00:23:14,000 --> 00:23:17,000 ale dovoľte mi, aby som otvorila 2 konečné príklady. 408 00:23:17,000 --> 00:23:21,000 Tento, číslo 4, všimnite si, že som urobil vedomé rozhodnutie sa 409 00:23:21,000 --> 00:23:26,000 k zlepšeniu na predchádzajúcom príklade by konečne používať nejaký hierarchii mojich súborov. 410 00:23:26,000 --> 00:23:29,000 >> Všimnite si, že v tomto zhrnutí, v tomto si ma, som predstavil 411 00:23:29,000 --> 00:23:32,000 obsahuje adresár a šablóny adresár 412 00:23:32,000 --> 00:23:35,000 ktorých obsah sa bude na veci, ktoré chcem, aby zahŕňala 413 00:23:35,000 --> 00:23:38,000 a šablóny, ktoré chcem k tomu, aby, resp. 414 00:23:38,000 --> 00:23:42,000 To je naozaj mňa je análny a snaží sa udržať veci poriadok, 415 00:23:42,000 --> 00:23:45,000 uchovávať súvisiace súbory dohromady, ale konečný výsledok 416 00:23:45,000 --> 00:23:48,000 je to, že teraz máme niečo chudobnejšie nastavenia, ale musíme mať na pamäti teraz 417 00:23:48,000 --> 00:23:51,000 v, napríklad, index.php 418 00:23:51,000 --> 00:23:55,000 keď požadujeme súbor helpers.php 419 00:23:55,000 --> 00:24:01,000 musíme teraz vyžadujú ho cez includes / helpers.php 420 00:24:01,000 --> 00:24:06,000 skôr než len hovorím, helpers.php, pretože teraz je to vlastne v podadresára. 421 00:24:06,000 --> 00:24:09,000 Teraz, rovnako ako stranou, uvidíte v týchto príkladov a niektoré ďalšie 422 00:24:09,000 --> 00:24:11,000 funkcie, ako napríklad, vyžadujú raz. 423 00:24:11,000 --> 00:24:15,000 Tam je vlastne funkcia sám volal patrí, a všetci majú mierne odlišné správanie. 424 00:24:15,000 --> 00:24:18,000 Tu by som požiadať, raz, aby sa Super jasné, že chcem len tie 425 00:24:18,000 --> 00:24:20,000 pomocníci zahrnuté v mojom projekte raz. 426 00:24:20,000 --> 00:24:24,000 Ale keď som opatrný a ak som vlastne premýšľal v mojej logike správne 427 00:24:24,000 --> 00:24:27,000 to by malo stačiť aj len povedať, vyžadovať až hore 428 00:24:27,000 --> 00:24:31,000 tak dlho ako ja, sám nechtiac požadovať, aby rovnaký súbor inam. 429 00:24:31,000 --> 00:24:34,000 V skutočnosti, to je mierne účinnejší spôsob, ako robiť veci, potom pomocou 430 00:24:34,000 --> 00:24:38,000 vyžadujú raz, tak som si zastrihnúť ju len vyžadujú. 431 00:24:38,000 --> 00:24:40,000 >> Poďme ešte o krok ďalej. 432 00:24:40,000 --> 00:24:46,000 Tento posledný príklad teraz, verzia 5, má ešte čistejšie hierarchie zložiek. 433 00:24:46,000 --> 00:24:50,000 Všimnite si, čo som tu urobil za mňa čítať v tejto konečnej verzii 434 00:24:50,000 --> 00:24:54,000 Je teraz mám HTML adresár, ktorý som mal celú dobu, 435 00:24:54,000 --> 00:24:58,000 ale vnútri je teraz len index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php a week2.php. 437 00:25:01,000 --> 00:25:05,000 Obsahuje adresár teraz žije vedľa v HTML adresára, 438 00:25:05,000 --> 00:25:08,000 tak na rovnakej úrovni ako u súrodencov, aby som tak povedal. 439 00:25:08,000 --> 00:25:10,000 Tak robí šablóny zložky. 440 00:25:10,000 --> 00:25:14,000 Kľúč stánok s jedlom je tu som predstavil trochu väčšiu štruktúru, 441 00:25:14,000 --> 00:25:17,000 ale kľúčovým prvkom teraz je, že iba súbory 442 00:25:17,000 --> 00:25:21,000 že musí byť web prístupný, verejne adresovateľná 443 00:25:21,000 --> 00:25:25,000 pomocou URL na verejnom internete, sú v mojom HTML adresári. 444 00:25:25,000 --> 00:25:28,000 >> Medzitým, ďalšie súbory, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, ktoré sú pravdepodobne možno citlivejšie, 446 00:25:32,000 --> 00:25:35,000 Možno pomocníci skutočne má nejaké používateľské mená a heslá alebo niektoré duševné 447 00:25:35,000 --> 00:25:39,000 majetok môj, funguje naozaj nechcem, aby sa svet vidieť, aj keď náhodne. 448 00:25:39,000 --> 00:25:45,000 Je dobrým zvykom, aby z verejného adresára HTML 449 00:25:45,000 --> 00:25:48,000 všetky súbory, ktoré nepotrebujú seba byť verejné. 450 00:25:48,000 --> 00:25:51,000 Stačí urobiť v tomto prípade, keď pri pohľade na, napríklad, 451 00:25:51,000 --> 00:25:55,000 adresári HTML je index.php súbor, 452 00:25:55,000 --> 00:25:58,000 Všimnite si, že jednoducho musí byť niečo opatrnejší pri vyžadujúce 453 00:25:58,000 --> 00:26:00,000 alebo vyžadovať raz tento súbor. 454 00:26:00,000 --> 00:26:03,000 Musím najprv urobiť .. ísť do nadradeného adresára, 455 00:26:03,000 --> 00:26:06,000 potom sa / includes / helpers.php 456 00:26:06,000 --> 00:26:12,000 sa ponoriť späť do dostať súbor, ktorý mi záleží. 457 00:26:12,000 --> 00:26:16,000 >> Akékoľvek otázky potom na MVC 458 00:26:16,000 --> 00:26:20,000 alebo tento pomerne jednoduchý inkarnácia tejto zmluvy? 459 00:26:20,000 --> 00:26:23,000 A dovoľte mi bolo jasné, že sme sa zamerali trochu na 460 00:26:23,000 --> 00:26:27,000 V tú, názory a faktoringu z týchto šablón. 461 00:26:27,000 --> 00:26:30,000 Sme naozaj odlíšiť M z C len zatiaľ. 462 00:26:30,000 --> 00:26:33,000 V skutočnosti, v skutočnosti nie je žiadny M tu, a dokonca aj náš C, 463 00:26:33,000 --> 00:26:36,000 Regulátor, nie je naozaj robí tak moc, ale budete mať oveľa viac 464 00:26:36,000 --> 00:26:39,000 oboznámení s oboma týmito 2 listy z MVC, 465 00:26:39,000 --> 00:26:43,000 alebo skôr, získate oveľa viac zoznámiť s C 466 00:26:43,000 --> 00:26:49,000 v MVC pre problémové set 7, takže je tu viac, že ​​na obzore. 467 00:26:49,000 --> 00:26:51,000 Otázky? 468 00:26:51,000 --> 00:26:53,000 Je tu vlastne nikto tu. 469 00:26:53,000 --> 00:26:57,000 >> Dobre, poďme sa teraz prejdeme k druhej a záverečnej tému pre dnešok. 470 00:26:57,000 --> 00:27:00,000 To je zavedenie databázy. 471 00:27:00,000 --> 00:27:03,000 Až do tohto bodu sme mali niekoľko spôsobov ukladania dát. 472 00:27:03,000 --> 00:27:05,000 Použili sme premenných. 473 00:27:05,000 --> 00:27:08,000 Späť v našom súbore C, I / O diskusie sme začali používať textové súbory 474 00:27:08,000 --> 00:27:11,000 a používanie súborov ako fprintf, a potom sme dokonca začal 475 00:27:11,000 --> 00:27:14,000 hovorí o csv trochu, hodnoty oddelené čiarkami, 476 00:27:14,000 --> 00:27:17,000 takže všetci títo nám umožnilo mať dáta uložené 477 00:27:17,000 --> 00:27:19,000 jeden non-trvale alebo dlhodobo. 478 00:27:19,000 --> 00:27:23,000 Ale ani CSVŠ sú naozaj priaznivé pre vyhľadávanie 479 00:27:23,000 --> 00:27:25,000 a vkladanie a mazanie. 480 00:27:25,000 --> 00:27:28,000 Je to naozaj len hlúpy textový súbor oddelený čiarkami 481 00:27:28,000 --> 00:27:30,000 riadok po riadku podľa riadkoch, takže ak chcete 482 00:27:30,000 --> 00:27:32,000 pozrite, že súbor najlepšie, čo môžete urobiť, je naozaj lineárna hľadanie. 483 00:27:32,000 --> 00:27:34,000 Musíte začať v hornej časti súboru, prečítajte si celú vec v, 484 00:27:34,000 --> 00:27:36,000 a hľadať nejakú hodnotu úrokov. 485 00:27:36,000 --> 00:27:39,000 Ak chcete vložiť do neho budete musieť robiť to isté, 486 00:27:39,000 --> 00:27:41,000 iterácia nad ním a vkladanie v určitom mieste, 487 00:27:41,000 --> 00:27:45,000 a v skutočnosti, budete musieť robiť všetky hľadanie logiky sami. 488 00:27:45,000 --> 00:27:49,000 >> Môžete to urobiť múdre porovnávanie vzoriek na súbore CSV, ak sami písať kód. 489 00:27:49,000 --> 00:27:51,000 Môžete to urobiť filtráciu súboru CSV 490 00:27:51,000 --> 00:27:53,000 ak sami písať kód. 491 00:27:53,000 --> 00:27:56,000 Nebolo by pekné, keby niekto dal vo všetkých úsilie 492 00:27:56,000 --> 00:27:59,000 skutočne vykonať vyhľadávanie jednoduché a vloženie ľahké 493 00:27:59,000 --> 00:28:01,000 a vymazanie a aktualizácie a tak ďalej? 494 00:28:01,000 --> 00:28:04,000 To je presne to, čo je databáza. 495 00:28:04,000 --> 00:28:07,000 SQL, štruktúrovaný dotazovací jazyk, je ešte iný jazyk 496 00:28:07,000 --> 00:28:10,000 že sme sa zavádzajú dnes, ale aj toto je pomerne dobre, 497 00:28:10,000 --> 00:28:13,000 a to, čo sme naozaj urobiť, je jednoducho vytrhnúť z nej niektoré najnápadnejšie 498 00:28:13,000 --> 00:28:16,000 charakteristiky tak, aby pre PSet 7, a ak si niečo na základe web, 499 00:28:16,000 --> 00:28:19,000 Váš záverečný projekt, máte možnosť vyjadriť sa 500 00:28:19,000 --> 00:28:22,000 pokiaľ ide o dátové otázok. 501 00:28:22,000 --> 00:28:25,000 Máte možnosť ukladať trochu alebo veľa dát 502 00:28:25,000 --> 00:28:28,000 v oveľa štruktúrovanejší spôsobom, ktorý bude na konci dňa 503 00:28:28,000 --> 00:28:32,000 aby váš život jednoduchší, pretože s SQL sa môžete vyjadriť 504 00:28:32,000 --> 00:28:35,000 oveľa presnejšie, oveľa viac metodicky tak, aby sa 505 00:28:35,000 --> 00:28:40,000 dostať späť nejaké podmnožiny dát z väčšieho korpusu dát. 506 00:28:40,000 --> 00:28:45,000 >> Môžete si myslieť databázy, v tomto prípade, databázy SQL, páči Excel 507 00:28:45,000 --> 00:28:48,000 alebo čísla, ak je to tabuľky, 508 00:28:48,000 --> 00:28:50,000 alebo možno viac tabuliek, a tabuľkových, samozrejme, 509 00:28:50,000 --> 00:28:53,000 má riadkov a stĺpcov, a to preto, že 510 00:28:53,000 --> 00:28:56,000 SQL databázy sú relačné, relačná v zmysle 511 00:28:56,000 --> 00:28:59,000 že ukladanie dát, pokiaľ ide o týchto tabuľkách, 512 00:28:59,000 --> 00:29:01,000 riadkov a stĺpcov. 513 00:29:01,000 --> 00:29:03,000 Sú výkonnejšie, než niečo ako tabuľky, 514 00:29:03,000 --> 00:29:05,000 a tabuľky je určený pre použitie u človeka. 515 00:29:05,000 --> 00:29:08,000 Databáza je určený pre použitie programátorom 516 00:29:08,000 --> 00:29:12,000 písanie kódu proti nemu, takže stelesnenie databázy 517 00:29:12,000 --> 00:29:14,000 sa bude buď príkazového riadku. 518 00:29:14,000 --> 00:29:18,000 >> Jeden z najpopulárnejších relačných databáz tam je opäť, MySQL, 519 00:29:18,000 --> 00:29:22,000 ktorý je nádherne zadarmo, veľmi vysoko výkonné, a to je to, čo 520 00:29:22,000 --> 00:29:24,000 Facebook používa veľmi skoro a do istej miery ešte dnes 521 00:29:24,000 --> 00:29:27,000 uložiť množstvo svojich dát, a uvidíme za chvíľu 522 00:29:27,000 --> 00:29:30,000 že pomocou relatívne jednoduchých príkazov 523 00:29:30,000 --> 00:29:33,000 môžeme vybrať dáta, vložiť dáta, aktualizovať dáta, 524 00:29:33,000 --> 00:29:37,000 mazanie dát a podobne, ale našťastie je tu viac užívateľsky prívetivé rozhranie 525 00:29:37,000 --> 00:29:39,000 ako len písanie na čiernej a bielej riadku tu. 526 00:29:39,000 --> 00:29:43,000 Budeme používať pre PSet 7 a ďalej bezplatný nástroj s názvom phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Názov je náhodný. 528 00:29:45,000 --> 00:29:47,000 Nástroj sa stane byť vykonaná v PHP, 529 00:29:47,000 --> 00:29:49,000 ale to je v podstate irelevantné. 530 00:29:49,000 --> 00:29:53,000 Čo je užitočné o phpMyAdmin je, že je web-based utility. 531 00:29:53,000 --> 00:29:55,000 Sme vopred nainštalovaný do zariadenia pre vás, 532 00:29:55,000 --> 00:29:58,000 a spolu s ním si môžete vytvoriť tabuľky v databáze, 533 00:29:58,000 --> 00:30:01,000 môžete vkladať dáta, vymazať dáta, a všeobecne vidí 534 00:30:01,000 --> 00:30:04,000 Vaše dáta v relatívne užívateľsky priateľskom prostredí. 535 00:30:04,000 --> 00:30:07,000 Vaši užívatelia nebudú používať phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> To je naozaj len správne alebo developer je nástroj 537 00:30:09,000 --> 00:30:12,000 s ktorými sa vidieť a hrabať okolo vašich dát a zistiť, ako štruktúrovať, 538 00:30:12,000 --> 00:30:15,000 rovnako ako ty sám mohol použiť Excel alebo čísla, 539 00:30:15,000 --> 00:30:19,000 ale to bude skvelý spôsob, vizualizácie, čo sa deje pod kapotou 540 00:30:19,000 --> 00:30:22,000 takže sa môžete sústrediť na zaujímavý problém riešenie, a nie toľko 541 00:30:22,000 --> 00:30:25,000 o tajomných príkazov. 542 00:30:25,000 --> 00:30:28,000 Poďme sa pozrieť na príklad dát, ktoré by mohli byť uložené prehľadne 543 00:30:28,000 --> 00:30:30,000 v relačnej databáze. 544 00:30:30,000 --> 00:30:32,000 Tu je jeden taký príklad. 545 00:30:32,000 --> 00:30:35,000 Teraz, bohužiaľ, phpMyAdmin nesprávne na strane hádzanie spôsobom príliš veľa slov 546 00:30:35,000 --> 00:30:38,000 a grafika na vás, ale ak ste zdokonaľovať v len na 547 00:30:38,000 --> 00:30:42,000 Stĺpec ID, užívateľské meno stĺpca, a hash stĺpec, 548 00:30:42,000 --> 00:30:45,000 V podstate sa jedná tabuľky, ale to sa stáva, že je fragment 549 00:30:45,000 --> 00:30:49,000 z tabuľky vnútri prístroja 550 00:30:49,000 --> 00:30:53,000 pomocou súboru, ktorý sme pre vás v problému sade 7. 551 00:30:53,000 --> 00:30:57,000 >> Najmä, sme vám súbor, ktorý predstavuje 552 00:30:57,000 --> 00:31:01,000 užívateľovho stôl, takže tabuľka obsahujúca užívateľom 3 stĺpcoch, 553 00:31:01,000 --> 00:31:05,000 z ktorých jedna je jedinečný identifikátor začínať u 1 a je zvýšený potom. 554 00:31:05,000 --> 00:31:08,000 Druhý stĺpec je užívateľské meno, a tí z vás, kto to urobil Hacker, 555 00:31:08,000 --> 00:31:12,000 Hacker vydania pre PSet 2, môže rozpoznať niektoré z týchto užívateľských mien aspoň. 556 00:31:12,000 --> 00:31:16,000 Na pravej strane sú heslá, ale nie sú doslovné hesla. 557 00:31:16,000 --> 00:31:19,000 Sú hash tejto zmluvy, tak to dopadá 558 00:31:19,000 --> 00:31:22,000 že ukladanie hesiel v databáze je naozaj zlý nápad. 559 00:31:22,000 --> 00:31:25,000 Všetci ste asi čítal na nejakom mieste nejaké webové stránky 560 00:31:25,000 --> 00:31:28,000 alebo nejakej spoločnosti databázy budú kompromitované, a potom sa budete musieť 561 00:31:28,000 --> 00:31:31,000 zmeniť svoje heslo, musíte sa dostať náhrady na veci 562 00:31:31,000 --> 00:31:34,000 pretože niektoré zlé chlap vlastne vlámal do účtu ako výsledok. 563 00:31:34,000 --> 00:31:38,000 >> Ukladanie hesiel vo formáte obyčajného textu, nešifrované v databáze 564 00:31:38,000 --> 00:31:41,000 je úplne hlúpy, a napriek tomu je to veľmi zábavné 565 00:31:41,000 --> 00:31:44,000 potom čítať o niektorých veľmi známych spoločností 566 00:31:44,000 --> 00:31:47,000 niekedy v tlači sú ohrozené, ktorých databázy, 567 00:31:47,000 --> 00:31:50,000 a táto časť nie je sranda, ale skutočnosť, že databáza obsahujú nešifrované 568 00:31:50,000 --> 00:31:53,000 hesla je smiešne, pretože doslova s ​​jedným riadkom kódu 569 00:31:53,000 --> 00:31:57,000 môžete chrániť proti konkrétnej hrozbe, a to je to, čo sme urobili tu. 570 00:31:57,000 --> 00:32:00,000 Aj pre naše falošné malú CS50 financií verzia 571 00:32:00,000 --> 00:32:03,000 sme šifrovanie hesla len pre istotu, a to, že 572 00:32:03,000 --> 00:32:07,000 všetkých týchto hesiel začať s $ 1 $ je len konvencie. 573 00:32:07,000 --> 00:32:10,000 To len znamená, že sú šifrované, alebo naozaj klasifikácii, 574 00:32:10,000 --> 00:32:13,000 ktorý je ako jednosmerné šifrovanie funkcie 575 00:32:13,000 --> 00:32:17,000 keď nemožno zvrátiť jeho účinky s niečím, čo nazývajú MD5. 576 00:32:17,000 --> 00:32:21,000 >> Skutočnosť, že 50 je po to znamená, že soľ value 577 00:32:21,000 --> 00:32:24,000 z 50 bol použitý pre zatrieďovanie všetkých týchto hesiel okrem jedného. 578 00:32:24,000 --> 00:32:27,000 Mine, samozrejme, ako môžete vidieť tam, HA, 579 00:32:27,000 --> 00:32:30,000 bolo pomocou rôznych solí, takže tí z vás, ktorí dostali niečo zakopol up 580 00:32:30,000 --> 00:32:33,000 možno v Hacker 2, možno, že boli výsledkom nášho mať použitý 581 00:32:33,000 --> 00:32:36,000 iný hash, než ostatní, pretože moje heslo je vlastne rovnaký 582 00:32:36,000 --> 00:32:38,000 ako nejaký iný užívateľ up there. 583 00:32:38,000 --> 00:32:41,000 V skutočnosti, ak ste čakali všetky tie týždne zistiť 584 00:32:41,000 --> 00:32:44,000 čo ty hesla bola tu boli heslá, ktoré ste bola napadnutá 585 00:32:44,000 --> 00:32:48,000 rozlúsknuť v Hacker vydání problémového súboru 2, tak nie príliš zložité. 586 00:32:48,000 --> 00:32:50,000 V skutočnosti, Malan je bol rovnaký ako jharvard, 587 00:32:50,000 --> 00:32:54,000 ale ak sa vrátime, vyzerali inak. 588 00:32:54,000 --> 00:32:58,000 >> Focus o jharvard v červenej, pretože oni boli solené inak. 589 00:32:58,000 --> 00:33:01,000 Algoritmus bol rozrušený takým spôsobom, že na 590 00:33:01,000 --> 00:33:05,000 Hodnota hash, šifrované value vyzerá trochu inak 591 00:33:05,000 --> 00:33:08,000 pretože vstupy sú mierne odlišné, ale heslo pod pokrievku 592 00:33:08,000 --> 00:33:10,000 bol ešte nakoniec crimson. 593 00:33:10,000 --> 00:33:12,000 Teraz, kto sa zaujíma o to? 594 00:33:12,000 --> 00:33:15,000 No, my poskytujeme vám vzorky užívateľov, mená vzorky užívateľov 595 00:33:15,000 --> 00:33:18,000 a hash ich hesiel, takže máte skutočne nejaké 596 00:33:18,000 --> 00:33:23,000 Zákazníci na CS50 financií, keď ste prvýkrát odlepiť sa od zeme s kódom. 597 00:33:23,000 --> 00:33:27,000 Budete musieť vykonať viac tabuliek vnútri MySQL, vnútri databázy. 598 00:33:27,000 --> 00:33:30,000 Budete musieť vytvoriť ďalšie tabuľky, efektívne, ale rozhodli sme sa vám tento 599 00:33:30,000 --> 00:33:33,000 ako začať, a uvidíte, že problém set špecifikácia 600 00:33:33,000 --> 00:33:37,000 vás prevedie procesom importu tejto tabuľky 601 00:33:37,000 --> 00:33:39,000 a tiež vysvetlí, čo niektoré vlastnosti sú, 602 00:33:39,000 --> 00:33:41,000 a budete tiež vidieť, že sme vám s kódom 603 00:33:41,000 --> 00:33:44,000 zvládnuť hašovanie alebo šifrovanie týchto hesiel, 604 00:33:44,000 --> 00:33:49,000 takže sa nemusíte obávať príliš o tom, čo MD5 alebo podobne, je vlastne všetko okolo. 605 00:33:49,000 --> 00:33:53,000 >> Takže, SQL, štruktúrovaný dotazovací jazyk. 606 00:33:53,000 --> 00:33:56,000 To je, jednoducho, jazyk sa chystáme začať používať v PSet 7 607 00:33:56,000 --> 00:34:01,000 a možno za požadovať dáta z nejakej databázy. 608 00:34:01,000 --> 00:34:06,000 Údaje sú opäť uložené prehľadne v týchto relačných tabuliek, stĺpcov, riadkov a, 609 00:34:06,000 --> 00:34:09,000 ale používate nejakú relatívne jednoduchú syntax, ako zmazať, 610 00:34:09,000 --> 00:34:12,000 vložiť, aktualizovať a vyberte môžeme robiť presne to. 611 00:34:12,000 --> 00:34:15,000 Môžeme odstrániť z databázy, vložiť, 612 00:34:15,000 --> 00:34:19,000 aktualizáciu dát, rovnako ako výber, ktorý je, načítanie dát z databázy. 613 00:34:19,000 --> 00:34:21,000 Ako sme ísť asi robí? 614 00:34:21,000 --> 00:34:23,000 Nechaj ma ísť napred do prístroja. 615 00:34:23,000 --> 00:34:28,000 Dovoľte mi, aby som vytiahnuť http://localhost, 616 00:34:28,000 --> 00:34:30,000 ktoré je opäť miestne prístroju. 617 00:34:30,000 --> 00:34:32,000 To je jeho východisková prezývka. 618 00:34:32,000 --> 00:34:35,000 A nechaj ma ísť do / phpmyadmin. 619 00:34:35,000 --> 00:34:39,000 To sa stáva, že je zvláštne, že URL spotrebič je vopred nakonfigurovaný pre pochopenie 620 00:34:39,000 --> 00:34:42,000 že okamžite vyzve ma na zadanie užívateľského mena a hesla. 621 00:34:42,000 --> 00:34:46,000 >> Ako obvykle, budem písať jharvard a Crimson, 622 00:34:46,000 --> 00:34:48,000 ale uvedomiť, že je to účet správcu v počítači. 623 00:34:48,000 --> 00:34:53,000 Je to len náhoda, že tam je tiež jharvard registrovaný CS50 financií. 624 00:34:53,000 --> 00:34:56,000 Jharvard, purpurový, enter mi dáva užívateľské rozhranie, ktoré sme videli 625 00:34:56,000 --> 00:34:59,000 pohľad na okamih pred, a je to trochu ohromujúci na prvý, 626 00:34:59,000 --> 00:35:02,000 ale buďte si istý, že ste nikdy musieť kliknúť väčšinu odkazov v tomto nástroji. 627 00:35:02,000 --> 00:35:05,000 Budete skončiť s použitím malú podmnožinu, ktorá sú super užitočné, 628 00:35:05,000 --> 00:35:08,000 Prvá z nich je databáza hore. 629 00:35:08,000 --> 00:35:11,000 Keď idem do databáz, všimnite si, že som vyzvaní na vytvorenie databázy. 630 00:35:11,000 --> 00:35:14,000 To je ako vytvorenie nového súboru programu Excel, efektívne. 631 00:35:14,000 --> 00:35:18,000 Chystám sa ísť dopredu a zavolať túto prednášku, a ja som jednoducho ísť ignorovať pole tam, radenie. 632 00:35:18,000 --> 00:35:20,000 To má čo do činenia s reprezentáciou dát v ňom, 633 00:35:20,000 --> 00:35:24,000 a budem kliknite na tlačidlo vytvoriť, a teraz všimnete Pustil som vytvoriť 634 00:35:24,000 --> 00:35:27,000 na ľavej strane, kde sa hovorí, že žiadne databázy 635 00:35:27,000 --> 00:35:30,000 Mal by som čoskoro vidieť prednáškové databázy. 636 00:35:30,000 --> 00:35:32,000 >> Keby som teraz kliknite na ľavej strane, prednáška databázy, 637 00:35:32,000 --> 00:35:34,000 všimnete mojej karty zmeniť trochu. 638 00:35:34,000 --> 00:35:38,000 Mám štruktúra, SQL, export, import a niektoré ďalšie veci. 639 00:35:38,000 --> 00:35:40,000 Štruktúra je skoro prázdny. 640 00:35:40,000 --> 00:35:43,000 Žiadne tabuľky nájdený v databáze, ako to hovorí tu, 641 00:35:43,000 --> 00:35:47,000 takže poďme vytvoriť tabuľku, a poďme ďalej a vytvoriť tabuľku 642 00:35:47,000 --> 00:35:53,000 ako študenti, a koľko stĺpcov chceme? 643 00:35:53,000 --> 00:35:55,000 Poďme si to jednoduché, a poďme záznam pre každého študenta 644 00:35:55,000 --> 00:35:58,000 ID číslo, meno a e-mailovú adresu. 645 00:35:58,000 --> 00:36:02,000 >> Necháme to jednoduché, ako to, že tak 3 stĺpce, choďte. 646 00:36:02,000 --> 00:36:05,000 Formulár, ktorý vidíte, je teraz trochu chaotický a ohromujúci, 647 00:36:05,000 --> 00:36:08,000 ale budeme musieť ísť cez neho riadok po riadku, tak naozaj rýchlo, dajme 648 00:36:08,000 --> 00:36:14,000 prvý stĺpec v tejto databáze názov ID pre unikátny identifikátor. 649 00:36:14,000 --> 00:36:17,000 Bude celé číslo. Ja si skutočne ignorovať dĺžku a hodnoty. 650 00:36:17,000 --> 00:36:21,000 Int bude 32 bitov bez ohľadu na to, čo napíšete tam, takže necháme prázdne. 651 00:36:21,000 --> 00:36:24,000 Predvolená hodnota, mohol som robiť to null, ako je definované. 652 00:36:24,000 --> 00:36:27,000 Ja odídem sám. Poďme sa starať o predvolené hodnoty. 653 00:36:27,000 --> 00:36:29,000 Poďme prejdite sem s tými správnymi, atribútov. 654 00:36:29,000 --> 00:36:31,000 To je zaujímavé. 655 00:36:31,000 --> 00:36:33,000 Poďme ďalej a trochu ľubovoľne povedať, že čísla musí byť unsigned. 656 00:36:33,000 --> 00:36:35,000 Nepremárnite žiadne negatívne čísla. 657 00:36:35,000 --> 00:36:37,000 >> Poďme 0 až 4 miliardy, dávať alebo brať, 658 00:36:37,000 --> 00:36:40,000 a potom si to nedotkne žiadnej z týchto polí zatiaľ tam, 659 00:36:40,000 --> 00:36:43,000 ale potom mi dovoľte zadajte v názve tu dole, 660 00:36:43,000 --> 00:36:46,000 a potom ďalší bol e-mail, tak úlovok je e-mail 661 00:36:46,000 --> 00:36:50,000 a meno, samozrejme nie je celé čísla, takže sa poďme zmeniť tieto na inom poli. 662 00:36:50,000 --> 00:36:53,000 Ukazuje sa, varchar, variabilný dĺžka char, 663 00:36:53,000 --> 00:36:56,000 je ako reťazec v databáze SQL 664 00:36:56,000 --> 00:36:59,000 ale premenná dĺžka, a máte skutočne povedať v predstihu na 665 00:36:59,000 --> 00:37:02,000 maximálna dĺžka reťazca, takže budem trochu ľubovoľne 666 00:37:02,000 --> 00:37:05,000 podľa typu kongresové 255 znakov. 667 00:37:05,000 --> 00:37:08,000 Mohol by som úplne povedať 32. Mohol by som povedať, 1000. 668 00:37:08,000 --> 00:37:11,000 Môžete druh je nutné, aby sami rozhodnúť na základe Vašich demografiu, čo je 669 00:37:11,000 --> 00:37:14,000 The Longest meno študenta a ísť s týmto číslom alebo trochu väčšie, 670 00:37:14,000 --> 00:37:17,000 ale to, čo je pekné o varchar je, že to nebude strácať 671 00:37:17,000 --> 00:37:19,000 255 bytov na každého študenta menom. 672 00:37:19,000 --> 00:37:23,000 Ak je to DAVID, že to nebude používať pre celú 255 bajtov, 673 00:37:23,000 --> 00:37:26,000 ale to je horná hranica, takže pôjdem s 255 len konvencií, 674 00:37:26,000 --> 00:37:30,000 ale my sme mohli diskutovať, že je to nejaký nižšiu hodnotu, a pre e-mailovú adresu 675 00:37:30,000 --> 00:37:34,000 Len musí byť v súlade 255, ale opäť, mohli by sme mať rovnaký diskusiu. 676 00:37:34,000 --> 00:37:36,000 Ale ja budem robiť jednu vec tu na pravej strane. 677 00:37:36,000 --> 00:37:40,000 >> Čo je to mocný o databáze, je, že to môže urobiť veľa zdvíhanie ťažkých bremien 678 00:37:40,000 --> 00:37:42,000 alebo komplexné práce pre vás. 679 00:37:42,000 --> 00:37:46,000 Najmä som naozaj jedno, čo moje študentské ID čísla sú. 680 00:37:46,000 --> 00:37:49,000 Je to len chcel byť jedinečný identifikátor v databáze 681 00:37:49,000 --> 00:37:52,000 takže mám 32-bit stručné vyjadrenie, že študent 682 00:37:52,000 --> 00:37:55,000 tak, že som nejaký spôsob, ako jednoznačne identifikovať ich 683 00:37:55,000 --> 00:37:58,000 aby snáď 2 Davids, napríklad, v triede. 684 00:37:58,000 --> 00:38:01,000 V skutočnosti, budem zaškrtnite toto políčko, AI, auto prírastok, 685 00:38:01,000 --> 00:38:04,000 tak, aby databáza, MySQL, vyrieši 686 00:38:04,000 --> 00:38:08,000 Čo každý novo vložený študenta ID bude. 687 00:38:08,000 --> 00:38:11,000 Nemám ani sa starať o to v mojom kóde, 688 00:38:11,000 --> 00:38:13,000 a ja tiež chystá vybrať niečo podľa indexu ponuke. 689 00:38:13,000 --> 00:38:17,000 Index spadnúť tu je primárny, unikátny, 690 00:38:17,000 --> 00:38:19,000 index a plný text. 691 00:38:19,000 --> 00:38:21,000 Môžete hádať, čo možno pár z týchto vecí sú, 692 00:38:21,000 --> 00:38:24,000 ale to dopadá v relačných databázach 693 00:38:24,000 --> 00:38:28,000 ste programátor alebo správca databázy dostať preventívne 694 00:38:28,000 --> 00:38:32,000 dať pokyny k databáze, do akej oblasti 695 00:38:32,000 --> 00:38:34,000 v tabuľke sú trochu zvláštne. 696 00:38:34,000 --> 00:38:37,000 >> Napríklad, v tomto prípade som chcel povedať, že ID 697 00:38:37,000 --> 00:38:42,000 bude primárny index, inak známa ako primárny kľúč. 698 00:38:42,000 --> 00:38:44,000 Čo to znamená podľa definície je, že ID nabudúce 699 00:38:44,000 --> 00:38:48,000 bude jednoznačne identifikovať študentov v tejto tabuľke. 700 00:38:48,000 --> 00:38:53,000 Žiadny študent bude mať rovnaké ID, pretože som uloženie tohto obmedzenia alebo tento index. 701 00:38:53,000 --> 00:38:55,000 Navyše, čo to bude robiť, pre mňa je to nepovie 702 00:38:55,000 --> 00:38:58,000 MySQL že ID je zvláštne. 703 00:38:58,000 --> 00:39:03,000 Starám sa predovšetkým o ID, tak choďte do toho a urobiť vaše fantázie dátové štruktúry kúzlo, 704 00:39:03,000 --> 00:39:05,000 vybudovať nejaký strom. 705 00:39:05,000 --> 00:39:08,000 Typicky je to niečo, čo nazýva B-strom, ktorý sme nemali pozerať na týždne, 706 00:39:08,000 --> 00:39:11,000 ale je to ďalší takú dátovú štruktúru podobnú v duchu na binárne stromy 707 00:39:11,000 --> 00:39:15,000 a snaží sa, aby sa pozrel, ale to povie 708 00:39:15,000 --> 00:39:18,000 do databázy toto pole je tak dôležité, že som asi 709 00:39:18,000 --> 00:39:22,000 Chcem byť schopný vyhľadávať na to, choďte do toho a vybudovať nejakú chuť 710 00:39:22,000 --> 00:39:25,000 štruktúra dát v pamäti na urýchlenie vyhľadávania tak, aby v ideálnom prípade 711 00:39:25,000 --> 00:39:28,000 sú konštantné čas alebo aspoň čo najbližšie k že ako je to možné 712 00:39:28,000 --> 00:39:32,000 tak, že nie je prešla do lineárne vyhľadávanie, ktoré sa nebude 713 00:39:32,000 --> 00:39:34,000 Najviac vysoko výkonných prístup. 714 00:39:34,000 --> 00:39:37,000 Naopak, môže e-mailová adresa bola primárny kľúč. 715 00:39:37,000 --> 00:39:41,000 >> V teórii, každý je e-mailová adresa je jedinečná, pokiaľ zdieľate nejaký účet, 716 00:39:41,000 --> 00:39:45,000 ale to všeobecne nie je dobré použiť niečo ako reťazec 717 00:39:45,000 --> 00:39:49,000 ako primárny kľúč, pretože ak je jej zmyslom života je jednoznačne identifikovať 718 00:39:49,000 --> 00:39:55,000 riadkov v tabuľke nie je dôvod používať 255 bajtov maximálne 719 00:39:55,000 --> 00:39:58,000 jednoznačne identifikovať niekoho, či sa môžete dostať preč s iba 4 bajty 720 00:39:58,000 --> 00:40:00,000 alebo 32-bit int. 721 00:40:00,000 --> 00:40:03,000 Všeobecne platí, že by mal byť primárny kľúč krátke a stručné 722 00:40:03,000 --> 00:40:07,000 a ideálne niečo ako integer alebo veľkú int, ktorý sa stane byť 64 bitov. 723 00:40:07,000 --> 00:40:11,000 Ale e-mailová adresa by mala byť jedinečná, a jeden z rysov databázy príliš 724 00:40:11,000 --> 00:40:14,000 je vynútiť jedinečnosť pre mňa. 725 00:40:14,000 --> 00:40:18,000 Voľbou jedinečné tu vedľa e-mailu, aj keď e-mail sa 726 00:40:18,000 --> 00:40:21,000 posuniete mimo obrazovku, hovorím do databázy 727 00:40:21,000 --> 00:40:23,000 mi neveríte. 728 00:40:23,000 --> 00:40:26,000 Nenechaj ma vložiť do databázy 729 00:40:26,000 --> 00:40:29,000 rovnaká e-mailová adresa dvakrát, aj keď som idiot a nie som 730 00:40:29,000 --> 00:40:32,000 veľmi dobrý s mojimi IFS a inde IFS a skutočné PHP kódu 731 00:40:32,000 --> 00:40:37,000 a ja omylom nechal užívateľ zaregistrovať existujúcu e-mailovú adresu 732 00:40:37,000 --> 00:40:40,000 Databáza je ešte ďalšia úroveň obrany za správnosť 733 00:40:40,000 --> 00:40:44,000 zabezpečila, aby duplicitné e-mailová adresa nebude skončiť v tabuľke. 734 00:40:44,000 --> 00:40:49,000 >> Teraz, naopak, v názve pravdepodobne nebudete chcieť, aby sa toto jedinečné 735 00:40:49,000 --> 00:40:51,000 pretože potom by mohlo byť nikdy 2 Davids alebo 2 Mike Smiths, napríklad, 736 00:40:51,000 --> 00:40:55,000 v databáze, tak, že jeden jednoducho budeme nechať na pokoji. 737 00:40:55,000 --> 00:40:58,000 Chystám sa ísť dopredu a kliknite na tlačidlo Uložiť v pravej dolnej časti, 738 00:40:58,000 --> 00:41:02,000 a všetko vyzerá dobre, ale všimnite si tu 739 00:41:02,000 --> 00:41:04,000 To je časť, ktorá zatiaľ nebudeme tráviť príliš veľa času na 740 00:41:04,000 --> 00:41:07,000 pretože syntax je trochu zložitejšie, a nemáme k vytvoreniu tabuliek 741 00:41:07,000 --> 00:41:10,000 tak často, ale SQL sám je jazyk, 742 00:41:10,000 --> 00:41:13,000 Syntax pre ktoré je tu, že som zdôraznil. 743 00:41:13,000 --> 00:41:18,000 Čo phpMyAdmin naozaj je to vytvára webové GUI pre vás 744 00:41:18,000 --> 00:41:23,000 s ktorým môžete ušetriť čas a nie je nutné ručne zadávať z 745 00:41:23,000 --> 00:41:26,000 pomerne dlhé SQL dotazu takhle. 746 00:41:26,000 --> 00:41:29,000 >> Inými slovami, ak by ste chceli vytvoriť ručne túto tabuľku, 747 00:41:29,000 --> 00:41:32,000 buď v tej čiernej a bielej riadku, alebo dokonca v phpMyAdmin 748 00:41:32,000 --> 00:41:35,000 pomocou tohto iného kartu, táto karta SQL, kde môžete zadať vo všetkých SQL dotazov 749 00:41:35,000 --> 00:41:38,000 Chcete, úprimne povedané, to by mi trvalo minútu 750 00:41:38,000 --> 00:41:41,000 skutočne spomenúť na celú syntax, a dokonca aj potom by som asi mať 751 00:41:41,000 --> 00:41:45,000 urobil niektoré preklepy, takže tento nástroj je užitočný pre veci, ako že, a to je tiež poučný. 752 00:41:45,000 --> 00:41:49,000 Môžete začať odvodzovať to, čo je syntax 753 00:41:49,000 --> 00:41:52,000 len tým, že na peknú farbu kódovanie, ktoré phpMyAdmin je pridanie 754 00:41:52,000 --> 00:41:54,000 pre naše vizuálne pohodlie. 755 00:41:54,000 --> 00:41:56,000 Ale teraz ideme na to miesto. 756 00:41:56,000 --> 00:42:00,000 Nechajte ma ísť na karte Vložiť na vrchole, a nechaj ma ísť dopredu a vložte napríklad 757 00:42:00,000 --> 00:42:04,000 ID povedzme, vlastne mi to jedno. 758 00:42:04,000 --> 00:42:07,000 Bude to auto prírastok. Chystám sa nechať databázy sa s tým vysporiadať. 759 00:42:07,000 --> 00:42:11,000 Ale ja sa Dávid, a môj e-mail by mal byť malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Poďme ďalej sem a dať do Mikom Smithom za inú. 761 00:42:16,000 --> 00:42:18,000 Dám sám sebe priezvisko rovnako, 762 00:42:18,000 --> 00:42:22,000 a budeme sa ho byť smith@example.com, 763 00:42:22,000 --> 00:42:24,000 a potom, kde mám ísť ďalej? 764 00:42:24,000 --> 00:42:27,000 No, vyzerá to, že go je tlačidlo kliknúť, a voila. 765 00:42:27,000 --> 00:42:30,000 Všimnite si, v najvyšších 2 vložených riadkov. 766 00:42:30,000 --> 00:42:32,000 To je skutočná SQL dotazu. 767 00:42:32,000 --> 00:42:36,000 To je phpMyAdmin nástroj popravený pre mňa, 768 00:42:36,000 --> 00:42:40,000 ale konečný výsledok, upozornenie, keď som teraz choďte na kartu prechádzanie, 769 00:42:40,000 --> 00:42:43,000 je vidieť 2 riadky v tejto tabuľke, veľmi pripomínajúce esteticky 770 00:42:43,000 --> 00:42:46,000 v tabuľke sme videli skôr pre našich užívateľov z PSet 7, 771 00:42:46,000 --> 00:42:51,000 z ktorých jeden je David Malan, z ktorých jeden je teraz Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Ale len aby bolo jasno, nemám potrebu používať phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 a naozaj, budete čoskoro písať kód pre PSet 7 774 00:42:56,000 --> 00:43:01,000 , Ktorý automatizuje proces pridávania riadkov, mazanie riadkov, aktualizácia riadkov a podobne, 775 00:43:01,000 --> 00:43:04,000 tak nech mi namiesto toho ísť do SQL kartu sem 776 00:43:04,000 --> 00:43:14,000 a zadajte SELECT * FROM študentov, kde 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Inými slovami, asi máte teraz 779 00:43:21,000 --> 00:43:26,000 niektoré HTML formulár, a užívateľ zadá svoju e-mailovú adresu, okrem iných oblastiach, 780 00:43:26,000 --> 00:43:29,000 a cieľom je teraz v PHP na zadnej koniec kódu 781 00:43:29,000 --> 00:43:31,000 skutočne vyhľadať, že používateľ je ďalšie podrobnosti. 782 00:43:31,000 --> 00:43:34,000 Aké je vaše celé meno? Aká je vaša ID číslo? 783 00:43:34,000 --> 00:43:37,000 Dalo by sa napísať SQL dotaz, ako je tento, select * from študentov 784 00:43:37,000 --> 00:43:40,000 kde e = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 A keď som potom kliknite na príkaz ísť, si, že som mal, a skutočne som sa, vráť sa späť len jeden riadok. 786 00:43:46,000 --> 00:43:50,000 Mike je vynechaný z tohto výsledku, ako zber riadkov 787 00:43:50,000 --> 00:43:53,000 je všeobecne nazývaný, pretože nemá rovnakú e-mailovú adresu ako ja. 788 00:43:53,000 --> 00:43:57,000 >> Teraz, opäť, tu PSet 7 budete používať phpMyAdmin ako administratívny nástroj 789 00:43:57,000 --> 00:44:00,000 a pedagogický nástroj naučiť svoju cestu 790 00:44:00,000 --> 00:44:03,000 po celom svete SQL, ale na konci dňa 791 00:44:03,000 --> 00:44:08,000 budete sa písanie týchto otázok vo vnútri aktuálneho kódu PHP, 792 00:44:08,000 --> 00:44:11,000 a tak zostaňte naladení na návodu Zamyla je najmä 793 00:44:11,000 --> 00:44:14,000 kde budete mať prehliadku distribučné kód pre tohto problému sadu 794 00:44:14,000 --> 00:44:18,000 kde sme, rovnako vám nielen estetika pre prihlasovaciu stránku 795 00:44:18,000 --> 00:44:21,000 a pekné sexy logo, ktoré hovorí, že CS50 Financie, ale tiež sme vám dal 796 00:44:21,000 --> 00:44:24,000 banda funkcií, ktoré urobia váš život o niečo jednoduchší. 797 00:44:24,000 --> 00:44:27,000 Sme sa tiež píše časť PSet pre vás, 798 00:44:27,000 --> 00:44:32,000 prihlásiť časť toho najmä, aby vám pocit reprezentatívneho dizajnu 799 00:44:32,000 --> 00:44:36,000 skutočne používa radič, napríklad, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php a podobne, a potom uvidíte Pset tiež šablóny adresár 801 00:44:40,000 --> 00:44:43,000 ktorý má všetky vaše názory, všetky estetiky. 802 00:44:43,000 --> 00:44:46,000 A tak celkový pracovný postup v PSet 7 bude, že 803 00:44:46,000 --> 00:44:49,000 používatelia navštívia radič cez adresu URL v prehliadači. 804 00:44:49,000 --> 00:44:53,000 To regulátor obsahuje PHP kód, ktorý ste napísali, a vnútri PHP kódu 805 00:44:53,000 --> 00:44:57,000 môže byť niekoľko riadkov z SQL vnorené do dvojitých úvodzovkách 806 00:44:57,000 --> 00:45:00,000 a prešiel na funkciu sme písali názvom dotaz 807 00:45:00,000 --> 00:45:03,000 , Ktorá vám pomôže hovoriť do databázy bez použitia niečo ako 808 00:45:03,000 --> 00:45:05,000 Nástroj pre správu, ako phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Budete mať možnosť písať SQL príkazy v PHP kódu 810 00:45:08,000 --> 00:45:11,000 a získať späť PHP pole výsledkovej sady, 811 00:45:11,000 --> 00:45:14,000 z riadkov, ktoré skutočne zodpovedajú tento dotaz. 812 00:45:14,000 --> 00:45:18,000 A podobne si budete môcť urobiť vložky alebo odstráni 813 00:45:18,000 --> 00:45:22,000 alebo aktualizácie alebo podobné, syntaxe, pre ktoré je veľmi podobná, 814 00:45:22,000 --> 00:45:25,000 a uvidíte, z niektorých internetových odkazov, z distribučného kódu 815 00:45:25,000 --> 00:45:29,000 a od PSet balenia sa presne tak, ako ísť o tom, že. 816 00:45:29,000 --> 00:45:33,000 Uvedomte si, nakoniec sme naozaj len poškriabaniu povrchu SQL 817 00:45:33,000 --> 00:45:36,000 a MySQL, ale veľa toho naozaj je, že vás oslobodí 818 00:45:36,000 --> 00:45:40,000 zamerať sa na problémy, ktoré chcete riešiť, že prípady použitia chcete implementovať 819 00:45:40,000 --> 00:45:43,000 bez toho aby sa museli tak moc, aspoň na začiatku, 820 00:45:43,000 --> 00:45:47,000 o tom, kde a ako ukladať a vyhľadávať databázy, 821 00:45:47,000 --> 00:45:50,000 a to je doslova, kde Facebook sám dostal jeho začiatok 822 00:45:50,000 --> 00:45:53,000 používať MySQL a potom pomocou viacerých MySQL servery a potom ďalšie MySQL servery 823 00:45:53,000 --> 00:45:57,000 pred dlho, až sa potom musel naozaj začať usilovne premýšľal o tom, ako 824 00:45:57,000 --> 00:46:00,000 ukladanie dát, ako uložiť veci ešte efektívnejšie, 825 00:46:00,000 --> 00:46:04,000 takže aj keď budeme brať za samozrejmosť, že indexy a jedinečné obmedzenia 826 00:46:04,000 --> 00:46:08,000 a tak ďalej jednoducho fungovať tam veľmi zaujímavý rozhovor 827 00:46:08,000 --> 00:46:12,000 že to môže všetko nakoniec viesť k, takže si uvedomiť, že my sme len k poškriabaniu povrchu 828 00:46:12,000 --> 00:46:17,000 z toho, čo by sa prípadne mohli pre vás alebo vaše projekty stali docela dosť veľkých dát. 829 00:46:17,000 --> 00:46:22,000 >> Vďaka, že povedal, poďme nekončí, a my uvidíme budúci týždeň. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]