1 00:00:00,000 --> 00:00:03,920 >> [Přehrávání hudby] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. Malan: Dobře. 4 00:00:13,800 --> 00:00:15,640 To je CS50. 5 00:00:15,640 --> 00:00:17,620 To je začátek týdne osm. 6 00:00:17,620 --> 00:00:22,440 A vy si možná vzpomenou, že jsme skončili naposledy při pohledu na nový jazyk 7 00:00:22,440 --> 00:00:23,240 úplně. 8 00:00:23,240 --> 00:00:25,905 Ve skutečnosti, jeden to je docela lehký a to není ani 9 00:00:25,905 --> 00:00:26,940 programovací jazyk. 10 00:00:26,940 --> 00:00:31,100 Je to značkovací jazyk, který nám umožňuje vlastně struktura a webových stránek. 11 00:00:31,100 --> 00:00:33,350 A když se vám něco jiného ve spojení s tohle-- 12 00:00:33,350 --> 00:00:35,670 nebo brzy bude, je-li ještě nemáte. 13 00:00:35,670 --> 00:00:38,530 Budeme používat kaskádové Styly, nebo CSS, které 14 00:00:38,530 --> 00:00:40,971 je jiný typ jazyka s vlastnostmi a hodnotami 15 00:00:40,971 --> 00:00:43,220 , co se děje, aby nám to věci, jako je změna barvy 16 00:00:43,220 --> 00:00:46,010 a změnit pozici a tyto druhy vylepšení. 17 00:00:46,010 --> 00:00:49,940 Ale dnes, a dál, začneme zaměřit se na silnější jazyků, 18 00:00:49,940 --> 00:00:52,810 skutečné programovací jazyky jako PHP. 19 00:00:52,810 --> 00:00:54,880 >> Takže PHP již nějakou dobu. 20 00:00:54,880 --> 00:00:56,810 A jak uvidíte, je byl určen především 21 00:00:56,810 --> 00:01:00,280 brzy na skutečné použití ve vývoji webových aplikací 22 00:01:00,280 --> 00:01:02,360 a vlastně generování webových stránek. 23 00:01:02,360 --> 00:01:04,849 Co tak druhy funkce dělá jazyk 24 00:01:04,849 --> 00:01:10,040 je třeba, aby web stránky dynamicky s tím? 25 00:01:10,040 --> 00:01:14,760 >> Jinými slovy, chcete-li vytvořit Obsah dynamically-- jako Facebook je 26 00:01:14,760 --> 00:01:19,480 Novinek, které se neustále mění, nebo rychlé zprávy, které se objevují čas od času 27 00:01:19,480 --> 00:01:21,872 na time-- jako to, co je klíčovou součástí funkčnosti 28 00:01:21,872 --> 00:01:24,580 budete potřebovat v programovacím jazyce které by vás nechal dynamicky 29 00:01:24,580 --> 00:01:28,070 vytisknout nové informace na obrazovce? 30 00:01:28,070 --> 00:01:28,685 >> STUDENT: Code. 31 00:01:28,685 --> 00:01:29,560 DAVID J. Malan: Code. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Budeme to brát. 34 00:01:31,995 --> 00:01:35,310 Trochu přesnější. 35 00:01:35,310 --> 00:01:37,639 Myslím, že bychom mohli dělat to s C, upřímně řečeno. 36 00:01:37,639 --> 00:01:38,930 Jednalo by se o bolest v krku. 37 00:01:38,930 --> 00:01:41,045 Ale- je tento závazek? 38 00:01:41,045 --> 00:01:41,895 >> STUDENT: Jo. 39 00:01:41,895 --> 00:01:42,677 Proměnné, možná? 40 00:01:42,677 --> 00:01:43,760 DAVID J. Malan: proměnné. 41 00:01:43,760 --> 00:01:44,160 OK, jistě. 42 00:01:44,160 --> 00:01:45,740 Proměnné mohou nám jistě pomůže ven. 43 00:01:45,740 --> 00:01:47,020 A dokonce i něco jednodušší. 44 00:01:47,020 --> 00:01:50,640 Použili jsme ji v první Program prvního dne 45 00:01:50,640 --> 00:01:55,686 když jsme ve skutečnosti řekl: "hello world". 46 00:01:55,686 --> 00:01:56,570 >> STUDENT: Print. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. Malan: Tisk, ne? 48 00:01:57,778 --> 00:02:01,050 Tisk, nebo printf v Svět C. Takže celou tu dobu, 49 00:02:01,050 --> 00:02:03,362 jsme měli na našem webu Likvidace language-- C, 50 00:02:03,362 --> 00:02:05,570 v particular-- a dokonce Scratch když na to přijde, že 51 00:02:05,570 --> 00:02:07,400 může vytvářet řetězce textu. 52 00:02:07,400 --> 00:02:11,090 >> No, pokud je HTML, jak jsme viděli minulý týden, je jen celá parta řetězce textu 53 00:02:11,090 --> 00:02:14,692 i když s otevřenými závorkami a uzavřen držáky a nějaký rým 54 00:02:14,692 --> 00:02:16,650 a důvod, proč za ním, Tak jsme mohli opravdu 55 00:02:16,650 --> 00:02:20,440 začít vytvářet webové stránky a to buď ručně zadáním je v gedit 56 00:02:20,440 --> 00:02:23,870 nebo v aplikaci Microsoft Word, pro které matter-- nám stačí textový editor. 57 00:02:23,870 --> 00:02:26,830 >> Nebo bychom mohli psát kód, do svého návrhu 58 00:02:26,830 --> 00:02:30,435 dříve, že by nás nechal dynamicky generovat HTML, 59 00:02:30,435 --> 00:02:32,560 a to je to, co budeme začít dělat s PHP 60 00:02:32,560 --> 00:02:34,900 a nakonec i při jazyk volal JavaScript, 61 00:02:34,900 --> 00:02:37,910 je použít jeden jazyk, pro generování druhého. 62 00:02:37,910 --> 00:02:40,720 A skutečně, to je to, co Facebook a mnoho, mnoho dalších míst 63 00:02:40,720 --> 00:02:44,530 udělat, aby skutečně dynamicky zobrazí nové informace k vám. 64 00:02:44,530 --> 00:02:47,117 >> Takže začněme s tohle-- A mystický hledáte line, ale jeden 65 00:02:47,117 --> 00:02:48,450 to je vlastně docela silný. 66 00:02:48,450 --> 00:02:51,210 Dosud jsme používali C, který je sestaven jazyk. 67 00:02:51,210 --> 00:02:55,050 A právě rychlé recap-- sestaven jazyk má co vlastnost? 68 00:02:55,050 --> 00:02:59,050 Budete zřejmě muset kompilovat to, ale co to znamená? 69 00:02:59,050 --> 00:03:00,505 Jo? 70 00:03:00,505 --> 00:03:02,940 >> Student: To musí být sestaveny do strojového kódu. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. Malan: OK. 72 00:03:03,060 --> 00:03:04,530 Je třeba sestaven do strojového kódu. 73 00:03:04,530 --> 00:03:07,340 Takže budete mít svůj zdrojový kód, což je trochu anglicky podobně. 74 00:03:07,340 --> 00:03:09,270 Převést, že pro něco nižší úroveň, 75 00:03:09,270 --> 00:03:11,590 který se nakonec nazývá Objekt code-- 0 a 1 je. 76 00:03:11,590 --> 00:03:14,830 A to ty 0 a 1 je, že CPU, jako ty vyrobené společností Intel, 77 00:03:14,830 --> 00:03:16,110 skutečně pochopit. 78 00:03:16,110 --> 00:03:19,690 >> Nyní, PHP a Python a Ruby a JavaScript a kytice ostatní 79 00:03:19,690 --> 00:03:23,190 jazyky nejsou sestaveny jazyky, ale interpretovat jazyky, 80 00:03:23,190 --> 00:03:26,630 což znamená, že stačí je zadat a pak nemáte proměnit je v 0 a 1 je. 81 00:03:26,630 --> 00:03:30,790 Místo toho jen poskytovat následně jako vstup do programu někoho jiného, 82 00:03:30,790 --> 00:03:32,080 volal tlumočníka. 83 00:03:32,080 --> 00:03:34,460 A tato osoba je Program byl navržen tak, 84 00:03:34,460 --> 00:03:38,280 rozumět tomu, co každý a každý symbol v Pythonu nebo PHP 85 00:03:38,280 --> 00:03:42,650 nebo Ruby nebo libovolný počet další jazyky znamená. 86 00:03:42,650 --> 00:03:44,760 >> A tak vše, co potřebujete, je něco takového. 87 00:03:44,760 --> 00:03:46,350 Takže ve skutečnosti, budu přejít na spotřebiče 88 00:03:46,350 --> 00:03:48,100 tady, jen do některého staré okno, a my jsme 89 00:03:48,100 --> 00:03:52,580 jít dopředu a otevřené soubor s názvem, řekněme, ahoj. 90 00:03:52,580 --> 00:03:55,780 Nyní již dříve, mohl jsem zachránil to dokonce s příponou souboru, 91 00:03:55,780 --> 00:03:57,910 ale budu dělat ještě něco jednodušší zde. 92 00:03:57,910 --> 00:04:02,450 Chystám se jít dopředu a začít Tento soubor s touto mystickém syntaxi. 93 00:04:02,450 --> 00:04:06,310 Tak "user, bin, env, pro životní prostředí, php. " 94 00:04:06,310 --> 00:04:10,670 >> To je prostě jeden řádek kódu, který je řekne svůj operační systém, 95 00:04:10,670 --> 00:04:13,730 jít najít ve vaší místní prostředí, ať je to cokoliv, 96 00:04:13,730 --> 00:04:18,149 všude tam, kde PHP je-- na interpreter-- a jděte do toho a používat tento interpret 97 00:04:18,149 --> 00:04:20,589 interpretovat následující kód. 98 00:04:20,589 --> 00:04:22,760 Nyní, to je druh ošklivý rys PHP. 99 00:04:22,760 --> 00:04:24,980 Ale v tomto jazyce, jakýkoli když budete psát PHP kód, 100 00:04:24,980 --> 00:04:29,200 musíte mít jeden z těchto ošklivé PHP tagy vymezení začátek 101 00:04:29,200 --> 00:04:32,220 vašeho code-- 00:04:37,430 >> Ale nižší než tady, teď mohu udělat něco poměrně jednoduchá, podobně jako printf ahoj čárka 103 00:04:37,430 --> 00:04:40,922 Svět zpětné lomítko n close citace, v blízkosti závorka. 104 00:04:40,922 --> 00:04:42,630 A pak už jen pro dobro opatření, jdu 105 00:04:42,630 --> 00:04:45,380 pokračovat v blízkosti můj php tag sem 106 00:04:45,380 --> 00:04:47,390 tak, že všechno vypadá pěkně pěkně vytisknout. 107 00:04:47,390 --> 00:04:50,780 >> A jakmile jsem klepněte na tlačítko Uložit, gedit je dost opravdu chytrý 108 00:04:50,780 --> 00:04:54,620 podívat se na tomto prvním řádku a si uvědomit, oh, píšete PHP kód. 109 00:04:54,620 --> 00:04:56,710 Dovolte mi zvýraznění syntaxe to s barvami 110 00:04:56,710 --> 00:04:58,690 tady, takže to stojí o trochu více. 111 00:04:58,690 --> 00:05:01,300 Ale teď jdu dolů do okna mého terminálu. 112 00:05:01,300 --> 00:05:02,340 Budu přiblížit. 113 00:05:02,340 --> 00:05:06,860 >> Tento program byl nazván "Dobrý den," takže budu dělat tečka lomítko Dobrý den, 114 00:05:06,860 --> 00:05:07,990 ale popíral povolení. 115 00:05:07,990 --> 00:05:08,490 A bash. 116 00:05:08,490 --> 00:05:10,610 Vlastně jsme slyšeli, že Před věc pár týdny 117 00:05:10,610 --> 00:05:13,140 v souvislosti s Shellshock, jeden z těch chyb. 118 00:05:13,140 --> 00:05:16,240 >> Ale Permission denied jsme viděli dříve, možná v jiném kontextu. 119 00:05:16,240 --> 00:05:19,060 Má někdo připomenout, jak můžete opravit něco 120 00:05:19,060 --> 00:05:22,100 kde je přístup odepřen takhle? 121 00:05:22,100 --> 00:05:23,490 Co je to příkaz, alespoň? 122 00:05:23,490 --> 00:05:24,159 >> STUDENT: Chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. Malan: Jo, chmod, pro změnu režimu souboru. 124 00:05:26,700 --> 00:05:30,171 A budete mít o to více používá pro Tato další týden s následným problémem 125 00:05:30,171 --> 00:05:30,670 nastavení. 126 00:05:30,670 --> 00:05:33,211 Ale teď, budu měnit režim nesmí být čitelný, 127 00:05:33,211 --> 00:05:36,650 ale dát každému executeability oprávnění, schopnost 128 00:05:36,650 --> 00:05:37,710 spustit tento soubor. 129 00:05:37,710 --> 00:05:40,360 A já přiřadit že do souboru Dobrý den. 130 00:05:40,360 --> 00:05:45,150 >> Pokud teď mám dot lomítko ahoj ENTER, vidět, ve skutečnosti, můj program, hello world. 131 00:05:45,150 --> 00:05:48,760 A co krok udělal já jasně vynechat úplně? 132 00:05:48,760 --> 00:05:49,520 Kompilace. 133 00:05:49,520 --> 00:05:51,680 Tak jsem běžel tento program jednoduše. 134 00:05:51,680 --> 00:05:55,690 >> A ukázalo se, můžete to udělat s hodně syntaxe připomínající C 135 00:05:55,690 --> 00:06:03,400 Nech mě jít v dnešní kódu, které jsem dal do mého VHOST adresáře 136 00:06:03,400 --> 00:06:05,250 tu, skutečných příčin vrátíme se. 137 00:06:05,250 --> 00:06:09,350 A já jdu do, řekněme, podmínky 1. 138 00:06:09,350 --> 00:06:12,450 >> A uvidíte tu, první a především, celá parta komentářů. 139 00:06:12,450 --> 00:06:15,240 Ale to je ve skutečnosti re-vytvoření v PHP 140 00:06:15,240 --> 00:06:18,960 programu jsme v týdnu jeden s názvem podmínky 1.c 141 00:06:18,960 --> 00:06:20,690 kde účel Životnost tohoto programu 142 00:06:20,690 --> 00:06:22,950 je zřejmě se zeptat uživatel na celé číslo 143 00:06:22,950 --> 00:06:25,270 a pak udělat nějaké nadýchané Analýza na to jejímž prostřednictvím 144 00:06:25,270 --> 00:06:29,510 říkáte, jestli je to pozitivní nebo záporný nebo roven nule. 145 00:06:29,510 --> 00:06:34,220 A uvedu to do jen proto, s výjimkou snad jednoho malého detailu, 146 00:06:34,220 --> 00:06:37,150 je to k nerozeznání tak daleko od C 147 00:06:37,150 --> 00:06:39,930 >> Co je ta charakteristika tady to možná vyskočí 148 00:06:39,930 --> 00:06:41,410 na vás, jak trochu jinak? 149 00:06:41,410 --> 00:06:42,160 Možná, že dvě věci. 150 00:06:42,160 --> 00:06:42,660 Jo? 151 00:06:42,660 --> 00:06:44,070 >> STUDENT: Dollar sign n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. Malan: Jo. 153 00:06:44,944 --> 00:06:46,210 Takže znak dolaru n je přítomen. 154 00:06:46,210 --> 00:06:48,120 A dolaru, as uvidíme, jdou 155 00:06:48,120 --> 00:06:51,460 být oprava na začátek každé proměnné v PHP. 156 00:06:51,460 --> 00:06:54,250 Je to dobré i bad-- dobré že je to něco, co je zřejmé, 157 00:06:54,250 --> 00:06:56,797 proměnná, špatný v tom, že je ještě další věc, psát. 158 00:06:56,797 --> 00:06:58,630 A je tu ještě jedna další co máme ne tak docela 159 00:06:58,630 --> 00:07:00,876 vidět, alespoň tímto hláskování. jo? 160 00:07:00,876 --> 00:07:01,630 >> STUDENT: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. Malan: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline jsme neviděli, sama o sobě, v C, i když existuje něco 163 00:07:06,550 --> 00:07:09,530 podobný, ale jsme použili getString, a to je jeho protějšek. 164 00:07:09,530 --> 00:07:12,950 Takže když jdu do toho adresář, který se stane být, 165 00:07:12,950 --> 00:07:18,030 jak já ti to vysvětlím za chvíli v mém VHOST adresáře a můj zdroj adresář, 166 00:07:18,030 --> 00:07:22,730 a já se do toho pusťte a udělat dot lomítko conditions-- whoops-- tečka lomítko 167 00:07:22,730 --> 00:07:26,710 podmínky 1, uvidíte opět, stejný issue-- přístup odepřen. 168 00:07:26,710 --> 00:07:33,610 >> Takže mi dovolte přiblížit a udělat chmod plus x podmínek, tečka lomítko podmínek. 169 00:07:33,610 --> 00:07:35,222 Rád bych celé číslo, prosím, 50. 170 00:07:35,222 --> 00:07:36,930 A tak bychom mohli hrát to Hra po celý den. 171 00:07:36,930 --> 00:07:39,140 Bude se chovat přesně jako tomu bylo v prvním týdnu. 172 00:07:39,140 --> 00:07:42,860 >> OK, takže příliš neliší, s výjimkou nejen, že mírné trochu syntaxe, 173 00:07:42,860 --> 00:07:45,490 ale nahoře, jsem znovu měl tento řádek, který 174 00:07:45,490 --> 00:07:49,760 mi umožnilo vytvořit něco, co vypadá jako C program s názvem Dobrý den, 175 00:07:49,760 --> 00:07:51,150 tzv podmínky 1. 176 00:07:51,150 --> 00:07:54,520 Ale to není 0 je a ty, Já provádění přímo. 177 00:07:54,520 --> 00:07:57,620 Je to místo běží to interpret, jehož jméno 178 00:07:57,620 --> 00:07:59,440 se stane, že je totožný s jazykem. 179 00:07:59,440 --> 00:08:04,970 Tento program se nazývá PHP, a můj kód pod hranicí jeden je předán do něj. 180 00:08:04,970 --> 00:08:07,740 >> Můžeme to udělat další poměrně jednoduchý Příkladem připomínající něco 181 00:08:07,740 --> 00:08:09,240 jsme před několika týdny. 182 00:08:09,240 --> 00:08:12,020 Znovu, toto je druh libovolný kus kódu 183 00:08:12,020 --> 00:08:14,000 to zřejmě dělá co když to běží? 184 00:08:14,000 --> 00:08:15,625 Co se to bude tisknout, pravděpodobně? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Takže zpočátku na lince 16, je to chtěl říct, x je nyní 2, pravděpodobně. 187 00:08:28,250 --> 00:08:30,920 % D je stejný jako i $ pro printf. 188 00:08:30,920 --> 00:08:33,460 Takže je to cubing, tečka, dot, dot, v souladu 17. 189 00:08:33,460 --> 00:08:36,299 A pak Řádek 18 se zobrazí volání funkce kostičky. 190 00:08:36,299 --> 00:08:37,600 A kde je Cubed definována? 191 00:08:37,600 --> 00:08:40,319 >> No, vypadá to, že v řadě 25, takže to není tak odlišné. 192 00:08:40,319 --> 00:08:42,610 Mám nějaké připomínky výše to, ale z větší části, 193 00:08:42,610 --> 00:08:45,370 je to docela jednoduché portování nebo konverze 194 00:08:45,370 --> 00:08:48,470 z programu C na verzi PHP. 195 00:08:48,470 --> 00:08:52,670 Ale tam jsou nyní pár rozdíly, které by možná vyskočit. 196 00:08:52,670 --> 00:08:56,100 Co jiného se liší o tom, jak může napsat stejný program v C? 197 00:08:56,100 --> 00:08:57,900 >> STUDENT: [neslyšitelné]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. Malan: tu žádný prototyp up top. 199 00:09:00,070 --> 00:09:03,210 Tak PHP-- a upřímně řečeno, Mnoho moderních languages-- 200 00:09:03,210 --> 00:09:06,920 jsou mnohem chytřejší a další užitečné než C překladače v tom, že vás 201 00:09:06,920 --> 00:09:09,740 může dát funkci tady, si můžete dát funkci tady, 202 00:09:09,740 --> 00:09:12,740 a interpret se děje k tomu vám laskavost čtení 203 00:09:12,740 --> 00:09:16,010 celý soubor, než se rozhodne, že některé funkce neexistuje. 204 00:09:16,010 --> 00:09:17,970 So Nice vylepšení let později. 205 00:09:17,970 --> 00:09:22,126 Ale je tu také něco ještě jiný nebo zde chybí. 206 00:09:22,126 --> 00:09:22,626 Jo? 207 00:09:22,626 --> 00:09:25,084 >> STUDENT: [neslyšitelné]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. Malan: Nemáme na deklarovat typy proměnných, 209 00:09:27,750 --> 00:09:31,780 tak uvidíme zanedlouho, že existují různé typy v PHP, 210 00:09:31,780 --> 00:09:34,970 ale nemusíte je určit, což je také dobré i špatné. 211 00:09:34,970 --> 00:09:36,623 A je tu ještě jedna věc chybí. 212 00:09:36,623 --> 00:09:37,430 >> Student: Je tu žádné knihovny. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. Malan: nejsou k dispozici žádné knihovny. 214 00:09:38,630 --> 00:09:39,350 OK, tak to je hezké. 215 00:09:39,350 --> 00:09:40,540 Dostaneme mnohem více po vybalení z krabice. 216 00:09:40,540 --> 00:09:43,373 Takže je to vlastně mnohem víc věci, než jsem si myslel, že jsou odlišné. 217 00:09:43,373 --> 00:09:44,350 Jak se asi tak v zádech? 218 00:09:44,350 --> 00:09:46,032 Co je to? 219 00:09:46,032 --> 00:09:46,740 Řekni to ještě jednou? 220 00:09:46,740 --> 00:09:47,960 >> STUDENT: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. Malan: Bez ukazatele. 222 00:09:49,270 --> 00:09:51,280 OK, alespoň v tomto příkladu, ne. 223 00:09:51,280 --> 00:09:52,070 To je fér. 224 00:09:52,070 --> 00:09:55,090 Takže tam nejsou odkazy PHP vlastně obecně. 225 00:09:55,090 --> 00:09:58,730 Existuje něco jako reference, ale nebudeme trávit příliš mnoho času. 226 00:09:58,730 --> 00:09:59,520 A co ještě? 227 00:09:59,520 --> 00:10:00,185 >> STUDENT: Main. 228 00:10:00,185 --> 00:10:01,060 DAVID J. Malan: Main. 229 00:10:01,060 --> 00:10:02,768 Tak tohle byl Biggie Myslel jsem, že. 230 00:10:02,768 --> 00:10:04,660 Všimněte si, že to není hlavní vstupní bod. 231 00:10:04,660 --> 00:10:06,525 Můžete jednoduše začít psát kód. 232 00:10:06,525 --> 00:10:08,400 A to je ve skutečnosti Bude výhodné 233 00:10:08,400 --> 00:10:10,560 když jsme přechod okamžik skutečně používat 234 00:10:10,560 --> 00:10:13,980 tento stejný jazyk pro web-based programování, pro které jsme 235 00:10:13,980 --> 00:10:16,580 nechtějí mít pouze jeden vstupní bod. 236 00:10:16,580 --> 00:10:19,980 Mohli bychom mít spoustu URL, spoustu různých souborů 237 00:10:19,980 --> 00:10:22,930 vše brát v vstup uživatele a zhotovuje výstup. 238 00:10:22,930 --> 00:10:27,130 >> Ale tady je velmi skličující příklad, který jsem slíbil minule, 239 00:10:27,130 --> 00:10:30,130 a to v této složce zde překlepy. 240 00:10:30,130 --> 00:10:33,680 Takže v tomto souboru pravopisu, kterou jsme nebude trávit příliš mnoho času, došlo 241 00:10:33,680 --> 00:10:37,870 v podstatě porting-- P-O-R-T. Je to jen slovo, vzhledem k tomu, kdy, řekněme, 242 00:10:37,870 --> 00:10:40,800 převodu z jednoho jazyka na druhý ručně obvykle. 243 00:10:40,800 --> 00:10:45,680 >> Jedná se o portování na PC verze pravopisu z pset 5. 244 00:10:45,680 --> 00:10:48,856 A já jsem v podstatě se snažil převést je řádek po řádku tak přesně, jak jen mohu. 245 00:10:48,856 --> 00:10:51,730 Takže pokud máte rádi tento druh věci, ve skutečnosti je hodnota v určitém okamžiku 246 00:10:51,730 --> 00:10:54,229 tahem je oba na straně boční a vidět to, co je stejné 247 00:10:54,229 --> 00:10:55,230 a to, co je. 248 00:10:55,230 --> 00:10:57,510 Ale jsou zatraceně podobné. 249 00:10:57,510 --> 00:11:00,110 Pokud si pamatujete, co speller dokonce vypadalo, 250 00:11:00,110 --> 00:11:02,110 i když ne muset změnit tento soubor, 251 00:11:02,110 --> 00:11:04,860 je to docela podobné konstrukčně jen s pár 252 00:11:04,860 --> 00:11:06,200 změn sem a tam. 253 00:11:06,200 --> 00:11:10,140 >> Takže je to jen říci, že je to docela jednoduché převést pravopisu 254 00:11:10,140 --> 00:11:12,000 z C do PHP. 255 00:11:12,000 --> 00:11:15,390 Ale ve slovníku, je tu něco, co ještě přesvědčivější. 256 00:11:15,390 --> 00:11:19,270 Nech mě jít dopředu a vytvořit moje vlastní dictionary.php souboru. 257 00:11:19,270 --> 00:11:24,010 Takže mírně odlišné v tom, že budeme nazývat .php místo .c. 258 00:11:24,010 --> 00:11:26,980 Protože se jedná o soubor PHP, I do-- mírně annoyingly-- mít 259 00:11:26,980 --> 00:11:30,132 spusťte soubor php tag takhle. 260 00:11:30,132 --> 00:11:32,340 A budu pokračovat a definovat několik funkcí. 261 00:11:32,340 --> 00:11:35,770 Funkce volána kontrola, která je bude trvat na slova jako předtím. 262 00:11:35,770 --> 00:11:37,520 Ale tento argument je bude mít dolar 263 00:11:37,520 --> 00:11:39,840 podepsat, protože jsme opět pomocí PHP. 264 00:11:39,840 --> 00:11:42,350 Další funkce z dictionary.c bylo zatížení 265 00:11:42,350 --> 00:11:47,120 a to se ve jménu slovníku, takže budu mít tuto funkci připraven jít. 266 00:11:47,120 --> 00:11:50,920 >> Jeden v dictionary.c je to, co? 267 00:11:50,920 --> 00:11:54,580 Velikost byl jeden z nejhezčích ty se na alespoň pokud jste si nechali nějaké proměnné kolem. 268 00:11:54,580 --> 00:11:57,830 takže velikost prostě musí vrátit proměnnou. 269 00:11:57,830 --> 00:11:59,090 A pak tu byl vyložit. 270 00:11:59,090 --> 00:12:02,830 >> Takže tam byly tyto čtyři funkce v problému nastavení 5 271 00:12:02,830 --> 00:12:06,770 že jste potřebovali, aby s některé struktury nebo struktury dat. 272 00:12:06,770 --> 00:12:10,170 Tak jsem slíbil, že v PHP, můžeme prohlásit, 273 00:12:10,170 --> 00:12:14,490 hash tabulky, například, to vše snadněji. 274 00:12:14,490 --> 00:12:17,377 Ve skutečnosti, pokud chci hash tabulky, Jen jsem jít takhle 275 00:12:17,377 --> 00:12:18,460 a tady je moje hash tabulky. 276 00:12:18,460 --> 00:12:21,555 A to je poznámka, skličující, že jsme skončili na posledním čase. 277 00:12:21,555 --> 00:12:23,930 A víte, co, kdybych chtěl proměnné pro velikost, dobře, 278 00:12:23,930 --> 00:12:25,867 tohle není všechno které se liší od C 279 00:12:25,867 --> 00:12:27,450 ale já jdu dál a dělat, že. 280 00:12:27,450 --> 00:12:28,630 A všimněte si žádný datový typ. 281 00:12:28,630 --> 00:12:31,180 A já se vrátím později, a vlastně sem přidat nějaké připomínky. 282 00:12:31,180 --> 00:12:32,480 Ale co zatížení? 283 00:12:32,480 --> 00:12:35,780 >> Pokud se znak dolaru slovník je název mého souboru 284 00:12:35,780 --> 00:12:39,600 a já jsem vlastně chcete načíst slova do této tabulky podnikem, 285 00:12:39,600 --> 00:12:42,360 Já si skutečně dělat něco docela jednoduché. 286 00:12:42,360 --> 00:12:44,880 One-- a to je minorly annoying-- v PHP, 287 00:12:44,880 --> 00:12:47,710 musíte zadat v z funkce, pokud vás 288 00:12:47,710 --> 00:12:51,060 chcete přístup k některým globální proměnná, která je definována mimo. 289 00:12:51,060 --> 00:12:53,530 >> Ale to není zvlášť zajímavé právě teď. 290 00:12:53,530 --> 00:12:57,920 Co je ještě zajímavější je to pro každého postavit, že jsem se zmínil minule. 291 00:12:57,920 --> 00:13:01,880 A ukázalo se, že PHP má funkci volal soubor, jehož smysl života 292 00:13:01,880 --> 00:13:05,550 je soubor otevřít a číst všechny své linky do pole 293 00:13:05,550 --> 00:13:06,840 a předat je zpět. 294 00:13:06,840 --> 00:13:12,170 >> Což znamená, že mohu dělat to slovník že nyní efektivně, když volám souboru, 295 00:13:12,170 --> 00:13:15,472 to mě vrátit pole slov ze souboru. 296 00:13:15,472 --> 00:13:16,430 Není to tak dobrý. 297 00:13:16,430 --> 00:13:20,130 Je to stále ještě bude linka slov, něco lineární. 298 00:13:20,130 --> 00:13:23,880 Ale můžu pokračovat a opakovat nad každým z těchto slov použití 299 00:13:23,880 --> 00:13:25,710 že syntax jsme viděli krátce minule. 300 00:13:25,710 --> 00:13:27,940 A uvidíte, že více v nadcházející pset. 301 00:13:27,940 --> 00:13:32,070 >> Ale teď mám smyčky iterace po každé slovo ve slovníku. 302 00:13:32,070 --> 00:13:36,100 A v každé iteraci, vzpomínám, že jsem volání aktuální slovo "slovo". 303 00:13:36,100 --> 00:13:39,790 A všechno to bude trvat, než dát slovo do slovníku je 304 00:13:39,790 --> 00:13:43,530 bude slovo hádat "true". 305 00:13:43,530 --> 00:13:44,740 To je můj vložka funkce. 306 00:13:44,740 --> 00:13:46,661 To je funkce load má pro mého slovníku. 307 00:13:46,661 --> 00:13:49,410 Teď je to trochu podvod, protože víš co, je to vlastně 308 00:13:49,410 --> 00:13:52,920 zpětné lomítko n na konci slov že bych měl asi zbavit, 309 00:13:52,920 --> 00:13:56,380 ale to není problém, protože PHP má funkce volána chop, které doslova 310 00:13:56,380 --> 00:13:58,480 kotlety off jeden znak na samém konci. 311 00:13:58,480 --> 00:13:59,400 Takže tam žádný problém. 312 00:13:59,400 --> 00:14:02,199 Šli jsme dál a vlastně zkrátil, že se právě tento. 313 00:14:02,199 --> 00:14:05,240 A teď jsem měl asi sledovat velikosti, tak se pojďme alespoň udělat tohle-- 314 00:14:05,240 --> 00:14:05,835 Velikost ++. 315 00:14:05,835 --> 00:14:07,339 Můžu to udělat jako předtím. 316 00:14:07,339 --> 00:14:10,380 A pak je to pravděpodobně bude fungovat v pohodě, takže to vrátí hodnotu true. 317 00:14:10,380 --> 00:14:10,930 Hotovo. 318 00:14:10,930 --> 00:14:11,797 Pset 5. 319 00:14:11,797 --> 00:14:13,545 >> [SMÍCH] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. Malan: OK. 321 00:14:14,420 --> 00:14:16,628 Chystáme se udělat znovu s dalším pset, taky. 322 00:14:16,628 --> 00:14:18,730 A co velikost? 323 00:14:18,730 --> 00:14:22,080 No, tohle snad je o jak byste očekávali minule, 324 00:14:22,080 --> 00:14:24,460 i když musím udělat to hloupé globální věc. 325 00:14:24,460 --> 00:14:26,610 Je to jen artefakt od Konstrukce jazyku je. 326 00:14:26,610 --> 00:14:28,450 >> Ale kontrola je trochu zajímavější. 327 00:14:28,450 --> 00:14:31,420 Takže když jsem prošel v dolaru První podepsat slovo, já 328 00:14:31,420 --> 00:14:34,060 Chcete mít přístup ke že globální proměnná stůl. 329 00:14:34,060 --> 00:14:36,700 A teď, když chci zkontrolujte, zda slovo je tam, 330 00:14:36,700 --> 00:14:44,350 Můžu jen říct, jestli to je pravda, že vkládá se nachází v tabulce, 331 00:14:44,350 --> 00:14:49,957 pak jděte do toho a návrat pravda; jinak, vrátí false. 332 00:14:49,957 --> 00:14:51,180 Hotovo. 333 00:14:51,180 --> 00:14:52,440 Druhá polovina pset 5. 334 00:14:52,440 --> 00:14:54,540 >> Dobře, tak ještě jednou, já jsem řezání pár rohů. 335 00:14:54,540 --> 00:14:56,831 Upřímně řečeno, měl jsem asi strávit pár vteřin 336 00:14:56,831 --> 00:14:58,300 Na této implementace. 337 00:14:58,300 --> 00:15:01,860 A já jsem asi neměl zesměšňovat všechny hodin si dát na pset tolik. 338 00:15:01,860 --> 00:15:04,045 Takže strtolower je funkce. 339 00:15:04,045 --> 00:15:06,670 Něco podobného existencialistický v C, alespoň pro znaky, 340 00:15:06,670 --> 00:15:08,560 ale PHP je dostal celou verzi řetězce. 341 00:15:08,560 --> 00:15:11,226 >> To bude nutit vše na malá písmena, což někteří z vás 342 00:15:11,226 --> 00:15:14,944 mohla udělat, aby se to, co kanonická jste uvedení do slovníku. 343 00:15:14,944 --> 00:15:16,360 A teď můžete to udělat v C také. 344 00:15:16,360 --> 00:15:17,780 To nemá nic společného s PHP. 345 00:15:17,780 --> 00:15:20,260 >> Ale kdykoliv budete mít Boolean stav, 346 00:15:20,260 --> 00:15:22,680 jako něco, co na lince 10 tam, což je jen 347 00:15:22,680 --> 00:15:27,145 bude hodnotit na hodnotu true nebo falešný, a vaše-li jinde jasně 348 00:15:27,145 --> 00:15:33,620 vrací true nebo false, mohl bych prostě opravdu tuto sexy 349 00:15:33,620 --> 00:15:38,360 a právě něco takového. 350 00:15:38,360 --> 00:15:40,500 Takže tady je moje kontrola funkce. 351 00:15:40,500 --> 00:15:42,560 Jasně, pokud Boolean vrací hodnotu true nebo false, 352 00:15:42,560 --> 00:15:44,630 řekněme, vrátí jej ihned. 353 00:15:44,630 --> 00:15:47,340 >> A je tu pár dalších vylepšení Mohl bych sem a tam. 354 00:15:47,340 --> 00:15:51,380 Load-- odlehčení, mimochodem, že to dělá. 355 00:15:51,380 --> 00:15:52,850 Nic, co by tam dělal. 356 00:15:52,850 --> 00:15:55,840 Vzhledem k tomu, všechny paměti PHP a mnoho dalších jazyků 357 00:15:55,840 --> 00:15:57,570 je ve skutečnosti řízena pro vás. 358 00:15:57,570 --> 00:16:00,330 A tak vzhledem k tomu, C, jak je jste se naučili bolestně, 359 00:16:00,330 --> 00:16:04,700 něco, co malloc nebo calloc nebo realloc, musíte osvobodit se. 360 00:16:04,700 --> 00:16:08,770 Vše, co fopen, musíte fclose, tak, že zdroje jsou nakonec osvobozeni 361 00:16:08,770 --> 00:16:11,690 a nástroje, jako Valgrind ne Všimněte si, a ne si stěžovat, 362 00:16:11,690 --> 00:16:13,570 což je dobrá věc pro provoz na nich. 363 00:16:13,570 --> 00:16:16,190 >> Ale jistě, musí zde být nějaký háček, že jo? 364 00:16:16,190 --> 00:16:19,400 Jinak jsme trochu zbytečný celá parta týdnů. 365 00:16:19,400 --> 00:16:23,270 Takže tam je řada důvodů, Proto jsme tak nějak využít této trajektorii, 366 00:16:23,270 --> 00:16:24,440 ale tam je trade-off. 367 00:16:24,440 --> 00:16:25,820 Jasně, to bylo tematické. 368 00:16:25,820 --> 00:16:29,690 >> Takže to, co by mohlo trade-off zde pohybuje od C do PHP? 369 00:16:29,690 --> 00:16:33,250 Cítím se, jako všechno vyhrát, pokud jiný než trochu ošklivosti tady nebo tam. 370 00:16:33,250 --> 00:16:34,040 Jo. 371 00:16:34,040 --> 00:16:34,700 Co je to? 372 00:16:34,700 --> 00:16:36,064 >> STUDENT: [neslyšitelné] paměť. 373 00:16:36,064 --> 00:16:36,980 DAVID J. Malan: Speed. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 No, moje rychlost byla docela rychle. 376 00:16:40,720 --> 00:16:42,020 Je to tak? 377 00:16:42,020 --> 00:16:44,320 Ale rychlost provádění programu? 378 00:16:44,320 --> 00:16:45,580 OK, tak to je spravedlivé místo. 379 00:16:45,580 --> 00:16:50,930 >> Tak to by se stalo, já předem cued up i moje zkusit řešení, jeden 380 00:16:50,930 --> 00:16:53,510 Měl jsem na velké desce bylo řešení try-based, 381 00:16:53,510 --> 00:16:55,510 a mám to v tomto adresáři zde. 382 00:16:55,510 --> 00:16:58,510 Tak jsem se ve chvíli, můžu jít dál a běží to na Bibli Kinga Jamese, 383 00:16:58,510 --> 00:16:59,657 klávesy Enter. 384 00:16:59,657 --> 00:17:01,990 A to je snad správný realizace na konci, 385 00:17:01,990 --> 00:17:05,109 mi dává čas celkem 0,38 sekund, které 386 00:17:05,109 --> 00:17:07,270 jeden poněkud libovolný příklad. 387 00:17:07,270 --> 00:17:09,270 >> A když jsem teď jít do toho druhé okno terminálu 388 00:17:09,270 --> 00:17:14,569 tady, kde jsem poprvé otevřel gedit, ať mě jít do dnešní code--, které opět 389 00:17:14,569 --> 00:17:19,650 je v tomto adresáři here-- a nech mě jít napřed a spustit pravopisu. 390 00:17:19,650 --> 00:17:23,470 Takže jen aby bylo jasno, To je verze PHP. 391 00:17:23,470 --> 00:17:25,170 Já jsem jen ukazuje horní část zde. 392 00:17:25,170 --> 00:17:32,020 >> Takže pokud mám pravopisu z tilda CS50 Pset 5 textů, King James, zadejte. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Je to stále rychlejší než psaní je to v C, ale celkový čas 395 00:17:43,050 --> 00:17:47,650 je oznámení, 0,93, zatímco my Implementace C na bázi byla 0,38. 396 00:17:47,650 --> 00:17:49,110 Takže je to non-triviální rozdíl. 397 00:17:49,110 --> 00:17:51,100 >> A to je jen na jednom souboru. 398 00:17:51,100 --> 00:17:53,480 Pokud byste měli spustit dva Programy versus velké desky 399 00:17:53,480 --> 00:17:56,510 a má spoustu vstupů testovány, by jistě sčítají. 400 00:17:56,510 --> 00:18:00,310 A pokud bychom měli ještě větší datové soubory, i to by přidat víc. 401 00:18:00,310 --> 00:18:04,820 Takže ano, platit nějaké cenu rychlosti tak skutečně je. 402 00:18:04,820 --> 00:18:05,470 Co ještě? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Jo? 405 00:18:08,860 --> 00:18:10,340 >> STUDENT: Množství paměti RAM. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. Malan: Množství paměti RAM. 407 00:18:11,756 --> 00:18:15,380 Tak jsem se nedal jedna sekunda myslel při psaní tohoto PHP 408 00:18:15,380 --> 00:18:17,300 verze o tom, jak moc vzpomínka, že jsem pomocí. 409 00:18:17,300 --> 00:18:22,080 Jsem zcela odkládá, že pro PHP sama o sobě, a ten, kdo napsal tento program. 410 00:18:22,080 --> 00:18:24,500 A to by mohlo být v pořádku, ale když jsem ve skutečnosti opravdu 411 00:18:24,500 --> 00:18:28,420 péče o mačkání tolik výkonu z mého programu, nebo z mé webové stránky 412 00:18:28,420 --> 00:18:31,150 nebo z jakéhokoli nástroje Stavím, možná 413 00:18:31,150 --> 00:18:33,310 PHP, opravdu, není správný jazyk. 414 00:18:33,310 --> 00:18:36,330 >> A ve skutečnosti, že je důvod, proč, pro Například, mnoho web servers-- 415 00:18:36,330 --> 00:18:38,980 skutečné programy, které sloužit až webovou content-- 416 00:18:38,980 --> 00:18:41,810 nejsou napsaný v PHP nebo v jazyce Python nebo Ruby. 417 00:18:41,810 --> 00:18:44,630 Jsou napsané, jako budete teď dělat s pset 6, 418 00:18:44,630 --> 00:18:48,120 v C, takže můžete zmáčknout každý kousek výkonu z toho 419 00:18:48,120 --> 00:18:50,780 a skutečně vykonávat ovládání jemnozrnná nad tím, co je 420 00:18:50,780 --> 00:18:52,980 děje pod kapuce a ne jen brát 421 00:18:52,980 --> 00:18:54,890 za samozřejmost, některé vyšší Struktura dat na úrovni. 422 00:18:54,890 --> 00:18:58,071 >> Zvažte, po tom všem, kdo v PHP implementována 423 00:18:58,071 --> 00:19:00,070 že pojem hash table-- je to vlastně více 424 00:19:00,070 --> 00:19:04,260 správně nazývá asociativní array-- dělá on nebo ona má nějakou představu, jaký druh 425 00:19:04,260 --> 00:19:07,090 vstupů se bude uvedení do konstrukce? 426 00:19:07,090 --> 00:19:08,260 Tak samozřejmě není, že jo? 427 00:19:08,260 --> 00:19:10,340 Je to obecný nástroj s motocyklem, který je 428 00:19:10,340 --> 00:19:13,430 za předpokladu, pro každého, kdo chce ji používat, a tak jistě 429 00:19:13,430 --> 00:19:17,680 nelze optimalizovat nakonec přesně to, co chcete dělat. 430 00:19:17,680 --> 00:19:21,180 >> Takže doba vývoje trade-offs-- moc liší, výkon se může lišit, 431 00:19:21,180 --> 00:19:23,120 složitost nebo využití paměti se může lišit. 432 00:19:23,120 --> 00:19:24,820 A tak to, co najdete stále je, že je tu 433 00:19:24,820 --> 00:19:26,570 bude jinak nástroje pro obchod. 434 00:19:26,570 --> 00:19:31,160 A ve skutečnosti pro super většinu závěrečných prací lidí v této třídě, 435 00:19:31,160 --> 00:19:34,360 věřte tomu nebo ne, C nebude být správný jazyk používat. 436 00:19:34,360 --> 00:19:37,880 >> A ve skutečnosti, jeden z stánek s jídlem nakonec pro každou třídu, jako je tento 437 00:19:37,880 --> 00:19:40,510 je, aby si myslíš, No, co byste měli vytáhnout 438 00:19:40,510 --> 00:19:42,710 police, když chcete vyřešit nějaký problém. 439 00:19:42,710 --> 00:19:46,720 A skutečně, budeme přes tento most ještě, jak se díváme na více jazyků 440 00:19:46,720 --> 00:19:47,920 i za dnešek. 441 00:19:47,920 --> 00:19:50,530 >> Takže pojďme přechod nyní snad známější kontext 442 00:19:50,530 --> 00:19:52,480 pro použití jazyka, jako je PHP. 443 00:19:52,480 --> 00:19:56,720 Je to poněkud běžné použití v příkazového řádku, psaní skriptů 444 00:19:56,720 --> 00:19:59,050 jako já, ale je to mnohem, mnohem častější. 445 00:19:59,050 --> 00:20:02,350 A byla určena k použití v forma souborů, které obvykle končí 446 00:20:02,350 --> 00:20:05,060 v .php-- ale to je ne prerequisite-- 447 00:20:05,060 --> 00:20:07,990 které samy vytvářet webový obsah. 448 00:20:07,990 --> 00:20:11,310 >> Tak nech mě jít napřed a otevřít několik příklady jsem si připravil předem. 449 00:20:11,310 --> 00:20:15,100 A to jsou vlastně jakési pravda příběhy tím, že jedna z prvních věcí 450 00:20:15,100 --> 00:20:18,200 Co jsem kdy dělal sám po dokončení CS50 a možná, myslím, 451 00:20:18,200 --> 00:20:21,350 CS51 lety je můj spolubydlící a já jsme byli pomáhat 452 00:20:21,350 --> 00:20:24,320 spustit prváku intramurálních sportovní program, který v té době, 453 00:20:24,320 --> 00:20:28,610 byl v prváku registraci pro různé sportovní vyplněním kus papíru, 454 00:20:28,610 --> 00:20:31,800 jak to bylo voláno, chůze přes dvůr k Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 a jeho umístěním v některých Pokles dveře Proctorův. 456 00:20:34,030 --> 00:20:37,210 A pak on nebo ona by projít je a pak nás vlastně napište ručně 457 00:20:37,210 --> 00:20:39,140 které jsme zaznamenaly nějaký sport. 458 00:20:39,140 --> 00:20:41,166 >> Tak jasně, příležitost pro zlepšení. 459 00:20:41,166 --> 00:20:44,040 V těchto dnech, můžete se obrátit na právě Formuláře Google, ale zpět v den, 460 00:20:44,040 --> 00:20:46,914 jsme měli skutečně dosáhnout for-- to nebyla ani tak dlouho ago-- dosáhnout 461 00:20:46,914 --> 00:20:49,410 pro programování jazyk, který nebyl PHP. 462 00:20:49,410 --> 00:20:51,200 V té době, to bylo něco jako Perl, 463 00:20:51,200 --> 00:20:52,890 který vyšel z módy, protože. 464 00:20:52,890 --> 00:20:54,160 Ale princip je stejný. 465 00:20:54,160 --> 00:20:58,940 >> A já jsem v podstatě se posadil, aby se pokusila k portu jde verze Perl PHP, 466 00:20:58,940 --> 00:21:03,710 ale v plném upozornění, nedal jakákoliv myšlenka estetiky ještě ne. 467 00:21:03,710 --> 00:21:04,960 Takže tady je webová stránka. 468 00:21:04,960 --> 00:21:05,670 Jedná se o soubor. 469 00:21:05,670 --> 00:21:09,470 Kdybych přiblížit, jeho zřejmě volal froshim0.php 470 00:21:09,470 --> 00:21:12,060 jen proto, že je to naše první Příklad v této sérii. 471 00:21:12,060 --> 00:21:15,970 A všimněte si, že má něco, co vypadá být velmi ošklivý HTML formulář, 472 00:21:15,970 --> 00:21:18,680 ale forma je zajímavá protože umožňuje 473 00:21:18,680 --> 00:21:21,910 mi poskytnout vstup uživatele do prohlížeče. 474 00:21:21,910 --> 00:21:27,730 >> Teď naposledy, když jsme měli formu, aby kterého jsme se předložit své parametr dotazu, 475 00:21:27,730 --> 00:21:30,450 fronta parametr jak to bylo voláno? 476 00:21:30,450 --> 00:21:31,330 Takže Google, ne? 477 00:21:31,330 --> 00:21:34,090 Jsme zcela punted na myšlence dělat něco s tímto vstupem. 478 00:21:34,090 --> 00:21:36,160 >> Ale dnes, začneme produkovat výstup. 479 00:21:36,160 --> 00:21:39,420 A chování budu vidět zde zpočátku je dost triviální. 480 00:21:39,420 --> 00:21:42,980 David, budu odškrtávat pohlaví tady, říkají Matthewse zde. 481 00:21:42,980 --> 00:21:43,800 Nebudu se kapitán. 482 00:21:43,800 --> 00:21:45,410 Jdu na tlačítko Registrovat. 483 00:21:45,410 --> 00:21:50,720 A všimněte si, že URL je změnil se zaregistrovat, 0.php, 484 00:21:50,720 --> 00:21:52,310 a pak je tu to ošklivé textu zde. 485 00:21:52,310 --> 00:21:54,460 Dal jsem ani pomyšlení na formátování tohoto. 486 00:21:54,460 --> 00:21:59,900 >> Ale co je zajímavé, že tři hodnoty byly zřejmě prošel v roce. 487 00:21:59,900 --> 00:22:02,960 To je PHP druh ekvivalentní printf-- 488 00:22:02,960 --> 00:22:06,330 uvidíme, co se to vlastně s názvem v bit-- že právě vytiskne 489 00:22:06,330 --> 00:22:08,300 to, co jste prošel do něj. 490 00:22:08,300 --> 00:22:11,414 Takže to naznačuje, že tato forma měl přinejmenším tři pole na to, 491 00:22:11,414 --> 00:22:12,580 a ty mě viděl zadejte je do. 492 00:22:12,580 --> 00:22:15,739 Jeden z nich byl mé jméno, jeden byl pohlaví, jeden byl koleje. 493 00:22:15,739 --> 00:22:18,780 A kapitán ani dostat zaslány server, protože jsem neměl zkontrolovat. 494 00:22:18,780 --> 00:22:22,150 >> Takže to znamená, že jak se zdá, když zadáte věci na webu, 495 00:22:22,150 --> 00:22:26,830 Nejen, že URL někdy change-- někdy ne. 496 00:22:26,830 --> 00:22:30,330 Ve skutečnosti, název souboru změněn, ale to, co chybí z URL 497 00:22:30,330 --> 00:22:32,861 že jsme viděli minule s firmou Google. 498 00:22:32,861 --> 00:22:33,360 Jo? 499 00:22:33,360 --> 00:22:34,380 >> STUDENT: Ne query string 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. Malan: Není řetězec dotazu. 501 00:22:35,220 --> 00:22:37,270 Není otazník něco. 502 00:22:37,270 --> 00:22:40,050 Není pochyb o tom mark q rovná kočky, jako jsme to udělali minule. 503 00:22:40,050 --> 00:22:42,170 A není to rozhodně není Název otazník rovná 504 00:22:42,170 --> 00:22:46,310 David nebo koleji rovná Matthews, Takže tam, kde se to všechno děje? 505 00:22:46,310 --> 00:22:51,290 >> No, dovolte mi vrátit se do gedit zde a otevřít první z těchto souborů 506 00:22:51,290 --> 00:22:57,020 v mém VHOST, místní hostitel, veřejné adresář tady a jít do froshim0. 507 00:22:57,020 --> 00:23:02,060 Tak to dopadá, že téměř všechny této stránce je jen HTML. 508 00:23:02,060 --> 00:23:05,410 A to může být neznámé pro vás, ale brzy bude víc s pset 6 509 00:23:05,410 --> 00:23:07,370 a pset 7 a pset 8. 510 00:23:07,370 --> 00:23:09,160 Ale to je jen HTML stránky. 511 00:23:09,160 --> 00:23:12,400 >> A zajímavé věci Zdá se, že tady. 512 00:23:12,400 --> 00:23:16,290 Formulář značka, jejíž činnost atribut má hodnotu 0 registru. 513 00:23:16,290 --> 00:23:18,890 To je důvod, proč, když jsem se předložit to, že jde do tohoto souboru. 514 00:23:18,890 --> 00:23:20,620 Ale metoda je jiná today-- příspěvek. 515 00:23:20,620 --> 00:23:23,120 Tak to dopadá, že je alespoň dvě metody na webu používají 516 00:23:23,120 --> 00:23:24,911 odeslat informace z prohlížeče na server. 517 00:23:24,911 --> 00:23:25,980 Get říká v URL. 518 00:23:25,980 --> 00:23:27,950 Post říká jinde. 519 00:23:27,950 --> 00:23:30,570 A kdy a proč by mohl si skutečně chtějí webové stránky 520 00:23:30,570 --> 00:23:34,110 použít příspěvek pak místo ze si jen intuitivně? 521 00:23:34,110 --> 00:23:37,080 Jakékoliv webové stránky. 522 00:23:37,080 --> 00:23:42,010 Jaké údaje by měly být těsně dedukcí nyní poštou na rozdíl 523 00:23:42,010 --> 00:23:45,184 dostat, když jsme viděli dva rozdíly? 524 00:23:45,184 --> 00:23:46,350 STUDENT: [neslyšitelné] zajistěte. 525 00:23:46,350 --> 00:23:47,790 DAVID J. Malan: Pokud chcete, něco, co se v bezpečí. 526 00:23:47,790 --> 00:23:50,360 Takže můžete zadat heslo na webové stránky, kreditní karty 527 00:23:50,360 --> 00:23:53,030 na webových stránkách by druh těchto suboptimální 528 00:23:53,030 --> 00:23:56,220 v případě, že prohlížeč dal, že hodnota v URL. 529 00:23:56,220 --> 00:23:57,680 Proč? 530 00:23:57,680 --> 00:24:00,059 Vidíte to, což není Zdá se, že tak velký problém, 531 00:24:00,059 --> 00:24:03,350 ale šance jsou si dost často chodit daleko od svého počítače nebo použití počítače 532 00:24:03,350 --> 00:24:05,310 laboratoře, a tak někdo jiného, ​​nebo dokonce spolubydlící 533 00:24:05,310 --> 00:24:08,220 mohl snadno jít a vidět že soukromé informace. 534 00:24:08,220 --> 00:24:10,220 Když odešlete e-mail přes internet, budete pravděpodobně 535 00:24:10,220 --> 00:24:12,350 Nechceme, aby údaje, které končí v URL také. 536 00:24:12,350 --> 00:24:15,266 A tak je tu řada důvodů, Proto bychom mohli chtít, aby to tady. 537 00:24:15,266 --> 00:24:18,610 A photos-- pravdu, nemohu ani zcela Představte si, jak by se na grafiku, 538 00:24:18,610 --> 00:24:21,480 jako JPEG, a dát ho do URL. 539 00:24:21,480 --> 00:24:22,330 Dalo by se to udělat. 540 00:24:22,330 --> 00:24:25,840 Je tu způsoby kódování, ale je to prostě není jednoduché takhle. 541 00:24:25,840 --> 00:24:29,030 >> Zaregistrujte 0 je vlastně velmi nezaujatý. 542 00:24:29,030 --> 00:24:31,610 Vše, co to říká, že je to doslova. 543 00:24:31,610 --> 00:24:35,910 Tiskne se v některých HTML tagy následující. 544 00:24:35,910 --> 00:24:38,640 Mám tag PHP zde vnořená uvnitř předem značky. 545 00:24:38,640 --> 00:24:42,300 "Pre" prostě znamená, pre-formátovaný text, mono-rozložený, jako psací stroj. 546 00:24:42,300 --> 00:24:44,836 >> Printr je tisk rekurzivní funkce. 547 00:24:44,836 --> 00:24:46,710 A pak je tu to Zajímavá věc zde. 548 00:24:46,710 --> 00:24:48,835 A vrátíme se k tomu protože tam je jiné, 549 00:24:48,835 --> 00:24:51,140 ale znak dolaru podtržítko Příspěvek se zdá být 550 00:24:51,140 --> 00:24:56,110 proměnné v PHP, ve kterém něco odeslání z prohlížeče na server 551 00:24:56,110 --> 00:24:58,040 je uložena pro vás. 552 00:24:58,040 --> 00:25:00,930 A uvidíme, jak se dostat na že informace zanedlouho. 553 00:25:00,930 --> 00:25:04,000 >> Ale nejdřív, vraťme se k mírně odlišný příklad. 554 00:25:04,000 --> 00:25:09,050 Chystáte se do register-- nebo spíše froshims1.php, 555 00:25:09,050 --> 00:25:10,470 který vypadá trochu jinak. 556 00:25:10,470 --> 00:25:12,670 Vzal jsem si trochu víc úsilí s formátováním, 557 00:25:12,670 --> 00:25:14,370 i když je to stále dost ošklivý. 558 00:25:14,370 --> 00:25:16,990 Ale budu pokračovat a zadejte "Davide" teď. 559 00:25:16,990 --> 00:25:17,850 Male. 560 00:25:17,850 --> 00:25:19,360 Budeme kontrolovat "kapitána" tentokrát. 561 00:25:19,360 --> 00:25:20,660 Uděláme Matthewse. 562 00:25:20,660 --> 00:25:22,430 A zaregistrujte se. 563 00:25:22,430 --> 00:25:24,110 >> A tentokrát to říká, hm, opravdu ne. 564 00:25:24,110 --> 00:25:26,180 Dobře, takže to, co je zaregistrovat jeden? 565 00:25:26,180 --> 00:25:30,509 Nech mě jít do otevřeného registru 1 a- hm. 566 00:25:30,509 --> 00:25:32,300 V pořádku, takže to je zajímavé, a to 567 00:25:32,300 --> 00:25:34,880 je odrazovým můstkem nyní k další zajímavé programy. 568 00:25:34,880 --> 00:25:38,970 >> Všimněte si, v horní části tohoto souboru má PHP tag stejně jako některé komentáře. 569 00:25:38,970 --> 00:25:42,590 A to jsou pro tuto chvíli, rozptýlení tak ať to prostě zbavit těchto připomínek 570 00:25:42,590 --> 00:25:47,070 stejně, jako by to v C. A tvrdím, tento kus kódu s komentáři 571 00:25:47,070 --> 00:25:49,280 že tento kód je ověřování podání. 572 00:25:49,280 --> 00:25:51,690 >> No, ukázalo se, že proměnné jako znak dolaru 573 00:25:51,690 --> 00:25:53,739 zdůraznit příspěvek je volal flash globals. 574 00:25:53,739 --> 00:25:55,530 Jsou jako ty speciální globální proměnné 575 00:25:55,530 --> 00:25:58,840 že jsou jen omni-v současné době k dispozici v rámci programu. 576 00:25:58,840 --> 00:26:03,870 A můžete použít hranatá závorka notaci index do nich není pomocí čísel 577 00:26:03,870 --> 00:26:07,460 jako 0, 1, 2, 3, ale skutečná slova. 578 00:26:07,460 --> 00:26:12,100 >> Takže si můžete myslet znak dolaru zdůrazňují příspěvek jako jakési hash tabulky 579 00:26:12,100 --> 00:26:15,920 že byste mohli projít klíč do, na vyhledávání slovo, v hranatých závorkách, 580 00:26:15,920 --> 00:26:19,370 a to bude vám zpět hodnota, kterou uživatel skutečně poskytnuta. 581 00:26:19,370 --> 00:26:21,210 PHP má funkci nazývá prázdná, že právě 582 00:26:21,210 --> 00:26:23,720 říká, že ano, nebo ne, to proměnná je prázdná, nebo ne. 583 00:26:23,720 --> 00:26:27,250 Máme tyto dvojité tyče, což prostě znamená, nebo, jako v C. 584 00:26:27,250 --> 00:26:31,740 >> Takže ve skutečnosti, tato linka 4 je právě říká, v případě, že uživatel nedal jméno 585 00:26:31,740 --> 00:26:36,540 nebo nedal pohlaví nebo ne dát koleji, jděte do toho a přesměrovat ho 586 00:26:36,540 --> 00:26:38,184 nebo ji prostřednictvím této linky zde. 587 00:26:38,184 --> 00:26:40,600 Tak tohle je trochu tajemný, ale to jen znamená doslovně 588 00:26:40,600 --> 00:26:43,330 zpět na toto místo, tak to plaví uživatele 589 00:26:43,330 --> 00:26:45,420 zpět do místa, kde on nebo ona pochází. 590 00:26:45,420 --> 00:26:47,880 Ale je to trochu nevkusný v tom, že jsem tvrdě kódované to. 591 00:26:47,880 --> 00:26:52,150 >> Ale co když to, pokud podmínka nelze vyhodnotit na hodnotu true? 592 00:26:52,150 --> 00:26:55,790 Co v případě, že uživatel se mi dát jeho nebo její jméno a kolej a pohlaví? 593 00:26:55,790 --> 00:26:58,540 Že pokud podmínka není bude hodnotit na hodnotu true, 594 00:26:58,540 --> 00:27:00,650 takže si nemyslím, narazila na výstupu v řádku 7. 595 00:27:00,650 --> 00:27:01,680 Takže co se stane? 596 00:27:01,680 --> 00:27:03,880 A to je to, co je Zajímavé informace o PHP. 597 00:27:03,880 --> 00:27:07,470 >> Můžete spadnout do a ven režimu PHP, abych tak řekl. 598 00:27:07,470 --> 00:27:10,985 Pokud chcete nějaký kód spustit, můžete otevřít a zavřít tag PHP 599 00:27:10,985 --> 00:27:13,010 a dal kódu tam, jako bych tu udělal. 600 00:27:13,010 --> 00:27:16,810 Jakmile zavřete tag PHP server 601 00:27:16,810 --> 00:27:19,407 se právě chystá vyplivnout co jste tam dal. 602 00:27:19,407 --> 00:27:21,740 A skutečně, toto byla část originální design PHP, 603 00:27:21,740 --> 00:27:25,280 pro lepší horší, byla tato vzájemným kódu a značení 604 00:27:25,280 --> 00:27:25,920 jazyk. 605 00:27:25,920 --> 00:27:28,670 A uvidíme, že právě tato rychle přejde do nepořádku. 606 00:27:28,670 --> 00:27:31,280 A tak budeme dělat lépe než v konečném důsledku, ale jen 607 00:27:31,280 --> 00:27:35,620 Všimněte si, s jakou lehkostí Jsem skutečně schopni provést nějakou logiku. 608 00:27:35,620 --> 00:27:37,440 >> Ale ještě trochu nezaujatý. 609 00:27:37,440 --> 00:27:41,210 Pojďme otevřít verzi dva Frosh IM, které 610 00:27:41,210 --> 00:27:44,270 zřejmě podřizuje register2.php. 611 00:27:44,270 --> 00:27:47,600 Takže tento soubor to vlastně děje vypadat téměř stejné. 612 00:27:47,600 --> 00:27:50,780 Chystám se jít na Frosh IM 2. 613 00:27:50,780 --> 00:27:53,050 Ale v Frosh IM 2, uvidíme, co se stane. 614 00:27:53,050 --> 00:27:58,110 >> David, klepněte na příslušný přepínač, as se to jmenuje; Matthews, ne kapitán. 615 00:27:58,110 --> 00:27:59,230 Registrovat. 616 00:27:59,230 --> 00:28:00,130 Ty jsou registrovány. 617 00:28:00,130 --> 00:28:00,700 Ne tak docela. 618 00:28:00,700 --> 00:28:02,574 Ale počkejte, jen jsme udělali že příklad, ne my? 619 00:28:02,574 --> 00:28:04,520 Dobře, stand by. 620 00:28:04,520 --> 00:28:06,602 Uděláme na tři. 621 00:28:06,602 --> 00:28:08,560 Je zřejmé, něco to o se stane s Gmail. 622 00:28:08,560 --> 00:28:09,600 Dostaneme se tam. 623 00:28:09,600 --> 00:28:11,900 >> Takže Frosh IM 3 vypadá takto. 624 00:28:11,900 --> 00:28:13,050 Neliší. 625 00:28:13,050 --> 00:28:19,850 Ale když jsem to David, muž, Matthews, a registrovat, toto třetí a poslední verze 626 00:28:19,850 --> 00:28:22,230 nároky, prostě ti, jsou registrovány ve skutečnosti. 627 00:28:22,230 --> 00:28:23,560 To je trochu nevýznamné. 628 00:28:23,560 --> 00:28:25,600 Ale tvrdím, s tím Třetí a poslední verze 629 00:28:25,600 --> 00:28:30,610 Nyní jsem znovu přesně to, co my spolubydlící a já postaven za Frosh IM 630 00:28:30,610 --> 00:28:31,731 Program lety. 631 00:28:31,731 --> 00:28:32,480 A to bylo jednoduché. 632 00:28:32,480 --> 00:28:34,330 Nebylo databáze, no Excel. 633 00:28:34,330 --> 00:28:36,450 Ale mnohem důležitější je, nebylo více papíru 634 00:28:36,450 --> 00:28:42,520 protože to, co jsme dělali s tímto programem bylo ve skutečnosti e-mailem Proctor, který 635 00:28:42,520 --> 00:28:44,530 byl předtím příjem tyto věci prostřednictvím formulářů. 636 00:28:44,530 --> 00:28:48,890 >> A zřejmě jsme naprogramovány na tuto takovým způsobem, že když se někdo registruje, 637 00:28:48,890 --> 00:28:52,470 Účet e-maily John Harvardu proctor-- nebo se v tomto případě, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- s následujícími text-- "Tento člověk prostě registrován." 639 00:28:55,960 --> 00:29:00,560 Jmenuje se David, kapitán je prázdná; pohlaví, samčí; a koleji, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Takže to, co se tam stalo? 641 00:29:01,560 --> 00:29:05,360 No, soubor v otázce zde je zřejmě register3.php. 642 00:29:05,360 --> 00:29:09,080 A když jsem to otevřít, uvidíte jak moc kódu, jako je tento 643 00:29:09,080 --> 00:29:12,380 a také, upřímně řečeno, nejistota systému, jako je e-mailem. 644 00:29:12,380 --> 00:29:16,290 Právě jsem skutečně předstíral, že se John Harvard následujícím způsobem. 645 00:29:16,290 --> 00:29:20,920 >> Mám php tag otevřít top, který Jen říká, že tady je nějaký PHP kód. 646 00:29:20,920 --> 00:29:23,155 Tady dole, ukazuje se, že jsou knihovny v PHP. 647 00:29:23,155 --> 00:29:26,410 Vy prostě potřebujete Včetně záhlaví soubory jako moc. 648 00:29:26,410 --> 00:29:28,900 Získáte více s kuchyňský dřez, abych tak řekl. 649 00:29:28,900 --> 00:29:31,820 >> Ale tentokrát v řádku 4, mám Chcete odborné knihovně s názvem 650 00:29:31,820 --> 00:29:36,087 PHP mailer, což je něco, co vás můžete nainstalovat zdarma v mnoha systémech. 651 00:29:36,087 --> 00:29:37,920 Tady dole jsem potvrzení podání jen 652 00:29:37,920 --> 00:29:40,540 kontrolou se uživatel dá mi jméno, pohlaví a koleji. 653 00:29:40,540 --> 00:29:44,130 A pokud ano, jděte do toho a instanci mailer. 654 00:29:44,130 --> 00:29:47,020 >> Můžete myslet na to, jak je řádek kódu, který právě přiděluje. 655 00:29:47,020 --> 00:29:48,950 Je to jako malloc, ale je to trochu víc sexy 656 00:29:48,950 --> 00:29:51,790 v tom, že jste zmínil nejen malloc a některé generické číslo. 657 00:29:51,790 --> 00:29:55,030 Říkáte, dej mi jeden z nich, dej mi nový jeden z nich. 658 00:29:55,030 --> 00:29:57,950 >> A pokud jste naprogramován v Java nebo C ++ a dalších jazyků, 659 00:29:57,950 --> 00:29:59,130 jste mohli vidět to. 660 00:29:59,130 --> 00:30:01,840 Ale krátký na to, je-li neznámé, tento řádek 661 00:30:01,840 --> 00:30:05,410 uvádí do dolaru mailem speciální struct s názvem 662 00:30:05,410 --> 00:30:08,731 objekt, který má vestavěný-in e-mail funkčnost. 663 00:30:08,731 --> 00:30:10,355 A ve skutečnosti, všimněte si, a podobné syntaxe. 664 00:30:10,355 --> 00:30:11,900 >> To není ukazatel, samo o sobě. 665 00:30:11,900 --> 00:30:13,990 PHP právě používá stejnou syntaxi. 666 00:30:13,990 --> 00:30:17,660 Tento řádek říká použití SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protokol, který je právě protokol používaný pro odesílání pošty. 668 00:30:20,900 --> 00:30:24,240 To je určující použití Harvard je SMTP server, který 669 00:30:24,240 --> 00:30:25,830 je někde tady na akademické půdě. 670 00:30:25,830 --> 00:30:28,480 >> To je to, co říká, TCP číslo portu mluvit, 671 00:30:28,480 --> 00:30:31,650 a já jsem zjistil, že ze strany googling nebo dotazem na help desk. 672 00:30:31,650 --> 00:30:34,640 A pak, protože Harvard používá některé Bezpečnostní systém na poštovním server-- 673 00:30:34,640 --> 00:30:37,060 alespoň k šifrování komunikace mezi vámi a ním, 674 00:30:37,060 --> 00:30:41,380 i když někdo může poslat to-- Jdu zapnout protokolu TLS 675 00:30:41,380 --> 00:30:42,710 pro udržení tohoto bezpečí. 676 00:30:42,710 --> 00:30:44,730 >> Ale to je místo, kde se věci trochu děsivé. 677 00:30:44,730 --> 00:30:47,970 Mohu jen svévolně říci, že jsem jharvard, 678 00:30:47,970 --> 00:30:51,930 a mohu jen svévolně e-mail, abych tady. 679 00:30:51,930 --> 00:30:55,650 A pak jsem si zadat předmět s tímto zde. 680 00:30:55,650 --> 00:30:58,460 >> A to jen vypadá ošklivě, ale je to jen banda zřetězení. 681 00:30:58,460 --> 00:31:04,480 Ukázalo se, že PHP má super užitečný symbol, jako některé jazyky, operátor tečka, 682 00:31:04,480 --> 00:31:07,340 která se právě doslova zřetězuje řetězec za řetězec po řetězci, 683 00:31:07,340 --> 00:31:09,810 a vy nemusíte malloc nebo obrázku z celkové délky řetězce. 684 00:31:09,810 --> 00:31:10,820 Vy to prostě udělat. 685 00:31:10,820 --> 00:31:15,220 A skutečně, protože jsem zřetězení ve všech těchto věcech s těmito body, 686 00:31:15,220 --> 00:31:18,330 To je důvod, proč jsem email poslal podíval, jak to udělal. 687 00:31:18,330 --> 00:31:20,610 >> A pak konečně tady, jsem odesílání e-mailů. 688 00:31:20,610 --> 00:31:22,580 Takže pokud je to falešný, Já jen, že umřu, 689 00:31:22,580 --> 00:31:25,680 což je funkce, která jen tiskne na obrazovce některé chybové zprávy. 690 00:31:25,680 --> 00:31:29,170 Ale to je, ve skutečnosti, volání funkce odeslání. 691 00:31:29,170 --> 00:31:31,780 V opačném případě, je-li toto vše selže, je zde přesměruje mě zpátky. 692 00:31:31,780 --> 00:31:34,050 >> A proč vidím, že Jsem registrovaný ve skutečnosti? 693 00:31:34,050 --> 00:31:36,110 No, to se stalo tady. 694 00:31:36,110 --> 00:31:38,170 Tak jsem se, aby to se k z několika důvodů. 695 00:31:38,170 --> 00:31:41,542 >> Jeden z nich, je to přesně tak, jak, pokud budete stavět některé webové stránky závěrečného projektu 696 00:31:41,542 --> 00:31:44,000 nebo v reálném světě, to je jak odesílat e-mailové upomínky 697 00:31:44,000 --> 00:31:45,924 pro své zákazníky a vaši odběratelé. 698 00:31:45,924 --> 00:31:47,590 To je, jak se Poslat heslo upomínky. 699 00:31:47,590 --> 00:31:50,760 To je, jak posílat lidi zprávy že mají novou Facebook 700 00:31:50,760 --> 00:31:52,990 Zpráva čeká, nebo něco takového. 701 00:31:52,990 --> 00:31:55,010 >> Ale také mluví do skutečnost, že by to mohlo 702 00:31:55,010 --> 00:31:58,160 byly velmi dobře od Davin nebo někdo jiný. 703 00:31:58,160 --> 00:32:00,567 A já říkám, tento druh s úsměvem, protože jsem 704 00:32:00,567 --> 00:32:03,400 zcela jist, co se děje prostřednictvím několik z vašich myslích v tomto bodě. 705 00:32:03,400 --> 00:32:11,910 Ale to je jeden z těch, dělat jako já říkají, ne jako já druh věcí, 706 00:32:11,910 --> 00:32:14,480 protože je triviální falšovat e-maily, jako je tento. 707 00:32:14,480 --> 00:32:16,480 Ale jak můžete vidět nebo číst v Crimson, 708 00:32:16,480 --> 00:32:18,271 poslední dobou je to také docela triviální pro lidi 709 00:32:18,271 --> 00:32:20,050 dohledat je zpět do jisté původu. 710 00:32:20,050 --> 00:32:23,790 A zeptejte se mě nějaký čas, možná na CS50 oběd, jak jsem se poprvé 711 00:32:23,790 --> 00:32:27,080 mám velmi úzce seznámeni téměř na ed palubě mnoho let 712 00:32:27,080 --> 00:32:30,890 dávno, když jsem zjistil, jak internet funguje. 713 00:32:30,890 --> 00:32:36,940 Takže v každém case-- mírně Po vydání desky udělal. 714 00:32:36,940 --> 00:32:42,300 >> Takže v každém případě, že je celá parta super globals, 715 00:32:42,300 --> 00:32:45,960 jak se jim říká tady, z nichž jedna jsme saw-- znak dolaru podtržítko místo. 716 00:32:45,960 --> 00:32:49,530 K dispozici je protějšek s názvem GET, což je místo, kde věci z URL 717 00:32:49,530 --> 00:32:50,690 skončí děje. 718 00:32:50,690 --> 00:32:54,051 A je tu celá banda dalších, too-- relace a serveru a cookie. 719 00:32:54,051 --> 00:32:55,800 Vrátíme se k cookie někdy jindy, 720 00:32:55,800 --> 00:33:01,340 ale relace je docela fajn protože právě now-- až do now-- 721 00:33:01,340 --> 00:33:06,350 všechno, co jsme udělali s webovým prohlížečem je trochu bez státní příslušnosti, abych tak řekl. 722 00:33:06,350 --> 00:33:10,060 I klikněte kolem, přístup soubory na serveru, něco 723 00:33:10,060 --> 00:33:13,500 se děje na obrazovce, ale pak se spojení uzavře. 724 00:33:13,500 --> 00:33:17,450 Internet Explorer nebo Icon Firefox dotočí 725 00:33:17,450 --> 00:33:20,340 a vidíte jen to, co které webová stránka obsahuje. 726 00:33:20,340 --> 00:33:23,530 >> Takže HTTP je bez státní příslušnosti v tom, že jakmile je spojení, 727 00:33:23,530 --> 00:33:25,050 dostane nějaká data, to je vše. 728 00:33:25,050 --> 00:33:29,940 Žádné další spojení, na rozdíl od Skype, Na rozdíl od FaceTime, na rozdíl od GChat, který 729 00:33:29,940 --> 00:33:32,180 udržuje konstantní připojení k serveru. 730 00:33:32,180 --> 00:33:34,650 Web je v podstatě odpojen, když budeme 731 00:33:34,650 --> 00:33:36,630 vidět, než dlouho, jak můžeme simulovat věci 732 00:33:36,630 --> 00:33:39,300 jako Facebook chat a GChat, které udržují illusion-- 733 00:33:39,300 --> 00:33:41,680 nebo vlastně dělat udržet konstantní připojení pomocí 734 00:33:41,680 --> 00:33:43,270 více moderní technologie. 735 00:33:43,270 --> 00:33:49,000 >> Ale když jsem se jít do, řekněme, counter.php, To je další jednoduchý příklad, 736 00:33:49,000 --> 00:33:52,700 jak uvidíme, že v současné době si myslí, že Navštívil jsem stránky nulovou dobu. 737 00:33:52,700 --> 00:33:56,790 Ale když jsem prostě znovu načíst stránku, to nějak ví, že jsem tady předtím. 738 00:33:56,790 --> 00:33:58,840 Kdybych znovu načíst, je ví, že jsem tady předtím. 739 00:33:58,840 --> 00:34:01,100 A znovu a znovu a znovu a znovu. 740 00:34:01,100 --> 00:34:03,610 >> Takže tam je nějaký plus-plussing děje, ale oznámení 741 00:34:03,610 --> 00:34:07,090 maličkost točí někdy tak krátkodobě až nahoře a pak se odpojí, 742 00:34:07,090 --> 00:34:11,179 takže to není, že bych se konstantní Připojení k mému přístroji. 743 00:34:11,179 --> 00:34:16,929 No, když jdu do counter.php, Všimněte si, jak je to jednoduché. 744 00:34:16,929 --> 00:34:19,080 Poprvé jsem volat tento zvláštní funkce, které jsme brzy 745 00:34:19,080 --> 00:34:21,513 začnete samozřejmost volal spuštění relace. 746 00:34:21,513 --> 00:34:22,179 Spusťte relaci. 747 00:34:22,179 --> 00:34:25,095 >> A relace dále jen bude kbelík, jako nakupování 748 00:34:25,095 --> 00:34:28,120 vozík, ve kterém si můžete dát hodnoty a trochu věřit jako programátor 749 00:34:28,120 --> 00:34:31,590 že budeš tady, až se že uživatel přijde back-- druhý 750 00:34:31,590 --> 00:34:35,670 později, o hodinu později, a to i o rok později, tak dlouho, jak on nebo ona není jasné, 751 00:34:35,670 --> 00:34:37,602 jejich cookies, jak budeme nakonec vidět. 752 00:34:37,602 --> 00:34:39,310 A teď už jen mít pokud podmínka zde. 753 00:34:39,310 --> 00:34:44,679 Takže pokud v následujícím klíči, volal počítadlo je nastaveno v 754 00:34:44,679 --> 00:34:49,210 v tomto super global-- tento hash stůl, pokud will-- názvem relace, 755 00:34:49,210 --> 00:34:53,350 pak jděte do toho a chytit hodnota z session-- think 756 00:34:53,350 --> 00:34:55,250 to jako nakupování cart-- a uložte jej 757 00:34:55,250 --> 00:34:57,680 v dočasné proměnné nazvané čítač. 758 00:34:57,680 --> 00:35:02,240 >> V opačném případě, pokud je to hodnota čítače se není nastaven na tzv nákupního košíku, 759 00:35:02,240 --> 00:35:04,430 jen inicializovat na 0. 760 00:35:04,430 --> 00:35:09,830 Konečně, tady dole, jít a dát zpět do nákupních vozíků nebo zasedání 761 00:35:09,830 --> 00:35:13,000 hodnota čítače +1. 762 00:35:13,000 --> 00:35:16,730 Tak to dopadá, že tato speciální kontejner here-- 763 00:35:16,730 --> 00:35:20,355 který, opět, je jedním z nich spojen pole, pole, které můžete index 764 00:35:20,355 --> 00:35:25,010 do slov místo numbers-- přetrvává i poté, co uživatel zmizí. 765 00:35:25,010 --> 00:35:26,510 Opět platí, že půjdu zpět na stránku nyní. 766 00:35:26,510 --> 00:35:28,400 Bylo to minutu nebo tak. 767 00:35:28,400 --> 00:35:31,300 Ale to si pamatuje, že jsem zde bylo 19 krát předtím. 768 00:35:31,300 --> 00:35:32,740 To je můj 20. návštěva. 769 00:35:32,740 --> 00:35:36,560 >> A tak to bude klíčem k provádění jakékoliv webové stránky, které si pamatuje 770 00:35:36,560 --> 00:35:40,640 že jste přihlášeni, že jste dal něco doslovný do vašeho nákupního košíku 771 00:35:40,640 --> 00:35:43,902 koupit, nebo že máte některé Počet zpráv probíhá. 772 00:35:43,902 --> 00:35:45,610 Kdykoliv budete chtít zapamatovat si informace, 773 00:35:45,610 --> 00:35:48,130 uvidíme, že PHP, stejně jako několik jiných jazyků, 774 00:35:48,130 --> 00:35:53,640 nám poskytuje iluzi státu i když, jak uvidíte v pset 6, 775 00:35:53,640 --> 00:35:57,642 jak jste odesílání HTTP požadavků z klienta na server, to je vše. 776 00:35:57,642 --> 00:35:59,850 Jakmile se dostanete zpět, že odpověď, nic víc 777 00:35:59,850 --> 00:36:01,790 vrací ze serveru ve výchozím nastavení. 778 00:36:01,790 --> 00:36:03,820 Ale uvidíme, jak obejít to. 779 00:36:03,820 --> 00:36:07,430 >> No tak, pojďme se pokusit vyčistit to se trochu. 780 00:36:07,430 --> 00:36:09,470 Viděli jsme několik různých příkladech. 781 00:36:09,470 --> 00:36:12,250 Jo, a jak stranou, pro ty, kteří znají nebo neznají, 782 00:36:12,250 --> 00:36:14,230 z důvodu, že Frosh IM příklad šel 783 00:36:14,230 --> 00:36:18,060 z pohledu opravdu ošklivý dobře slightly--, 784 00:36:18,060 --> 00:36:23,160 stále ugly-- mírně méně ošklivá i když stále ošklivá 785 00:36:23,160 --> 00:36:25,230 Je to proto, podíváme-li se na zdrojový kód zde 786 00:36:25,230 --> 00:36:28,240 Ukazuje se, že to mám na samém začátku souboru. 787 00:36:28,240 --> 00:36:32,570 >> Ukazuje se, že bootstrap je jedním z mnoha volně dostupné knihovny venku 788 00:36:32,570 --> 00:36:37,140 že existují ne pro programovací jazyky vždy, ale pro CSS nebo JavaScript 789 00:36:37,140 --> 00:36:39,190 nebo HTML nebo libovolný počet jazyků. 790 00:36:39,190 --> 00:36:42,160 >> A tito lidé here-- původně vyšel 791 00:36:42,160 --> 00:36:44,730 z Twitter-- prostě celá parta stylů. 792 00:36:44,730 --> 00:36:47,360 Je to obrovský soubor zde, že někdo psal, 793 00:36:47,360 --> 00:36:51,020 nebo někdo to psal, v průběhu času, že určuje barvy a formátování 794 00:36:51,020 --> 00:36:53,740 a kdoví co ještě, takže mohu druh půjčit jejich syntaxe 795 00:36:53,740 --> 00:36:56,157 a nebudou se muset přijít na to, jak vyložit svůj formulář. 796 00:36:56,157 --> 00:36:57,990 To je také minified tak, že počítač může 797 00:36:57,990 --> 00:37:00,560 pochopit to, ale ne nutně člověk. 798 00:37:00,560 --> 00:37:03,050 Tak to je právě důvod, proč stylizace tam změnilo. 799 00:37:03,050 --> 00:37:05,450 >> Ale pojďme teď udělat lépe pokud jde o design, 800 00:37:05,450 --> 00:37:07,490 protože pokud zůstaneme dole tato cesta příliš dlouhá, 801 00:37:07,490 --> 00:37:11,290 náš kód to bude dostat chaotický a Messier. 802 00:37:11,290 --> 00:37:13,040 Tak se pojďme zaměřit na tyto příklady zde. 803 00:37:13,040 --> 00:37:15,090 Poslední pro dnešek. 804 00:37:15,090 --> 00:37:18,720 >> Takže tady je super jednoduché verze 1.0 internetových stránek CS50 je. 805 00:37:18,720 --> 00:37:21,250 Má pouze odkazy na přednášky a učební osnovy, 806 00:37:21,250 --> 00:37:25,490 a to pomocí tohoto výčtu tag-- značku UL, že jsme použili naposledy. 807 00:37:25,490 --> 00:37:28,800 A je-li ve skutečnosti, když jsem otevřít Zobrazit zdrojový kód stránky, 808 00:37:28,800 --> 00:37:31,710 uvidíte, že to je opravdu, ale opravdu jednoduchý HTML. 809 00:37:31,710 --> 00:37:35,460 A ve skutečnosti, i když je to soubor PHP pod kapotou, 810 00:37:35,460 --> 00:37:38,620 je to stále jen plivat provádět pouze HTML pro tuto chvíli. 811 00:37:38,620 --> 00:37:41,312 >> Takže když jsem klikněte na přednáškách, vidíme to stalo. 812 00:37:41,312 --> 00:37:43,020 A když jsem klikněte na týden nula, to vidíme. 813 00:37:43,020 --> 00:37:44,920 A když jsem klikněte na Středa, vidíme to. 814 00:37:44,920 --> 00:37:47,900 A to zřejmě byl PDF snímky z onoho dne. 815 00:37:47,900 --> 00:37:52,020 Všechno, co jsem udělal, je spojení s kotva tag na tuto adresu URL zde. 816 00:37:52,020 --> 00:37:55,400 >> Takže je to jen říci, je to docela jednoduchá verze stránek CS50 je. 817 00:37:55,400 --> 00:37:56,790 Pojďme se podívat, jak to provést. 818 00:37:56,790 --> 00:38:01,240 Pokud jdu do adresáře mvc0, uvidíme několik souborů. 819 00:38:01,240 --> 00:38:03,250 Jedním z nich je README, takže pokud Částečně je to příliš rychle, 820 00:38:03,250 --> 00:38:05,166 stačí strčit kolem klidnější později. 821 00:38:05,166 --> 00:38:07,930 A upozornění zde je soubor index.php. 822 00:38:07,930 --> 00:38:09,960 Ukazuje se, že v případě, Vy sám, člověk, 823 00:38:09,960 --> 00:38:14,460 nezadáte konečný název URL, webový server obvykle 824 00:38:14,460 --> 00:38:17,010 vyvozuje nějaké výchozí název pro Vás. 825 00:38:17,010 --> 00:38:20,060 Index tečka něco je obecně nastavena jako výchozí. 826 00:38:20,060 --> 00:38:23,010 >> Takže to je důvod, proč před chvílí když jsem navštívil tuto adresu URL zde 827 00:38:23,010 --> 00:38:26,750 žádný soubor, žádný soubor rozšíření, žádné období v URL. 828 00:38:26,750 --> 00:38:29,710 Je to prostě věděl, že nějak magicky hledat index.php. 829 00:38:29,710 --> 00:38:30,870 Je to jen konvence. 830 00:38:30,870 --> 00:38:32,360 By se dalo nazvat cokoliv. 831 00:38:32,360 --> 00:38:35,110 >> Takže když jsem teď jít do index.php, uvidíte 832 00:38:35,110 --> 00:38:37,100 že indeed-- pojďme zbavit komentářů 833 00:38:37,100 --> 00:38:39,500 tady, protože je to opravdu nic zajímavého na to-- 834 00:38:39,500 --> 00:38:41,579 To je jen pevný kódované HTML. 835 00:38:41,579 --> 00:38:43,370 Tak to je v souladu, když se mé žaloby 836 00:38:43,370 --> 00:38:45,230 že můžete mísit HTML a PHP. 837 00:38:45,230 --> 00:38:48,060 Neexistuje žádný skutečný programování logiky zde. 838 00:38:48,060 --> 00:38:51,030 >> A ostatní soubory jsou docela hodně stejně nezajímavé. 839 00:38:51,030 --> 00:38:56,240 Je to jen pevně týden jeden zde týden jeden metr a týden jeden watt, 840 00:38:56,240 --> 00:38:57,510 na pondělí a ve středu. 841 00:38:57,510 --> 00:39:01,890 A pak když jsem otevřít týden nula, Všimněte si, že je to téměř totožné. 842 00:39:01,890 --> 00:39:03,320 >> A to je něco jako klíčové stánek s jídlem. 843 00:39:03,320 --> 00:39:06,180 Všimněte si, jak je to nadbytečné. 844 00:39:06,180 --> 00:39:10,710 Tyto soubory stěží změnit, a přesto jsem vytáhl jednu z těchto copy / paste pracovních míst 845 00:39:10,710 --> 00:39:13,420 kde jsem vzal jednu file-- pravděpodobně v týdnu zero-- zkopírovali 846 00:39:13,420 --> 00:39:16,320 když jeden týden obešel, a vylepšil několik hodnot. 847 00:39:16,320 --> 00:39:18,590 Měli bychom být schopni dělat lépe než tohle. 848 00:39:18,590 --> 00:39:21,800 >> Takže se vraťme do MVC a jít do verze jedna. 849 00:39:21,800 --> 00:39:24,810 A všimněte si mám několik souborů, protože to, co 850 00:39:24,810 --> 00:39:29,870 bylo společné pro všechny tyto soubory moment ago-- pokud se vrátím k verzi 0, 851 00:39:29,870 --> 00:39:32,600 vraťme se do indexu, a jen postulate-- 852 00:39:32,600 --> 00:39:36,090 Jednou jsem se zbavit comments-- jaká část této stránky 853 00:39:36,090 --> 00:39:40,072 Zřejmě je v každém z mých souborů? 854 00:39:40,072 --> 00:39:40,780 Stačí zavolat na to. 855 00:39:40,780 --> 00:39:44,620 Které řádky jsou duplikovány pravděpodobně přes všechny tyto stránky? 856 00:39:44,620 --> 00:39:45,120 Jo? 857 00:39:45,120 --> 00:39:46,110 >> STUDENT: [neslyšitelné]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. Malan: 1 až 9. 859 00:39:47,660 --> 00:39:48,720 Jo, určitě. 860 00:39:48,720 --> 00:39:52,080 1 až 9, snad s výjimkou 8 změní trochu z následujících důvodů CS50 861 00:39:52,080 --> 00:39:54,650 stává přednášky nebo týden nula, nebo tak něco. 862 00:39:54,650 --> 00:39:55,970 Ale téměř totožné. 863 00:39:55,970 --> 00:39:58,657 Takže tohle všechno je jen druh zkopírovat a vložit. 864 00:39:58,657 --> 00:40:00,490 A je tu pár jiné linky Neumím si 865 00:40:00,490 --> 00:40:05,000 z toho jsou pravděpodobně stejné ve všech souborů. 866 00:40:05,000 --> 00:40:06,315 >> STUDENT: 12 a 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. Malan: Jo. 868 00:40:07,190 --> 00:40:11,220 Jistě, 12, 13, 14 a pravděpodobně jen proto, že se zajímavé věci 869 00:40:11,220 --> 00:40:15,460 se děje na tratích 11 a 10, takže by se mohlo zdát. 870 00:40:15,460 --> 00:40:18,350 Takže pojďme se podívat na verzi 1, který se snaží zlepšit to. 871 00:40:18,350 --> 00:40:24,020 Ve verzi 1 tohoto MVC example-- potkáme vysvětlit, co mvc prostředky v moment-- 872 00:40:24,020 --> 00:40:27,420 když půjdu do indexu, je to druh teď vypadá trochu matoucí. 873 00:40:27,420 --> 00:40:28,880 Není to tak jednoduché jako dřív. 874 00:40:28,880 --> 00:40:30,906 >> Ale jakmile začnete pozorně si ji přečtěte, je to 875 00:40:30,906 --> 00:40:32,530 velice jednoduché, co to dělá. 876 00:40:32,530 --> 00:40:34,397 Zřejmě řádek 1 a linka 8 byly nahrazeny 877 00:40:34,397 --> 00:40:37,230 všechny věci, které jste právě identified-- i když jen na správnou míru, 878 00:40:37,230 --> 00:40:41,900 Nechal jsem ULS tam jen v případě, že některé dnů neměl seznam věcí. 879 00:40:41,900 --> 00:40:47,860 A to vyžaduje, je něco jako libry zahrnout do C. Tato volba zkopíruje a pasty 880 00:40:47,860 --> 00:40:50,470 Obsah účinně tady do tohoto souboru. 881 00:40:50,470 --> 00:40:53,650 >> Takže header.php, jako vy lze usoudit z jeho názvu, 882 00:40:53,650 --> 00:40:55,330 bude záhlaví stránky. 883 00:40:55,330 --> 00:40:57,110 Je to tady trochu kopie. 884 00:40:57,110 --> 00:41:01,820 Má jen odshora, ale už není obsah níže. 885 00:41:01,820 --> 00:41:05,070 >> A pokud se podívám na zápatí mezitím, který byl jiný soubor mentioned-- 886 00:41:05,070 --> 00:41:08,830 tohle je ještě méně zajímavé, ale zase je to běžné na všechno. 887 00:41:08,830 --> 00:41:10,250 Tak tohle je zápatí. 888 00:41:10,250 --> 00:41:11,300 Toto je záhlaví. 889 00:41:11,300 --> 00:41:13,950 Jedná se o soubor, který je mění, tak proč ne 890 00:41:13,950 --> 00:41:18,140 se snaží vytknout commonality s těmito dvěma linkami tady? 891 00:41:18,140 --> 00:41:20,090 >> Ale můžeme vyčistit to se trochu dál. 892 00:41:20,090 --> 00:41:23,260 Chystám se jít dopředu a otevřít verze dvě, kde 893 00:41:23,260 --> 00:41:27,106 uvidíme, že je tu nový soubor, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Uvidíme, co to je za chvíli. 895 00:41:28,610 --> 00:41:30,930 Pojďme do indexu, jak vstupní bod jako předtím. 896 00:41:30,930 --> 00:41:35,230 >> A teď si všimnout jsem vyžadující helpers.php, ne záhlaví nebo zápatí. 897 00:41:35,230 --> 00:41:41,720 Ale pomocníci je něco jako helpers.c a helpers.h z pset 2 898 00:41:41,720 --> 00:41:46,150 nebo pset 3 dávno, když jste vlastně se hledat a najít pro tuto pset, 899 00:41:46,150 --> 00:41:50,950 a vy jste museli všechny své kód pro třídění a vyhledávání v samostatném souboru. 900 00:41:50,950 --> 00:41:52,510 To je to, co se tady děje. 901 00:41:52,510 --> 00:41:54,390 >> A teď řádek 3 vypadá trochu jinak. 902 00:41:54,390 --> 00:41:55,920 A to je jen jeden řádek. 903 00:41:55,920 --> 00:41:57,950 Aby to bylo ještě více jasné, mohl jsem jen 904 00:41:57,950 --> 00:42:01,820 to, že se tento stylisticky konzistentní se vším jsme udělali. 905 00:42:01,820 --> 00:42:04,130 Ale ve skutečnosti to není změně funkce. 906 00:42:04,130 --> 00:42:05,880 Je to jen jeden řádek skutečného kódu. 907 00:42:05,880 --> 00:42:09,010 >> Zdá se, že je tu funkce někam volal činí záhlaví, 908 00:42:09,010 --> 00:42:11,420 a to je místo, kde se věci pěkně silný. 909 00:42:11,420 --> 00:42:17,040 Všimněte si, že uvnitř jeho závorkách Je to, co jiný kus syntaxe? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Je to asi trochu těžké říci, ale Všimněte si there's-- Dám nějaký bílý 912 00:42:23,350 --> 00:42:24,300 prostor. 913 00:42:24,300 --> 00:42:25,530 K dispozici je hranaté závorky. 914 00:42:25,530 --> 00:42:29,700 >> A hranaté závorky jsme viděli před trochu v souvislosti s asociativních polí, 915 00:42:29,700 --> 00:42:31,580 které jsou, opět, stejně jako stoly mřížky. 916 00:42:31,580 --> 00:42:36,230 A pokud si myslíte, že teď na C, pořadí argumentů do funkce 917 00:42:36,230 --> 00:42:37,570 musí být vždy stejná. 918 00:42:37,570 --> 00:42:41,146 Musíte si uvědomit, co se objednat je-- X, Y, Z nebo Z, Y, x-- 919 00:42:41,146 --> 00:42:44,020 a vy budete muset vždy poskytnout jim ve stejném pořadí, nebo je vyhledat 920 00:42:44,020 --> 00:42:45,100 Pokud jste zapomněli. 921 00:42:45,100 --> 00:42:51,140 >> Ale to se zdá být chytrý způsob, předávání libovolnou hodnotu klíče 922 00:42:51,140 --> 00:42:55,840 páry, přičemž název je název argumentu, v tomto případě 923 00:42:55,840 --> 00:42:58,334 a CS50 je jeho hodnota. 924 00:42:58,334 --> 00:43:00,250 A skutečnost, že jsem Tyto hranaté závorky 925 00:43:00,250 --> 00:43:02,560 zde znamená, že jsem mohl také projít do něčeho 926 00:43:02,560 --> 00:43:07,550 jako týden je 1 nebo 0, nebo 2 nebo 3. 927 00:43:07,550 --> 00:43:10,550 Proto jsme parametrizovat Tato funkce tak, aby 928 00:43:10,550 --> 00:43:15,180 že to může trvat několik vstupů, ale teď je to jen jeden. 929 00:43:15,180 --> 00:43:20,060 >> Pokud bych teď jít do helpers.php, Všimněte si, co to dělá. 930 00:43:20,060 --> 00:43:22,030 To je trochu nové funkce, 931 00:43:22,030 --> 00:43:24,190 ale teď jen se na víře, že je to 932 00:43:24,190 --> 00:43:26,570 syntax, se kterou definovat funkci v PHP. 933 00:43:26,570 --> 00:43:27,840 Doslova říkají funkce. 934 00:43:27,840 --> 00:43:30,090 Nezadáte návrat typu, a to v souladu 935 00:43:30,090 --> 00:43:33,880 s proměnnou detail dříve kde nemáte opravdu silně typu. 936 00:43:33,880 --> 00:43:35,650 >> To jen určuje, to, že ve výchozím nastavení tato 937 00:43:35,650 --> 00:43:37,460 vezme asociativní pole jako argument. 938 00:43:37,460 --> 00:43:38,210 A víte co? 939 00:43:38,210 --> 00:43:41,450 V případě, že uživatel neprojde jeden v předpokládejme, že výchozí hodnotu. 940 00:43:41,450 --> 00:43:44,680 >> To je funkce, která C nemá pro nás, což je příjemné, protože teď 941 00:43:44,680 --> 00:43:46,430 údaje, i když nedávají to nic, 942 00:43:46,430 --> 00:43:49,300 bude pole, ale prázdná. 943 00:43:49,300 --> 00:43:51,860 A jako stranou, extrakt jen dělá něco funky 944 00:43:51,860 --> 00:43:56,380 kde to má všechny klíče z toho asociativní pole, všechny ty věci, 945 00:43:56,380 --> 00:43:59,950 byste mohli dát v hranatých závorkách, a vytváří proměnné z nich 946 00:43:59,950 --> 00:44:06,270 takže můžeme mít přístup nakonec na ně footet.php a header.php. 947 00:44:06,270 --> 00:44:08,950 To je trochu abstraktní, tak mi dovolte upozornit na to. 948 00:44:08,950 --> 00:44:12,990 >> V index.php, všimněte si, že jsem projde v hodnotě páru klíčů vlastnictví 949 00:44:12,990 --> 00:44:14,850 s hodnotou CS50. 950 00:44:14,850 --> 00:44:18,660 Pokud se teď podíváte na helpers.php, Všimněte si, že RenderHeader 951 00:44:18,660 --> 00:44:23,870 je extrahování, že údaje, které jsem procházejícího , a pak vyžaduje header.php. 952 00:44:23,870 --> 00:44:27,970 To, co jsem udělal, je trochu chudý člověk je Provádění nyní z následujících. 953 00:44:27,970 --> 00:44:31,720 >> Pokud otevřu header.php, Všimněte si, že jsem už těžko 954 00:44:31,720 --> 00:44:34,890 kódované slovo CS50 v tomto hlavičkovém souboru. 955 00:44:34,890 --> 00:44:39,310 Dal jsem to sice ukrutně s názvem funkce, speciální znaky HTML, 956 00:44:39,310 --> 00:44:40,170 tam. 957 00:44:40,170 --> 00:44:41,640 Povšimněme si ale, co jsem udělal. 958 00:44:41,640 --> 00:44:44,240 Mám otevřený HTML. 959 00:44:44,240 --> 00:44:47,420 Pak mám otevřenou hlavu a otevřené titul. 960 00:44:47,420 --> 00:44:52,380 >> A pak uvnitř názvu je otevřený a zavřít značky, mám trochu PHP kódu. 961 00:44:52,380 --> 00:44:56,670 A to je pěkné, ale syntaxe, což prostě znamená, echo ven. 962 00:44:56,670 --> 00:44:59,840 To doslova znamená tohle-- echo following-- 963 00:44:59,840 --> 00:45:01,910 ale to je svůdnější psát. 964 00:45:01,910 --> 00:45:05,000 Echo z titulu která byla předána v. 965 00:45:05,000 --> 00:45:07,560 >> Ale co si myslíte, že HTML speciální char je o, 966 00:45:07,560 --> 00:45:10,590 zvláště pokud máte některé předchozí HTML zkušenost? 967 00:45:10,590 --> 00:45:14,050 Jaké znaky by mohly být nebezpečné předat na stránku 968 00:45:14,050 --> 00:45:17,980 kam dynamicky generovat webové stránky s kódem, jako je tento? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Nech mě jít do tohoto souboru, verze dva, a uvidíme, jestli nemůžu vyvolat to. 971 00:45:24,650 --> 00:45:26,210 >> Verze dvě je to. 972 00:45:26,210 --> 00:45:28,510 A všimněte si vše je v pořádku, funguje dobře. 973 00:45:28,510 --> 00:45:35,280 Ale předpokládám, že jdu do index.php a I upřesnil, že název mé stránky 974 00:45:35,280 --> 00:45:36,630 není CS50. 975 00:45:36,630 --> 00:45:44,930 Je otevřena držák skript upozornění hello world, blízko jeden citát, 976 00:45:44,930 --> 00:45:49,740 v blízkosti závorka, středník, otevřený držák, lomítko skript. 977 00:45:49,740 --> 00:45:51,897 >> Script, jak jsme to nakonec vidět, je tag 978 00:45:51,897 --> 00:45:54,480 které můžete použít k použití jiného programovací jazyk nazvaný 979 00:45:54,480 --> 00:45:56,330 JavaScript uvnitř webové stránky. 980 00:45:56,330 --> 00:45:57,960 A teď si všimnout tu logiku. 981 00:45:57,960 --> 00:45:59,840 Zde je klíčovým nazývá titulu. 982 00:45:59,840 --> 00:46:02,690 Zde je, že je to šílené dlouhé hodnoty nyní. 983 00:46:02,690 --> 00:46:07,840 >> Ale když jdu do pomocníků Page- nebo spíše, záhlaví stránky, 984 00:46:07,840 --> 00:46:11,310 Volám tuto funkci na tento titul jako první. 985 00:46:11,310 --> 00:46:15,250 Takže když jsem teď tuto stránku znovu načíst, I vidět, který vypadá směšně, 986 00:46:15,250 --> 00:46:16,110 ale je to bezpečné. 987 00:46:16,110 --> 00:46:17,310 Je to prostě vypadá hloupě. 988 00:46:17,310 --> 00:46:20,320 >> Předpokládejme však, že místo toho, Zapomněl jsem, že to. 989 00:46:20,320 --> 00:46:24,660 A má slova, nenulové číslo z vás se zapomenout, jak to udělat 990 00:46:24,660 --> 00:46:27,790 a budete mít nějaký pracovitý student nebo přítel přijde 991 00:46:27,790 --> 00:46:31,540 pro vás na CS50 veletrhu nebo anonymně v noci šťourat na vašich webových stránkách 992 00:46:31,540 --> 00:46:35,300 a v podstatě injekční kód unbeknownst vám do vašich stránek 993 00:46:35,300 --> 00:46:35,800 nějak. 994 00:46:35,800 --> 00:46:39,000 >> Protože když jsem prostě plivat z titulu zde a titul 995 00:46:39,000 --> 00:46:44,330 there-- dobře, pokud titul doslovně vypadá takto a PHP 996 00:46:44,330 --> 00:46:47,660 jako jazyk, který může plivat z jiných jazyků textu, 997 00:46:47,660 --> 00:46:50,650 to je doslova děje nahradit tuto značku, 998 00:46:50,650 --> 00:46:53,010 Samozřejmě, to, co jsem dal jinde. 999 00:46:53,010 --> 00:46:57,640 >> Takže když jsem teď jít sem a znovu po rozepnul ty bezpečnostní mechanismy, 1000 00:46:57,640 --> 00:46:59,982 teď mám ahoj svět zde. 1001 00:46:59,982 --> 00:47:02,690 Teď to není vše tak velký řešit, ale můžete udělat něco 1002 00:47:02,690 --> 00:47:05,119 trochu nebezpečný tu, jako by to 1003 00:47:05,119 --> 00:47:08,410 další tags-- jak uvidíme, až budeme trávit více času JavaScript-- jako umístění 1004 00:47:08,410 --> 00:47:14,910 dot href dostane, citace, konec citátu, HTTP business.com, ale opak toho 1005 00:47:14,910 --> 00:47:15,950 z druhého dne. 1006 00:47:15,950 --> 00:47:20,120 A teď můžete navodit web strana skutečně jít okamžitě 1007 00:47:20,120 --> 00:47:21,190 na této webové stránce zde. 1008 00:47:21,190 --> 00:47:23,000 >> A vlastně, já nechci dokonce jít do business.com 1009 00:47:23,000 --> 00:47:24,749 protože nechci vědět, co to je. 1010 00:47:24,749 --> 00:47:28,710 Ale i to, spustí kód být aplikován na této stránce. 1011 00:47:28,710 --> 00:47:32,680 Takže je to jen říci, že i když představujeme výborný brzy na některých 1012 00:47:32,680 --> 00:47:36,800 těchto složitějších struktur, to vše ke konci roku ujistěte se, 1013 00:47:36,800 --> 00:47:39,320 že váš kód není využitelný. 1014 00:47:39,320 --> 00:47:40,960 >> Takže teď třetí verze zde. 1015 00:47:40,960 --> 00:47:42,470 Začíná to být trochu obsáhlejší. 1016 00:47:42,470 --> 00:47:44,875 Já jsem opravdu like-- anální strana o mně 1017 00:47:44,875 --> 00:47:47,750 byl už trochu naštvaný Skutečnost, že jsem se funkce nazývá 1018 00:47:47,750 --> 00:47:51,940 RenderHeader a RenderFooter že jsou téměř totožné. 1019 00:47:51,940 --> 00:47:55,400 Tak mě napadlo, proč ne I parametrizaci těchto funkcí 1020 00:47:55,400 --> 00:47:59,180 na jen jeden volal činí, mají trvat i druhý argument 1021 00:47:59,180 --> 00:48:04,420 jako jméno šablony, konečný na render-- buď záhlaví nebo zápatí? 1022 00:48:04,420 --> 00:48:07,160 A potom případně, pokud chci předat v některých párů klíčových hodnot 1023 00:48:07,160 --> 00:48:10,580 jako já o titul pro header ale ne pro zápatí, 1024 00:48:10,580 --> 00:48:11,800 Nemohl jsem to udělat. 1025 00:48:11,800 --> 00:48:16,510 >> A tak teď, když půjdu do helpers.php, je to trochu složitější. 1026 00:48:16,510 --> 00:48:19,670 A já budu mávat své ruce na detaily, ale je to jen jedna funkce. 1027 00:48:19,670 --> 00:48:21,890 Takže je to krok směrem k lepšímu designu. 1028 00:48:21,890 --> 00:48:23,360 >> Můžeme si vzít ještě o krok dál. 1029 00:48:23,360 --> 00:48:28,890 Pokud jdu do své čtvrté verze toho všimnete nyní 1030 00:48:28,890 --> 00:48:31,320 že dělám něco ještě trochu tajemný. 1031 00:48:31,320 --> 00:48:33,230 A vím, že to je Mnoho absorbovat najednou, 1032 00:48:33,230 --> 00:48:35,080 ale my jsme tak nějak čištění věci. 1033 00:48:35,080 --> 00:48:38,550 Teď dávám své pomocníky soubor do složky s názvem 1034 00:48:38,550 --> 00:48:41,190 includes-- jen libovolná jméno, kde chci, aby věci 1035 00:48:41,190 --> 00:48:44,300 že chci include-- a pak Zbytek je stejný. 1036 00:48:44,300 --> 00:48:47,140 >> Ale když se podívám teď gedit, Všimněte si, že jsem se dostal zbavit 1037 00:48:47,140 --> 00:48:51,940 ze všech těch ostatních souborů a jsem přesunula například na zde. 1038 00:48:51,940 --> 00:48:55,110 A pak se v šablonách, Mám to tady taky. 1039 00:48:55,110 --> 00:48:59,292 A tak to je vše nyní k krok použití mnohem lepší návrhový vzor. 1040 00:48:59,292 --> 00:49:01,000 A my jsme se velmi rychle chystá odejít 1041 00:49:01,000 --> 00:49:03,870 z výchozího funkce PHP, které jsme zde začali s, 1042 00:49:03,870 --> 00:49:07,655 kde stačí mísit PHP, a vaše HTML, CSS a vaše, 1043 00:49:07,655 --> 00:49:09,780 a vy prostě vyplivnout a jdete o vaší cestě. 1044 00:49:09,780 --> 00:49:11,404 Není to bude velmi udržovatelný. 1045 00:49:11,404 --> 00:49:14,481 Stejně jako v C, jsme začali používat více souborů a více funkcí 1046 00:49:14,481 --> 00:49:15,730 a factoring věci, že z. 1047 00:49:15,730 --> 00:49:16,688 Uděláme tu totéž. 1048 00:49:16,688 --> 00:49:19,970 A ve skutečnosti, v páté a poslední verze zde, jsem udělal jednu věc. 1049 00:49:19,970 --> 00:49:23,710 Můžete dokonce použít dot dot, který znovu, je jen nadřazený adresář. 1050 00:49:23,710 --> 00:49:28,260 Chcete-li být ještě větší bezpečnost při vědomí, protože když se podívám na poslech 1051 00:49:28,260 --> 00:49:32,450 zde pátý a poslední verze, oznámení že mám jeden adresář s názvem zde 1052 00:49:32,450 --> 00:49:35,180 veřejnost, a pak na stejné úrovni, abych tak řekl, 1053 00:49:35,180 --> 00:49:38,490 Mám zahrnuje a šablony a pak, že textový soubor readme. 1054 00:49:38,490 --> 00:49:41,130 >> A důvod, proč jsem se strukturovanou to rád tohle-- a tolik web 1055 00:49:41,130 --> 00:49:44,330 hostitelé, zejména těch, které 5dolar měsíc ty nebo ty 10 dolarů měsíc, 1056 00:49:44,330 --> 00:49:47,170 pokud jste někdy měl jeden z nich services-- co tak mnohé z nich 1057 00:49:47,170 --> 00:49:50,690 je prostě očekávají, že budete vypsat všechny vaše soubory do jednoho adresáře, 1058 00:49:50,690 --> 00:49:53,640 jako jsme to udělali už s Tento první příklad. 1059 00:49:53,640 --> 00:49:56,740 >> Ale jakmile začnete stavět více sofistikované stránky, které právě uložit 1060 00:49:56,740 --> 00:50:00,480 Data vám záleží, a soubory, které jste péče o, vlastně organizovat věci 1061 00:50:00,480 --> 00:50:05,060 správně a větší bezpečnost vědomí v mysli může 1062 00:50:05,060 --> 00:50:07,927 začneme se bránit proti všem přátelům 1063 00:50:07,927 --> 00:50:10,135 že máte buď nebo mimo této třídy, který, 1064 00:50:10,135 --> 00:50:12,510 Jakmile začnete dělat programy sami na webu, 1065 00:50:12,510 --> 00:50:15,140 se chystáte začít výběrem na vás a na nich. 1066 00:50:15,140 --> 00:50:17,420 >> A tak se podíváme nakonec se na tento návrh. 1067 00:50:17,420 --> 00:50:20,010 To je jen obrázek který znázorňuje následující. 1068 00:50:20,010 --> 00:50:22,897 Chystáme se dát všechny naše programování logiky v jednom nebo více souborů, 1069 00:50:22,897 --> 00:50:25,230 a budeme jen začít volání těchto řadičů. 1070 00:50:25,230 --> 00:50:28,022 To je místo, kde mozek Naše webové stránky ve skutečnosti jsou. 1071 00:50:28,022 --> 00:50:29,730 Pak jedeme do mají výhled a výhled 1072 00:50:29,730 --> 00:50:32,480 jsou tak jednoduché, jak jen samostatné files-- tzv šablony, často. 1073 00:50:32,480 --> 00:50:34,410 Oni prostě mají estetika mé stránce, 1074 00:50:34,410 --> 00:50:37,020 to, co chci stránka vypadat like-- barvy a rozvržení 1075 00:50:37,020 --> 00:50:38,870 a pozice všechny proměnné. 1076 00:50:38,870 --> 00:50:41,120 >> A pak ještě zajímavější že budeme nakonec dostat 1077 00:50:41,120 --> 00:50:45,420 je model, který se bude jen slovo, které plácnout na jiných technologiích 1078 00:50:45,420 --> 00:50:47,771 že přinášíme do obrázek, stejně jako aktuální databází, 1079 00:50:47,771 --> 00:50:49,520 takže když budete chtít uložit informace, 1080 00:50:49,520 --> 00:50:52,140 nemusíte jen poslat e-mail do svého prokuristy nebo sami sobě, 1081 00:50:52,140 --> 00:50:57,350 skutečně uložit do databáze použít jiný jazyk, známý jako SQL. 1082 00:50:57,350 --> 00:51:00,450 A tak jsme si dnes tu nechat a vyzvednout s tím ve středu 1083 00:51:00,450 --> 00:51:02,990 a zavést databází poté. 1084 00:51:02,990 --> 00:51:06,940 >> [Přehrávání hudby] 1085 00:51:06,940 --> 00:54:24,555