1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [8. týden, pokračování] 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 konec týdne 8 zde. 5 00:00:13,000 --> 00:00:16,000 Samozřejmě jsme měli trochu hurikánu na počátku tohoto týdne, 6 00:00:16,000 --> 00:00:19,000 takže teď to je opravdu jen ty a já v tomto přednáškovém sále, 7 00:00:19,000 --> 00:00:22,000 ale dnes budeme pokračovat v rozhovoru o PHP 8 00:00:22,000 --> 00:00:25,000 a asi programování pro web obecně, a také představit myšlenku 9 00:00:25,000 --> 00:00:29,000 databází, zvláště jeden nazvaný MySQL, která je velmi populární v těchto dnech, 10 00:00:29,000 --> 00:00:34,000 z velké části proto, že jeho škálovatelnosti, stejně jako proto, že jeho bytí zdarma a open source. 11 00:00:34,000 --> 00:00:37,000 >> Ale nejdřív, pohled na to, kde jsme skončili minule. 12 00:00:37,000 --> 00:00:40,000 Připomeňme si, že jsme se dívali na několika příkladech Frosh Chatu, 13 00:00:40,000 --> 00:00:44,000 a to byl ohavný formulář, který jsem přišel s asi 15 + let 14 00:00:44,000 --> 00:00:49,000 aby měl studenty na akademické půdě rejstříku pro sport prváka intramurálních 15 00:00:49,000 --> 00:00:52,000 aniž byste museli trek už přes dvůr k Wigglesworth 16 00:00:52,000 --> 00:00:56,000 posuňte fyzické kus papíru pod nějaké Proctor dveřím. 17 00:00:56,000 --> 00:00:59,000 Místo toho jsme se přestěhovali všechno on-line, ale k tomu, že jsme potřebovali využít 18 00:00:59,000 --> 00:01:03,000 několika technologií, tak jeden, jsme potřebovali HTML, Hypertext Markup Language, 19 00:01:03,000 --> 00:01:07,000 což je opět to značkovací jazyk, s nímž si uděláte webové stránky strukturálně. 20 00:01:07,000 --> 00:01:10,000 >> Pomocí trochu CSS v těchto dnech, kaskádové styly, 21 00:01:10,000 --> 00:01:16,000 kdy používáme stylizations webové stránky pomocí mírně odlišnou syntaxi, 22 00:01:16,000 --> 00:01:19,000 vzhledem k tomu, HTML bylo o struktuře jejich. 23 00:01:19,000 --> 00:01:21,000 Musíme také zavést webový programovací jazyk. 24 00:01:21,000 --> 00:01:25,000 V tomto případě budeme používat PHP, a PHP bude, aby nám 25 00:01:25,000 --> 00:01:28,000 pro dynamické výstupní obsah stejně jako tomu programové věci, jako je 26 00:01:28,000 --> 00:01:33,000 odesílání e-mailů, jako tomu bylo v případě poznámku jsme nechali minulý týden. 27 00:01:33,000 --> 00:01:35,000 >> Připomeňme si, že kód pro tento byl na 2 části. 28 00:01:35,000 --> 00:01:38,000 Jeden jsme měli froshims3.php, 29 00:01:38,000 --> 00:01:42,000 a toto bylo velmi značky s HTML formuláři uvnitř ní, 30 00:01:42,000 --> 00:01:45,000 trošku CSS tady v stylu atributy 31 00:01:45,000 --> 00:01:48,000 takže by forma sám se soustředil na stránce, ale kromě toho 32 00:01:48,000 --> 00:01:51,000 jsme měli nějaké reprezentativní formuláře vstupy, textové pole, zaškrtávací políčko, 33 00:01:51,000 --> 00:01:55,000 nějaké rádio tlačítka, zvolte menu, a tlačítko Odeslat. 34 00:01:55,000 --> 00:02:01,000 A prostřednictvím tohoto formuláře, jsme podali na souboru, který byl zřejmě volal register3.php, 35 00:02:01,000 --> 00:02:04,000 která sama o sobě vypadala trochu něco takového. 36 00:02:04,000 --> 00:02:08,000 Nyní, většina kódu v register3.php, odvolání, bylo o e-mailu. 37 00:02:08,000 --> 00:02:11,000 Je přece trochu validace na formuláři, který byl předložen, aby se ujistil 38 00:02:11,000 --> 00:02:14,000 že pole bylo skutečně za předpokladu, že byly očekávány. 39 00:02:14,000 --> 00:02:18,000 Pak jsme zavolali některé PHP funkce pomocí mírně novou syntaxi, 40 00:02:18,000 --> 00:02:20,000 i když to půjčil si od C. 41 00:02:20,000 --> 00:02:24,000 >> Tato šipka operátor nám umožňuje využít něco, co nazývá objektově orientované programování. 42 00:02:24,000 --> 00:02:27,000 Nepůjdeme do toho v každém detailu zde, ale vím teď 43 00:02:27,000 --> 00:02:31,000 je to způsob, jak mít funkce spojené s objekty, 44 00:02:31,000 --> 00:02:34,000 které jsou speciální typ struktury, jak jsme viděli v C. 45 00:02:34,000 --> 00:02:37,000 Ale teď, jen se na víře, že je to správná syntaxe pro použití 46 00:02:37,000 --> 00:02:41,000 Při použití knihovny se líbí tato knihovna PHPMailer. 47 00:02:41,000 --> 00:02:44,000 A pak na konci tohoto souboru jsme dynamicky generované e-mail 48 00:02:44,000 --> 00:02:47,000 které poslali na můj jharvard@cs50.net účet 49 00:02:47,000 --> 00:02:50,000 z mého jharvard@cs50.net účtu, 50 00:02:50,000 --> 00:02:54,000 a jsme informovali uživatele způsobem, že bylo zapsáno pro tento sport. 51 00:02:54,000 --> 00:02:57,000 To je přesně to, co Frosh IM stránku, kde bylo před lety 52 00:02:57,000 --> 00:03:00,000 když jsem implementoval, poskytnuté v jiném jazyce, 53 00:03:00,000 --> 00:03:02,000 ale to vám ukáže snad moc, že ​​máte 54 00:03:02,000 --> 00:03:05,000 teď, že se můžete vyjádřit nejen programově 55 00:03:05,000 --> 00:03:08,000 na nízké úrovni v jazyce jako C, ale na mnohem vyšší úrovni 56 00:03:08,000 --> 00:03:11,000 s těmito velmi reálných aplikacích, jako je e-mail, aby skutečně řešit 57 00:03:11,000 --> 00:03:13,000 některé skutečné světové problémy. 58 00:03:13,000 --> 00:03:16,000 >> Nyní, samozřejmě, i když tento skript použít pro generování některých 59 00:03:16,000 --> 00:03:20,000 e-maily dynamicky z jharvard@cs50.net, což je opravdu účet 60 00:03:20,000 --> 00:03:23,000 že mám přístup k to být docela opatrní k odeslání 61 00:03:23,000 --> 00:03:26,000 e-mail pouze z účtů, které jsou ve skutečnosti vlastní, 62 00:03:26,000 --> 00:03:30,000 lest věci vám v trochu teplé vody v životě. 63 00:03:30,000 --> 00:03:35,000 Díky, že řekl, pojďme se teď přechod na řešení jiný problém úplně, 64 00:03:35,000 --> 00:03:37,000 že opěrných států. 65 00:03:37,000 --> 00:03:39,000 A teď, co to vlastně znamená? 66 00:03:39,000 --> 00:03:42,000 HTTP, tato hypertext transfer protocol, 67 00:03:42,000 --> 00:03:45,000 je vlastně bez státní příslušnosti protokol, a co to znamená, že 68 00:03:45,000 --> 00:03:48,000 když vytáhnout něco jako Google.com a poté stiskněte klávesu Enter 69 00:03:48,000 --> 00:03:51,000 obvykle Váš prohlížeč má nějaký předení ikony, které pak 70 00:03:51,000 --> 00:03:54,000 vyústí v určité webové stránky jsou staženy, 71 00:03:54,000 --> 00:03:57,000 a pak že se malá ikona zastaví spinning, a že skutečně naznačuje, 72 00:03:57,000 --> 00:04:02,000 že HTTP dokončil nějaké připojení k serveru a je to. 73 00:04:02,000 --> 00:04:05,000 HTTP je bez státní příslušnosti v tom smyslu, že neudržuje 74 00:04:05,000 --> 00:04:08,000 trvalé připojení k serveru stejným způsobem Skype dělá 75 00:04:08,000 --> 00:04:11,000 nebo Gchat dělá proto, že s HTTP 76 00:04:11,000 --> 00:04:15,000 Předpokladem je, že poté, co jste přinesl webovou stránku, která je to. 77 00:04:15,000 --> 00:04:18,000 >> Nyní, ve skutečnosti v těchto dnech na weby jako Facebook a Google Maps 78 00:04:18,000 --> 00:04:21,000 a Twitter a jako by to mnohem více dynamiky, kdy 79 00:04:21,000 --> 00:04:25,000 i poté, ikona přestane točit, můžete ve skutečnosti získat další aktualizace 80 00:04:25,000 --> 00:04:29,000 ze serveru, více tweety, více o stavu aktualizace na Facebooku a podobně. 81 00:04:29,000 --> 00:04:33,000 Ale i to je použití techniky, které budeme mluvit o za týden nebo dva 82 00:04:33,000 --> 00:04:36,000 známý jako Ajax pomocí jazyka s názvem JavaScript, 83 00:04:36,000 --> 00:04:38,000 ale na konci dne, HTTP je stále nestavové. 84 00:04:38,000 --> 00:04:42,000 A přesto, pokud chcete, aby nějak vzpomenout, co o uživateli 85 00:04:42,000 --> 00:04:44,000 i poté, co jsem odpojen od serveru 86 00:04:44,000 --> 00:04:47,000 PHP se Vám poskytnou prostředky, jak toho dosáhnout 87 00:04:47,000 --> 00:04:52,000 protože, jak jsme viděli minule, PHP má řadu superglobálních, 88 00:04:52,000 --> 00:04:55,000 a superglobal je opět speciální globální proměnné 89 00:04:55,000 --> 00:04:59,000 , který je předán pro Vás webový server a samotným PHP. 90 00:04:59,000 --> 00:05:02,000 >> Nemusíte dělat nic, aby hodnoty v něm, 91 00:05:02,000 --> 00:05:05,000 a mezi superglobálních jsme viděli doposud, jsou get a post, 92 00:05:05,000 --> 00:05:08,000 které je místo, kde jsou pole formuláře umístit automaticky za vás, 93 00:05:08,000 --> 00:05:11,000 stejně jako pár dalších, které jsme ještě neviděli. 94 00:05:11,000 --> 00:05:17,000 Uvnitř $ _SERVER jsou některé speciální proměnné vztahující se k serveru samotném. 95 00:05:17,000 --> 00:05:22,000 Co je to IP adresa, jaký protokol, HTTP nebo HTTPS jste používali, 96 00:05:22,000 --> 00:05:25,000 Co žádost metodu jste a podobně, takže je tu něco zajímavého, 97 00:05:25,000 --> 00:05:29,000 šťavnaté podrobnosti o serveru, a ve skutečnosti, že uživatel se tam také. 98 00:05:29,000 --> 00:05:33,000 Tam je $ _cookie, což je místo, kde se tyto věci tzv. cookies jsou uloženy. 99 00:05:33,000 --> 00:05:36,000 Nebudeme trávit čas na cookies sebe dnes, 100 00:05:36,000 --> 00:05:40,000 ale vím, že teď cookie je jen malý kousek informací 101 00:05:40,000 --> 00:05:43,000 že webový server může zasadit ve webovém prohlížeči 102 00:05:43,000 --> 00:05:46,000 a následně jeho RAM nebo svého počítače pevný disk 103 00:05:46,000 --> 00:05:49,000 za účelem uložení informací o uživateli, například, jejich uživatelského jména 104 00:05:49,000 --> 00:05:52,000 tak, aby nemuseli psát to pokaždé, když se přihlaste nebo nějaký 105 00:05:52,000 --> 00:05:55,000 jedinečné číslo nebo identifikátor pro tohoto uživatele 106 00:05:55,000 --> 00:05:58,000 takže nemusíte obtěžovat jim stejné druhy otázek o 107 00:05:58,000 --> 00:06:00,000 preference v budoucnosti, ale většina z úroků 108 00:06:00,000 --> 00:06:02,000 Právě teď je $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Tento superglobal, které, stejně jako ostatní, je předán k vám automaticky PHP 110 00:06:07,000 --> 00:06:10,000 když píšete PHP-založené webové stránky 111 00:06:10,000 --> 00:06:13,000 můžete uložit vše, co chcete, řetězce, celá čísla, 112 00:06:13,000 --> 00:06:16,000 plovoucí body, hodnoty, pole, objekty, 113 00:06:16,000 --> 00:06:20,000 Opravdu cokoliv, co chcete, a to vám umožní uložit takovým způsobem, 114 00:06:20,000 --> 00:06:23,000 , že i v případě, že uživatel navštíví tě tu a tam 115 00:06:23,000 --> 00:06:26,000 vrátí minutu od teď, nebo 5 minut od teď, protože 116 00:06:26,000 --> 00:06:28,000 berou svůj čas před kliknutím na nějaký jiný odkaz 117 00:06:28,000 --> 00:06:32,000 PHP zajistí, že cokoliv, co dát do té relace superglobal 118 00:06:32,000 --> 00:06:37,000 O minutu nebo 5 minut před bude ještě když uživatel vrátí. 119 00:06:37,000 --> 00:06:40,000 A pod kapotou je to superglobal prováděny pomocí 120 00:06:40,000 --> 00:06:44,000 tyto věci tzv. cookies, ale teď, je to jen abstrakce 121 00:06:44,000 --> 00:06:47,000 kdy je to něco jako programové ekvivalentu nákupního košíku. 122 00:06:47,000 --> 00:06:50,000 Ať už jste, programátor, dal v tom, že 123 00:06:50,000 --> 00:06:53,000 superglobal asociativní pole tam bude nějaké číslo z minuty později 124 00:06:53,000 --> 00:06:59,000 dokud ji neodstraníte nebo dokud uživatel ukončí svůj prohlížeč dohromady. 125 00:06:59,000 --> 00:07:02,000 >> Pojďme se podívat na příklad toho, jak se ta věc skutečně použita. 126 00:07:02,000 --> 00:07:07,000 V counter.php mezi dnešními kusy kódu 127 00:07:07,000 --> 00:07:09,000 máme následující řádek. 128 00:07:09,000 --> 00:07:13,000 Na začátku tohoto souboru máme spoustu modrých připomínky, které jsou nezajímavých pro tuto chvíli. 129 00:07:13,000 --> 00:07:15,000 Ale v řádku 13 máme nový řádek, 130 00:07:15,000 --> 00:07:18,000 session_start, a že vlastně dělá přesně to, co říká. 131 00:07:18,000 --> 00:07:20,000 Začíná zasedání. 132 00:07:20,000 --> 00:07:25,000 To vám umožní používat tuto velkou superglobal $ _SESSION, a je to tak jednoduché. 133 00:07:25,000 --> 00:07:30,000 Teď, když budeme pokračovat se podívat na řádku 16, zkusme zjistit, co tato internetová stránka bude dělat. 134 00:07:30,000 --> 00:07:35,000 If (isset ($ _SESSION ["counter"]) pak jděte do toho 135 00:07:35,000 --> 00:07:39,000 a obchod v boji proměnné, malá čítač, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Counter"]. 137 00:07:42,000 --> 00:07:45,000 To se zdá být deklarování lokální proměnnou pojmenovanou counter 138 00:07:45,000 --> 00:07:48,000 uvnitř které je uvedení kopii, co je uvnitř superglobal 139 00:07:48,000 --> 00:07:52,000 volal zasedání v umístění "pultu". 140 00:07:52,000 --> 00:07:56,000 Else, zdá se, že tento malý lokální proměnná čítač inicializován na 0. 141 00:07:56,000 --> 00:08:01,000 >> Ale pak o pár řádků později v 26 oznámení, že zasedání je kopie čítače, 142 00:08:01,000 --> 00:08:06,000 jeho klíč, má novou hodnotu přiřazenou, který je jeho aktuální hodnota plus 1. 143 00:08:06,000 --> 00:08:09,000 Stručně řečeno, tento soubor se zdá být aktualizace 144 00:08:09,000 --> 00:08:13,000 čítač, který je uložen uvnitř zasedání superglobal 145 00:08:13,000 --> 00:08:16,000 podle zvyšování to o 1, ale nejprve udrží kopii předchozí hodnoty 146 00:08:16,000 --> 00:08:20,000 uložením do lokální proměnné s názvem $ counter, 147 00:08:20,000 --> 00:08:22,000 a pak sem se podívejme, co zůstává. 148 00:08:22,000 --> 00:08:24,000 Ukázalo se, že je to skoro jen HTML. 149 00:08:24,000 --> 00:08:29,000 V dolní části této stránky vidíme v souladu 37, které jsem navštívil tyto stránky 150 00:08:29,000 --> 00:08:33,000 číslo čítače časů, takže je tu pár zajímavých funkcí zde. 151 00:08:33,000 --> 00:08:36,000 Jeden, to je jasně variabilní, ale to nestačí jen dát 152 00:08:36,000 --> 00:08:39,000 $ Counter v těle vašeho HTML, protože samozřejmě 153 00:08:39,000 --> 00:08:43,000 pokud je to jen tam mezi vaše PHP HTML se bude předpokládat, že je to právě HTML. 154 00:08:43,000 --> 00:08:48,000 Ty doslova Chcete $ counter které mají být vytištěny na obrazovce. 155 00:08:48,000 --> 00:08:51,000 >> Ale místo toho tím, že upustí do režimu PHP 156 00:08:51,000 --> 00:08:55,000 s tímto kusem syntaxe můžeme dynamicky vložit hodnotu zde 157 00:08:55,000 --> 00:08:58,000 velmi podobné v duchu toho, co jsme minule s 158 00:08:58,000 --> 00:09:00,000 vkládání hodnot do řetězců. 159 00:09:00,000 --> 00:09:04,000 Ve skutečnosti, to je jen zkrácený zápis pro ostatní něco takového doslova, 160 00:09:04,000 --> 00:09:12,000 print ($ counter), nebo i něco jako printf (% s, pult), 161 00:09:12,000 --> 00:09:14,000 nebo dokonce, jak jste možná viděli on-line nebo v učebnicích, 162 00:09:14,000 --> 00:09:17,000 je tu funkce v PHP nazývá echo 163 00:09:17,000 --> 00:09:20,000 který dělá totéž, a všechny z nich jsou jen delší vinuté způsoby 164 00:09:20,000 --> 00:09:25,000 říct 00:09:28,000 V tomto jednom případě nemusíte dát 166 00:09:28,000 --> 00:09:30,000 slovo PHP za otazníkem. 167 00:09:30,000 --> 00:09:34,000 To je zkratka pro zápis, znovu to, co jsme právě viděli před chvílí 168 00:09:34,000 --> 00:09:37,000 který je opakující nějakou hodnotu. 169 00:09:37,000 --> 00:09:39,000 >> Podívejme se, co konečný výsledek to vlastně je. 170 00:09:39,000 --> 00:09:43,000 Nech mě jít i do našeho counter.php souboru, 171 00:09:43,000 --> 00:09:47,000 a budeme vidět, že David právě udělal chybu tím, že hraje s kódem tam. 172 00:09:47,000 --> 00:09:50,000 Pojďme opravu bez ohledu na to posral, 173 00:09:50,000 --> 00:09:54,000 a chyba se zdá být tam, pryč, on-line 37. 174 00:09:54,000 --> 00:09:59,000 Podle horní části této stránky jsem navštívila tuto stránku 0 krát. 175 00:09:59,000 --> 00:10:02,000 Dobře, pojďme do toho hned, a na horní části prohlížeče klikněte na 176 00:10:02,000 --> 00:10:05,000 znovu na ikonu, a já klepněte na tlačítko znovu, 177 00:10:05,000 --> 00:10:12,000 a teď jsem navštívil stránky 1 čas, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 A skutečně, podíváme-li se na zdroje této stránky aktuální zdrojový kód se mění, 179 00:10:16,000 --> 00:10:19,000 a všimněte si úplnou absenci jakéhokoliv PHP, a to proto, že 180 00:10:19,000 --> 00:10:23,000 PHP kód je hodnocen nebo interpretovaný na straně serveru, 181 00:10:23,000 --> 00:10:27,000 a tak to znamená, že výstup z PHP skriptu je to, co nakonec poslal do prohlížeče, 182 00:10:27,000 --> 00:10:31,000 která je v tomto případě některých surovin a HTML a některé prostého textu. 183 00:10:31,000 --> 00:10:33,000 Co se to tady děje? 184 00:10:33,000 --> 00:10:37,000 >> No, s poměrně málo řádků kódu jsem schopen ukládat 185 00:10:37,000 --> 00:10:40,000 trvale v průběhu několika sekund, nebo pokud jsme čekali dost dlouho, 186 00:10:40,000 --> 00:10:44,000 minut, a to i hodiny, nějaké hodnoty tak, že je HTTP 187 00:10:44,000 --> 00:10:47,000 Zdá se stavovou jako když jsme zachovány 188 00:10:47,000 --> 00:10:51,000 toto spojení k serveru, a to jen vzpomněl, co jsem řekl, to naposledy, 189 00:10:51,000 --> 00:10:55,000 ale ve skutečnosti je tu celá parta složitosti děje pod kapotou 190 00:10:55,000 --> 00:10:59,000 zahrnující soubory cookie, které je umožňující PHP, aby mi tuto iluzi 191 00:10:59,000 --> 00:11:02,000 tohoto nákupního košíku, jako funkce. 192 00:11:02,000 --> 00:11:05,000 Pro tuto chvíli, triviální příklad, kde jsme jen pouhé ukládání celé číslo, 193 00:11:05,000 --> 00:11:08,000 ale, že funkce vrátí se k mít velkou hodnotu 194 00:11:08,000 --> 00:11:10,000 když začneme mluvit o složitějších projektů, 195 00:11:10,000 --> 00:11:12,000 mezi nimi problém nastavit 7. 196 00:11:12,000 --> 00:11:16,000 To je vaše úplně poslední problém nastavit CS50. 197 00:11:16,000 --> 00:11:19,000 Já vím, že je to tak smutné, ale to, co najdete, je, že budeme uzavírat 198 00:11:19,000 --> 00:11:22,000 tato část semestru vlastně přechod 199 00:11:22,000 --> 00:11:25,000 z kontextu C jistě souvislosti PHP 200 00:11:25,000 --> 00:11:27,000 ale při použití některé z úplně stejných základech 201 00:11:27,000 --> 00:11:29,000 jsme mluvili o nějakou dobu. 202 00:11:29,000 --> 00:11:33,000 >> Cíl s PSet 7 je zavést CS50 Finance, 203 00:11:33,000 --> 00:11:37,000 které je vaše vlastní verze Yahoo Finance nebo Google financí 204 00:11:37,000 --> 00:11:40,000 nebo dokonce Etrade.com přičemž si mají schopnost 205 00:11:40,000 --> 00:11:43,000 vyhledat ceny akcií pro dané symboly, ale i víc než to 206 00:11:43,000 --> 00:11:48,000 máte možnost "koupit" a "prodat" akcie 207 00:11:48,000 --> 00:11:51,000 které jsou obchodovány na různých burzách, protože jako úvodní stránku 208 00:11:51,000 --> 00:11:55,000 zde naznačuje, což je opravdu, do jaké míry jsme začali 209 00:11:55,000 --> 00:11:59,000 Problém sada pro vás, máte přihlašovací formulář, který se ptá na uživatelské jméno a heslo. 210 00:11:59,000 --> 00:12:03,000 Má tlačítko Odeslat, ale potom, jak budeme nakonec vidět, 211 00:12:03,000 --> 00:12:06,000 není nic opravdu děje pod kapotou ještě, protože to 212 00:12:06,000 --> 00:12:09,000 zůstává pro vás realizovat schopnost registrovat nové uživatele, 213 00:12:09,000 --> 00:12:12,000 schopnost nakupovat akcie, prodat akcie, 214 00:12:12,000 --> 00:12:14,000 skutečně vyhledat aktuální ceny akcií. 215 00:12:14,000 --> 00:12:17,000 >> A skutečně, to bude jako skutečný svět, jak je to možné, protože jsme 216 00:12:17,000 --> 00:12:20,000 patří kus kódu, který umožní vám jednu funkci 217 00:12:20,000 --> 00:12:25,000 na dotaz Yahoo Finance, která nádherně dává k dispozici zdarma údajů 218 00:12:25,000 --> 00:12:31,000 pro vyhledání cen akcií na základě burzovní symbol nebo burzovní symbol, 219 00:12:31,000 --> 00:12:34,000 a dostanete zpět aktuální cenu akcií dne. 220 00:12:34,000 --> 00:12:37,000 Údaje, které jste vlastně vidět v tomto konkrétním PSet bude 221 00:12:37,000 --> 00:12:40,000 asi tak reálném světě, jak to může dostat tak, že jste vlastně propojení 222 00:12:40,000 --> 00:12:43,000 se skutečným světem zásob z reálného světa cenách, 223 00:12:43,000 --> 00:12:47,000 a uvidíme, kolik peněz můžete udělat snad 224 00:12:47,000 --> 00:12:51,000 v průběhu příštích několika dnech hraní s vlastní problém sadě. 225 00:12:51,000 --> 00:12:55,000 >> Ale pojďme nejprve nastavit scénu, jak navrhnout něco, co je jistě složitější 226 00:12:55,000 --> 00:12:59,000 než counter.php, že je to složitější, než kterýkoli z Frosh příkladů Chatu tak daleko, 227 00:12:59,000 --> 00:13:02,000 a zkusme představit několik paradigmat zde, které umožňují nám 228 00:13:02,000 --> 00:13:06,000 jak pro PSet 7 a možná pro konečného projektu, pokud nemáte něco na základě web 229 00:13:06,000 --> 00:13:11,000 aby váš kód dobře organizovaná, udržet si zdravý rozum, 230 00:13:11,000 --> 00:13:15,000 a učinit krok směrem spolupracovat, ať už v závěrečné projektu CS50 tyto 231 00:13:15,000 --> 00:13:18,000 nebo mimo, pokud budete pokračovat naprogramovat něco v budoucnu. 232 00:13:18,000 --> 00:13:21,000 Tam je to obecný návrh paradigma 233 00:13:21,000 --> 00:13:24,000 v informatice a ve vývoji softwaru obecně 234 00:13:24,000 --> 00:13:27,000 známý jako MVC, model view řadiče, 235 00:13:27,000 --> 00:13:30,000 a to je hloupé zkratka, která popisuje velmi pěkný nápad, 236 00:13:30,000 --> 00:13:34,000 který je oddělení různých aspektů programu, 237 00:13:34,000 --> 00:13:39,000 konkrétně vedení samostatné logiku nebo obchodní logiku webové stránky 238 00:13:39,000 --> 00:13:42,000 takže vše, co zahrnuje věci jako 239 00:13:42,000 --> 00:13:45,000 volání funkcí a dotazování databází a podobně 240 00:13:45,000 --> 00:13:48,000 se stane ne mezi vaší HTML 241 00:13:48,000 --> 00:13:51,000 ale spíše v samostatných souborech, a opravdu, tam je to jeden soubor 242 00:13:51,000 --> 00:13:54,000 obvykle, že jste volal správce 243 00:13:54,000 --> 00:13:56,000 To je opravdu mozkem operace, a uvidíme příklad 244 00:13:56,000 --> 00:13:58,000 z toho za chvíli. 245 00:13:58,000 --> 00:14:01,000 >> Tam je model, který je programování kódu 246 00:14:01,000 --> 00:14:05,000 že se mluví na seznam databází, které mluví pro Yahoo Finance a podobně, 247 00:14:05,000 --> 00:14:08,000 a pak je tu V v MVC, pohledy, 248 00:14:08,000 --> 00:14:11,000 všechny věci, které se vztahuje k estetice, soubory, které skutečně obsahují 249 00:14:11,000 --> 00:14:14,000 Vaše HTML, možná vaše CSS a podobně. 250 00:14:14,000 --> 00:14:17,000 Myšlenka, jak tento obrázek naznačuje, je to, že ovladač 251 00:14:17,000 --> 00:14:21,000 je soubor, jak brzy uvidíte, a jak budete především vidět v PSet 7, 252 00:14:21,000 --> 00:14:24,000 že svět mluví prostřednictvím svých webových prohlížečů. 253 00:14:24,000 --> 00:14:27,000 To je soubor, který se na na veřejném internetu, 254 00:14:27,000 --> 00:14:30,000 ale regulátor mluví potenciálně modelu, 255 00:14:30,000 --> 00:14:34,000 který je jeden nebo více dalších souborů, které obsahují kód vztahující se k údajům, 256 00:14:34,000 --> 00:14:37,000 kód vztahující se k databázím a podobně, a pak to mluví 257 00:14:37,000 --> 00:14:40,000 regulátor jeden nebo více jiných souborů známé jako zobrazení, 258 00:14:40,000 --> 00:14:43,000 které jsou estetika webové stránky, vzory druhů, 259 00:14:43,000 --> 00:14:47,000 , které by mohly mít některé údaje jako vstup, ale na konci dne 260 00:14:47,000 --> 00:14:50,000 pouze logika uvnitř cílem by mělo být ztvárnění těchto údajů, 261 00:14:50,000 --> 00:14:53,000 iterace smyčky a vlastně plivat některé 262 00:14:53,000 --> 00:14:56,000 HTML-based ztvárnění jejich, nebo dokonce něco jako PDF. 263 00:14:56,000 --> 00:14:59,000 >> Co je hezké o MVC je, že můžete mít různé názory 264 00:14:59,000 --> 00:15:02,000 na základě typu zařízení, v závislosti na typu použitého souborového formátu, který skutečně 265 00:15:02,000 --> 00:15:04,000 Chci ukázat uživateli. 266 00:15:04,000 --> 00:15:10,000 Pojďme se podívat na několik postupně složitější a dobře navržený příkladů 267 00:15:10,000 --> 00:15:13,000 tím, že začíná nejprve s verzí 0 zde. 268 00:15:13,000 --> 00:15:16,000 Nech mě jít napřed a otevřít v našem adresáři MVC dnes 269 00:15:16,000 --> 00:15:21,000 soubor s názvem index.php v adresáři 0. 270 00:15:21,000 --> 00:15:26,000 Všimněte to je super jednoduchá a velmi nezaujatý web 271 00:15:26,000 --> 00:15:29,000 to je druh verze 0 z domovské stránky pro CS50, 272 00:15:29,000 --> 00:15:32,000 a všimněte si, jak máme odkaz na přednášky, máme odkaz na osnovy, 273 00:15:32,000 --> 00:15:35,000 a když jsem na odkaz na přednášky oznámení, že URL 274 00:15:35,000 --> 00:15:39,000 až nahoru se změní na lectures.php. 275 00:15:39,000 --> 00:15:44,000 Jestliže tedy já následovat odkaz týden 1 upozornění, že adresa URL se změní na week1.php. 276 00:15:44,000 --> 00:15:46,000 Zdá se, že poměrně jednoduchý hierarchickou strukturu zde. 277 00:15:46,000 --> 00:15:49,000 >> Pojďme se rychle podívat pod kapotu, jak je to stanoveno, 278 00:15:49,000 --> 00:15:53,000 a opravdu, když jsem se na index.php je to docela jednoduché. 279 00:15:53,000 --> 00:15:57,000 Ve skutečnosti, i když jsem volal tento soubor PHP tam žádný skutečný programový kód. 280 00:15:57,000 --> 00:16:01,000 Je tu poznámka, že jsem tady psal v PHP jen tak, že uživatel nemá skončit vidět to. 281 00:16:01,000 --> 00:16:05,000 Samozřejmě, stejně jako předtím, vše, co je mezi tagy PHP 282 00:16:05,000 --> 00:16:08,000 dostane vykládat, i když je to komentář, a interpretovat komentář 283 00:16:08,000 --> 00:16:11,000 znamená jen to vyhodil na konci dne a ve skutečnosti 284 00:16:11,000 --> 00:16:15,000 poslat do prohlížeče, takže všechno tady je jen estetika. 285 00:16:15,000 --> 00:16:20,000 Pokud jsem otevřít podobně lectures.php i toto je jen těžko kódovaný soubor. 286 00:16:20,000 --> 00:16:23,000 Stává se to nazvat něco. Php, 287 00:16:23,000 --> 00:16:27,000 ale je to opravdu jen. html, a week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 podobně jsou jen značkovací, takže je tu spoustu nedostatků tohoto návrhu. 289 00:16:31,000 --> 00:16:33,000 Jeden, že je to obrovské množství copy / paste. 290 00:16:33,000 --> 00:16:37,000 I když jediná věc, která mění mezi těmito soubory je neuspořádané seznam, 291 00:16:37,000 --> 00:16:41,000 Li tagy, jsem nicméně mít doc typ, HTML, hlava, 292 00:16:41,000 --> 00:16:44,000 Název, úzkým tělo, úzkým HTML a více 293 00:16:44,000 --> 00:16:47,000 v každém souboru, což znamená, že pokud bych někdy chtěl restrukturalizaci 294 00:16:47,000 --> 00:16:50,000 tato webová stránka nebo restylize to musím jít a změnit 295 00:16:50,000 --> 00:16:54,000 všechny tyto soubory ručně nebo s některými masivní najít a nahradit. 296 00:16:54,000 --> 00:17:01,000 >> Pojďme se krok směrem k chytřejší, už myslí designu ve verzi 1 zde 297 00:17:01,000 --> 00:17:04,000 přičemž dle četl mi, že jsme součástí, takže můžete hrát spolu s 298 00:17:04,000 --> 00:17:07,000 Tyto klidnější doma upozornění, že tu máme 299 00:17:07,000 --> 00:17:10,000 souhrn souborů ve verzi 1 tohoto webu, 300 00:17:10,000 --> 00:17:13,000 a zdá se, že jsem si vzal to na sebe, aby vytknout 301 00:17:13,000 --> 00:17:17,000 některé společné kód, header.php a footer.php. 302 00:17:17,000 --> 00:17:20,000 No, pojďme se podívat na to, co je uvnitř první z nich. 303 00:17:20,000 --> 00:17:23,000 Header.php vypadá povědomě, 304 00:17:23,000 --> 00:17:26,000 ale v případě, kdy to dostat odříznout? 305 00:17:26,000 --> 00:17:30,000 Hned po lince 19, tak to je vše, co bylo běžné 306 00:17:30,000 --> 00:17:33,000 od spisů index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 a week2.php z předchozího příkladu. 308 00:17:36,000 --> 00:17:40,000 To, co jsem udělal, bylo, kopírování a střih vše, co bylo společné pro všechny tyto soubory, 309 00:17:40,000 --> 00:17:44,000 vložte jej do samostatného hlavičkového souboru, a podobně v footer.php 310 00:17:44,000 --> 00:17:48,000 jsem použít stejný princip, podle něhož pouze zajímavé linky 311 00:17:48,000 --> 00:17:52,000 v footer.php jsou tito dva, úzkým tělem a úzkým HTML. 312 00:17:52,000 --> 00:17:55,000 >> Ale co to znamená, že se v nové verzi 313 00:17:55,000 --> 00:17:59,000 ze dne index.php oznámení, kolik jednodušší to může dostat. 314 00:17:59,000 --> 00:18:02,000 Je pravda, že trochu více mystický hledáte, trochu méně intuitivní 315 00:18:02,000 --> 00:18:06,000 sledovat shora dolů, ale můj Bože, je celý tento nadbytečnosti pryč. 316 00:18:06,000 --> 00:18:10,000 Požadujeme pomocí PHP funkce doslova volala vyžadují až nahoru, 317 00:18:10,000 --> 00:18:15,000 který je velmi připomínající, vzpomenout, ze C je # include mechanismus. 318 00:18:15,000 --> 00:18:17,000 Požadujeme header.php v horní části. 319 00:18:17,000 --> 00:18:20,000 Požadujeme footer.php na dně, a jediná věc, která se liší 320 00:18:20,000 --> 00:18:25,000 nebo zvláštní o tomto souboru je obsah, který je předurčen být jedinečný pro něj. 321 00:18:25,000 --> 00:18:29,000 Pokud bych pak jít do, řekněme, lectures.php, platí stejný princip. 322 00:18:29,000 --> 00:18:32,000 Opět platí, že některé komentáře až nahoru, ale pak jsem vyžadují záhlaví, zápatí vyžadují, 323 00:18:32,000 --> 00:18:35,000 a mezi je to jen obsah, který se skutečně změnil. 324 00:18:35,000 --> 00:18:38,000 A pokud jsme se podívali do týdne 1 a 2. týden bychom vidět 325 00:18:38,000 --> 00:18:42,000 , že stejný princip byl uplatněn tam. 326 00:18:42,000 --> 00:18:44,000 No, nejsme úplně hotový tam. 327 00:18:44,000 --> 00:18:48,000 >> Pojďme se podívat na verzi 2, která má podobnou strukturu, 328 00:18:48,000 --> 00:18:50,000 nevšimnout teď jsem představil něco jiného. 329 00:18:50,000 --> 00:18:53,000 V řádku 10 jsem představil helpers.php, 330 00:18:53,000 --> 00:18:55,000 který zřejmě obsahuje pomocné funkce. 331 00:18:55,000 --> 00:18:58,000 Pomocná funkce je obecně relativně krátký funkce 332 00:18:58,000 --> 00:19:01,000 že píšete, aby vám pomohl v různých místech, 333 00:19:01,000 --> 00:19:04,000 a podíváme se, co je uvnitř helpers.php. 334 00:19:04,000 --> 00:19:07,000 V tomto případě, to vypadá, že má 2 funkce. 335 00:19:07,000 --> 00:19:10,000 Vzpomeňte si druhý den s naší krychle například 336 00:19:10,000 --> 00:19:13,000 můžete definovat své vlastní funkce v PHP, a to, co jsem udělal teď je, že jsem 337 00:19:13,000 --> 00:19:17,000 definované funkce tzv. činí zápatí a činí záhlaví, 338 00:19:17,000 --> 00:19:21,000 První z nich se parametr nazývá dat, 339 00:19:21,000 --> 00:19:25,000 jehož hodnota je prázdné pole, jak navrhuje tam, 340 00:19:25,000 --> 00:19:29,000 a můžeme skutečně psát to ještě stručně v nejnovější verzi PHP 341 00:19:29,000 --> 00:19:32,000 tím, otevřené hranatou závorku, uzavřená hranatou závorku. 342 00:19:32,000 --> 00:19:35,000 To znamená, že prázdné pole o velikosti 0, ale přesto celou škálu. 343 00:19:35,000 --> 00:19:38,000 >> Tento extrakt funkce je trochu zvláštní v tom, že 344 00:19:38,000 --> 00:19:41,000 co to dělá, je to bere jako svůj argument asociativní pole 345 00:19:41,000 --> 00:19:45,000 že má 0 nebo více klíčových párů hodnoty, a pokud máte klíč foo 346 00:19:45,000 --> 00:19:48,000 a hodnota baru extraktu funkce 347 00:19:48,000 --> 00:19:51,000 vytváří situaci, v níž se jako linky 11, 348 00:19:51,000 --> 00:19:57,000 máte lokální proměnnou pojmenovanou $ foo, jehož hodnota je bar. 349 00:19:57,000 --> 00:19:59,000 A pokud byste měli více klíčů a hodnot v datovém poli, 350 00:19:59,000 --> 00:20:03,000 Podobně by měly být extrahovány do místní rozsahu 351 00:20:03,000 --> 00:20:06,000 nebo jmenný prostor tak, aby footer.php a 352 00:20:06,000 --> 00:20:09,000 Stejný nápad sem tak, že header.php 353 00:20:09,000 --> 00:20:12,000 mají přístup k těmto proměnným. 354 00:20:12,000 --> 00:20:15,000 Ve skutečnosti, dovolte mi otevřít znovu header.php 355 00:20:15,000 --> 00:20:18,000 a upozornit na co teď to vypadá, že v této verzi. 356 00:20:18,000 --> 00:20:22,000 >> Spíše než tvrdé kódování CS50 jako titul pro každou jednotlivou stránku 357 00:20:22,000 --> 00:20:24,000 Všimněte si dynamiku, která je možné nyní. 358 00:20:24,000 --> 00:20:29,000 V souladu 5 jsem ozvěnou titulu proměnnou, 359 00:20:29,000 --> 00:20:34,000 ale nejdřív jsem kolem, že titul proměnnou funkci nazvanou htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Hloupý název pro funkci, pokud je to, ale je to opravdu dělá to, co říká. 361 00:20:38,000 --> 00:20:41,000 To zajišťuje, že všechny speciální znaky 362 00:20:41,000 --> 00:20:46,000 v řetězci, který byl přijat v roce řádně unikl HTML. 363 00:20:46,000 --> 00:20:49,000 To je vlastně způsob, jak se vyhnout něco nazývá cross site scripting útoku 364 00:20:49,000 --> 00:20:52,000 kdy někdo může zlomyslně nebo omylem 365 00:20:52,000 --> 00:20:55,000 aplikovat vlastní HTML do svých webových stránek 366 00:20:55,000 --> 00:20:59,000 vložením do některé z forem, například, 367 00:20:59,000 --> 00:21:02,000 něco, co nebylo docela očekával, zejména JavaScript kód, 368 00:21:02,000 --> 00:21:05,000 jak budeme mluvit v týdnu či dva času. 369 00:21:05,000 --> 00:21:08,000 >> To nyní header.php, je to pohled 370 00:21:08,000 --> 00:21:12,000 v tom smyslu, že umožňuje zobrazit esteticky obsah nějakého souboru dat. 371 00:21:12,000 --> 00:21:14,000 Ale konkrétně, je to šablona. 372 00:21:14,000 --> 00:21:19,000 To je jakýsi plánu teď o tom, co chceme záhlaví každé stránky vypadat, 373 00:21:19,000 --> 00:21:23,000 ale tam je nějaký dynamismus v tom, že chceme, aby titul byl dynamicky vkládá 374 00:21:23,000 --> 00:21:26,000 vychází na titulní proměnné 375 00:21:26,000 --> 00:21:30,000 , která byla extrahována, když jsme říkali, znovu, 376 00:21:30,000 --> 00:21:33,000 render záhlaví funkce. 377 00:21:33,000 --> 00:21:36,000 Teď, když jsme se podívali na omítky zápatí, že to vlastně není moc využití tohoto práva nyní 378 00:21:36,000 --> 00:21:40,000 protože v footer.php není dynamika vůbec. 379 00:21:40,000 --> 00:21:43,000 Tam by mohlo být, ale v tuto chvíli je to těžké kódované seznam 2 tagů, 380 00:21:43,000 --> 00:21:46,000 ale stejný nápad platí, tak, že ve skutečnosti naznačuje, proč 381 00:21:46,000 --> 00:21:49,000 jsme ztrácet čas s vykreslení záhlaví a zápatí vykreslení funkce? 382 00:21:49,000 --> 00:21:52,000 Nech mě jít místo nyní do verze 3, 383 00:21:52,000 --> 00:21:56,000 a ve verzi 3 v pomáhajících jsem se rozhodla zjednodušit ještě víc. 384 00:21:56,000 --> 00:21:58,000 >> Dovolte mi, abych ještě jednu činí funkci. 385 00:21:58,000 --> 00:22:02,000 Dovolte mi, abych si to vzít ještě jeden argument, tentokrát nazvaný šablona, 386 00:22:02,000 --> 00:22:05,000 která má být název šablony, 387 00:22:05,000 --> 00:22:11,000 a pak jsem se zřetězit opovážlivě. php na této proměnné hodnoty, 388 00:22:11,000 --> 00:22:17,000 a pak, pokud existuje foo.php, bar.php nebo header.php a footer.php, 389 00:22:17,000 --> 00:22:20,000 pak budu pokračovat a extrahovat data proměnných 390 00:22:20,000 --> 00:22:23,000 a pak vyžadovat, aby cestu. 391 00:22:23,000 --> 00:22:29,000 Jinými slovy, používat teď, když jsem otevřít index.php 392 00:22:29,000 --> 00:22:32,000 Všimněte si, že nemám volat vykreslení záhlaví už. 393 00:22:32,000 --> 00:22:36,000 Jen jsem zavolat činí, ale předám v citované hodnoty hlavičky 394 00:22:36,000 --> 00:22:39,000 aby bylo jasné, která šablona jsem vlastně chci načíst. 395 00:22:39,000 --> 00:22:41,000 >> Pak sem všimnete, co dělám. 396 00:22:41,000 --> 00:22:44,000 Já jsem kolem v dynamicky klíčem titulu, 397 00:22:44,000 --> 00:22:47,000 hodnota CS50, a to také, jak jsme viděli, 398 00:22:47,000 --> 00:22:51,000 by mohly být stručnější v nejnovější verzi PHP 399 00:22:51,000 --> 00:22:54,000 , kde bych mohl nahradit pole funkci hranatých závorkách, 400 00:22:54,000 --> 00:22:57,000 který navrhuji, je ještě čitelné a určitě 401 00:22:57,000 --> 00:22:59,000 trochu jednodušší psát. 402 00:22:59,000 --> 00:23:02,000 A samozřejmě, s renderu zápatí volání na dně, 403 00:23:02,000 --> 00:23:05,000 nemáme obtěžovat projde v druhém argumentu vůbec, žádné asociativní pole, 404 00:23:05,000 --> 00:23:07,000 protože tam nic dynamické uvnitř této zápatí. 405 00:23:07,000 --> 00:23:10,000 Je to jen několik zavřít tagy pro HTML. 406 00:23:10,000 --> 00:23:14,000 Dobré, bereme kroky k rychlé vyčištění věci tady, 407 00:23:14,000 --> 00:23:17,000 ale dovolte mi, abych otevřela 2 konečné příklady. 408 00:23:17,000 --> 00:23:21,000 Tenhle, číslo 4, všimněte si, že jsem udělal vědomé rozhodnutí se 409 00:23:21,000 --> 00:23:26,000 ke zlepšení na předchozím příkladu by konečně používat nějaký hierarchii mých souborů. 410 00:23:26,000 --> 00:23:29,000 >> Všimněte si, že v tomto shrnutí, v tomto si mě, jsem představil 411 00:23:29,000 --> 00:23:32,000 obsahuje adresář a šablony adresář 412 00:23:32,000 --> 00:23:35,000 jejichž obsah se bude na věci, které chci, aby zahrnovala 413 00:23:35,000 --> 00:23:38,000 a šablony, které chci k tomu, aby, resp. 414 00:23:38,000 --> 00:23:42,000 To je opravdu mě je anální a snaží se udržet věci pořádek, 415 00:23:42,000 --> 00:23:45,000 uchovávat související soubory dohromady, ale konečný výsledek 416 00:23:45,000 --> 00:23:48,000 je to, že nyní máme něco chudší nastavení, ale musíme mít na paměti nyní 417 00:23:48,000 --> 00:23:51,000 v, například, index.php 418 00:23:51,000 --> 00:23:55,000 když požadujeme soubor helpers.php 419 00:23:55,000 --> 00:24:01,000 musíme nyní vyžadují jej přes includes / helpers.php 420 00:24:01,000 --> 00:24:06,000 spíše než jen říkám, helpers.php, protože teď je to vlastně v podadresáře. 421 00:24:06,000 --> 00:24:09,000 Nyní, stejně jako stranou, uvidíte v těchto příkladů a některé další 422 00:24:09,000 --> 00:24:11,000 funkce, jako třeba, vyžadují jednou. 423 00:24:11,000 --> 00:24:15,000 Tam je vlastně funkce sám volal patří, a všichni mají mírně odlišné chování. 424 00:24:15,000 --> 00:24:18,000 Tady bych požadovat, jednou, aby se Super jasné, že chci jen ty 425 00:24:18,000 --> 00:24:20,000 pomocníci zahrnuty v mém projektu jednou. 426 00:24:20,000 --> 00:24:24,000 Ale když jsem opatrný a pokud jsem vlastně přemýšlel v mé logice správně 427 00:24:24,000 --> 00:24:27,000 to by mělo stačit i jen říci, vyžadovat až nahoru 428 00:24:27,000 --> 00:24:31,000 tak dlouho jako já, sám nechtěně požadovat, aby stejný soubor jinam. 429 00:24:31,000 --> 00:24:34,000 Ve skutečnosti, to je mírně účinnější způsob, jak dělat věci, potom pomocí 430 00:24:34,000 --> 00:24:38,000 vyžadují jednou, tak jsem si zastřihnout ji jen vyžadují. 431 00:24:38,000 --> 00:24:40,000 >> Pojďme ještě o krok dále. 432 00:24:40,000 --> 00:24:46,000 Tento poslední příklad nyní, verze 5, má ještě čistší hierarchie složek. 433 00:24:46,000 --> 00:24:50,000 Všimněte si, co jsem tady udělal za mě číst v této konečné verzi 434 00:24:50,000 --> 00:24:54,000 Je teď mám HTML adresář, který jsem měl celou dobu, 435 00:24:54,000 --> 00:24:58,000 ale uvnitř je nyní pouze 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ář nyní žije vedle v HTML adresáře, 438 00:25:05,000 --> 00:25:08,000 tak na stejné úrovni jako u sourozenců, abych tak řekl. 439 00:25:08,000 --> 00:25:10,000 Tak dělá šablony složky. 440 00:25:10,000 --> 00:25:14,000 Klíčem stánek s jídlem je zde jsem představil trochu větší strukturu, 441 00:25:14,000 --> 00:25:17,000 ale klíčovým prvkem nyní je, že pouze soubory 442 00:25:17,000 --> 00:25:21,000 že musí být web přístupný, veřejně adresovatelná 443 00:25:21,000 --> 00:25:25,000 pomocí URL na veřejném internetu, jsou v mém HTML adresáři. 444 00:25:25,000 --> 00:25:28,000 >> Mezitím, další soubory, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, které jsou pravděpodobně možná citlivější, 446 00:25:32,000 --> 00:25:35,000 Možná pomocníci skutečně má nějaké uživatelská jména a hesla nebo některé duševní 447 00:25:35,000 --> 00:25:39,000 majetek můj, funguje opravdu nechci, aby se svět vidět, i když náhodně. 448 00:25:39,000 --> 00:25:45,000 Je dobrým zvykem, aby z veřejného adresáře HTML 449 00:25:45,000 --> 00:25:48,000 všechny soubory, které nepotřebují sebe být veřejné. 450 00:25:48,000 --> 00:25:51,000 Stačí udělat v tomto případě, kdy při pohledu na, například, 451 00:25:51,000 --> 00:25:55,000 adresáři HTML je index.php soubor, 452 00:25:55,000 --> 00:25:58,000 Povšimněte si, že prostě musí být něco opatrnější při vyžadující 453 00:25:58,000 --> 00:26:00,000 nebo vyžadovat jednou tento soubor. 454 00:26:00,000 --> 00:26:03,000 Musím nejprve udělat .. jít do nadřazeného adresáře, 455 00:26:03,000 --> 00:26:06,000 pak se / includes / helpers.php 456 00:26:06,000 --> 00:26:12,000 se ponořit zpátky do dostat soubor, který mi záleží. 457 00:26:12,000 --> 00:26:16,000 >> Jakékoliv dotazy pak na MVC 458 00:26:16,000 --> 00:26:20,000 nebo tento poměrně jednoduchý inkarnace této smlouvy? 459 00:26:20,000 --> 00:26:23,000 A dovolte mi bylo jasné, že jsme se zaměřili trochu na 460 00:26:23,000 --> 00:26:27,000 V tu, názory a factoringu z těchto šablon. 461 00:26:27,000 --> 00:26:30,000 Jsme opravdu odlišit M z C jen zatím. 462 00:26:30,000 --> 00:26:33,000 Ve skutečnosti, ve skutečnosti není žádný M tu, a dokonce i náš C, 463 00:26:33,000 --> 00:26:36,000 Regulátor, není opravdu dělá tak moc, ale budete mít mnohem více 464 00:26:36,000 --> 00:26:39,000 obeznámeni s oběma těmito 2 dopisy z MVC, 465 00:26:39,000 --> 00:26:43,000 nebo spíš, získáte mnohem více seznámit s C 466 00:26:43,000 --> 00:26:49,000 v MVC pro problémové set 7, takže je tu víc, že ​​na obzoru. 467 00:26:49,000 --> 00:26:51,000 Otázky? 468 00:26:51,000 --> 00:26:53,000 Je tu vlastně nikdo tady. 469 00:26:53,000 --> 00:26:57,000 >> Dobře, pojďme se teď přejdeme k druhé a závěrečné téma pro dnešek. 470 00:26:57,000 --> 00:27:00,000 To je zavedení databáze. 471 00:27:00,000 --> 00:27:03,000 Až do tohoto bodu jsme měli několik způsobů ukládání dat. 472 00:27:03,000 --> 00:27:05,000 Použili jsme proměnných. 473 00:27:05,000 --> 00:27:08,000 Zpět v našem souboru C, I / O diskuze jsme začali používat textové soubory 474 00:27:08,000 --> 00:27:11,000 a používání souborů jako fprintf, a pak jsme dokonce začal 475 00:27:11,000 --> 00:27:14,000 mluví o csv trochu, hodnoty oddělené čárkami, 476 00:27:14,000 --> 00:27:17,000 takže všichni tito nám umožnilo mít data uložena 477 00:27:17,000 --> 00:27:19,000 jeden non-trvale nebo dlouhodobě. 478 00:27:19,000 --> 00:27:23,000 Ale ani CSVŠ jsou opravdu příznivé pro vyhledávání 479 00:27:23,000 --> 00:27:25,000 a vkládání a mazání. 480 00:27:25,000 --> 00:27:28,000 Je to opravdu jen hloupý textový soubor oddělený čárkami 481 00:27:28,000 --> 00:27:30,000 řádek po řádku podle řádcích, takže pokud chcete 482 00:27:30,000 --> 00:27:32,000 podívejte, že soubor nejlepší, co můžete udělat, je opravdu lineární hledání. 483 00:27:32,000 --> 00:27:34,000 Musíte začít v horní části souboru, přečtěte si celou věc v, 484 00:27:34,000 --> 00:27:36,000 a hledat nějakou hodnotu úroků. 485 00:27:36,000 --> 00:27:39,000 Pokud chcete vložit do něj budete muset dělat totéž, 486 00:27:39,000 --> 00:27:41,000 iterace nad ním a vkládání v určitém místě, 487 00:27:41,000 --> 00:27:45,000 a ve skutečnosti, budete muset dělat všechny hledání logiky sami. 488 00:27:45,000 --> 00:27:49,000 >> Můžete to udělat chytré porovnávání vzorků na souboru CSV, pokud sami psát kód. 489 00:27:49,000 --> 00:27:51,000 Můžete to udělat filtraci souboru CSV 490 00:27:51,000 --> 00:27:53,000 pokud sami psát kód. 491 00:27:53,000 --> 00:27:56,000 Nebylo by hezké, kdyby někdo dal ve všech úsilí 492 00:27:56,000 --> 00:27:59,000 skutečně provést vyhledávání snadné a vložení snadné 493 00:27:59,000 --> 00:28:01,000 a vymazání a aktualizace a tak dále? 494 00:28:01,000 --> 00:28:04,000 To je přesně to, co je databáze. 495 00:28:04,000 --> 00:28:07,000 SQL, strukturovaný dotazovací jazyk, je ještě jiný jazyk 496 00:28:07,000 --> 00:28:10,000 že jsme se zavádějí dnes, ale i toto je poměrně dobře, 497 00:28:10,000 --> 00:28:13,000 a to, co jsme opravdu udělat, je prostě vytrhnout z ní některé nejnápadnější 498 00:28:13,000 --> 00:28:16,000 charakteristiky tak, aby pro PSet 7, a pokud si něco na základě web, 499 00:28:16,000 --> 00:28:19,000 Váš závěrečný projekt, máte možnost vyjádřit se 500 00:28:19,000 --> 00:28:22,000 pokud jde o datové dotazů. 501 00:28:22,000 --> 00:28:25,000 Máte možnost ukládat trochu nebo hodně dat 502 00:28:25,000 --> 00:28:28,000 v mnohem strukturovanější způsobem, který bude na konci dne 503 00:28:28,000 --> 00:28:32,000 aby váš život jednodušší, protože s SQL se můžete vyjádřit 504 00:28:32,000 --> 00:28:35,000 mnohem přesněji, mnohem více metodicky tak, aby se 505 00:28:35,000 --> 00:28:40,000 dostat zpět nějaké podmnožiny dat z většího korpusu dat. 506 00:28:40,000 --> 00:28:45,000 >> Můžete si myslet databáze, v tomto případě, databáze SQL, líbí Excel 507 00:28:45,000 --> 00:28:48,000 nebo čísla, pokud je to tabulky, 508 00:28:48,000 --> 00:28:50,000 nebo možná více tabulek, a tabulkových, samozřejmě, 509 00:28:50,000 --> 00:28:53,000 má řádků a sloupců, a to proto, že 510 00:28:53,000 --> 00:28:56,000 SQL databáze jsou relační, relační ve smyslu 511 00:28:56,000 --> 00:28:59,000 že ukládání dat, pokud jde o těchto tabulkách, 512 00:28:59,000 --> 00:29:01,000 řádků a sloupců. 513 00:29:01,000 --> 00:29:03,000 Jsou výkonnější, než něco jako tabulky, 514 00:29:03,000 --> 00:29:05,000 a tabulky je určen pro použití u člověka. 515 00:29:05,000 --> 00:29:08,000 Databáze je určen pro použití programátorem 516 00:29:08,000 --> 00:29:12,000 psaní kódu proti němu, takže ztělesnění databáze 517 00:29:12,000 --> 00:29:14,000 se bude buď příkazového řádku. 518 00:29:14,000 --> 00:29:18,000 >> Jeden z nejpopulárnějších relačních databází tam je opět, MySQL, 519 00:29:18,000 --> 00:29:22,000 který je nádherně zdarma, velmi vysoce výkonné, a to je to, co 520 00:29:22,000 --> 00:29:24,000 Facebook používá velmi brzy a do jisté míry ještě dnes 521 00:29:24,000 --> 00:29:27,000 uložit spoustu svých dat, a uvidíme za chvíli 522 00:29:27,000 --> 00:29:30,000 že pomocí relativně jednoduchých příkazů 523 00:29:30,000 --> 00:29:33,000 můžeme vybrat data, vložit data, aktualizovat data, 524 00:29:33,000 --> 00:29:37,000 mazání dat a podobně, ale naštěstí je tu více uživatelsky přívětivé rozhraní 525 00:29:37,000 --> 00:29:39,000 než jen psaní na černé a bílé řádku zde. 526 00:29:39,000 --> 00:29:43,000 Budeme používat pro PSet 7 a dále bezplatný nástroj s názvem phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Název je náhodný. 528 00:29:45,000 --> 00:29:47,000 Nástroj se stane být provedena v PHP, 529 00:29:47,000 --> 00:29:49,000 ale to je v podstatě irelevantní. 530 00:29:49,000 --> 00:29:53,000 Co je užitečné o phpMyAdmin je, že je web-based utility. 531 00:29:53,000 --> 00:29:55,000 Jsme předem nainstalován do zařízení pro vás, 532 00:29:55,000 --> 00:29:58,000 a spolu s ním si můžete vytvořit tabulky v databázi, 533 00:29:58,000 --> 00:30:01,000 můžete vkládat data, vymazat data, a obecně vidí 534 00:30:01,000 --> 00:30:04,000 Vaše data v poměrně uživatelsky přátelském prostředí. 535 00:30:04,000 --> 00:30:07,000 Vaši uživatelé nebudou používat phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> To je opravdu jen správní nebo developer je nástroj 537 00:30:09,000 --> 00:30:12,000 s nimiž se vidět a hrabat kolem vašich dat a zjistit, jak strukturovat, 538 00:30:12,000 --> 00:30:15,000 stejně jako ty sám mohl použít Excel nebo čísla, 539 00:30:15,000 --> 00:30:19,000 ale to bude skvělý způsob, vizualizace, co se děje pod kapotou 540 00:30:19,000 --> 00:30:22,000 takže se můžete soustředit na zajímavý problém řešení, a ne tolik 541 00:30:22,000 --> 00:30:25,000 o tajemných příkazů. 542 00:30:25,000 --> 00:30:28,000 Pojďme se podívat na příklad dat, které by mohly být uloženy přehledně 543 00:30:28,000 --> 00:30:30,000 v relační databázi. 544 00:30:30,000 --> 00:30:32,000 Zde je jeden takový příklad. 545 00:30:32,000 --> 00:30:35,000 Nyní, bohužel, phpMyAdmin nesprávně na straně házení způsobem příliš mnoho slov 546 00:30:35,000 --> 00:30:38,000 a grafika na vás, ale pokud jste zdokonalovat v jen na 547 00:30:38,000 --> 00:30:42,000 Sloupec ID, uživatelské jméno sloupce, a hash sloupec, 548 00:30:42,000 --> 00:30:45,000 V podstatě se jedná tabulky, ale to se stává, že je fragment 549 00:30:45,000 --> 00:30:49,000 z tabulky uvnitř přístroje 550 00:30:49,000 --> 00:30:53,000 pomocí souboru, který jsme pro vás v problému sadě 7. 551 00:30:53,000 --> 00:30:57,000 >> Zejména, jsme vám soubor, který představuje 552 00:30:57,000 --> 00:31:01,000 uživatelova stůl, takže tabulka obsahující uživatelům 3 sloupcích, 553 00:31:01,000 --> 00:31:05,000 z nichž jedna je jedinečný identifikátor začínat u 1 a je zvýšen poté. 554 00:31:05,000 --> 00:31:08,000 Druhý sloupec je uživatelské jméno, a ti z vás, kdo to udělal Hacker, 555 00:31:08,000 --> 00:31:12,000 Hacker vydání pro PSet 2, může rozpoznat některé z těchto uživatelských jmen alespoň. 556 00:31:12,000 --> 00:31:16,000 Na pravé straně jsou hesla, ale nejsou doslovné hesla. 557 00:31:16,000 --> 00:31:19,000 Jsou hash této smlouvy, tak to dopadá 558 00:31:19,000 --> 00:31:22,000 že ukládání hesel v databázi je opravdu špatný nápad. 559 00:31:22,000 --> 00:31:25,000 Všichni jste asi četl na nějakém místě nějaké webové stránky 560 00:31:25,000 --> 00:31:28,000 nebo nějaké společnosti databáze budou kompromitována, a pak se budete muset 561 00:31:28,000 --> 00:31:31,000 změnit své heslo, musíte se dostat náhrady na věci 562 00:31:31,000 --> 00:31:34,000 protože některé špatné chlap vlastně vloupal do účtu jako výsledek. 563 00:31:34,000 --> 00:31:38,000 >> Ukládání hesel ve formátu prostého textu, nešifrovaná v databázi 564 00:31:38,000 --> 00:31:41,000 je zcela hloupý, a přesto je to velmi zábavné 565 00:31:41,000 --> 00:31:44,000 pak číst o některých velmi známých společností 566 00:31:44,000 --> 00:31:47,000 někdy v tisku jsou ohroženy, jejichž databáze, 567 00:31:47,000 --> 00:31:50,000 a tato část není sranda, ale skutečnost, že databáze obsahují nešifrované 568 00:31:50,000 --> 00:31:53,000 hesla je směšné, protože doslova s ​​jedním řádkem kódu 569 00:31:53,000 --> 00:31:57,000 můžete chránit proti konkrétní hrozbě, a to je to, co jsme udělali tady. 570 00:31:57,000 --> 00:32:00,000 I pro naše falešné malou CS50 financí verze 571 00:32:00,000 --> 00:32:03,000 jsme šifrování hesla jen pro jistotu, a to, že 572 00:32:03,000 --> 00:32:07,000 všech těchto hesel začít s $ 1 $ je jen konvence. 573 00:32:07,000 --> 00:32:10,000 To jen znamená, že jsou šifrována, nebo opravdu zatříděna, 574 00:32:10,000 --> 00:32:13,000 který je jako jednosměrné šifrování funkce 575 00:32:13,000 --> 00:32:17,000 kdy není možné zvrátit jeho účinky s něčím, co nazývají MD5. 576 00:32:17,000 --> 00:32:21,000 >> Skutečnost, že 50 je po to znamená, že sůl hodnota 577 00:32:21,000 --> 00:32:24,000 z 50 byl použit pro zatřiďování všech těchto hesel kromě jednoho. 578 00:32:24,000 --> 00:32:27,000 Mine, samozřejmě, jak můžete vidět tam, HA, 579 00:32:27,000 --> 00:32:30,000 bylo pomocí různých solí, takže ti z vás, kteří dostali něco zakopl up 580 00:32:30,000 --> 00:32:33,000 možná v Hacker 2, možná, že byly výsledkem našeho užilo 581 00:32:33,000 --> 00:32:36,000 jiný hash, než ostatní, protože moje heslo je vlastně stejný 582 00:32:36,000 --> 00:32:38,000 jako nějaký jiný uživatel up there. 583 00:32:38,000 --> 00:32:41,000 Ve skutečnosti, pokud jste čekali všechny ty týdny zjistit 584 00:32:41,000 --> 00:32:44,000 co ty hesla byla zde byly hesla, která jste byla napadena 585 00:32:44,000 --> 00:32:48,000 rozlousknout v Hacker vydání problémového souboru 2, tak ne příliš složité. 586 00:32:48,000 --> 00:32:50,000 Ve skutečnosti, Malan je byl stejný jako jharvard, 587 00:32:50,000 --> 00:32:54,000 ale pokud se vrátíme, vypadali jinak. 588 00:32:54,000 --> 00:32:58,000 >> Zaměřte se na jharvard v rudé, protože oni byli solené jinak. 589 00:32:58,000 --> 00:33:01,000 Algoritmus byl rozrušen v tak, že 590 00:33:01,000 --> 00:33:05,000 hash hodnota, šifrované hodnota vypadá trochu jinak 591 00:33:05,000 --> 00:33:08,000 protože vstupy jsou mírně odlišné, ale heslo pod pokličku 592 00:33:08,000 --> 00:33:10,000 byl ještě nakonec crimson. 593 00:33:10,000 --> 00:33:12,000 Nyní, kdo se zajímá o to? 594 00:33:12,000 --> 00:33:15,000 No, my poskytujeme vám vzorku uživatelů, názvy vzorku uživatelů 595 00:33:15,000 --> 00:33:18,000 a hash jejich hesel, takže máte skutečně nějaké 596 00:33:18,000 --> 00:33:23,000 Zákazníci na CS50 financí, když jste poprvé odlepit se od země s kódem. 597 00:33:23,000 --> 00:33:27,000 Budete muset provést více tabulek uvnitř MySQL, uvnitř databáze. 598 00:33:27,000 --> 00:33:30,000 Budete muset vytvořit další tabulky, efektivně, ale rozhodli jsme se vám tenhle 599 00:33:30,000 --> 00:33:33,000 jak začít, a uvidíte, že problém set specifikace 600 00:33:33,000 --> 00:33:37,000 vás provede procesem importu této tabulky 601 00:33:37,000 --> 00:33:39,000 a také vysvětlí, co některé charakteristiky jsou, 602 00:33:39,000 --> 00:33:41,000 a budete také vidět, že jsme vám s kódem 603 00:33:41,000 --> 00:33:44,000 zvládnout hašování nebo šifrování těchto hesel, 604 00:33:44,000 --> 00:33:49,000 takže se nemusíte obávat příliš o tom, co MD5 nebo podobně, je vlastně vše kolem. 605 00:33:49,000 --> 00:33:53,000 >> Takže, SQL, strukturovaný dotazovací jazyk. 606 00:33:53,000 --> 00:33:56,000 To je, prostě, jazyk se chystáme začít používat v PSet 7 607 00:33:56,000 --> 00:34:01,000 a možná za požadovat data z nějaké databáze. 608 00:34:01,000 --> 00:34:06,000 Údaje jsou opět uloženy přehledně v těchto relačních tabulek, sloupců, řádků a, 609 00:34:06,000 --> 00:34:09,000 ale používáte nějakou relativně jednoduchou syntaxi, jako smazat, 610 00:34:09,000 --> 00:34:12,000 vložit, aktualizovat a vyberte můžeme dělat přesně to. 611 00:34:12,000 --> 00:34:15,000 Můžeme odstranit z databáze, vložit, 612 00:34:15,000 --> 00:34:19,000 aktualizaci dat, stejně jako výběr, který je, načtení dat z databáze. 613 00:34:19,000 --> 00:34:21,000 Jak jsme jít asi dělá? 614 00:34:21,000 --> 00:34:23,000 Nech mě jít napřed do přístroje. 615 00:34:23,000 --> 00:34:28,000 Dovolte mi, abych vytáhnout http://localhost, 616 00:34:28,000 --> 00:34:30,000 které je opět místní pístroji. 617 00:34:30,000 --> 00:34:32,000 To je jeho výchozí přezdívka. 618 00:34:32,000 --> 00:34:35,000 A nech mě jít do / phpmyadmin. 619 00:34:35,000 --> 00:34:39,000 To se stává, že je zvláštní, že URL spotřebič je předem nakonfigurován pro pochopení 620 00:34:39,000 --> 00:34:42,000 že okamžitě vyzve mě k zadání uživatelského jména a hesla. 621 00:34:42,000 --> 00:34:46,000 >> Jako obvykle, budu psát jharvard a karmínové, 622 00:34:46,000 --> 00:34:48,000 ale uvědomit, že je to účet správce v počítači. 623 00:34:48,000 --> 00:34:53,000 Je to jen náhoda, že tam je také jharvard registrován CS50 financí. 624 00:34:53,000 --> 00:34:56,000 Jharvard, purpurový, enter mi dává uživatelské rozhraní, které jsme viděli 625 00:34:56,000 --> 00:34:59,000 pohled na okamžik před, a je to trochu ohromující na první, 626 00:34:59,000 --> 00:35:02,000 ale buďte ujištěni, že jste nikdy muset kliknout většinu odkazů v tomto nástroji. 627 00:35:02,000 --> 00:35:05,000 Budete skončit s použitím malou podmnožinu, která jsou super užitečné, 628 00:35:05,000 --> 00:35:08,000 První z nich je databáze nahoru. 629 00:35:08,000 --> 00:35:11,000 Když jdu do databází, všimněte si, že jsem vyzváni k vytvoření databáze. 630 00:35:11,000 --> 00:35:14,000 To je jako vytvoření nového souboru aplikace Excel, efektivně. 631 00:35:14,000 --> 00:35:18,000 Chystám se jít dopředu a zavolat tuto přednášku, a já jsem prostě jít ignorovat pole tam, řazení. 632 00:35:18,000 --> 00:35:20,000 To má co do činění s reprezentací dat v něm, 633 00:35:20,000 --> 00:35:24,000 a budu klepněte na tlačítko vytvořit, a nyní všimnete Pustil jsem vytvořit 634 00:35:24,000 --> 00:35:27,000 na levé straně, kde se říká, že žádné databáze 635 00:35:27,000 --> 00:35:30,000 Měl bych brzy vidět přednáškové databáze. 636 00:35:30,000 --> 00:35:32,000 >> Kdybych nyní klikněte na levé straně, přednáška databáze, 637 00:35:32,000 --> 00:35:34,000 všimnete mé karty změnit trochu. 638 00:35:34,000 --> 00:35:38,000 Mám struktura, SQL, export, import a některé další věci. 639 00:35:38,000 --> 00:35:40,000 Struktura je skoro prázdný. 640 00:35:40,000 --> 00:35:43,000 Žádné tabulky nalezen v databázi, jak to říká zde, 641 00:35:43,000 --> 00:35:47,000 takže pojďme vytvořit tabulku, a pojďme dál a vytvořit tabulku 642 00:35:47,000 --> 00:35:53,000 jako studenti, a kolik sloupců chceme? 643 00:35:53,000 --> 00:35:55,000 Pojďme si to jednoduché, a pojďme záznam pro každého studenta 644 00:35:55,000 --> 00:35:58,000 ID číslo, jméno a e-mailovou adresu. 645 00:35:58,000 --> 00:36:02,000 >> Necháme to jednoduché, jako to, že tak 3 sloupce, jděte. 646 00:36:02,000 --> 00:36:05,000 Formulář, který najdete zde, je nyní trochu chaotický a ohromující, 647 00:36:05,000 --> 00:36:08,000 ale budeme muset jít přes něj řádek po řádku, tak opravdu rychle, dejme 648 00:36:08,000 --> 00:36:14,000 první sloupec v této databázi název ID pro jedinečný identifikátor. 649 00:36:14,000 --> 00:36:17,000 Bude celé číslo. Já si skutečně ignorovat délku a hodnoty. 650 00:36:17,000 --> 00:36:21,000 Int bude 32 bitů bez ohledu na to, co napíšete tam, takže necháme prázdné. 651 00:36:21,000 --> 00:36:24,000 Výchozí hodnota, mohl jsem dělat to null, jak je definováno. 652 00:36:24,000 --> 00:36:27,000 Já odejdu sám. Pojďme se starat o výchozí hodnoty. 653 00:36:27,000 --> 00:36:29,000 Pojďme přejděte sem s těmi správnými, atributů. 654 00:36:29,000 --> 00:36:31,000 To je zajímavé. 655 00:36:31,000 --> 00:36:33,000 Pojďme dál a poněkud libovolně říci, že čísla musí být unsigned. 656 00:36:33,000 --> 00:36:35,000 Nepromarněme žádné negativní čísla. 657 00:36:35,000 --> 00:36:37,000 >> Pojďme 0 až 4 miliardy, dávat nebo brát, 658 00:36:37,000 --> 00:36:40,000 a pak si to nedotkne žádné z těchto polí zatím tam, 659 00:36:40,000 --> 00:36:43,000 ale pak mi dovolte zadejte v názvu tady dole, 660 00:36:43,000 --> 00:36:46,000 a pak další byl e-mail, tak úlovek je e-mail 661 00:36:46,000 --> 00:36:50,000 a jméno, samozřejmě není celá čísla, takže se pojďme změnit tyto na jiném poli. 662 00:36:50,000 --> 00:36:53,000 Ukazuje se, varchar, variabilní délka char, 663 00:36:53,000 --> 00:36:56,000 je jako řetězec v databázi SQL 664 00:36:56,000 --> 00:36:59,000 ale proměnná délka, a máte skutečně říct to předem 665 00:36:59,000 --> 00:37:02,000 maximální délka řetězce, takže budu poněkud libovolně 666 00:37:02,000 --> 00:37:05,000 podle typu kongresové 255 znaků. 667 00:37:05,000 --> 00:37:08,000 Mohl bych úplně říct 32. Mohl bych říct, 1000. 668 00:37:08,000 --> 00:37:11,000 Můžete druh je nutné, aby sami rozhodnout na základě Vašich demografii, co je 669 00:37:11,000 --> 00:37:14,000 The Longest jméno studenta a jít s tímto číslem nebo trochu větší, 670 00:37:14,000 --> 00:37:17,000 ale to, co je hezké o varchar je, že to nebude ztrácet 671 00:37:17,000 --> 00:37:19,000 255 bytů na každého studenta jménem. 672 00:37:19,000 --> 00:37:23,000 Pokud je to DAVID, že to nebude používat pro celou 255 bajtů, 673 00:37:23,000 --> 00:37:26,000 ale to je horní mez, takže půjdu s 255 jen konvencí, 674 00:37:26,000 --> 00:37:30,000 ale my jsme mohli diskutovat, že je to nějaký nižší hodnotu, a pro e-mailovou adresu 675 00:37:30,000 --> 00:37:34,000 Jen musí být v souladu 255, ale opět, mohli bychom mít stejný diskusi. 676 00:37:34,000 --> 00:37:36,000 Ale já budu dělat jednu věc tady na pravé straně. 677 00:37:36,000 --> 00:37:40,000 >> Co je to mocný o databázi, je, že to může udělat hodně zvedání těžkých břemen 678 00:37:40,000 --> 00:37:42,000 nebo komplexní práce pro vás. 679 00:37:42,000 --> 00:37:46,000 Zejména jsem opravdu jedno, co mé studentské ID čísla jsou. 680 00:37:46,000 --> 00:37:49,000 Je to jen chtěl být jedinečný identifikátor v databázi 681 00:37:49,000 --> 00:37:52,000 takže mám 32-bit stručné vyjádření, že student 682 00:37:52,000 --> 00:37:55,000 tak, že jsem nějaký způsob, jak jednoznačně identifikovat jejich 683 00:37:55,000 --> 00:37:58,000 aby snad 2 Davids, například, v třídě. 684 00:37:58,000 --> 00:38:01,000 Ve skutečnosti, budu zaškrtněte toto políčko, AI, auto přírůstek, 685 00:38:01,000 --> 00:38:04,000 tak, aby databáze, MySQL, vyřeší 686 00:38:04,000 --> 00:38:08,000 Co každý nově vložený studenta ID bude. 687 00:38:08,000 --> 00:38:11,000 Nemám ani se starat o to v mém kódu, 688 00:38:11,000 --> 00:38:13,000 a já také chystá vybrat něco podle indexu nabídce. 689 00:38:13,000 --> 00:38:17,000 Index spadnout tady je primární, unikátní, 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ádat, co možná pár z těchto věcí jsou, 692 00:38:21,000 --> 00:38:24,000 ale to dopadá v relačních databázích 693 00:38:24,000 --> 00:38:28,000 jste programátor nebo správce databáze dostat preventivně 694 00:38:28,000 --> 00:38:32,000 dát pokyny k databázi, do jaké oblasti 695 00:38:32,000 --> 00:38:34,000 v tabulce jsou trochu zvláštní. 696 00:38:34,000 --> 00:38:37,000 >> Například, v tomto případě jsem chtěl říct, že ID 697 00:38:37,000 --> 00:38:42,000 bude primární index, jinak známá jako primární klíč. 698 00:38:42,000 --> 00:38:44,000 Co to znamená podle definice je, že ID napříště 699 00:38:44,000 --> 00:38:48,000 bude jednoznačně identifikovat studenty v této tabulce. 700 00:38:48,000 --> 00:38:53,000 Žádný student bude mít stejné ID, protože jsem uložení tohoto omezení nebo tento index. 701 00:38:53,000 --> 00:38:55,000 Navíc, co to bude dělat, pro mě je to neřekne 702 00:38:55,000 --> 00:38:58,000 MySQL že ID je zvláštní. 703 00:38:58,000 --> 00:39:03,000 Starám se především o ID, tak jděte do toho a udělat vaše fantazie datové struktury kouzlo, 704 00:39:03,000 --> 00:39:05,000 vybudovat nějaký strom. 705 00:39:05,000 --> 00:39:08,000 Typicky je to něco, co nazývá B-strom, který jsme neměli dívat na týdny, 706 00:39:08,000 --> 00:39:11,000 ale je to další takovou datovou strukturu podobnou v duchu na binární stromy 707 00:39:11,000 --> 00:39:15,000 a snaží se, aby se podíval, ale to řekne 708 00:39:15,000 --> 00:39:18,000 do databáze toto pole je tak důležité, že jsem asi 709 00:39:18,000 --> 00:39:22,000 Chci být schopen vyhledávat na to, jděte do toho a vybudovat nějakou chuť 710 00:39:22,000 --> 00:39:25,000 struktura dat v paměti k urychlení vyhledávání tak, aby v ideálním případě 711 00:39:25,000 --> 00:39:28,000 jsou konstantní čas nebo alespoň co nejblíže k že jak je to možné 712 00:39:28,000 --> 00:39:32,000 tak, že není přešla do lineární vyhledávání, které se nebude 713 00:39:32,000 --> 00:39:34,000 Nejvíce vysoce výkonných přístup. 714 00:39:34,000 --> 00:39:37,000 Naopak, může e-mailová adresa byla primární klíč. 715 00:39:37,000 --> 00:39:41,000 >> V teorii, každý je e-mailová adresa je jedinečná, pokud sdílíte nějaký účet, 716 00:39:41,000 --> 00:39:45,000 ale to obecně není dobré použít něco jako řetězec 717 00:39:45,000 --> 00:39:49,000 jako primární klíč, protože pokud je jejím smyslem života je jednoznačně identifikovat 718 00:39:49,000 --> 00:39:55,000 řádků v tabulce není důvod používat 255 bajtů maximálně 719 00:39:55,000 --> 00:39:58,000 jednoznačně identifikovat někoho, jestli se můžete dostat pryč s pouze 4 bajty 720 00:39:58,000 --> 00:40:00,000 nebo 32-bit int. 721 00:40:00,000 --> 00:40:03,000 Obecně platí, že by měl být primární klíč krátké a stručné 722 00:40:03,000 --> 00:40:07,000 a ideálně něco jako integer nebo velkou int, který se stane být 64 bitů. 723 00:40:07,000 --> 00:40:11,000 Ale e-mailová adresa by měla být jedinečná, a jeden z rysů databáze příliš 724 00:40:11,000 --> 00:40:14,000 je vynutit jedinečnost pro mě. 725 00:40:14,000 --> 00:40:18,000 Volbou jedinečné tady vedle e-mailu, i když e-mail se 726 00:40:18,000 --> 00:40:21,000 posunete mimo obrazovku, říkám do databáze 727 00:40:21,000 --> 00:40:23,000 mi nevěříte. 728 00:40:23,000 --> 00:40:26,000 Nenech mě vložit do databáze 729 00:40:26,000 --> 00:40:29,000 stejná e-mailová adresa dvakrát, i když jsem idiot a nejsem 730 00:40:29,000 --> 00:40:32,000 velmi dobrý s mými IFS a jinde IFS a skutečné PHP kódu 731 00:40:32,000 --> 00:40:37,000 a já omylem nechal uživatel zaregistrovat existující e-mailovou adresu 732 00:40:37,000 --> 00:40:40,000 Databáze je ještě další úroveň obrany za správnost 733 00:40:40,000 --> 00:40:44,000 zajistila, aby duplicitní e-mailová adresa nebude skončit v tabulce. 734 00:40:44,000 --> 00:40:49,000 >> Nyní, naopak, v názvu pravděpodobně nebudete chtít, aby se toto jedinečné 735 00:40:49,000 --> 00:40:51,000 protože pak by mohlo být nikdy 2 Davids nebo 2 Mike Smiths, například, 736 00:40:51,000 --> 00:40:55,000 v databázi, tak, že jeden prostě budeme nechat na pokoji. 737 00:40:55,000 --> 00:40:58,000 Chystám se jít dopředu a klepněte na tlačítko Uložit v pravé dolní části, 738 00:40:58,000 --> 00:41:02,000 a všechno vypadá dobře, ale všimněte si tady 739 00:41:02,000 --> 00:41:04,000 To je část, která prozatím nebudeme trávit příliš mnoho času na 740 00:41:04,000 --> 00:41:07,000 protože syntaxe je trochu složitější, a nemáme k vytvoření tabulek 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 Syntaxe pro které je tady, že jsem zdůraznil. 743 00:41:13,000 --> 00:41:18,000 Co phpMyAdmin opravdu je to vytváří webové GUI pro vás 744 00:41:18,000 --> 00:41:23,000 se kterým můžete ušetřit čas a není nutné ručně zadávat z 745 00:41:23,000 --> 00:41:26,000 poměrně dlouhé SQL dotazu takhle. 746 00:41:26,000 --> 00:41:29,000 >> Jinými slovy, pokud byste chtěli vytvořit ručně tuto tabulku, 747 00:41:29,000 --> 00:41:32,000 buď v té černé a bílé řádku, nebo dokonce v phpMyAdmin 748 00:41:32,000 --> 00:41:35,000 pomocí tohoto jiného kartu, tato karta SQL, kde můžete zadat ve všech SQL dotazů 749 00:41:35,000 --> 00:41:38,000 Chcete, upřímně řečeno, to by mi trvalo minutu 750 00:41:38,000 --> 00:41:41,000 skutečně vzpomenout na celou syntaxi, a dokonce i pak bych asi mít 751 00:41:41,000 --> 00:41:45,000 učinil některé překlepy, takže tento nástroj je užitečný pro věci, jako že, a to je také poučný. 752 00:41:45,000 --> 00:41:49,000 Můžete začít odvozovat to, co je syntaxe 753 00:41:49,000 --> 00:41:52,000 jen tím, že na pěknou barvu kódování, které phpMyAdmin je přidání 754 00:41:52,000 --> 00:41:54,000 pro naše vizuální pohodlí. 755 00:41:54,000 --> 00:41:56,000 Ale teď jdeme na to místo. 756 00:41:56,000 --> 00:42:00,000 Nechte mě jít na kartě Vložení na vrcholu, a nech mě jít dopředu a vložte například 757 00:42:00,000 --> 00:42:04,000 ID řekněme, vlastně mi to jedno. 758 00:42:04,000 --> 00:42:07,000 Bude to auto přírůstek. Chystám se nechat databáze se s tím vypořádat. 759 00:42:07,000 --> 00:42:11,000 Ale já se David, a můj e-mail by měl být malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Pojďme dál sem a dát do Mikem Smithem za jinou. 761 00:42:16,000 --> 00:42:18,000 Dám sám sobě příjmení stejně, 762 00:42:18,000 --> 00:42:22,000 a budeme se ho být smith@example.com, 763 00:42:22,000 --> 00:42:24,000 a pak, kde mám jít dál? 764 00:42:24,000 --> 00:42:27,000 No, vypadá to, že go je tlačítko kliknout, a voila. 765 00:42:27,000 --> 00:42:30,000 Všimněte si, v nejvyšších 2 vložených řádků. 766 00:42:30,000 --> 00:42:32,000 To je skutečná SQL dotazu. 767 00:42:32,000 --> 00:42:36,000 To je phpMyAdmin nástroj popraven pro mě, 768 00:42:36,000 --> 00:42:40,000 ale konečný výsledek, upozornění, když jsem teď jděte na kartu procházení, 769 00:42:40,000 --> 00:42:43,000 je vidět 2 řádky v této tabulce, velmi připomínající esteticky 770 00:42:43,000 --> 00:42:46,000 v tabulce jsme viděli dříve pro naše uživatele z PSet 7, 771 00:42:46,000 --> 00:42:51,000 z nichž jeden je David Malan, z nichž jeden je nyní Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Ale jen aby bylo jasno, nemám potřebu používat phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 a opravdu, budete brzy psát kód pro PSet 7 774 00:42:56,000 --> 00:43:01,000 , který automatizuje proces přidávání řádků, mazání řádků, aktualizace řádků a podobně, 775 00:43:01,000 --> 00:43:04,000 tak ať mi místo toho jít do SQL kartu sem 776 00:43:04,000 --> 00:43:14,000 a zadejte SELECT * FROM studentů, kde 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Jinými slovy, asi máte nyní 779 00:43:21,000 --> 00:43:26,000 některé HTML formulář, a uživatel zadá svou e-mailovou adresu, kromě jiných oblastech, 780 00:43:26,000 --> 00:43:29,000 a cílem je nyní v PHP na zadní konec kódu 781 00:43:29,000 --> 00:43:31,000 skutečně vyhledat, že uživatel je další podrobnosti. 782 00:43:31,000 --> 00:43:34,000 Jaké je vaše celé jméno? Jaká je vaše ID číslo? 783 00:43:34,000 --> 00:43:37,000 Dalo by se napsat SQL dotaz, jako je tento, select * from studentů 784 00:43:37,000 --> 00:43:40,000 kde e = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 A když jsem potom klepněte na příkaz jít, si, že jsem měl, a skutečně jsem se, vrať se zpátky jen jeden řádek. 786 00:43:46,000 --> 00:43:50,000 Mike je vynechán z tohoto výsledku, jako sběr řádků 787 00:43:50,000 --> 00:43:53,000 je obecně nazýván, protože nemá stejnou e-mailovou adresu jako já. 788 00:43:53,000 --> 00:43:57,000 >> Nyní, opět, zde PSet 7 budete používat phpMyAdmin jako správní nástroj 789 00:43:57,000 --> 00:44:00,000 a pedagogický nástroj naučit svou cestu 790 00:44:00,000 --> 00:44:03,000 po celém světě SQL, ale na konci dne 791 00:44:03,000 --> 00:44:08,000 budete se psaní těchto dotazů uvnitř aktuálního kódu PHP, 792 00:44:08,000 --> 00:44:11,000 a tak zůstaňte naladěni na návodu Zamyla je zejména 793 00:44:11,000 --> 00:44:14,000 kde budete mít prohlídku distribuční kód pro tohoto problému sadu 794 00:44:14,000 --> 00:44:18,000 kde jsme, stejně vám nejen estetika pro přihlašovací stránku 795 00:44:18,000 --> 00:44:21,000 a pěkné sexy logo, které říká, že CS50 Finance, ale také jsme vám dal 796 00:44:21,000 --> 00:44:24,000 banda funkcí, které učiní váš život o něco jednodušší. 797 00:44:24,000 --> 00:44:27,000 Jsme se také píše část PSet pro vás, 798 00:44:27,000 --> 00:44:32,000 login část toho zejména, aby vám pocit reprezentativního designu 799 00:44:32,000 --> 00:44:36,000 skutečně používá řadič, například, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php a podobně, a pak budete vidět Pset také šablony adresář 801 00:44:40,000 --> 00:44:43,000 který má všechny vaše názory, všechny 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 uživatelé navštíví řadič přes adresu URL v prohlížeči. 804 00:44:49,000 --> 00:44:53,000 To regulátor obsahuje PHP kód, který jste napsali, a uvnitř PHP kódu 805 00:44:53,000 --> 00:44:57,000 může být několik řádků z SQL vnořené do dvojitých uvozovkách 806 00:44:57,000 --> 00:45:00,000 a přešel na funkci jsme psali názvem dotaz 807 00:45:00,000 --> 00:45:03,000 , která vám pomůže mluvit do databáze bez použití něco jako 808 00:45:03,000 --> 00:45:05,000 Nástroj pro správu, jako phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Budete mít možnost psát SQL příkazy v PHP kódu 810 00:45:08,000 --> 00:45:11,000 a získat zpět PHP pole výsledkové sady, 811 00:45:11,000 --> 00:45:14,000 z řádků, které skutečně odpovídají tento dotaz. 812 00:45:14,000 --> 00:45:18,000 A podobně si budete moci udělat vložky nebo odstraní 813 00:45:18,000 --> 00:45:22,000 nebo aktualizace nebo podobné, syntaxe, pro které je velmi podobná, 814 00:45:22,000 --> 00:45:25,000 a uvidíte, z některých internetových odkazů, z distribučního kódu 815 00:45:25,000 --> 00:45:29,000 a od PSet balení se přesně tak, jak jít o tom, že. 816 00:45:29,000 --> 00:45:33,000 Uvědomte si, nakonec jsme opravdu jen poškrábání povrchu SQL 817 00:45:33,000 --> 00:45:36,000 a MySQL, ale moc toho opravdu je, že vás osvobodí 818 00:45:36,000 --> 00:45:40,000 zaměřit se na problémy, které chcete řešit se případy užití chcete implementovat 819 00:45:40,000 --> 00:45:43,000 aniž by se museli tak moc, alespoň na začátku, 820 00:45:43,000 --> 00:45:47,000 o tom, kde a jak ukládat a vyhledávat databáze, 821 00:45:47,000 --> 00:45:50,000 a to je doslova, kde Facebook sám dostal jeho začátek 822 00:45:50,000 --> 00:45:53,000 používat MySQL a pak pomocí více MySQL servery a pak další MySQL servery 823 00:45:53,000 --> 00:45:57,000 před dlouho, až se pak musel opravdu začít usilovně přemýšlel o tom, jak 824 00:45:57,000 --> 00:46:00,000 ukládání dat, jak uložit věci ještě efektivněji, 825 00:46:00,000 --> 00:46:04,000 takže i když budeme brát za samozřejmost, že indexy a jedinečné omezení 826 00:46:04,000 --> 00:46:08,000 a tak dále prostě fungovat tam velmi zajímavý rozhovor 827 00:46:08,000 --> 00:46:12,000 že to může všechno nakonec vést k, takže si uvědomit, že my jsme jen k poškrábání povrchu 828 00:46:12,000 --> 00:46:17,000 z toho, co by se případně mohly pro vás nebo vaše projekty staly docela dost velkých dat. 829 00:46:17,000 --> 00:46:22,000 >> Díky, že řekl, pojďme nekončí, a my uvidíme příští týden. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]