1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [8-та седмица Продължава] 2 00:00:02,000 --> 00:00:04,000 [Дейвид Дж. Малан] [Харвардския университет] 3 00:00:04,000 --> 00:00:08,000 [Това е CS50. [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Това е CS50, така че това е краят на седмица 8 тук. 5 00:00:13,000 --> 00:00:16,000 Ние разбира се, имат малко ураган по-рано тази седмица, 6 00:00:16,000 --> 00:00:19,000 така че сега това е наистина само аз и ти в тази лекция зала, 7 00:00:19,000 --> 00:00:22,000 но днес ние продължаваме нашия разговор за PHP 8 00:00:22,000 --> 00:00:25,000 и за уеб програмиране по-общо, и ние също се въведе идеята 9 00:00:25,000 --> 00:00:29,000 на бази данни, по-специално един, наречен MySQL, която е доста популярна в наши дни, 10 00:00:29,000 --> 00:00:34,000 в голяма степен благодарение на своята мащабируемост, както и, тъй като е свободен и с отворен код. 11 00:00:34,000 --> 00:00:37,000 >> Но първо, погледнете там, където бяхме последния път. 12 00:00:37,000 --> 00:00:40,000 Спомнете си, че гледах няколко примера Frosh УИ, 13 00:00:40,000 --> 00:00:44,000 и това е отвратителна форма, че съм дошъл с около 15 + години 14 00:00:44,000 --> 00:00:49,000 , за да имат студентите в университета регистър за първокурсници интрамурални спорт 15 00:00:49,000 --> 00:00:52,000 без да се налага дълго и мъчително пътуване през двора вече да Уигълзуърт 16 00:00:52,000 --> 00:00:56,000 да се плъзга физическо парче хартия под вратата някои Проктър. 17 00:00:56,000 --> 00:00:59,000 Вместо това ние се преместихме всичко онлайн, но да се направи, че трябва да се възползват 18 00:00:59,000 --> 00:01:03,000 на няколко технологии, така че, нямаме нужда от HTML, Hypertext Markup Language, 19 00:01:03,000 --> 00:01:07,000 което отново е този език за маркиране, с които да направите уеб страници структурно. 20 00:01:07,000 --> 00:01:10,000 >> С помощта на малко CSS тези дни, Cascading Style Sheets, 21 00:01:10,000 --> 00:01:16,000 което ние използваме стилизация на уеб страница с помощта на малко по-различен синтаксис, 22 00:01:16,000 --> 00:01:19,000 като има предвид, че HTML е за структурата него. 23 00:01:19,000 --> 00:01:21,000 Ние също трябва да въведе уеб език за програмиране. 24 00:01:21,000 --> 00:01:25,000 В този случай, ние ще използваме PHP и PHP ще ни позволи 25 00:01:25,000 --> 00:01:28,000 за динамично изход съдържание, както и програмни неща като 26 00:01:28,000 --> 00:01:33,000 изпращане на имейли, както беше случаят на бележката, напусна миналата седмица. 27 00:01:33,000 --> 00:01:35,000 >> Спомнете си, че кодът за това е в две части. 28 00:01:35,000 --> 00:01:38,000 Едно, имахме froshims3.php, 29 00:01:38,000 --> 00:01:42,000 и това е до голяма степен маркиране с HTML форма вътре в него, 30 00:01:42,000 --> 00:01:45,000 една малка част от CSS тук в стила атрибути 31 00:01:45,000 --> 00:01:48,000 така че самата форма ще бъде центрирано на страницата, но освен това 32 00:01:48,000 --> 00:01:51,000 имахме някои представителни входове форма, текстово поле, Checkbox, 33 00:01:51,000 --> 00:01:55,000 някои радио бутони, изберете меню и бутон "Изпращане". 34 00:01:55,000 --> 00:02:01,000 И чрез този формуляр, ние внесохме в файл, който очевидно е бил наречен register3.php, 35 00:02:01,000 --> 00:02:04,000 което от своя страна изглеждаше малко нещо подобно. 36 00:02:04,000 --> 00:02:08,000 Сега, по-голямата част от код в register3.php, изземване, за електронна поща. 37 00:02:08,000 --> 00:02:11,000 Малко валидиране на формуляр, който бе представен, за да се уверите, 38 00:02:11,000 --> 00:02:14,000 че полетата са били действително при условие, че се очаква. 39 00:02:14,000 --> 00:02:18,000 После се обадихме някои PHP функции чрез малко по-нов синтаксис, 40 00:02:18,000 --> 00:02:20,000 въпреки че е взаимствана от C. 41 00:02:20,000 --> 00:02:24,000 >> Тази стрелка оператор ни позволява да направим използването на нещо, което се нарича обектно-ориентираното програмиране. 42 00:02:24,000 --> 00:02:27,000 Ние няма да отида в това в подробности тук, но знам за сега 43 00:02:27,000 --> 00:02:31,000 това е начин на функции, свързани с обекти, 44 00:02:31,000 --> 00:02:34,000 които са специално типа на конструкцията, както видяхме в C. 45 00:02:34,000 --> 00:02:37,000 Но за сега, просто вземете на вярата, че това е правилния синтаксис за използване 46 00:02:37,000 --> 00:02:41,000 при използване на библиотека като тази библиотека PHPMailer. 47 00:02:41,000 --> 00:02:44,000 И след това, до края на този файл бяхме динамично генерирани имейл 48 00:02:44,000 --> 00:02:47,000 , които се изпращат да ми jharvard@cs50.net сметка 49 00:02:47,000 --> 00:02:50,000 от моя jharvard@cs50.net сметка, 50 00:02:50,000 --> 00:02:54,000 и ние информира потребителя, че те са били регистрирани за този спорт. 51 00:02:54,000 --> 00:02:57,000 Това е до голяма степен това Frosh УИ сайт всички тези години 52 00:02:57,000 --> 00:03:00,000 когато го реализира, предоставени на друг език, 53 00:03:00,000 --> 00:03:02,000 но може би той ви показва силата, която имате 54 00:03:02,000 --> 00:03:05,000 сега, че можете да изразите себе си не само програмно 55 00:03:05,000 --> 00:03:08,000 на ниско ниво на език, като C, но на много по-високо ниво 56 00:03:08,000 --> 00:03:11,000 с тези съвсем реални приложения по света като имейл, за да решават 57 00:03:11,000 --> 00:03:13,000 някои реални световните проблеми. 58 00:03:13,000 --> 00:03:16,000 >> Сега, разбира се, макар че аз използвам този скрипт за генериране на някои 59 00:03:16,000 --> 00:03:20,000 имейли динамично от jharvard@cs50.net, която всъщност е на сметка 60 00:03:20,000 --> 00:03:23,000 , че имам достъп до, да бъдат доста внимателни, за да изпратите 61 00:03:23,000 --> 00:03:26,000 поща само от сметки, които всъщност са вашите собствени, 62 00:03:26,000 --> 00:03:30,000 да не би нещата, които можете да получите в малко топла вода в живота. 63 00:03:30,000 --> 00:03:35,000 С това каза, нека сега преход към решаването на друг проблем като цяло, 64 00:03:35,000 --> 00:03:37,000 че на подпорни държави. 65 00:03:37,000 --> 00:03:39,000 Сега, какво означава това всъщност означава? 66 00:03:39,000 --> 00:03:42,000 HTTP, този хипертекст трансфер протокол, 67 00:03:42,000 --> 00:03:45,000 всъщност е без гражданство протокол, и какво означава това е, че 68 00:03:45,000 --> 00:03:48,000 когато дръпнете нещо като Google.com и след това натиснете Enter 69 00:03:48,000 --> 00:03:51,000 обикновено браузърът ви има някаква на предене иконата, че тогава 70 00:03:51,000 --> 00:03:54,000 резултатите в някои уеб страница се изтеглят, 71 00:03:54,000 --> 00:03:57,000 спре да се върти и след това, че малка икона, и че в действителност предполага 72 00:03:57,000 --> 00:04:02,000 HTTP е завършил някаква връзка със сървъра и това е всичко. 73 00:04:02,000 --> 00:04:05,000 HTTP е без гражданство, в смисъл, че не поддържа 74 00:04:05,000 --> 00:04:08,000 постоянна връзка със сървъра по същия начин Skype 75 00:04:08,000 --> 00:04:11,000 или Gchat прави, защото с HTTP 76 00:04:11,000 --> 00:04:15,000 предположението е, че след като веднъж сте пресилено уеб страница, че това е. 77 00:04:15,000 --> 00:04:18,000 >> Сега, в действителност тези дни в сайтове като Facebook и Google Maps 78 00:04:18,000 --> 00:04:21,000 и Twitter и други подобни има много по-голяма динамика, при която 79 00:04:21,000 --> 00:04:25,000 дори и след тази икона ви спре да се върти в действителност може да получите повече актуализации 80 00:04:25,000 --> 00:04:29,000 от сървър, повече туитове, повече актуализации на статуса на Facebook и други подобни. 81 00:04:29,000 --> 00:04:33,000 Но дори и това е с помощта на техника, която ние ще говорим за една или две седмици 82 00:04:33,000 --> 00:04:36,000 известен като Аякс с помощта на език, наречен JavaScript, 83 00:04:36,000 --> 00:04:38,000 но в края на деня, HTTP все още е без гражданство. 84 00:04:38,000 --> 00:04:42,000 И все пак, ако искате по някакъв начин да си спомня неща за потребител 85 00:04:42,000 --> 00:04:44,000 дори след като са откъснати от вашия сървър 86 00:04:44,000 --> 00:04:47,000 PHP си позволят сте средство за постигане на тази 87 00:04:47,000 --> 00:04:52,000 защото, както видяхме последния път, PHP има редица свръхглобални 88 00:04:52,000 --> 00:04:55,000 и супер отново е специална глобална променлива 89 00:04:55,000 --> 00:04:59,000 , който е предаден от уеб сървъра и от самия PHP. 90 00:04:59,000 --> 00:05:02,000 >> Не е нужно да се направи нещо, за да се сложи стойности в него, 91 00:05:02,000 --> 00:05:05,000 и сред свръхглобални, които сме виждали до този момент са се и публикуват, 92 00:05:05,000 --> 00:05:08,000 което е мястото, където автоматично за вас форма полета са, 93 00:05:08,000 --> 00:05:11,000 , както и няколко други, които все още не сме виждали. 94 00:05:11,000 --> 00:05:17,000 Вътре $ _SERVER някои специални променливи, свързани с самия сървър. 95 00:05:17,000 --> 00:05:22,000 Какво е IP адрес, какъв протокол HTTP или HTTPS сте използвали, 96 00:05:22,000 --> 00:05:25,000 искане метод да използвате и други подобни, така че има някои интересни, 97 00:05:25,000 --> 00:05:29,000 пикантни подробности за сървъра, а в действителност, потребителят там, както добре. 98 00:05:29,000 --> 00:05:33,000 Има $ _COOKIE, което е мястото, където тези неща, наречени бисквитки се съхраняват. 99 00:05:33,000 --> 00:05:36,000 Ние няма да прекарват времето си на "бисквитки" се днес, 100 00:05:36,000 --> 00:05:40,000 но знам, че сега "бисквитката" е само една малка част от информацията 101 00:05:40,000 --> 00:05:43,000 уеб сървър може да засадят в уеб браузъра 102 00:05:43,000 --> 00:05:46,000 и на свой ред си RAM или твърд диск на неговия компютър 103 00:05:46,000 --> 00:05:49,000 да съхранява информация за даден потребител, например, тяхното потребителско име 104 00:05:49,000 --> 00:05:52,000 , така че те не трябва да го въвеждате всеки път, когато влезете в или някои 105 00:05:52,000 --> 00:05:55,000 уникален номер или идентификатор за този потребител 106 00:05:55,000 --> 00:05:58,000 , така че да не се налага да ги тормозя със същите всякакви въпроси относно 107 00:05:58,000 --> 00:06:00,000 преференции в бъдеще, но повечето от интерес 108 00:06:00,000 --> 00:06:02,000 точно сега е $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Този супер, които, подобно на другите, се връчва автоматично от PHP 110 00:06:07,000 --> 00:06:10,000 когато пишете PHP-базирани уеб сайтове 111 00:06:10,000 --> 00:06:13,000 може да се съхранява всичко, което искате, низове, числа, 112 00:06:13,000 --> 00:06:16,000 плаващи точки, ценности, масиви, обекти, 113 00:06:16,000 --> 00:06:20,000 наистина всичко, което искате, и ви позволява да я съхранява по такъв начин, 114 00:06:20,000 --> 00:06:23,000 че дори ако потребителят посети сега и тогава 115 00:06:23,000 --> 00:06:26,000 се връща минути или 5 минути от сега, защото 116 00:06:26,000 --> 00:06:28,000 те вземат своето време, преди да кликнете някаква друга връзка 117 00:06:28,000 --> 00:06:32,000 PHP ще гарантира, че каквото и да ви постави в тази сесия свръхглобална 118 00:06:32,000 --> 00:06:37,000 минути или 5 минути преди все още ще бъде там, когато потребителят се връща. 119 00:06:37,000 --> 00:06:40,000 И под капака свръхглобална се осъществява чрез 120 00:06:40,000 --> 00:06:44,000 тези неща, наречени "бисквитки", но за сега, това е просто една абстракция 121 00:06:44,000 --> 00:06:47,000 което е вид програмно еквивалент на количка за пазаруване. 122 00:06:47,000 --> 00:06:50,000 Каквото и да програмист, в това 123 00:06:50,000 --> 00:06:53,000 свръхглобална асоциативен масив ще бъде там известен брой минути по-късно 124 00:06:53,000 --> 00:06:59,000 докато не го изтриете или докато потребителят не се затваря браузъра си напълно. 125 00:06:59,000 --> 00:07:02,000 >> Нека да разгледаме един пример как това нещо действително се използва. 126 00:07:02,000 --> 00:07:07,000 В counter.php между броя днешните код 127 00:07:07,000 --> 00:07:09,000 имаме следния ред. 128 00:07:09,000 --> 00:07:13,000 В началото на този файл имаме един куп сини коментари, които са безинтересни за сега. 129 00:07:13,000 --> 00:07:15,000 Но в ред 13 имаме нов ред, 130 00:07:15,000 --> 00:07:18,000 session_start, и че всъщност прави точно това, което казва. 131 00:07:18,000 --> 00:07:20,000 Тя започва сесии. 132 00:07:20,000 --> 00:07:25,000 Тя ви позволява да използвате този голям супер $ _SESSION, и това е толкова просто, колкото това. 133 00:07:25,000 --> 00:07:30,000 Сега, ако ние продължим да изглежда на ред 16, нека се опитам да разбера какво е това уеб страница ще направи. 134 00:07:30,000 --> 00:07:35,000 Ако (isset ($ _SESSION ["гише"), тогава давай 135 00:07:35,000 --> 00:07:39,000 и се съхранява в контра променлива, малки брояч, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Гише"]. 137 00:07:42,000 --> 00:07:45,000 Това изглежда се обявяване на локална променлива, наречена брояч 138 00:07:45,000 --> 00:07:48,000 вътрешността на която е копие на всичко, което е вътре на свръхглобална 139 00:07:48,000 --> 00:07:52,000 нарича сесия на мястото "контра". 140 00:07:52,000 --> 00:07:56,000 Иначе, както изглежда, тази малка локална променлива брояч, се инициализира с 0. 141 00:07:56,000 --> 00:08:01,000 >> Но след това няколко реда по-късно в 26 известие, че копие на сесията на борбата, 142 00:08:01,000 --> 00:08:06,000 ключа му, има нов присвоена стойност, която е сегашната му стойност плюс един. 143 00:08:06,000 --> 00:08:09,000 Накратко, този файл изглежда да се актуализира 144 00:08:09,000 --> 00:08:13,000 един брояч, който се съхранява в рамките на сесията свръхглобална 145 00:08:13,000 --> 00:08:16,000 от него увеличаване с 1, но за първи път запазва копие от предходната стойност 146 00:08:16,000 --> 00:08:20,000 , като го поставите в локална променлива, наречена $ брояч, 147 00:08:20,000 --> 00:08:22,000 и след това тук да видим това, което остава. 148 00:08:22,000 --> 00:08:24,000 Оказва се, че е доста просто HTML. 149 00:08:24,000 --> 00:08:29,000 В долната част на тази страница виждаме в линия 37, че съм посещавал този сайт 150 00:08:29,000 --> 00:08:33,000 брояч няколко пъти, така че има няколко интересни функции. 151 00:08:33,000 --> 00:08:36,000 Първо, това е ясно променлива, но това не е достатъчно просто да си сложи 152 00:08:36,000 --> 00:08:39,000 $ Брояч в тялото на HTML, защото, разбира се 153 00:08:39,000 --> 00:08:43,000 ако това е само между вашия PHP HTML е да се предположи, че е просто HTML. 154 00:08:43,000 --> 00:08:48,000 Вие буквално искат $ брояч, за да се отпечата на екрана. 155 00:08:48,000 --> 00:08:51,000 >> Но вместо от отпадане в режим на PHP 156 00:08:51,000 --> 00:08:55,000 с това парче на синтаксиса, могат динамично да въведете стойност 157 00:08:55,000 --> 00:08:58,000 много сходни в духа на това, което направихме миналия път с 158 00:08:58,000 --> 00:09:00,000 вмъкване стойности в низове. 159 00:09:00,000 --> 00:09:04,000 В действителност, това е само една съкратена нотация се казва, че нещо подобно буквално, 160 00:09:04,000 --> 00:09:12,000 печат (контра) или дори нещо като ФОРМАТ (% S, брояч), 161 00:09:12,000 --> 00:09:14,000 или дори, както може би сте онлайн или в учебниците, 162 00:09:14,000 --> 00:09:17,000 има функция в PHP нарича ехо 163 00:09:17,000 --> 00:09:20,000 който прави същото нещо, и всички от тях са просто вече многословни 164 00:09:20,000 --> 00:09:25,000 казва <= 165 00:09:25,000 --> 00:09:28,000 В този случай не е нужно да се сложи 166 00:09:28,000 --> 00:09:30,000 думата PHP след въпросителния знак. 167 00:09:30,000 --> 00:09:34,000 Това е съкратена нотация, отново, това, което току-що видяхме преди малко 168 00:09:34,000 --> 00:09:37,000 който се отекна някаква стойност. 169 00:09:37,000 --> 00:09:39,000 >> Нека да видим какво всъщност е крайният резултат от това. 170 00:09:39,000 --> 00:09:43,000 Оставете ме да премина в нашия counter.php файл, 171 00:09:43,000 --> 00:09:47,000 и ние ще видим, че Дейвид просто е направил грешка, като играят с кода. 172 00:09:47,000 --> 00:09:50,000 Да вървим определят каквото и да е провалил, 173 00:09:50,000 --> 00:09:54,000 и грешката изглежда да е там, няма по линия 37. 174 00:09:54,000 --> 00:09:59,000 Според горната част на тази страница са посетили този сайт 0 пъти. 175 00:09:59,000 --> 00:10:02,000 Ами, нека да вървим напред сега, и в горната част на браузъра щракнете върху 176 00:10:02,000 --> 00:10:05,000 презаредите иконата и аз щракнете върху презареди, 177 00:10:05,000 --> 00:10:12,000 и сега сте посетили сайта 1 път, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 И наистина, ако погледнем към източника на тази страница действителната изходния код се променя, 179 00:10:16,000 --> 00:10:19,000 и забележите, че пълната липса на всяко PHP, и това е, защото 180 00:10:19,000 --> 00:10:23,000 PHP код се оценява или тълкува страна на сървъра, 181 00:10:23,000 --> 00:10:27,000 и така това означава, че на изхода на PHP скрипт е това, което в крайна сметка изпраща към браузъра, 182 00:10:27,000 --> 00:10:31,000 което в този случай е някои суровини HTML и някои суровини текст. 183 00:10:31,000 --> 00:10:33,000 Какво става тук? 184 00:10:33,000 --> 00:10:37,000 >> Е, с относително няколко реда код, аз съм в състояние да се съхранява 185 00:10:37,000 --> 00:10:40,000 постоянно в течение на няколко секунди, или ако ние чакахме достатъчно дълго, 186 00:10:40,000 --> 00:10:44,000 минута, дори час, някаква стойност по начин, който прави HTTP 187 00:10:44,000 --> 00:10:47,000 изглежда динамична, като че ли сме запазени 188 00:10:47,000 --> 00:10:51,000 тази връзка със сървъра, и просто си спомня как го каза миналия път, 189 00:10:51,000 --> 00:10:55,000 но в действителност има един куп на сложност става под капака 190 00:10:55,000 --> 00:10:59,000 с участието на "бисквитки", които позволяват PHP да ми даде тази илюзия 191 00:10:59,000 --> 00:11:02,000 на тази кошница като функция. 192 00:11:02,000 --> 00:11:05,000 За сега, тривиален пример, при който просто съхраняване на цяло число, 193 00:11:05,000 --> 00:11:08,000 но тази функция ще се върне, за да бъде от голяма полза 194 00:11:08,000 --> 00:11:10,000 когато започнем да говорим за по-сложни проекти, 195 00:11:10,000 --> 00:11:12,000 сред тях проблем определила 7. 196 00:11:12,000 --> 00:11:16,000 Това е последния проблем в CS50. 197 00:11:16,000 --> 00:11:19,000 Знам, че е толкова тъжно, но това, което ще намерите е, че отиваме да се заключи, 198 00:11:19,000 --> 00:11:22,000 тази част на семестъра от действително преход 199 00:11:22,000 --> 00:11:25,000 от контекста на C сигурност контекста на PHP 200 00:11:25,000 --> 00:11:27,000 но, докато се използват някои от същите основи 201 00:11:27,000 --> 00:11:29,000 сме говорили за известно време. 202 00:11:29,000 --> 00:11:33,000 >> На целта с pset 7 е да се приложи CS50 финансите, 203 00:11:33,000 --> 00:11:37,000 коя е вашата собствена версия на Yahoo Finance или Google Finance 204 00:11:37,000 --> 00:11:40,000 или дори Etrade.com, при която имате възможност да 205 00:11:40,000 --> 00:11:43,000 погледнете цените на акциите за дадени символи, но дори и повече от това 206 00:11:43,000 --> 00:11:48,000 имате възможност да "купува" и "продава" запаси 207 00:11:48,000 --> 00:11:51,000 , които се търгуват на различни фондови борси, тъй като тази начална страница 208 00:11:51,000 --> 00:11:55,000 тук предполага, което наистина е степента, до която сме започнали 209 00:11:55,000 --> 00:11:59,000 проблема за вас, имате логин формата, която пита за потребителско име и парола. 210 00:11:59,000 --> 00:12:03,000 Има бутон Submit, но след това, тъй като в крайна сметка ние ще видим, 211 00:12:03,000 --> 00:12:06,000 няма нищо наистина се случва под капака, тъй като все още 212 00:12:06,000 --> 00:12:09,000 остава да приложи възможността да се регистрират нови потребители, 213 00:12:09,000 --> 00:12:12,000 способността да се купуват акции, за да продават акции, 214 00:12:12,000 --> 00:12:14,000 всъщност изглеждат текущите цени на акциите. 215 00:12:14,000 --> 00:12:17,000 >> И наистина, това ще бъде като реалния свят е възможно, защото ние направихме 216 00:12:17,000 --> 00:12:20,000 включва малко код, който ще ви позволи с една функция 217 00:12:20,000 --> 00:12:25,000 да се обръщате Yahoo Finance, който чудесно прави свободни данни 218 00:12:25,000 --> 00:12:31,000 за търсене на цените на акциите на фондовата символ или борсов символ, 219 00:12:31,000 --> 00:12:34,000 и ще получите текущата цена на акцията на ден. 220 00:12:34,000 --> 00:12:37,000 Данните, които действително виждат в този конкретен pset ще бъде 221 00:12:37,000 --> 00:12:40,000 за реалния свят, тъй като той може да получи, така че вие ​​сте действително взаимодействие 222 00:12:40,000 --> 00:12:43,000 с реални световни запаси, цените на недвижимите свят, 223 00:12:43,000 --> 00:12:47,000 и ще видим колко пари може да направи може би 224 00:12:47,000 --> 00:12:51,000 през следващите няколко дни играе със свой собствен набор проблем. 225 00:12:51,000 --> 00:12:55,000 >> Но нека първо постави на сцената за това как да проектирате нещо, което със сигурност е по-сложно 226 00:12:55,000 --> 00:12:59,000 от counter.php, че е по-сложно, отколкото всеки от примерите Frosh УИ до този момент, 227 00:12:59,000 --> 00:13:02,000 и нека се опитаме да представим няколко парадигми, че ни позволи 228 00:13:02,000 --> 00:13:06,000 както за pset 7 и може би за своя окончателен проект, ако направиш нещо уеб базиран 229 00:13:06,000 --> 00:13:11,000 да поддържате кода си добре организиран, да пазят себе си нормален, 230 00:13:11,000 --> 00:13:15,000 и да предприеме стъпка към сътрудничество, независимо дали в окончателния проект CS50 231 00:13:15,000 --> 00:13:18,000 или извън нея, ако продължите да програмирате нещо в бъдещето. 232 00:13:18,000 --> 00:13:21,000 Има тази обща парадигма дизайн 233 00:13:21,000 --> 00:13:24,000 по компютърни науки и в разработката на софтуер по-общо 234 00:13:24,000 --> 00:13:27,000 известен като MVC, модел оглед контролер, 235 00:13:27,000 --> 00:13:30,000 и това е глупаво акроним, който описва една много хубава идея, 236 00:13:30,000 --> 00:13:34,000 е разделянето на различни аспекти на програмата, 237 00:13:34,000 --> 00:13:39,000 специално съхраняването поотделно на логиката или на бизнес логиката на уеб сайт 238 00:13:39,000 --> 00:13:42,000 , така че всичко, което включва неща като 239 00:13:42,000 --> 00:13:45,000 призовава функции и заявки бази данни и други подобни 240 00:13:45,000 --> 00:13:48,000 се случва не между вашия HTML 241 00:13:48,000 --> 00:13:51,000 а в отделни файлове, а всъщност е това, има един файл 242 00:13:51,000 --> 00:13:54,000 обикновено, че сте нарича контролер 243 00:13:54,000 --> 00:13:56,000 това е наистина мозъкът зад операцията, и ние ще видим един пример 244 00:13:56,000 --> 00:13:58,000 от това само за миг. 245 00:13:58,000 --> 00:14:01,000 >> Има един модел, който е програмен код 246 00:14:01,000 --> 00:14:05,000 че говорите с вашите бази данни, че говори с Yahoo Finance и други подобни, 247 00:14:05,000 --> 00:14:08,000 и тогава там е V в MVC, възгледите, 248 00:14:08,000 --> 00:14:11,000 всички неща, които е свързана с естетика, файлове, които всъщност съдържат 249 00:14:11,000 --> 00:14:14,000 HTML, може би вашата CSS и други подобни. 250 00:14:14,000 --> 00:14:17,000 Идеята тук, както подсказва и тази картина, е, че администраторът 251 00:14:17,000 --> 00:14:21,000 е файлът, тъй като ние скоро ще видите и ще особено в pset 7, 252 00:14:21,000 --> 00:14:24,000 че светът говори чрез своите уеб браузъри. 253 00:14:24,000 --> 00:14:27,000 Това е файл, който получава посетен на обществения интернет, 254 00:14:27,000 --> 00:14:30,000 но контролера говори с потенциално модел, 255 00:14:30,000 --> 00:14:34,000 който е един или повече други файлове, които съдържат код, свързани с данни, 256 00:14:34,000 --> 00:14:37,000 код, свързани с бази данни и други подобни, а след това говори с 257 00:14:37,000 --> 00:14:40,000 контролер един или повече други файлове, известни като гледка, 258 00:14:40,000 --> 00:14:43,000 които са естетиката на дадена уеб страница, образци на видове, 259 00:14:43,000 --> 00:14:47,000 , които биха могли да се вземат някои данни като вход, но в края на деня 260 00:14:47,000 --> 00:14:50,000 единствената логика вътрешността на оглед трябва да бъде предоставяне на тези данни, 261 00:14:50,000 --> 00:14:53,000 итерации една линия и всъщност плюе някои 262 00:14:53,000 --> 00:14:56,000 HTML-предаване от него или дори нещо като PDF. 263 00:14:56,000 --> 00:14:59,000 >> Това, което е хубаво за MVC е, че може да има различни гледни точки 264 00:14:59,000 --> 00:15:02,000 въз основа на вида на устройството, в зависимост от вида на файлов формат, който всъщност 265 00:15:02,000 --> 00:15:04,000 искаме да покажем на потребителя. 266 00:15:04,000 --> 00:15:10,000 Нека да разгледаме няколко все по-сложни и добре проектирана примери 267 00:15:10,000 --> 00:15:13,000 като се започне първо с версия 0 тук. 268 00:15:13,000 --> 00:15:16,000 Нека вървим напред и да се отворят в нашия каталог MVC днес 269 00:15:16,000 --> 00:15:21,000 файл с име index.php в директорията 0. 270 00:15:21,000 --> 00:15:26,000 Забележете, това е супер проста и много underwhelming сайт 271 00:15:26,000 --> 00:15:29,000 това е нещо на версия 0 на началната страница за CS50 272 00:15:29,000 --> 00:15:32,000 и забележете как имаме връзка към Лекции, ние имаме линк към учебния план, 273 00:15:32,000 --> 00:15:35,000 и ако аз следвайте връзката към Лекции известие, че URL 274 00:15:35,000 --> 00:15:39,000 отгоре ще да преминете към lectures.php. 275 00:15:39,000 --> 00:15:44,000 Ако след това следвайте връзката към Седмица едно известие, че URL промени на week1.php. 276 00:15:44,000 --> 00:15:46,000 Изглежда има доста проста йерархична структура. 277 00:15:46,000 --> 00:15:49,000 >> Нека хвърлим един бърз поглед под капака как е изложена, 278 00:15:49,000 --> 00:15:53,000 И наистина, ако гледам index.php това е доста проста. 279 00:15:53,000 --> 00:15:57,000 В действителност, въпреки че се обадих на този файл PHP няма реална програмен код. 280 00:15:57,000 --> 00:16:01,000 Има коментар, че съм написал тук в PHP, така че потребителят не я види. 281 00:16:01,000 --> 00:16:05,000 Разбира се, както и преди, всичко, което е между тагове PHP 282 00:16:05,000 --> 00:16:08,000 получава тълкува, дори ако това е коментар, а да се тълкува коментар 283 00:16:08,000 --> 00:16:11,000 означава просто да го изхвърлим в края на деня, а не действително 284 00:16:11,000 --> 00:16:15,000 го изпраща към браузъра, така че всичко тук е само естетика. 285 00:16:15,000 --> 00:16:20,000 Ако отворя подобно lectures.php това също е трудно кодиран файл. 286 00:16:20,000 --> 00:16:23,000 Това се случва, да се нарича нещо. PHP, 287 00:16:23,000 --> 00:16:27,000 но това наистина е само HTML и week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 по подобен начин са само за маркиране, така че има един куп недостатъци на този дизайн. 289 00:16:31,000 --> 00:16:33,000 Едно, че е огромно количество Copy / Paste. 290 00:16:33,000 --> 00:16:37,000 Въпреки че единственото нещо, което се променя сред тези файлове е неподреден списък, 291 00:16:37,000 --> 00:16:41,000 таговете Ли, аз все пак док тип, HTML, главата, 292 00:16:41,000 --> 00:16:44,000 заглавие, плътно тяло, в близост HTML и повече 293 00:16:44,000 --> 00:16:47,000 във всеки един файл, което означава, че ако някога искате да се преструктурират 294 00:16:47,000 --> 00:16:50,000 тази уеб страница или да го restylize аз трябва да отида и да промените 295 00:16:50,000 --> 00:16:54,000 всички тези файлове ръчно или с някакъв масивен и замяна. 296 00:16:54,000 --> 00:17:01,000 >> Нека вземем една стъпка към една по-интелигентна, по-дълго мислене дизайн във версия 1 тук 297 00:17:01,000 --> 00:17:04,000 което според мен прочетох, че сме включени, така че можете да играете заедно с 298 00:17:04,000 --> 00:17:07,000 те по-спокойно у дома известие, че имаме тук 299 00:17:07,000 --> 00:17:10,000 обобщение на файловете във версия 1 на този сайт, 300 00:17:10,000 --> 00:17:13,000 и изглежда, че съм го вземат при себе си да вземе предвид 301 00:17:13,000 --> 00:17:17,000 някакъв общ код, header.php и footer.php. 302 00:17:17,000 --> 00:17:20,000 Е, нека да разгледаме какво има вътре първата от тези. 303 00:17:20,000 --> 00:17:23,000 Header.php изглежда познато, 304 00:17:23,000 --> 00:17:26,000 но забележете къде се отсече? 305 00:17:26,000 --> 00:17:30,000 Веднага след ред 19, така че това е всичко, което е обща 306 00:17:30,000 --> 00:17:33,000 от файловете index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 и week2.php от предишния пример. 308 00:17:36,000 --> 00:17:40,000 Това, което направих, беше копие и всичко прическа, която е обща за всички тези файлове, 309 00:17:40,000 --> 00:17:44,000 го поставя в отделен файл заглавието, и съответно в footer.php 310 00:17:44,000 --> 00:17:48,000 съм да прилага същия принцип като единствените интересни линии 311 00:17:48,000 --> 00:17:52,000 в footer.php са тези две, плътно тяло и тясно HTML. 312 00:17:52,000 --> 00:17:55,000 >> Но какво означава това сега е, че в новата версия 313 00:17:55,000 --> 00:17:59,000 на index.php известие, колко просто може да получи. 314 00:17:59,000 --> 00:18:02,000 Разбира се, малко по-загадъчен, малко по-малко интуитивен 315 00:18:02,000 --> 00:18:06,000 да следват горе до долу, но Боже мой, всичко на този съкращения вече го няма. 316 00:18:06,000 --> 00:18:10,000 Ние изискваме, използва PHP функция буквално призова изисква отгоре, 317 00:18:10,000 --> 00:18:15,000 което е много напомнят, припомни на C # включват механизъм. 318 00:18:15,000 --> 00:18:17,000 Ние изискваме header.php на върха. 319 00:18:17,000 --> 00:18:20,000 Ние изискват footer.php в долната част, а единственото нещо, което е различно 320 00:18:20,000 --> 00:18:25,000 или специално за този файл е съдържание, което е писано да бъде уникален за него. 321 00:18:25,000 --> 00:18:29,000 Ако аз ли да ида, да речем, lectures.php, същият принцип се прилага. 322 00:18:29,000 --> 00:18:32,000 Отново, някои коментари до върха, но след това изискват заглавието, изискват долен колонтитул, 323 00:18:32,000 --> 00:18:35,000 и между това е само съдържание, което всъщност се променя. 324 00:18:35,000 --> 00:18:38,000 И ако ние погледна в седмица 1 и седмица две, че ще видим 325 00:18:38,000 --> 00:18:42,000 , че същият принцип е била приложена. 326 00:18:42,000 --> 00:18:44,000 Е, ние не сме съвсем прави. 327 00:18:44,000 --> 00:18:48,000 >> Нека хвърлим един поглед към версия 2, която има подобна структура, 328 00:18:48,000 --> 00:18:50,000 но забележете, сега съм се въведе нещо друго. 329 00:18:50,000 --> 00:18:53,000 В съответствие 10 въведохме helpers.php, 330 00:18:53,000 --> 00:18:55,000 , което очевидно съдържа помощни функции. 331 00:18:55,000 --> 00:18:58,000 Помощната функция по принцип е сравнително кратък функция 332 00:18:58,000 --> 00:19:01,000 че ти пиша да ви помогне в различни места, 333 00:19:01,000 --> 00:19:04,000 и нека видим какво има вътре в helpers.php. 334 00:19:04,000 --> 00:19:07,000 В този случай, то изглежда, че има две функции. 335 00:19:07,000 --> 00:19:10,000 Спомнете си онзи ден с нашия куб например 336 00:19:10,000 --> 00:19:13,000 можете да дефинирате ваши собствени функции в PHP, и това, което съм направил сега е, че аз съм 337 00:19:13,000 --> 00:19:17,000 дефинирани функции, наречени направи долен колонтитул и да направи заглавието, 338 00:19:17,000 --> 00:19:21,000 на първия, което отнема параметър, наречен данни, 339 00:19:21,000 --> 00:19:25,000 , чиято стойност по подразбиране е празен масив, както се предлага там, 340 00:19:25,000 --> 00:19:29,000 и ние действително могат да напиша това още по-накратко в най-новата версия на PHP 341 00:19:29,000 --> 00:19:32,000 казва площад скоба, затворени квадратна скоба. 342 00:19:32,000 --> 00:19:35,000 Това означава, че празен масив с размер 0, но все пак масив. 343 00:19:35,000 --> 00:19:38,000 >> Този екстракт функция е малко по-специално в 344 00:19:38,000 --> 00:19:41,000 това, което прави е, че отнема за аргумент асоциативен масив 345 00:19:41,000 --> 00:19:45,000 че има 0 или повече ключови двойки стойност и ако имате ключ на Foo 346 00:19:45,000 --> 00:19:48,000 и стойността на бар екстракт функция 347 00:19:48,000 --> 00:19:51,000 създава ситуация, в която сега, както и на ред 11, 348 00:19:51,000 --> 00:19:57,000 имате локална променлива, наречена $ Foo чиято стойност е бар. 349 00:19:57,000 --> 00:19:59,000 И ако сте имали повече ключове и стойности в данните масив, 350 00:19:59,000 --> 00:20:03,000 по същия начин те ще бъдат извлечени в местната обхват 351 00:20:03,000 --> 00:20:06,000 или името на пространството, така че footer.php и 352 00:20:06,000 --> 00:20:09,000 същата идея тук, така че header.php 353 00:20:09,000 --> 00:20:12,000 да имат достъп до тези променливи. 354 00:20:12,000 --> 00:20:15,000 Всъщност, нека се отворят отново header.php 355 00:20:15,000 --> 00:20:18,000 и привлече вниманието сега това, което изглежда като в тази версия. 356 00:20:18,000 --> 00:20:22,000 >> Вместо твърд кодиране CS50 като заглавие за всяка една страница 357 00:20:22,000 --> 00:20:24,000 забележите динамиката, че това е възможно сега. 358 00:20:24,000 --> 00:20:29,000 В съответствие 5 Аз съм ехото заглавие променлива, 359 00:20:29,000 --> 00:20:34,000 но първо аз мимоходом, че заглавието променлива функция, наречена htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Тъпо име за дадена функция, стига да е, но това наистина прави това, което казва. 361 00:20:38,000 --> 00:20:41,000 Той гарантира, че всички специални символи 362 00:20:41,000 --> 00:20:46,000 в низа, който е бил приет през правилно избягал HTML. 363 00:20:46,000 --> 00:20:49,000 Това всъщност е начин за избягване на нещо, наречено кръста сайт скриптове атака 364 00:20:49,000 --> 00:20:52,000 , при която някой може злонамерено или случайно 365 00:20:52,000 --> 00:20:55,000 инжектира своя HTML във вашия сайт 366 00:20:55,000 --> 00:20:59,000 чрез поставяне в някаква форма, например, 367 00:20:59,000 --> 00:21:02,000 нещо, което не бяха доста очаква, особено JavaScript код, 368 00:21:02,000 --> 00:21:05,000 , тъй като ние ще говорим за след седмица или две на път. 369 00:21:05,000 --> 00:21:08,000 >> Това сега header.php, това е 370 00:21:08,000 --> 00:21:12,000 в смисъл, че тя ви позволява да видите естетически съдържанието на някои данни. 371 00:21:12,000 --> 00:21:14,000 Но по-конкретно, това е шаблон. 372 00:21:14,000 --> 00:21:19,000 Това е вид на план от това, което искаме заглавната част на всяка страница, за да изглежда като 373 00:21:19,000 --> 00:21:23,000 но има някаква динамика в това, че искаме титлата динамично да се добавят 374 00:21:23,000 --> 00:21:26,000 въз основа на заглавието променлива 375 00:21:26,000 --> 00:21:30,000 , която е извлечена, отново, когато се обадихме 376 00:21:30,000 --> 00:21:33,000 функцията мазилка заглавието. 377 00:21:33,000 --> 00:21:36,000 Сега, ако погледна мазилка долен колонтитул, има действително не е много, че точно сега 378 00:21:36,000 --> 00:21:40,000 ,, защото в footer.php има не динамика, каквато. 379 00:21:40,000 --> 00:21:43,000 Може да има, но в момента това е трудно кодиран списък на два тагове, 380 00:21:43,000 --> 00:21:46,000 но същата идея се прилага, така че всъщност обяснява защо 381 00:21:46,000 --> 00:21:49,000 губим време с мазилка горен и мазилка букмейкър функция? 382 00:21:49,000 --> 00:21:52,000 Нека вместо това сега във версия 3, 383 00:21:52,000 --> 00:21:56,000 и във версия 3 помощници реших да го опростят още повече. 384 00:21:56,000 --> 00:21:58,000 >> Нека мен има един рендер функция. 385 00:21:58,000 --> 00:22:02,000 Нека да го вземе още един аргумент, този път наречен шаблон, 386 00:22:02,000 --> 00:22:05,000 , чиято цел е да бъде името на шаблона, 387 00:22:05,000 --> 00:22:11,000 и тогава ще се слеят надменно. PHP стойността на тази променлива, 388 00:22:11,000 --> 00:22:17,000 и тогава, ако той съществува foo.php, bar.php или header.php и footer.php 389 00:22:17,000 --> 00:22:20,000 тогава аз ще да вървим напред и извличане на променливи данни 390 00:22:20,000 --> 00:22:23,000 и след това изисква по този път. 391 00:22:23,000 --> 00:22:29,000 С други думи, да се използват сега, ако отворя index.php 392 00:22:29,000 --> 00:22:32,000 забележите, че не се обадя вече заглавието мазилка. 393 00:22:32,000 --> 00:22:36,000 Аз просто се обадете правят, но аз преминават в цитирания стойността на заглавната 394 00:22:36,000 --> 00:22:39,000 да стане ясно кои шаблон Аз всъщност искате да заредите. 395 00:22:39,000 --> 00:22:41,000 >> Тогава тук забележите това, което правя. 396 00:22:41,000 --> 00:22:44,000 Съм преминаване в динамично ключ на правото на собственост, 397 00:22:44,000 --> 00:22:47,000 стойността на CS50, и това също, както видяхме преди, 398 00:22:47,000 --> 00:22:51,000 може да се направи по-кратка в последната версия на PHP 399 00:22:51,000 --> 00:22:54,000 къде мога да заменят функцията на масива с квадратни скоби, 400 00:22:54,000 --> 00:22:57,000 , който предлагам е дори по-четивен и сигурност 401 00:22:57,000 --> 00:22:59,000 малко по-лесно да въвеждате. 402 00:22:59,000 --> 00:23:02,000 И разбира се, с мазилка букмейкър покана на дъното, 403 00:23:02,000 --> 00:23:05,000 ние не се притеснява да преминават във втори аргумент на всички, не асоциативен масив, 404 00:23:05,000 --> 00:23:07,000 защото няма нищо динамично вътрешността на този долен колонтитул. 405 00:23:07,000 --> 00:23:10,000 Той е само на някои близки тагове за HTML. 406 00:23:10,000 --> 00:23:14,000 Добре, ние сме като стъпки към наистина почистване нещата тук, 407 00:23:14,000 --> 00:23:17,000 но нека се отворят два крайни примера. 408 00:23:17,000 --> 00:23:21,000 Това, номер 4, забележете, че съм направил съзнателно решение 409 00:23:21,000 --> 00:23:26,000 да се подобри предишния пример като най-накрая с някаква йерархия с моите файлове. 410 00:23:26,000 --> 00:23:29,000 >> Забележете, че в тази справка, в това ми прочете, аз въведохме 411 00:23:29,000 --> 00:23:32,000 на включва директория и директорията с шаблоните 412 00:23:32,000 --> 00:23:35,000 , чието съдържание ще бъдат нещата, които искате да включите 413 00:23:35,000 --> 00:23:38,000 и шаблони, които искат да правят, съответно. 414 00:23:38,000 --> 00:23:42,000 Това е наистина ме е анален и се опитват да пазят нещата подредено, 415 00:23:42,000 --> 00:23:45,000 съхраняват файлове, свързани заедно, но крайният резултат 416 00:23:45,000 --> 00:23:48,000 е, че сега имаме малко tidier настройка, но ние трябва да помним 417 00:23:48,000 --> 00:23:51,000 , например, index.php 418 00:23:51,000 --> 00:23:55,000 , когато се изисква преписката helpers.php 419 00:23:55,000 --> 00:24:01,000 сега ние трябва да го изиска чрез включва / helpers.php 420 00:24:01,000 --> 00:24:06,000 , отколкото просто казвам helpers.php, защото сега това е действително в под директория. 421 00:24:06,000 --> 00:24:09,000 Сега, като настрана, вие ще видите в тези примери и някои други 422 00:24:09,000 --> 00:24:11,000 функции като изискват, да поиска веднъж. 423 00:24:11,000 --> 00:24:15,000 Има функция се наричаше включват, и всички те имат малко по-различно поведение. 424 00:24:15,000 --> 00:24:18,000 Тук казвам да поиска веднъж, за да направи супер ясно, че искат само тези 425 00:24:18,000 --> 00:24:20,000 помощници, включени в проекта си веднъж. 426 00:24:20,000 --> 00:24:24,000 Но ако аз съм внимателни и ако аз съм всъщност мисли чрез моята логика правилно 427 00:24:24,000 --> 00:24:27,000 тя също би трябвало да са достатъчни само за да се каже, изискват отгоре 428 00:24:27,000 --> 00:24:31,000 толкова дълго, както аз самият не случайно се изисква един и същи файл другаде. 429 00:24:31,000 --> 00:24:34,000 В действителност, това е малко по-ефикасен начин за правене на нещата след това с помощта 430 00:24:34,000 --> 00:24:38,000 да поиска веднъж, така че ще го отрежете просто изискват. 431 00:24:38,000 --> 00:24:40,000 >> Нека вземем една стъпка по-нататък. 432 00:24:40,000 --> 00:24:46,000 Този последен пример, версия 5, има дори по-чист йерархията на папките. 433 00:24:46,000 --> 00:24:50,000 Забележете, какво съм направил тук според мен се чете в тази финална версия 434 00:24:50,000 --> 00:24:54,000 е сега аз имам HTML директория, която аз съм имал през цялото това време, 435 00:24:54,000 --> 00:24:58,000 но вътре от там сега е само index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php и week2.php. 437 00:25:01,000 --> 00:25:05,000 Включва сега живее заедно на HTML директория, 438 00:25:05,000 --> 00:25:08,000 на същото ниво като братя и сестри, така да се каже. 439 00:25:08,000 --> 00:25:10,000 Така че папката с шаблони. 440 00:25:10,000 --> 00:25:14,000 Ключът за вкъщи тук е, че въведохме малко по-сложна структура, 441 00:25:14,000 --> 00:25:17,000 но ключова характеристика е, че само файлове 442 00:25:17,000 --> 00:25:21,000 , които трябва да станат уеб достъпни, публично адресируема 443 00:25:21,000 --> 00:25:25,000 URL на обществения интернет в HTML моята директория. 444 00:25:25,000 --> 00:25:28,000 >> Междувременно, други файлове, helpers.php, footer.php 445 00:25:28,000 --> 00:25:32,000 header.php, че може би може би са по-чувствителни, 446 00:25:32,000 --> 00:25:35,000 може би помощници действително има някои потребителски имена и пароли или някакво интелектуално 447 00:25:35,000 --> 00:25:39,000 собственост на мина, функционира, аз наистина не искам светът да види, дори и ако случайно. 448 00:25:39,000 --> 00:25:45,000 Това е добра практика да се пази от публичната директория на HTML 449 00:25:45,000 --> 00:25:48,000 всички файлове, които сами по себе си не трябва да са публични. 450 00:25:48,000 --> 00:25:51,000 Всичко, което трябва да се направи в този случай, когато, например, 451 00:25:51,000 --> 00:25:55,000 index.php директорията на HTML файл, 452 00:25:55,000 --> 00:25:58,000 ние просто трябва да бъдем малко по-внимателни, когато се изисква 453 00:25:58,000 --> 00:26:00,000 или да поиска веднъж този файл. 454 00:26:00,000 --> 00:26:03,000 Първо трябва да направя .. да отиде в директория, 455 00:26:03,000 --> 00:26:06,000 тогава / включва / helpers.php 456 00:26:06,000 --> 00:26:12,000 да се потопите обратно, за да получите файла, че ме е грижа за. 457 00:26:12,000 --> 00:26:16,000 >> Всякакви въпроси относно MVC 458 00:26:16,000 --> 00:26:20,000 или този сравнително прост въплъщение него? 459 00:26:20,000 --> 00:26:23,000 И нека да е ясно, че ние се фокусирахме съвсем малко по 460 00:26:23,000 --> 00:26:27,000 V, мнения и факторинг, от тези шаблони. 461 00:26:27,000 --> 00:26:30,000 Ние наистина не съм отличава м от C, просто все още. 462 00:26:30,000 --> 00:26:33,000 В действителност, има наистина не съм тук, и дори C 463 00:26:33,000 --> 00:26:36,000 контролер, наистина не се прави чак толкова много, но вие ще получите много повече 464 00:26:36,000 --> 00:26:39,000 запознати с двете тези две писма от MVC, 465 00:26:39,000 --> 00:26:43,000 или по-скоро, вие ще получите много по-запознати с C 466 00:26:43,000 --> 00:26:49,000 в MVC за проблем набор 7, така че е повече от това на хоризонта. 467 00:26:49,000 --> 00:26:51,000 Въпроси? 468 00:26:51,000 --> 00:26:53,000 Има всъщност няма никой. 469 00:26:53,000 --> 00:26:57,000 >> Добре, нека сега се движат на втората и последна тема за днес. 470 00:26:57,000 --> 00:27:00,000 Това е въвеждането на база данни. 471 00:27:00,000 --> 00:27:03,000 До този момент сме имали няколко начина за съхраняване на данни. 472 00:27:03,000 --> 00:27:05,000 Ние сме използвали променливи. 473 00:27:05,000 --> 00:27:08,000 Обратно в нашия файл C, I / O дискусия започнахме да използваме текстови файлове 474 00:27:08,000 --> 00:27:11,000 и използване на файлове като fprintf, а след това дори започна 475 00:27:11,000 --> 00:27:14,000 говорим за CSV файлове малко, стойности, разделени със запетая, 476 00:27:14,000 --> 00:27:17,000 така че всичко това ни позволи да има данни, съхранявани 477 00:27:17,000 --> 00:27:19,000 или без постоянно или систематично. 478 00:27:19,000 --> 00:27:23,000 Но дори CSVs не са наистина води до търсене 479 00:27:23,000 --> 00:27:25,000 и вмъкване и изтриване. 480 00:27:25,000 --> 00:27:28,000 Това е наистина просто глупав текстов файл, разделени със запетаи 481 00:27:28,000 --> 00:27:30,000 ред по ред по ред по ред, така че ако искате да 482 00:27:30,000 --> 00:27:32,000 търси този файл най-доброто, което можете да направите наистина е линейна търсене. 483 00:27:32,000 --> 00:27:34,000 Трябва да започне в началото на файла, прочетете всичко в 484 00:27:34,000 --> 00:27:36,000 и гледам за някои стойност на интереси. 485 00:27:36,000 --> 00:27:39,000 Ако искате да се вмъкнете в нея, което трябва да направите същото нещо, 486 00:27:39,000 --> 00:27:41,000 итерации върху него и вмъкване на определено място, 487 00:27:41,000 --> 00:27:45,000 и в действителност, трябва да направим всичко на търсещата себе си логика. 488 00:27:45,000 --> 00:27:49,000 >> Вие не може да направи умен модел за съвпадение на CSV файл, освен ако не се напише код. 489 00:27:49,000 --> 00:27:51,000 Не можете да направите филтриране на CSV файл 490 00:27:51,000 --> 00:27:53,000 освен ако не се напише код. 491 00:27:53,000 --> 00:27:56,000 Не би ли било хубаво, ако някой друг във всички усилия 492 00:27:56,000 --> 00:27:59,000 действително да търсите лесен и вмъкване лесно 493 00:27:59,000 --> 00:28:01,000 и заличаване и актуализиране и т. н.? 494 00:28:01,000 --> 00:28:04,000 Това е точно какво е база данни. 495 00:28:04,000 --> 00:28:07,000 SQL, Structured Query Language, е още един език 496 00:28:07,000 --> 00:28:10,000 , че ние ви представяме тук днес, но това също е доста достъпна, 497 00:28:10,000 --> 00:28:13,000 и това, което ние наистина ще направим е просто извади от него някои от най-важните 498 00:28:13,000 --> 00:28:16,000 характеристики, така, че за pset 7, и ако правиш нещо, уеб базиран, 499 00:28:16,000 --> 00:28:19,000 своя окончателен проект, имате възможност да изразите себе си 500 00:28:19,000 --> 00:28:22,000 на данни заявки. 501 00:28:22,000 --> 00:28:25,000 Вие имате възможност да съхранявате малко или много на данни 502 00:28:25,000 --> 00:28:28,000 в много по-структуриран начин, че в края на деня 503 00:28:28,000 --> 00:28:32,000 направят живота ви по-лесно, защото с SQL можете да изразиш себе си 504 00:28:32,000 --> 00:28:35,000 много по-прецизно, много по-методично, за да се 505 00:28:35,000 --> 00:28:40,000 се върна някакво подмножество от данни от по-голям корпус на данни. 506 00:28:40,000 --> 00:28:45,000 >> Можете да мислите за база данни, в този случай, SQL база данни, наистина като Excel 507 00:28:45,000 --> 00:28:48,000 или номера, когато това е електронна таблица, 508 00:28:48,000 --> 00:28:50,000 или може би няколко електронни таблици, както и за електронни таблици, разбира се, 509 00:28:50,000 --> 00:28:53,000 редове и колони, както и че е така, защото 510 00:28:53,000 --> 00:28:56,000 SQL бази данни са релационни, релационна в смисъл, 511 00:28:56,000 --> 00:28:59,000 че те съхраняват данни по отношение на тези таблици, 512 00:28:59,000 --> 00:29:01,000 редове и колони. 513 00:29:01,000 --> 00:29:03,000 Те са по-високоефективен от нещо като електронна таблица, 514 00:29:03,000 --> 00:29:05,000 и електронна таблица е предназначена да бъде използвана от човека. 515 00:29:05,000 --> 00:29:08,000 Базата данни е предназначен да се използва от един програмист 516 00:29:08,000 --> 00:29:12,000 писане на код срещу него, така че въплъщението на база данни 517 00:29:12,000 --> 00:29:14,000 ще бъде която и да е от командния ред. 518 00:29:14,000 --> 00:29:18,000 >> Един от най-популярните релационни бази данни там е, отново, MySQL, 519 00:29:18,000 --> 00:29:22,000 , което е чудесно безплатно, много високо изпълнение, и това е, което 520 00:29:22,000 --> 00:29:24,000 Facebook се използва много по-рано и до известна степен и до днес 521 00:29:24,000 --> 00:29:27,000 да се съхранява много от данните си, и ще видим в един момент 522 00:29:27,000 --> 00:29:30,000 че използването на сравнително прости команди 523 00:29:30,000 --> 00:29:33,000 ние можем да изберете данни, вмъкване на данни, актуализиране на данните, 524 00:29:33,000 --> 00:29:37,000 изтриване на данни и други подобни, но слава Богу, има по-лесен за употреба интерфейс 525 00:29:37,000 --> 00:29:39,000 , отколкото просто напишете в черно и бяло ред тук. 526 00:29:39,000 --> 00:29:43,000 Ние ще използваме за pset 7 и извън безплатен инструмент, наречен PhpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Името не е случайно. 528 00:29:45,000 --> 00:29:47,000 Инструментът се случва, да се реализира в PHP, 529 00:29:47,000 --> 00:29:49,000 но това е фундаментално без значение. 530 00:29:49,000 --> 00:29:53,000 Какво е полезно за PhpMyAdmin е, че това е уеб-базиран полезност. 531 00:29:53,000 --> 00:29:55,000 Сме го предварително инсталирани в уреда за вас, 532 00:29:55,000 --> 00:29:58,000 и с него можете да създавате таблици в база данни, 533 00:29:58,000 --> 00:30:01,000 можете да вмъкнете данни, изтриване на данни, и обикновено виждам 534 00:30:01,000 --> 00:30:04,000 вашите данни в доста лесен за употреба среда. 535 00:30:04,000 --> 00:30:07,000 Вашите потребители няма да използвате PhpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Това е наистина само една административна или средство за разработчика 537 00:30:09,000 --> 00:30:12,000 , с която да се види и да се мушкам около вашите данни и да разбера как да го структурира, 538 00:30:12,000 --> 00:30:15,000 много като теб себе си може да използвате Excel или номера, 539 00:30:15,000 --> 00:30:19,000 но това ще бъде един чудесен начин за визуализиране какво става под капака 540 00:30:19,000 --> 00:30:22,000 така че да можете да се съсредоточите върху интересен проблем за решаване, а не толкова 541 00:30:22,000 --> 00:30:25,000 на мистериозните команди. 542 00:30:25,000 --> 00:30:28,000 Нека да разгледаме един пример на данни, които могат да се съхраняват tabularly 543 00:30:28,000 --> 00:30:30,000 в релационна база данни. 544 00:30:30,000 --> 00:30:32,000 Ето един такъв пример. 545 00:30:32,000 --> 00:30:35,000 Сега, за съжаление, все пак е допуснал грешка от страна на хвърлят твърде много думи 546 00:30:35,000 --> 00:30:38,000 и графика при вас, но ако се усъвършенствате в само на 547 00:30:38,000 --> 00:30:42,000 ID колона, колоната потребителско име и хеш колона, 548 00:30:42,000 --> 00:30:45,000 това е ефективно електронна таблица, но се случва да бъде фрагмент 549 00:30:45,000 --> 00:30:49,000 на таблица вътрешността на уреда 550 00:30:49,000 --> 00:30:53,000 файл, който ние Ви предлагаме в проблем набор 7. 551 00:30:53,000 --> 00:30:57,000 >> По-специално, ние ви даваме файл, който представлява 552 00:30:57,000 --> 00:31:01,000 на потребителя масата, така таблица, съдържаща потребители с три колони, 553 00:31:01,000 --> 00:31:05,000 един от които е уникален идентификатор, започвайки от 1 и да бъдат увеличени след това. 554 00:31:05,000 --> 00:31:08,000 Втората колона е потребителското име, както и тези от вас, които направих Hacker, 555 00:31:08,000 --> 00:31:12,000 Hacker издание за pset 2, може да признае някои от тези потребителски имена най-малко. 556 00:31:12,000 --> 00:31:16,000 От дясната страна са пароли, но те не са буквални пароли. 557 00:31:16,000 --> 00:31:19,000 Те са хешове от него, така че се оказва, 558 00:31:19,000 --> 00:31:22,000 че съхраняване на пароли в база данни е наистина лоша идея. 559 00:31:22,000 --> 00:31:25,000 Ти вероятно всички четат в някакъв момент от някои сайт 560 00:31:25,000 --> 00:31:28,000 или някаква компания база данни компрометиран и тогава ще трябва да 561 00:31:28,000 --> 00:31:31,000 смените паролата си, което трябва да получи възстановяване на нещата 562 00:31:31,000 --> 00:31:34,000 защото някои лош човек всъщност се разби в профила си като резултат. 563 00:31:34,000 --> 00:31:38,000 >> Съхранение на пароли в чист текст, некриптиран в база данни 564 00:31:38,000 --> 00:31:41,000 е напълно магаретата, и все пак това е много забавен 565 00:31:41,000 --> 00:31:44,000 след това да прочетете за някои много добре познати компании 566 00:31:44,000 --> 00:31:47,000 понякога в пресата, чиито бази данни са изложени на риск, 567 00:31:47,000 --> 00:31:50,000 и тази част не е смешно, но факта, че базите данни съдържат некриптиран 568 00:31:50,000 --> 00:31:53,000 пароли е нелепо, защото буквално с един ред код 569 00:31:53,000 --> 00:31:57,000 можете да защитите срещу тази конкретна заплаха, и това е, което ние сме направили тук. 570 00:31:57,000 --> 00:32:00,000 Дори и за нашата фалшива малко CS50 финансите версия 571 00:32:00,000 --> 00:32:03,000 ние се криптира пароли за добра мярка, и факта, че 572 00:32:03,000 --> 00:32:07,000 всички тези пароли започват с $ 1 $ е само конвенция. 573 00:32:07,000 --> 00:32:10,000 Това просто означава, че те са криптирани или наистина сегментира, 574 00:32:10,000 --> 00:32:13,000 което е като еднопосочна функция за криптиране 575 00:32:13,000 --> 00:32:17,000 , с което не може да се обърне неговите ефекти с нещо, наречено MD5. 576 00:32:17,000 --> 00:32:21,000 >> Фактът, че 50 е след това означава, че сол стойност 577 00:32:21,000 --> 00:32:24,000 на 50 е била използвана за хеширане на всички тези пароли, с изключение на една. 578 00:32:24,000 --> 00:32:27,000 Mine, разбира се, както можете да видите там, ха, 579 00:32:27,000 --> 00:32:30,000 използване на различна сол, така че тези от вас, които се леко спънал 580 00:32:30,000 --> 00:32:33,000 може би в Hacker 2, които биха могли да са резултат от нашата, които са използвали 581 00:32:33,000 --> 00:32:36,000 различна хеш от другите, защото паролата ми е всъщност един и същ 582 00:32:36,000 --> 00:32:38,000 като някой друг потребител там. 583 00:32:38,000 --> 00:32:41,000 В действителност, ако сте били чака всички тези седмици, за да разберете 584 00:32:41,000 --> 00:32:44,000 какви са тези пароли са тук са паролите, които са били оспорени 585 00:32:44,000 --> 00:32:48,000 да се справи в Hacker издание на проблем набор две, така че никой твърде сложен. 586 00:32:48,000 --> 00:32:50,000 В действителност, Малан беше същото като jharvard, 587 00:32:50,000 --> 00:32:54,000 но ако се върнем изглеждаше различно. 588 00:32:54,000 --> 00:32:58,000 >> Съсредоточете се върху jharvard в пурпурно, защото те са били осолени различно. 589 00:32:58,000 --> 00:33:01,000 Алгоритъмът е смутен в начина, по който 590 00:33:01,000 --> 00:33:05,000 хеш стойност, криптирана стойност изглежда малко по-различно 591 00:33:05,000 --> 00:33:08,000 защото входовете са малко по-различни, но паролата под капака 592 00:33:08,000 --> 00:33:10,000 все още е в крайна сметка пурпурно. 593 00:33:10,000 --> 00:33:12,000 Сега, на кого му пука за това? 594 00:33:12,000 --> 00:33:15,000 Е, ние сме с примерни потребители, потребителски имена примерни 595 00:33:15,000 --> 00:33:18,000 и на хешовете на паролите си, така, че вие ​​всъщност имат някаква 596 00:33:18,000 --> 00:33:23,000 клиенти за CS50 финансите, когато за първи път сляза на земята с кода си. 597 00:33:23,000 --> 00:33:27,000 Ще трябва да се прилагат повече маси вътре в MySQL, в рамките на базата данни. 598 00:33:27,000 --> 00:33:30,000 Ще трябва да се създадат повече електронни таблици, ефективно, но ние решихме да ви давам този един 599 00:33:30,000 --> 00:33:33,000 , за да започна, и ще видите, че спецификацията проблем набор 600 00:33:33,000 --> 00:33:37,000 ходи през процеса на вноса на тази таблица 601 00:33:37,000 --> 00:33:39,000 , а също и обяснява какво някои от характеристиките са 602 00:33:39,000 --> 00:33:41,000 и вие ще видите, че ние ви предоставяме с код 603 00:33:41,000 --> 00:33:44,000 да се справят с хеширане или криптиране на тези пароли, 604 00:33:44,000 --> 00:33:49,000 така че не е нужно да се притеснявате твърде много за MD5 или като всъщност е всичко това. 605 00:33:49,000 --> 00:33:53,000 >> Така че, SQL, Structured Query Language. 606 00:33:53,000 --> 00:33:56,000 Това е съвсем просто, на езика, ние сме на път да започнете да използвате в pset 7 607 00:33:56,000 --> 00:34:01,000 а може би и извън нея, за да поиска данни от бази от данни. 608 00:34:01,000 --> 00:34:06,000 Данните се, отново, съхранявани tabularly в тези релационни таблици, колони и редове, 609 00:34:06,000 --> 00:34:09,000 но използването на някои сравнително прост синтаксис като изтриване, 610 00:34:09,000 --> 00:34:12,000 вписване, актуализиране и изберете можем да направим точно това. 611 00:34:12,000 --> 00:34:15,000 Можем да изтрием от базата данни, поставете 612 00:34:15,000 --> 00:34:19,000 актуализиране на данни, както и да изберете, това е, извличане на данни от базата данни. 613 00:34:19,000 --> 00:34:21,000 Как да направим това? 614 00:34:21,000 --> 00:34:23,000 Нека вървим напред в уреда. 615 00:34:23,000 --> 00:34:28,000 Остави ме да извадя на http://localhost, 616 00:34:28,000 --> 00:34:30,000 което, отново, е местната самия уред. 617 00:34:30,000 --> 00:34:32,000 Това е по подразбиране псевдоним. 618 00:34:32,000 --> 00:34:35,000 И ме пусна / PhpMyAdmin. 619 00:34:35,000 --> 00:34:39,000 Това се случва да бъде специален URL, че уредът е предварително конфигурирано да се разбере 620 00:34:39,000 --> 00:34:42,000 , което веднага ме пита за потребителско име и парола. 621 00:34:42,000 --> 00:34:46,000 >> Както обикновено, аз отивам да въведете jharvard и червено, 622 00:34:46,000 --> 00:34:48,000 но осъзнават, че е администраторски акаунт на компютъра. 623 00:34:48,000 --> 00:34:53,000 Това е просто съвпадение, че има и jharvard регистрирани за CS50 финансите. 624 00:34:53,000 --> 00:34:56,000 Jharvard, пурпурен, въведете ми дава потребителски интерфейс, който видяхме 625 00:34:56,000 --> 00:34:59,000 преди да зърне за момент, и това е малко поразителен на първо, 626 00:34:59,000 --> 00:35:02,000 но Бъдете сигурни, вие никога няма да бъдете ще трябва да щракнете върху по-голямата част от връзките в този инструмент. 627 00:35:02,000 --> 00:35:05,000 Ще се използва една малка част, които са супер полезни, 628 00:35:05,000 --> 00:35:08,000 първият от които е базите данни тук. 629 00:35:08,000 --> 00:35:11,000 Ако отида до бази данни, обърнете внимание, че аз съм подканени да създадете база данни. 630 00:35:11,000 --> 00:35:14,000 Това е като създаването на нов файл на Excel, ефективно. 631 00:35:14,000 --> 00:35:18,000 Отивам да вървим напред и да се обадя тази лекция, а аз съм просто ще игнорира областта там, съпоставяне. 632 00:35:18,000 --> 00:35:20,000 Той е свързан с представяне на данни в него, 633 00:35:20,000 --> 00:35:24,000 и аз отивам да щракнете върху Създаване и сега забележите, като пусна на създаване на 634 00:35:24,000 --> 00:35:27,000 на лявата страна, където се казва, не бази данни 635 00:35:27,000 --> 00:35:30,000 Скоро трябва да видите базата данни на лекция. 636 00:35:30,000 --> 00:35:32,000 >> Ако аз сега кликнете на лявата страна, лекцията база данни, 637 00:35:32,000 --> 00:35:34,000 забележите разделите ми се промени малко. 638 00:35:34,000 --> 00:35:38,000 Имам структура, SQL, износ, внос и някои други неща. 639 00:35:38,000 --> 00:35:40,000 Структура е почти празен. 640 00:35:40,000 --> 00:35:43,000 Не са намерени таблици в базата данни, както се казва тук, 641 00:35:43,000 --> 00:35:47,000 така че нека да създадете таблица, и да вървим напред и да създадете таблица 642 00:35:47,000 --> 00:35:53,000 искали студентите, както и колко колони искате? 643 00:35:53,000 --> 00:35:55,000 Нека запазим тази проста, и нека рекорд за всеки ученик 644 00:35:55,000 --> 00:35:58,000 идентификационен номер, име и имейл адрес. 645 00:35:58,000 --> 00:36:02,000 >> Ние ще продължаваме да го прости подобно, така че три колони, отидете. 646 00:36:02,000 --> 00:36:05,000 Форма, която виждате тук, е малко разхвърлян и завладяващ, 647 00:36:05,000 --> 00:36:08,000 но ние просто трябва да отидете през него ред по ред, така че наистина бързо да дадем 648 00:36:08,000 --> 00:36:14,000 първата колона в тази база данни името на ID за единен идентификатор. 649 00:36:14,000 --> 00:36:17,000 Тя ще бъде цяло число. Всъщност мога да игнорира дължина и ценности. 650 00:36:17,000 --> 00:36:21,000 Едно цяло число ще бъде 32 бита Без значение какво ще пишете там, така че нека оставим празно. 651 00:36:21,000 --> 00:36:24,000 Стойност по подразбиране, бих могъл да го направи нула, както е определено. 652 00:36:24,000 --> 00:36:27,000 Отивам да напусне сам. Нека не се тревожи за стойности по подразбиране. 653 00:36:27,000 --> 00:36:29,000 Да превъртете тук надясно, атрибути. 654 00:36:29,000 --> 00:36:31,000 Това е интересно. 655 00:36:31,000 --> 00:36:33,000 Да вървим напред и донякъде произволно да се каже, че документи за самоличност трябва да бъде грозен. 656 00:36:33,000 --> 00:36:35,000 Нека не губим никакви отрицателни числа. 657 00:36:35,000 --> 00:36:37,000 >> Да вървим 0-4000000000, или да даде, 658 00:36:37,000 --> 00:36:40,000 и след това да не се докосва някоя от тези области, просто все още там, 659 00:36:40,000 --> 00:36:43,000 но тогава нека да въведете име тук, 660 00:36:43,000 --> 00:36:46,000 и след това другата е електронна поща, така че уловът е имейл 661 00:36:46,000 --> 00:36:50,000 и име, очевидно не цели числа, така че нека променим тези на друго поле. 662 00:36:50,000 --> 00:36:53,000 Оказва се, VARCHAR, с променлива дължина Чар, 663 00:36:53,000 --> 00:36:56,000 е като низ в база данни SQL 664 00:36:56,000 --> 00:36:59,000 но с различна дължина, а всъщност трябва да го кажа предварително 665 00:36:59,000 --> 00:37:02,000 Максималната дължина на низа, така че аз ще съм до известна степен произволно 666 00:37:02,000 --> 00:37:05,000 от тип конвенция 255 знака. 667 00:37:05,000 --> 00:37:08,000 Бих могъл напълно да се каже 32. Мога да кажа, 1000. 668 00:37:08,000 --> 00:37:11,000 Вид необходимостта да реши за себе си въз основа на демографски какво е 669 00:37:11,000 --> 00:37:14,000 най-дългото име на студента и с този номер или малко по-голям, 670 00:37:14,000 --> 00:37:17,000 но това, което е хубаво около VARCHAR е, че не става за губене 671 00:37:17,000 --> 00:37:19,000 255 байта на името на всеки студент. 672 00:37:19,000 --> 00:37:23,000 Ако Дейвид няма да се използват цял ​​255 байта, 673 00:37:23,000 --> 00:37:26,000 но това е горната граница, така че аз просто ще отида с 255 от конвенцията, 674 00:37:26,000 --> 00:37:30,000 но бихме могли дебат, който да бъде по-ниска стойност, както и за имейл адрес 675 00:37:30,000 --> 00:37:34,000 само за да бъде последователен 255, но отново, бихме могли да имаме същия дебат. 676 00:37:34,000 --> 00:37:36,000 Но аз ще направя нещо друго тук на дясната страна. 677 00:37:36,000 --> 00:37:40,000 >> Какво е мощен за база данни е, че той може да направи много вдигане на тежки предмети 678 00:37:40,000 --> 00:37:42,000 или сложна работа за вас. 679 00:37:42,000 --> 00:37:46,000 По-специално, аз наистина не ми пука какво са ми идентификационните номера на ученика. 680 00:37:46,000 --> 00:37:49,000 Това е просто писано да бъде уникален идентификатор в базата данни 681 00:37:49,000 --> 00:37:52,000 така че имам 32-битов сбито представяне на този ученик 682 00:37:52,000 --> 00:37:55,000 така, че да има някакъв начин да ги идентифицира еднозначно 683 00:37:55,000 --> 00:37:58,000 не би да има две Давидс, например, в един клас. 684 00:37:58,000 --> 00:38:01,000 В действителност, аз отивам да се провери това поле AI, автоматично увеличение, 685 00:38:01,000 --> 00:38:04,000 така, че базата данни, MySQL, разбира, 686 00:38:04,000 --> 00:38:08,000 ID всеки добавя студент ще бъде. 687 00:38:08,000 --> 00:38:11,000 Аз дори не трябва да се грижат за това в моя код, 688 00:38:11,000 --> 00:38:13,000 и аз също ще избере нещо под менюто на индекса. 689 00:38:13,000 --> 00:38:17,000 Индексът падащото тук е първична, уникален, 690 00:38:17,000 --> 00:38:19,000 индекс и пълен текст. 691 00:38:19,000 --> 00:38:21,000 Вие може би Предполагам, че това, което няколко от тези неща са, 692 00:38:21,000 --> 00:38:24,000 но се оказва, в релационни бази данни 693 00:38:24,000 --> 00:38:28,000 сте програмист или администратор на база данни стигнем до изпреварващо 694 00:38:28,000 --> 00:38:32,000 даде съвети към базата данни кои области 695 00:38:32,000 --> 00:38:34,000 в таблица са малко по-специален. 696 00:38:34,000 --> 00:38:37,000 >> Така например, в този случай аз отивам да се каже, че ID 697 00:38:37,000 --> 00:38:42,000 ще бъде основен индекс, иначе известни като първичен ключ. 698 00:38:42,000 --> 00:38:44,000 Какво означава това по дефиниция е, че ID занапред 699 00:38:44,000 --> 00:38:48,000 ще идентифицира по уникален начин учениците в тази таблица. 700 00:38:48,000 --> 00:38:53,000 На студентите ще имат същия ID, защото аз съм налагането на това ограничение, или този индекс. 701 00:38:53,000 --> 00:38:55,000 Освен това, за какво ще направиш за мен, е, че ще каже 702 00:38:55,000 --> 00:38:58,000 MySQL, че ID е специален. 703 00:38:58,000 --> 00:39:03,000 Ми пука особено за ID, така че давай напред и да направим магия ви харесва структура на данните, 704 00:39:03,000 --> 00:39:05,000 изграждане на някакво дърво. 705 00:39:05,000 --> 00:39:08,000 Обикновено това е нещо, наречено B-дърво, което ние не погледна седмици, 706 00:39:08,000 --> 00:39:11,000 но това е друга такава структура на данните, подобни по дух на двоични дървета 707 00:39:11,000 --> 00:39:15,000 и се опитва, че ние погледна, но тя ще каже 708 00:39:15,000 --> 00:39:18,000 до базата данни тази област е толкова важно, че вероятно 709 00:39:18,000 --> 00:39:22,000 искам да бъде в състояние да се търси по него, давай напред и да изградят някаква фантазия 710 00:39:22,000 --> 00:39:25,000 структурата на данните в паметта, за да се ускори търсенето, така че в идеалния случай 711 00:39:25,000 --> 00:39:28,000 те са константно време или поне толкова близо, че е възможно 712 00:39:28,000 --> 00:39:32,000 така че да не се прехвърлят в линейно търсене, което няма да бъде 713 00:39:32,000 --> 00:39:34,000 най-високо изпълнение подход. 714 00:39:34,000 --> 00:39:37,000 От друга страна, имейл адрес, може да бъде първичен ключ. 715 00:39:37,000 --> 00:39:41,000 >> На теория, имейл адрес на всеки е уникален, освен ако не сте споделяне на някои сметка, 716 00:39:41,000 --> 00:39:45,000 но това по принцип не е добре да се използва нещо като низ 717 00:39:45,000 --> 00:39:49,000 като първичен ключ, защото ако своята цел в живота е да идентифицира по уникален начин 718 00:39:49,000 --> 00:39:55,000 редове в таблицата си, че няма причина да се използва 255 байта максимално 719 00:39:55,000 --> 00:39:58,000 за да може еднозначно да идентифицира някой, ако може да се размине само с 4 байта 720 00:39:58,000 --> 00:40:00,000 или 32-битова вътр. 721 00:40:00,000 --> 00:40:03,000 Като цяло, първичен ключ трябва да бъде кратък и по-кратка 722 00:40:03,000 --> 00:40:07,000 и в идеалния случай нещо като цяло число или голяма INT, което се случва да е 64 бита. 723 00:40:07,000 --> 00:40:11,000 Но имейл адрес трябва да бъде уникален, и една от характеристиките на база данни 724 00:40:11,000 --> 00:40:14,000 е да наложат уникалност за мен. 725 00:40:14,000 --> 00:40:18,000 С избирането на уникален тук до имейл, въпреки че самата имейл 726 00:40:18,000 --> 00:40:21,000 се превъртат на разстояние от екрана, аз казвам на база данни 727 00:40:21,000 --> 00:40:23,000 не ми се довериш. 728 00:40:23,000 --> 00:40:26,000 Не ме оставяй да вмъкнете в базата данни 729 00:40:26,000 --> 00:40:29,000 същия имейл адрес два пъти, дори и ако аз съм идиот и не съм 730 00:40:29,000 --> 00:40:32,000 много добре с моите федерации и другаде федерации и действителното PHP код 731 00:40:32,000 --> 00:40:37,000 и аз случайно позволи на потребителите да се регистрират със съществуващ имейл адрес 732 00:40:37,000 --> 00:40:40,000 базата данни е още едно ниво на защита за коректността 733 00:40:40,000 --> 00:40:44,000 да се гарантира, че няма дублиране имейл адрес не се окажете в таблицата. 734 00:40:44,000 --> 00:40:49,000 >> Сега, от друга страна, за името вероятно не искате да направите това уникално 735 00:40:49,000 --> 00:40:51,000 защото тогава никога не може да бъде два Давидс или две Майк Смит, например, 736 00:40:51,000 --> 00:40:55,000 в базата данни, така че един ще оставим на мира. 737 00:40:55,000 --> 00:40:58,000 Отивам да вървим напред и щракнете върху Запиши в долния десен ъгъл, 738 00:40:58,000 --> 00:41:02,000 и всичко изглежда добре, но забележите тук 739 00:41:02,000 --> 00:41:04,000 това е част, че за сега няма да прекарват твърде много време в 740 00:41:04,000 --> 00:41:07,000 защото синтаксисът е малко по-сложен, и ние не трябва да създавате таблици 741 00:41:07,000 --> 00:41:10,000 всички, че често, но SQL сама по себе си е език, 742 00:41:10,000 --> 00:41:13,000 синтаксиса, за които е точно тук, че съм подчертано. 743 00:41:13,000 --> 00:41:18,000 PhpMyAdmin наистина е тя създава уеб-базиран GUI за вас 744 00:41:18,000 --> 00:41:23,000 , с която можете да спестите време и не трябва ръчно да въведете 745 00:41:23,000 --> 00:41:26,000 доста дълго SQL заявка подобно. 746 00:41:26,000 --> 00:41:29,000 >> С други думи, ако искате да създадете ръчно тази таблица, 747 00:41:29,000 --> 00:41:32,000 или, че черно и бяло ред или дори в PhpMyAdmin 748 00:41:32,000 --> 00:41:35,000 с помощта на този друг раздел, SQL този раздел, където можете да въведете всички въпроси, SQL 749 00:41:35,000 --> 00:41:38,000 искате, честно казано, това щеше да ми отнеме минута 750 00:41:38,000 --> 00:41:41,000 действително помня целия синтаксис, но дори и тогава вероятно ще има 751 00:41:41,000 --> 00:41:45,000 направи някои правописни грешки, така че този инструмент е полезен за такива неща, а тя също е поучително. 752 00:41:45,000 --> 00:41:49,000 Можете да започнете да си представите какво е синтаксиса 753 00:41:49,000 --> 00:41:52,000 само с хубав цвят кодиране, че PhpMyAdmin е добавянето 754 00:41:52,000 --> 00:41:54,000 зрителната ни удобство. 755 00:41:54,000 --> 00:41:56,000 Но сега нека да направим това, вместо. 756 00:41:56,000 --> 00:42:00,000 Нека отидете на раздела Вмъкване на върха, и ме пусна напред и поставете например 757 00:42:00,000 --> 00:42:04,000 ID да кажа, всъщност не ми пука. 758 00:42:04,000 --> 00:42:07,000 Това ще Авто инкремент. Аз няма да позволя на сделката база данни с това. 759 00:42:07,000 --> 00:42:11,000 Но аз се Дейвид, и моя имейл трябва да бъде malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Да вървим напред тук и във филма на Майк Смит като друг. 761 00:42:16,000 --> 00:42:18,000 Ще се даде последен име, както и, 762 00:42:18,000 --> 00:42:22,000 и ние ще му бъде smith@example.com, 763 00:42:22,000 --> 00:42:24,000 и след това къде да отида следващия? 764 00:42:24,000 --> 00:42:27,000 Е, това прилича на движение е бутона, за да кликнете върху него и готово. 765 00:42:27,000 --> 00:42:30,000 Бележка на върха 2 вмъкнатите редове. 766 00:42:30,000 --> 00:42:32,000 Това е реалната заявка SQL. 767 00:42:32,000 --> 00:42:36,000 Това е на PhpMyAdmin инструмент, екзекутиран за мен, 768 00:42:36,000 --> 00:42:40,000 но крайният резултат, забележка, ако сега отидете на раздела разглеждане, 769 00:42:40,000 --> 00:42:43,000 е да се види два реда в тази таблица, много напомнящ естетически 770 00:42:43,000 --> 00:42:46,000 на масата видяхме по-рано за нашите потребители от pset 7 771 00:42:46,000 --> 00:42:51,000 един от които е Дейвид Малан, единият от които сега е Майк Смит. 772 00:42:51,000 --> 00:42:54,000 Но само за да бъде ясно, че не е нужно да използвате PhpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 и наистина, вие сте най-скоро време ще се пише код за pset 7 774 00:42:56,000 --> 00:43:01,000 , която автоматизира процеса на добавяне на редове, изтриване редове, актуализиране на редове и подобни, 775 00:43:01,000 --> 00:43:04,000 така че нека, вместо да отидете на раздела на SQL тук 776 00:43:04,000 --> 00:43:14,000 и вида Изберете * от студенти, където 777 00:43:14,000 --> 00:43:18,000 електронна поща = "malan@harvard.edu". 778 00:43:18,000 --> 00:43:21,000 >> С други думи Предполагам, че сега имате 779 00:43:21,000 --> 00:43:26,000 някои HTML форма, и типове потребители в електронния си адрес, наред с други области, 780 00:43:26,000 --> 00:43:29,000 и целта сега е на гърба края код в PHP 781 00:43:29,000 --> 00:43:31,000 действително да търсите други подробности на този потребител. 782 00:43:31,000 --> 00:43:34,000 Какво е вашето пълно име? Какъв е вашият ID номер? 783 00:43:34,000 --> 00:43:37,000 Можете да напишете SQL заявка като тази, изберете * от студенти 784 00:43:37,000 --> 00:43:40,000 където имейл = "malan@harvard.edu". 785 00:43:40,000 --> 00:43:46,000 И ако след това щракнете върху, забележете, че трябва да и наистина аз, да се върнат само един ред. 786 00:43:46,000 --> 00:43:50,000 Майк е пропуснато от този резултат, тъй като събирането на редове 787 00:43:50,000 --> 00:43:53,000 обикновено се нарича, защото той не разполага с същия имейл адрес като мен. 788 00:43:53,000 --> 00:43:57,000 >> Сега, отново, тук за pset 7 ще използва PhpMyAdmin като административен инструмент 789 00:43:57,000 --> 00:44:00,000 и педагогически инструмент, за да научат своя път 790 00:44:00,000 --> 00:44:03,000 около света на SQL, но в края на деня 791 00:44:03,000 --> 00:44:08,000 ти започваш да се пише на тези въпроси вътре в действителният код, PHP, 792 00:44:08,000 --> 00:44:11,000 и така следете в репетиция Zamyla по-специално 793 00:44:11,000 --> 00:44:14,000 където ще получите една обиколка на разпространение на кодове за този проблем, 794 00:44:14,000 --> 00:44:18,000 където сме ви даде не само естетиката на страницата за вход 795 00:44:18,000 --> 00:44:21,000 и хубаво секси лого, което казва CS50 финансите, но ние сме също ви е дал 796 00:44:21,000 --> 00:44:24,000 един куп функции, които ще направят живота ви по-лесно. 797 00:44:24,000 --> 00:44:27,000 Ние също така писмената част на pset за вас, 798 00:44:27,000 --> 00:44:32,000 вход част от него по-специално, за да ви даде чувство на представител дизайн 799 00:44:32,000 --> 00:44:36,000 че всъщност използва контролер, например, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php и други подобни, и тогава ще видите pset също има шаблони директория 801 00:44:40,000 --> 00:44:43,000 , която има всички вашите възгледи, на естетиката. 802 00:44:43,000 --> 00:44:46,000 И така цялостния работен процес в pset 7 ще бъде, че 803 00:44:46,000 --> 00:44:49,000 вашите потребители посещават контролер чрез URL адрес в браузъра. 804 00:44:49,000 --> 00:44:53,000 Контролер съдържа PHP код, който сте написали, и вътрешността на PHP код 805 00:44:53,000 --> 00:44:57,000 биха могли да бъдат вложени в някои линии на SQL между двойни кавички 806 00:44:57,000 --> 00:45:00,000 и подава на функцията писахме заявка 807 00:45:00,000 --> 00:45:03,000 , които ще ви помогнат да говоря с базата данни, без да използвате нещо подобно 808 00:45:03,000 --> 00:45:05,000 административен инструмент като PhpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Вие ще бъдете в състояние да напише SQL отчети в PHP код 810 00:45:08,000 --> 00:45:11,000 и да се върнат PHP масив от резултати, 811 00:45:11,000 --> 00:45:14,000 на редовете, които съответстват на тази заявка. 812 00:45:14,000 --> 00:45:18,000 И по същия начин вие ще бъдете в състояние да направи вмъква или изтрива 813 00:45:18,000 --> 00:45:22,000 или ъпдейти или подобни, синтаксиса, за която е доста сходна, 814 00:45:22,000 --> 00:45:25,000 и ще видите от някои онлайн препратки, от разпространение на кодове 815 00:45:25,000 --> 00:45:29,000 и от самата pset пакет как точно да отида за това. 816 00:45:29,000 --> 00:45:33,000 Осъзнайте, в крайна сметка ние сме наистина само надраскване на повърхността на SQL 817 00:45:33,000 --> 00:45:36,000 и на MySQL, но силата на наистина е, че тя ви освобождава 818 00:45:36,000 --> 00:45:40,000 да се съсредоточи върху проблемите, които искате да се реши, случаите на употреба, които искат да приложат 819 00:45:40,000 --> 00:45:43,000 без да се налага да се притеснявате толкова много, поне в началото на 820 00:45:43,000 --> 00:45:47,000 как и къде да се съхранява и търси в база данни, 821 00:45:47,000 --> 00:45:50,000 и това е съвсем буквално, където Facebook си има своето начало 822 00:45:50,000 --> 00:45:53,000 използване на MySQL и след това с помощта на повече сървъри MySQL и след това повече сървъри MySQL 823 00:45:53,000 --> 00:45:57,000 преди дълго, докато след това те трябва наистина да започнем да мислим усилено за това как да 824 00:45:57,000 --> 00:46:00,000 съхраняване на данни, как да съхранявате нещата още по-ефективно, 825 00:46:00,000 --> 00:46:04,000 така че дори и ние ще приемаме за даденост факта, че индекси и уникални ограничения 826 00:46:04,000 --> 00:46:08,000 и така нататък просто работа, има един много интересен разговор 827 00:46:08,000 --> 00:46:12,000 че това може всички в крайна сметка да доведе до, така осъзнават, че ние просто чесане на повърхността 828 00:46:12,000 --> 00:46:17,000 на това, което може в крайна сметка за вас или вашите проекти стават доста големи данни. 829 00:46:17,000 --> 00:46:22,000 >> С това каза, нека да приключим тук, и ние ще се видим следващата седмица. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]