1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Недела 8, Продолжува] 2 00:00:02,000 --> 00:00:04,000 [Дејвид Џ Malan] [Универзитетот Харвард] 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 без всушност морале да Trek веќе низ дворот да Wigglesworth 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 >> Потсетиме дека кодот за ова е во 2 дела. 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 имавме некои репрезентативна форма влезови, текст поле, полето, 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 иако тоа е позајмена од В 41 00:02:20,000 --> 00:02:24,000 >> Ова arrow оператор ни овозможува да се направи употреба на нешто што се нарекува објектно-ориентираното програмирање. 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, а потоа притиснете ентер 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 >> Сега, во реалноста овие денови на сајтови како Фејсбук и Google Maps 78 00:04:18,000 --> 00:04:21,000 и Твитер и слично, има многу повеќе динамика при 79 00:04:21,000 --> 00:04:25,000 дури и по таа икона ќе престане да се врти вие всушност може да се добие повеќе надградби 80 00:04:25,000 --> 00:04:29,000 од серверот, повеќе твитови, повеќе ажурирање на статусот на Фејсбук и слично. 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 има голем број на superglobals, 88 00:04:52,000 --> 00:04:55,000 и superglobal е, пак, посебна глобалната променлива 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 и меѓу superglobals видовме досега се добие и пост, 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 >> Ова superglobal, која, како другите, е предаден на вас автоматски од страна на 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 ќе се осигура дека она што ќе се стави во таа седница superglobal 118 00:06:32,000 --> 00:06:37,000 една минута или 5 минути се уште ќе биде таму кога корисникот враќа. 119 00:06:37,000 --> 00:06:40,000 И под хаубата овој superglobal се спроведува по пат на 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 superglobal асоцијативна низа ќе биде таму некои број на минути подоцна 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 Тоа ви овозможува да го користите дека голем superglobal $ _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 внатрешноста на кој тоа е ставање на копија на она што е внатре на superglobal 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 нејзините клучни, има нова вредност доделен која е неговата сегашна вредност плус 1. 143 00:08:06,000 --> 00:08:09,000 На кратко, оваа датотека се чини дека е ажурирање 144 00:08:09,000 --> 00:08:13,000 контра која е зачувана во внатрешноста на сесијата superglobal 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 ако тоа е само таму кај вашиот HTML PHP се случува да се претпостави дека е само 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 печати ($ контра) или дури и нешто како printf (% 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 да се каже 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 и грешка се чини да се биде таму, да го нема, on-line 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 која е вашата верзија на Јаху финансии или Google Финансии 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 Таа има копче поднесе, но потоа, како што ние на крајот ќе видиме, 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 да се пребарува Јаху финансии, кој прекрасно ја прави достапна бесплатно на податоци 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 и можеби за последен проект, ако се направи нешто web-базирана 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 која прави да разговараат со вашиот бази на податоци, што зборува за Јаху финансии и слично, 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 и ако следете ја врската до Предавања информации дека рачно 274 00:15:35,000 --> 00:15:39,000 до врвот ќе се промени на lectures.php. 275 00:15:39,000 --> 00:15:44,000 Ако јас потоа следете ја врската до недела 1 забележите дека рачно промени 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 на Li тагови, јас сепак имаат doc тип, 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 # include механизам. 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 и Недела 2 ние ќе ги видиме 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 Во овој случај, тоа изгледа како да има 2 функции. 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 дефинирани функции наречена направи footer и даде насловот, 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 Не може да има, но во моментот тоа е тешко кодирани листа на 2 тагови, 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 а потоа ќе concatenate надменно. 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 но дозволете ми да се отвори 2 финалето примери. 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 од рачно на јавниот интернет се во мојот 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 директориумот HTML е index.php датотеката, 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 Всушност, навистина не е М тука, па дури и нашите Ц, 463 00:26:33,000 --> 00:26:36,000 контролор, не е навистина прави сето тоа многу, но ќе добиете многу повеќе 464 00:26:36,000 --> 00:26:39,000 запознаени со двете од овие 2 букви од 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 Назад во нашата Ц датотека, 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, структуриран јазик за пребарување, е уште еден јазик 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 Фејсбук користи многу рано и до одреден степен уште денес 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 бришење на податоците и слично, но за среќа, има повеќе user-friendly интерфејс 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 Сега, за жал, phpMyAdmin погрешил од страна на фрлање начин премногу зборови 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 на корисникот маса, па табела содржи корисници со 3 колони, 553 00:31:01,000 --> 00:31:05,000 од кои едниот е единствен број почеток во 1 и се зголемува потоа. 554 00:31:05,000 --> 00:31:08,000 Втората колона е корисничко име и оние од вас кои не Хакер, 555 00:31:08,000 --> 00:31:12,000 на Хакер издание за 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 Тоа само значи дека тие се шифрираат или навистина hashed, 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 се користи за hashing сите овие лозинки освен еден. 578 00:32:24,000 --> 00:32:27,000 Рудникот, се разбира, како што можете да видите има, ха, 579 00:32:27,000 --> 00:32:30,000 беше со користење на различни сол, па оние од вас кои добија малку сопнат 580 00:32:30,000 --> 00:32:33,000 можеби во Хакер 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 да попуштат во Хакер издание на проблемот во собата 2, па ниту премногу слабо. 586 00:32:48,000 --> 00:32:50,000 Всушност, malan беше иста како 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 hash вредност, шифрирана вредност изгледа малку различни 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 да се справи со hashing или енкрипција на овие лозинки, 604 00:33:44,000 --> 00:33:49,000 така да не треба да се грижите премногу за она што MD5 или слично е всушност за сите. 605 00:33:49,000 --> 00:33:53,000 >> Значи, SQL, структуриран јазик за пребарување. 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 >> Ќе го чувам едноставен како што, па 3 колони, оди. 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 првата колона во оваа база на податоци име на проект за единствен идентификатор. 649 00:36:14,000 --> 00:36:17,000 Тоа ќе биде цел број. Јас всушност може да го игнорира должина и вредности. 650 00:36:17,000 --> 00:36:21,000 Еден int ќе биде 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. Јас може да се каже 1.000. 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 Особено, јас навистина не се грижат што ID броеви мојот студентот се. 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 да нема 2 Давидс, на пример, во една класа. 684 00:37:58,000 --> 00:38:01,000 Всушност, јас одам да се провери ова поле АИ, авто прираст, 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 Не студентот ќе имаат ист број, бидејќи јас сум наметнување на ова ограничување или овој индекс. 701 00:38:53,000 --> 00:38:55,000 Исто така, она што ова се случува да направите за мене е тоа се случува да кажам 702 00:38:55,000 --> 00:38:58,000 MySQL, дека проект е посебен. 703 00:38:58,000 --> 00:39:03,000 Јас се грижат особено за проект, па оди напред и да направи магија вашите фенси податоци структурата, 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-битен int. 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 се scrolled надвор од екранот, сакам да кажам дека на базата на податоци 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 многу добар со моите IFS и друго IFS и вистински 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 затоа што тогаш никогаш не би можело да биде 2 Давидс или 2 Мајк Смит, на пример, 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 query се допаѓа. 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 queries 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 лична карта на да речеме-всушност не ми е грижа. 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 Па, тоа изгледа како движење е копчето за да кликнете, и Voila. 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 е да се види 2 реда во оваа табела, многу потсетува естетски 770 00:42:43,000 --> 00:42:46,000 на табелата видовме порано за нашите корисници од pset 7, 771 00:42:46,000 --> 00:42:51,000 еден од нив е Дејвид Malan, од кои едниот сега е Мајк Смит. 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 и тип во select * from студентите каде 777 00:43:14,000 --> 00:43:18,000 e-mail = "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 Што е вашето целосно име? Што е вашиот матичен број? 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 и па Stay tuned во Walkthrough 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 Вашите корисници посетите контролер преку рачно во прелистувачот. 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 и ова е буквално каде Фејсбук себе го доби својот почеток 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]