1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Tjedan 8, Nastavak] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Sveučilište Harvard] 3 00:00:04,000 --> 00:00:08,000 [Ovo je CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Ovo je CS50, tako da je ovo kraj tjedna 8 ovdje. 5 00:00:13,000 --> 00:00:16,000 Mi, naravno, imao malo uragan ranije ovog tjedna, 6 00:00:16,000 --> 00:00:19,000 pa sad to je stvarno samo ti i ja u ovom predavaonici, 7 00:00:19,000 --> 00:00:22,000 ali danas ćemo nastaviti naš razgovor o PHP 8 00:00:22,000 --> 00:00:25,000 i oko web programiranja općenito, a također smo uvesti ideju 9 00:00:25,000 --> 00:00:29,000 baza podataka, posebno jedan zove MySQL, koji je vrlo popularan ovih dana, 10 00:00:29,000 --> 00:00:34,000 velikim dijelom zbog njegove skalabilnosti, kao i zbog svoje biće besplatan i open source. 11 00:00:34,000 --> 00:00:37,000 >> Ali prvo, pogledajte gdje smo stali zadnji put. 12 00:00:37,000 --> 00:00:40,000 Sjetite se da smo bili u potrazi na nekoliko Frosh IMS primjera, 13 00:00:40,000 --> 00:00:44,000 i to je bio strašan oblik koji sam došao do nekih 15 + godina 14 00:00:44,000 --> 00:00:49,000 kako bi se studenti na kampusu registar za brucoš intramuralnog sportova 15 00:00:49,000 --> 00:00:52,000 bez da zapravo putovati više preko dvorišta do Wigglessworthovoj 16 00:00:52,000 --> 00:00:56,000 slajd fizički komad papira ispod neke Proctor vratima. 17 00:00:56,000 --> 00:00:59,000 Umjesto toga smo se preselili sve online, ali za to trebamo iskoristiti 18 00:00:59,000 --> 00:01:03,000 od nekoliko tehnologija, tako da se, trebamo HTML, Hypertext Markup Language, 19 00:01:03,000 --> 00:01:07,000 što je opet to Označni jezik s kojim ste napravili web stranice strukturalno. 20 00:01:07,000 --> 00:01:10,000 >> Koristeći malo CSS ovih dana, Cascading Style Sheets, 21 00:01:10,000 --> 00:01:16,000 pri čemu ćemo koristiti stilizacija na web stranici pomoću malo drugačiju sintaksu, 22 00:01:16,000 --> 00:01:19,000 dok HTML je sve o strukturi istih. 23 00:01:19,000 --> 00:01:21,000 Također je potrebno uvesti jezik web programiranje. 24 00:01:21,000 --> 00:01:25,000 U tom slučaju, mi ćemo koristiti PHP, i PHP će omogućiti nam 25 00:01:25,000 --> 00:01:28,000 Da biste dinamički izlazni sadržaja, kao i to programske stvari poput 26 00:01:28,000 --> 00:01:33,000 slanje e-pošte, kao što je to bio slučaj na umu smo ostavili prošli tjedan. 27 00:01:33,000 --> 00:01:35,000 >> Sjetite se da je kod za to bio je u dva dijela. 28 00:01:35,000 --> 00:01:38,000 Jedan od njih, imali smo froshims3.php, 29 00:01:38,000 --> 00:01:42,000 i to je uglavnom za označavanje s HTML obliku unutar nje, 30 00:01:42,000 --> 00:01:45,000 komadić CSS ovdje u stilu atribute 31 00:01:45,000 --> 00:01:48,000 tako da je forma sama bi biti usredotočena na stranici, ali dalje od toga 32 00:01:48,000 --> 00:01:51,000 imali smo neke reprezentativne obrasca ulaza, tekst polja, kućicu, 33 00:01:51,000 --> 00:01:55,000 neke radio tipke, odaberite izbornik, a submit gumb. 34 00:01:55,000 --> 00:02:01,000 A putem ovog obrasca, mi poslali na datoteku koja je navodno zove register3.php, 35 00:02:01,000 --> 00:02:04,000 koji je i sam gledao malo nešto ovako. 36 00:02:04,000 --> 00:02:08,000 Sada, većina koda u register3.php, podsjetimo, bio je sve o e-maila. 37 00:02:08,000 --> 00:02:11,000 To je malo validacije u obliku koji je dostavljen kako bi bili sigurni 38 00:02:11,000 --> 00:02:14,000 da su polja su zapravo pod uvjetom da su očekivali. 39 00:02:14,000 --> 00:02:18,000 Tada smo nazvali neke PHP funkcije pomoću blago novu sintaksu, 40 00:02:18,000 --> 00:02:20,000 iako je posudio od C. 41 00:02:20,000 --> 00:02:24,000 >> Ova strelica operater omogućuje nam da se iskoristi nešto što se zove objektno-orijentirano programiranje. 42 00:02:24,000 --> 00:02:27,000 Nećemo ulaziti u to u bilo kojem detaljno ovdje, ali znam za sada 43 00:02:27,000 --> 00:02:31,000 to je način da funkcije povezane s objektima, 44 00:02:31,000 --> 00:02:34,000 koji su posebna vrsta strukture, kao što smo vidjeli u C. 45 00:02:34,000 --> 00:02:37,000 No, za sada, samo se na vjeri da je to ispravna sintaksa za korištenje 46 00:02:37,000 --> 00:02:41,000 kada koristite knjižnicu ovako PHPMailer knjižnici. 47 00:02:41,000 --> 00:02:44,000 I onda do kraja ove datoteke smo dinamički je generiran e-mail 48 00:02:44,000 --> 00:02:47,000 koji je dobio poslao na moj račun jharvard@cs50.net 49 00:02:47,000 --> 00:02:50,000 iz mog jharvard@cs50.net računa, 50 00:02:50,000 --> 00:02:54,000 i mi obavijestio korisnika u skladu da su bili registrirani za ovaj sport. 51 00:02:54,000 --> 00:02:57,000 To je ljepušan velik dio onoga stranica Frosh IM učinio prije svih tih godina 52 00:02:57,000 --> 00:03:00,000 kad sam ga provodi, odobren, na drugom jeziku, 53 00:03:00,000 --> 00:03:02,000 ali to pokazuje možda moć da imate 54 00:03:02,000 --> 00:03:05,000 sada da možete izraziti sebe ne samo programski 55 00:03:05,000 --> 00:03:08,000 na niskoj razini u jeziku poput C, ali na mnogo višoj razini 56 00:03:08,000 --> 00:03:11,000 s tim vrlo stvarnim aplikacijama kao što su e-mail zapravo riješiti 57 00:03:11,000 --> 00:03:13,000 neki pravi svjetski problemi. 58 00:03:13,000 --> 00:03:16,000 >> Sada, naravno, iako sam koristiti ovu skriptu generirati neke 59 00:03:16,000 --> 00:03:20,000 e-mail dinamički iz jharvard@cs50.net, što je doista račun 60 00:03:20,000 --> 00:03:23,000 da imam pristup, nemojte biti vrlo oprezni poslati 61 00:03:23,000 --> 00:03:26,000 mail samo od računa koji su zapravo sami, 62 00:03:26,000 --> 00:03:30,000 da se stvari dobiti u malo tople vode u životu. 63 00:03:30,000 --> 00:03:35,000 Sa taj je rekao, hajdemo sada prijelaz na rješavanju drugačiji problem uopce, 64 00:03:35,000 --> 00:03:37,000 da od potpornih država. 65 00:03:37,000 --> 00:03:39,000 Sada, što to zapravo znači? 66 00:03:39,000 --> 00:03:42,000 HTTP, ovaj protokol hypertext transfer, 67 00:03:42,000 --> 00:03:45,000 je zapravo državljanstva protokol, i što to znači da je 68 00:03:45,000 --> 00:03:48,000 kada podići nešto poput Google.com, a zatim pritisnite enter 69 00:03:48,000 --> 00:03:51,000 obično vaš preglednik ima nekakav vrti ikone koje zatim 70 00:03:51,000 --> 00:03:54,000 Rezultati za neke web stranice se skinuti, 71 00:03:54,000 --> 00:03:57,000 i onda da se malo ikona prestaje predenje, i da doista sugerira 72 00:03:57,000 --> 00:04:02,000 da HTTP je završio nekakvu vezu s poslužiteljem i to je to. 73 00:04:02,000 --> 00:04:05,000 HTTP je bez državljanstva, u smislu da se ne održi 74 00:04:05,000 --> 00:04:08,000 uporni veza s poslužiteljem na isti način Skype radi 75 00:04:08,000 --> 00:04:11,000 ili Gchat radi jer s HTTP 76 00:04:11,000 --> 00:04:15,000 Pretpostavka je da nakon što ste je dohvatio web stranicu koja je to. 77 00:04:15,000 --> 00:04:18,000 >> Sada, u stvarnosti ovih dana na stranicama poput Facebooka i Google Maps 78 00:04:18,000 --> 00:04:21,000 i Twitter i kao da je puno više dinamika kojom 79 00:04:21,000 --> 00:04:25,000 čak i nakon toga ikona prestaje predenje možete zapravo dobiti više ažuriranja 80 00:04:25,000 --> 00:04:29,000 od poslužitelja, više tweets, više statusa ažuriranja na Facebooku i slično. 81 00:04:29,000 --> 00:04:33,000 No, čak i da se tehnikom da ćemo razgovarati o u tjedan ili dva 82 00:04:33,000 --> 00:04:36,000 poznat kao Ajax koristeći jezik zove JavaScripta, 83 00:04:36,000 --> 00:04:38,000 ali na kraju dana, HTTP je uvijek apatrid. 84 00:04:38,000 --> 00:04:42,000 Pa ipak, ako želite da se nekako sjetiti stvari o korisniku 85 00:04:42,000 --> 00:04:44,000 čak i nakon što sam isključen iz vašeg poslužitelja 86 00:04:44,000 --> 00:04:47,000 PHP čini vam priuštiti sredstva za to 87 00:04:47,000 --> 00:04:52,000 jer, kao što smo vidjeli zadnji put, PHP ima niz superglobals, 88 00:04:52,000 --> 00:04:55,000 i superglobal je, opet, posebna globalna varijabla 89 00:04:55,000 --> 00:04:59,000 koji je predao na vas od strane web poslužitelja i PHP sama. 90 00:04:59,000 --> 00:05:02,000 >> Ne morate učiniti ništa staviti vrijednosti u njoj, 91 00:05:02,000 --> 00:05:05,000 a među superglobals smo vidjeli dosad su dobili i postavljati, 92 00:05:05,000 --> 00:05:08,000 što je gdje polja obrasca su stavili automatski za vas, 93 00:05:08,000 --> 00:05:11,000 kao i nekoliko drugih koje nismo vidjeli još. 94 00:05:11,000 --> 00:05:17,000 Unutar $ _server su neke posebne varijable odnose na samom poslužitelju. 95 00:05:17,000 --> 00:05:22,000 Što je IP adresa, što protokol, HTTP ili HTTPS ste koristili, 96 00:05:22,000 --> 00:05:25,000 Što Zahtjev metodu ste koristili i slično, tako da je neke zanimljive, 97 00:05:25,000 --> 00:05:29,000 sočni detalji o poslužitelju, te u stvari, korisnik u kao i tamo. 98 00:05:29,000 --> 00:05:33,000 Tu je $ _cookie, što je, gdje su te stvari zove kolačići spremljeni. 99 00:05:33,000 --> 00:05:36,000 Nećemo trošiti vrijeme na kolačića se danas, 100 00:05:36,000 --> 00:05:40,000 ali znam za sada da kolačić je samo mali dio informacije 101 00:05:40,000 --> 00:05:43,000 da web poslužitelj može posaditi na web-preglednik 102 00:05:43,000 --> 00:05:46,000 i okrenuti RAM ili njegovi tvrdi disk računala 103 00:05:46,000 --> 00:05:49,000 za pohranu informacija o korisniku, na primjer, svoje korisničko ime 104 00:05:49,000 --> 00:05:52,000 tako da oni ne moraju ga upisati svaki put kad se prijavite ili neki 105 00:05:52,000 --> 00:05:55,000 jedinstveni broj ili identifikator za tog korisnika 106 00:05:55,000 --> 00:05:58,000 tako da ne morate ih gnjaviti s istim vrstama pitanja o 107 00:05:58,000 --> 00:06:00,000 preferencije u budućnosti, ali većina od interesa 108 00:06:00,000 --> 00:06:02,000 Trenutno je $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Ovo superglobal, koji, kao i ostali, je uručio vas automatski PHP 110 00:06:07,000 --> 00:06:10,000 kada pišete PHP-based web stranice 111 00:06:10,000 --> 00:06:13,000 Možete pohraniti sve što želite, žice, integers, 112 00:06:13,000 --> 00:06:16,000 plutajuće točke, vrijednosti, polja, objekti, 113 00:06:16,000 --> 00:06:20,000 stvarno sve što želite, a to vam omogućuje da ga spremiti na takav način 114 00:06:20,000 --> 00:06:23,000 da, čak i ako korisnik posjeti vas sada i onda 115 00:06:23,000 --> 00:06:26,000 vrati minutu od sada ili pet minuta od sada, jer 116 00:06:26,000 --> 00:06:28,000 oni uzeti svoje vrijeme prije nego što kliknete neku drugu vezu 117 00:06:28,000 --> 00:06:32,000 PHP će osigurati da ono što ste stavili u toj sjednici superglobal 118 00:06:32,000 --> 00:06:37,000 Minutu ili pet minuta prije će i dalje biti tamo kad se vraća korisnika. 119 00:06:37,000 --> 00:06:40,000 A ispod haube to superglobal se provodi putem 120 00:06:40,000 --> 00:06:44,000 te stvari se zove kolačiće, ali za sada, to je samo apstrakcija 121 00:06:44,000 --> 00:06:47,000 pri čemu je vrsta programskog ekvivalent košarici. 122 00:06:47,000 --> 00:06:50,000 Što god, programer, staviti u to 123 00:06:50,000 --> 00:06:53,000 superglobal asocijativni niz će biti tamo neki broj minuta kasnije 124 00:06:53,000 --> 00:06:59,000 dok ga ne izbrišete ili dok korisnik zatvara svoj preglednik uopce. 125 00:06:59,000 --> 00:07:02,000 >> Idemo pogledati primjer kako ta stvar zapravo koristi. 126 00:07:02,000 --> 00:07:07,000 U counter.php među današnjim komada koda 127 00:07:07,000 --> 00:07:09,000 imamo sljedeću liniju. 128 00:07:09,000 --> 00:07:13,000 Na početku ove datoteke imamo hrpu plavih komentarima, koji su neinteresantni za sada. 129 00:07:13,000 --> 00:07:15,000 No, u skladu 13 imamo novu liniju, 130 00:07:15,000 --> 00:07:18,000 session_start, te da zapravo radi upravo ono što kaže. 131 00:07:18,000 --> 00:07:20,000 Ona počinje sjednice. 132 00:07:20,000 --> 00:07:25,000 To vam omogućuje da koristite taj veliki superglobal $ _SESSION, a to je kao jednostavan kao taj. 133 00:07:25,000 --> 00:07:30,000 Sada, ako smo nastavili gledati na liniji 16, pokušajmo shvatiti što ova web stranica će to učiniti. 134 00:07:30,000 --> 00:07:35,000 Ako (isset ($ _SESSION ["brojač"]), a zatim ići naprijed 135 00:07:35,000 --> 00:07:39,000 i trgovina u suprotnom varijable, mala brojač, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Brojač"]. 137 00:07:42,000 --> 00:07:45,000 To čini se da je proglašenje lokalnu varijablu nazvanu brojač 138 00:07:45,000 --> 00:07:48,000 unutar kojih je stavljajući kopiju god je unutar superglobal 139 00:07:48,000 --> 00:07:52,000 zove sjednicu na lokaciji "pulta". 140 00:07:52,000 --> 00:07:56,000 Inače, očito, ovaj mali lokalni varijabla brojač, inicijaliziran na 0.. 141 00:07:56,000 --> 00:08:01,000 >> Ali onda nekoliko redaka kasnije u 26 obavijesti da sjednici je kopija pulta, 142 00:08:01,000 --> 00:08:06,000 njegov ključ, ima novu vrijednost dodijeljena, što je njegova trenutna vrijednost plus jedan. 143 00:08:06,000 --> 00:08:09,000 Ukratko, ovu sliku čini se da je ažuriranje 144 00:08:09,000 --> 00:08:13,000 brojač koji je pohranjen unutar sjednice superglobal 145 00:08:13,000 --> 00:08:16,000 ga povećavanjem po jedan, ali je prvi zadržava kopiju prethodne vrijednosti 146 00:08:16,000 --> 00:08:20,000 ga spremanje u lokalne varijable nazivaju $ brojač, 147 00:08:20,000 --> 00:08:22,000 i onda ovdje ćemo vidjeti što dalje. 148 00:08:22,000 --> 00:08:24,000 Ispada da je prilično puno samo HTML. 149 00:08:24,000 --> 00:08:29,000 Na dnu ove stranice vidimo u skladu 37 koje sam posjetio ovu stranicu 150 00:08:29,000 --> 00:08:33,000 brojač broj puta, tako da je prije par zanimljivih značajki ovdje. 151 00:08:33,000 --> 00:08:36,000 Jedan od njih, to je jasno promjenjiva, ali to nije dovoljno da se samo stavi 152 00:08:36,000 --> 00:08:39,000 $ Brojač u tijelu vašeg HTML jer naravno 153 00:08:39,000 --> 00:08:43,000 ako je to samo tu među HTML PHP će pretpostaviti da je samo HTML. 154 00:08:43,000 --> 00:08:48,000 Vi doslovno žele $ brojač koji će se ispisati na zaslonu. 155 00:08:48,000 --> 00:08:51,000 >> No, umjesto toga pada u PHP modu 156 00:08:51,000 --> 00:08:55,000 s ovom komadu sintakse mi može dinamički umetnuti vrijednost ovdje 157 00:08:55,000 --> 00:08:58,000 vrlo slični u duhu onoga što smo radili zadnji put s 158 00:08:58,000 --> 00:09:00,000 umetanja vrijednosti u nizovima. 159 00:09:00,000 --> 00:09:04,000 U stvari, to je samo stenogram notacija za reći nešto ovako doslovno, 160 00:09:04,000 --> 00:09:12,000 ispis ($ brojac) ili čak nešto poput printf (% s, counter), 161 00:09:12,000 --> 00:09:14,000 ili čak, kao što ste vidjeli online ili u udžbenicima, 162 00:09:14,000 --> 00:09:17,000 postoji funkcija u PHP zove jeka 163 00:09:17,000 --> 00:09:20,000 koja čini istu stvar, a svi oni su samo više načina vjetru 164 00:09:20,000 --> 00:09:25,000 govoreći 00:09:28,000 U tom jednom slučaju ne morate staviti 166 00:09:28,000 --> 00:09:30,000 Riječ PHP nakon upitnika. 167 00:09:30,000 --> 00:09:34,000 Ovo je stenogram notacija za, opet, ono što smo upravo vidjeli trenutak prije 168 00:09:34,000 --> 00:09:37,000 koji je ponavljajući neke vrijednosti. 169 00:09:37,000 --> 00:09:39,000 >> Idemo vidjeti što krajnji rezultat to zapravo jest. 170 00:09:39,000 --> 00:09:43,000 Pusti me preko u našoj counter.php datoteku, 171 00:09:43,000 --> 00:09:47,000 pa ćemo vidjeti da David jednostavno pogriješili igrajući s kodom tamo. 172 00:09:47,000 --> 00:09:50,000 Idemo popraviti ono što je zeznuo, 173 00:09:50,000 --> 00:09:54,000 i pogreške čini se da je tamo, otišao na liniji 37. 174 00:09:54,000 --> 00:09:59,000 Prema vrhu ove stranice sam posjetio ovu stranicu 0 puta. 175 00:09:59,000 --> 00:10:02,000 Pa, idemo naprijed sada, a na vrhu preglednika kliknite na 176 00:10:02,000 --> 00:10:05,000 učitati ikonu, a ja kliknite reload, 177 00:10:05,000 --> 00:10:12,000 i sada sam posjetio stranicu 1 put, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 I doista, ako ćemo gledati na izvoru ovoj stranici stvarni izvorni kod se mijenja, 179 00:10:16,000 --> 00:10:19,000 i primijetiti potpuni izostanak bilo PHP-u, te da je zbog toga 180 00:10:19,000 --> 00:10:23,000 PHP kod se ocjenjuje ili tumačiti strani poslužitelja, 181 00:10:23,000 --> 00:10:27,000 pa to znači da je izlaz iz PHP skripte je ono što u konačnici je poslana pregledniku, 182 00:10:27,000 --> 00:10:31,000 koja je u ovom slučaju je neki sirovi HTML i neki sirovi tekst. 183 00:10:31,000 --> 00:10:33,000 Što se ovdje događa? 184 00:10:33,000 --> 00:10:37,000 >> Pa, s relativno nekoliko linija koda sam u stanju pohraniti 185 00:10:37,000 --> 00:10:40,000 uporno tijekom nekoliko sekundi, ili ako smo čekali dovoljno dugo, 186 00:10:40,000 --> 00:10:44,000 minuta, čak i sati, neke vrijednosti na način da čini HTTP 187 00:10:44,000 --> 00:10:47,000 Čini stateful kao da smo zadržali 188 00:10:47,000 --> 00:10:51,000 ova veza na poslužitelj, a to je samo sjećanja na ono što sam to rekao zadnji put, 189 00:10:51,000 --> 00:10:55,000 ali u stvarnosti postoji cijela hrpa složenosti događa ispod haube 190 00:10:55,000 --> 00:10:59,000 uključujući kolačiće koje je omogućiti PHP da će mi dati ovu iluziju 191 00:10:59,000 --> 00:11:02,000 ove košarici poput osobina. 192 00:11:02,000 --> 00:11:05,000 Za sada, trivijalan primjer gdje smo samo spremanje cijeli broj, 193 00:11:05,000 --> 00:11:08,000 ali da značajka će se vratiti biti od velike vrijednosti 194 00:11:08,000 --> 00:11:10,000 kada smo počeli govoriti o složenijim projektima, 195 00:11:10,000 --> 00:11:12,000 među njima problema postaviti sedam. 196 00:11:12,000 --> 00:11:16,000 Ovo je vaš posljednji problem postaviti u CS50. 197 00:11:16,000 --> 00:11:19,000 Znam, to je tako tužno, ali ono što ćete naći je da ćemo zaključiti 198 00:11:19,000 --> 00:11:22,000 ovaj dio semestra strane zapravo prelazaka 199 00:11:22,000 --> 00:11:25,000 iz konteksta C svakako kontekstu PHP 200 00:11:25,000 --> 00:11:27,000 ali dok koristite neki od istih temelja 201 00:11:27,000 --> 00:11:29,000 smo razgovarali o za neko vrijeme. 202 00:11:29,000 --> 00:11:33,000 >> Cilj s pset 7 je provesti CS50 financija, 203 00:11:33,000 --> 00:11:37,000 koji je svoju verziju Yahoo Finance ili Google Finance 204 00:11:37,000 --> 00:11:40,000 ili čak Etrade.com čemu imate mogućnost da 205 00:11:40,000 --> 00:11:43,000 pogledati cijene dionica za pojedine simbole, ali čak i više od toga 206 00:11:43,000 --> 00:11:48,000 imate mogućnost da "kupi" i "prodati" dionice 207 00:11:48,000 --> 00:11:51,000 kojima se trguje na različitim burzama jer kao ove početnu stranicu 208 00:11:51,000 --> 00:11:55,000 ovdje sugerira, koji je stvarno u kojoj mjeri smo počeli 209 00:11:55,000 --> 00:11:59,000 problem skup za vas, imate prijavu obrazac koji se traži za korisničko ime i lozinku. 210 00:11:59,000 --> 00:12:03,000 Ona ima submit gumb, ali nakon toga, kao što smo na kraju ćemo vidjeti, 211 00:12:03,000 --> 00:12:06,000 ne postoji ništa stvarno događa ispod haube jer još njega 212 00:12:06,000 --> 00:12:09,000 Ostaje li provesti sposobnost da se registrirate novih korisnika, 213 00:12:09,000 --> 00:12:12,000 Sposobnost za kupnju dionica, prodati dionice, 214 00:12:12,000 --> 00:12:14,000 zapravo pogledati trenutne cijene dionica. 215 00:12:14,000 --> 00:12:17,000 >> I doista, to će biti kao stvarnom svijetu što je više moguće, jer smo napravili 216 00:12:17,000 --> 00:12:20,000 su malo koda koji će vam omogućiti s jednim funkciji 217 00:12:20,000 --> 00:12:25,000 na upit Yahoo Finance, koji predivno čini dostupnim besplatne podatke 218 00:12:25,000 --> 00:12:31,000 za gleda gore cijene dionica na temelju dionica simbol ili ticker simbol, 219 00:12:31,000 --> 00:12:34,000 i vratiti trenutnu cijenu dionica na dan. 220 00:12:34,000 --> 00:12:37,000 Podaci ste zapravo vidjeti u ovom konkretnom pset će biti 221 00:12:37,000 --> 00:12:40,000 o kao stvarnom svijetu kao što mogu dobiti, tako da ste zapravo sučelja 222 00:12:40,000 --> 00:12:43,000 sa stvarnim zalihama, u stvarnom svijetu cijenama, 223 00:12:43,000 --> 00:12:47,000 pa ćemo vidjeti koliko novca možete napraviti možda 224 00:12:47,000 --> 00:12:51,000 tijekom sljedećih nekoliko dana igranja sa svojim problemom setu. 225 00:12:51,000 --> 00:12:55,000 >> No, neka prvi postaviti pozornicu za kako dizajnirati nešto što je sigurno složenija 226 00:12:55,000 --> 00:12:59,000 od counter.php, koji je složeniji od bilo koje od Frosh IMS primjera do sada, 227 00:12:59,000 --> 00:13:02,000 i ajmo pokušati uvesti nekoliko paradigme ovdje da nam dopustite 228 00:13:02,000 --> 00:13:06,000 kako za pset 7, a možda i za svoj konačni projekt, ako to učinite nešto weba 229 00:13:06,000 --> 00:13:11,000 da bi se kod dobro organiziran, kako bi se zdravo, 230 00:13:11,000 --> 00:13:15,000 i da se korak prema suradnji, bilo u CS50 konačnog projekta 231 00:13:15,000 --> 00:13:18,000 ili izvan ako i dalje programirati nešto u budućnosti. 232 00:13:18,000 --> 00:13:21,000 Tu je ova opća dizajn paradigma 233 00:13:21,000 --> 00:13:24,000 u informatici i razvoj softvera općenito 234 00:13:24,000 --> 00:13:27,000 poznat kao MVC, model pogled kontroler, 235 00:13:27,000 --> 00:13:30,000 i to je glup akronim koji opisuje vrlo lijep ideju, 236 00:13:30,000 --> 00:13:34,000 koji je razdvajanje različitih aspekata programa, 237 00:13:34,000 --> 00:13:39,000 posebno imajući posebnu logiku ili poslovnu logiku web stranice 238 00:13:39,000 --> 00:13:42,000 tako da ništa što uključuje stvari kao što su 239 00:13:42,000 --> 00:13:45,000 pozivom funkcije i upite baze podataka i kao 240 00:13:45,000 --> 00:13:48,000 se događa nije među HTML 241 00:13:48,000 --> 00:13:51,000 nego u zasebnim datotekama, i doista, bilo je to jedna datoteka 242 00:13:51,000 --> 00:13:54,000 obično da ste pozvani kontroler 243 00:13:54,000 --> 00:13:56,000 to je stvarno mozak iza operacije, a mi ćemo vidjeti primjer 244 00:13:56,000 --> 00:13:58,000 to u samo trenutak. 245 00:13:58,000 --> 00:14:01,000 >> Tu je model koji je programski kod 246 00:14:01,000 --> 00:14:05,000 da ne pričaju svojim bazama podataka, koji govori da Yahoo financija i slično, 247 00:14:05,000 --> 00:14:08,000 a zatim tu je V u MVC, pogledi, 248 00:14:08,000 --> 00:14:11,000 sve stvari koje se odnose na estetiku, datoteke koje zapravo sadrže 249 00:14:11,000 --> 00:14:14,000 HTML, možda vaš CSS i slično. 250 00:14:14,000 --> 00:14:17,000 Ideja je ovdje, kao i ova slika sugerira, je da kontroler 251 00:14:17,000 --> 00:14:21,000 je datoteka, kao što ćemo uskoro vidjeti i kao što posebno ćete vidjeti u pset 7, 252 00:14:21,000 --> 00:14:24,000 da svijet govori da putem svojih web preglednicima. 253 00:14:24,000 --> 00:14:27,000 To je datoteka koja dobiva posjetili na javnom internetu, 254 00:14:27,000 --> 00:14:30,000 ali kontroler razgovara s potencijalno modelu, 255 00:14:30,000 --> 00:14:34,000 koji je jedan ili više drugih slika koje sadrže kôd koji se odnose na podatke, 256 00:14:34,000 --> 00:14:37,000 Kod odnose na baze podataka i sl., a onda govori kako 257 00:14:37,000 --> 00:14:40,000 kontroler jednom ili više drugih datoteka poznat kao pregleda, 258 00:14:40,000 --> 00:14:43,000 koji su estetika web stranici, predlošci vrsta, 259 00:14:43,000 --> 00:14:47,000 koji bi mogli poduzeti neke podatke kao ulaz, ali na kraju dana 260 00:14:47,000 --> 00:14:50,000 jedina logika unutar pogledom trebao biti renderiranje tim podacima, 261 00:14:50,000 --> 00:14:53,000 Ponavljanje preko petlje i zapravo pljuvanje iz neke 262 00:14:53,000 --> 00:14:56,000 HTML-based izvedba istih ili čak i nešto poput PDF-a. 263 00:14:56,000 --> 00:14:59,000 >> Što je lijepo o MVC je da možete imati različite poglede 264 00:14:59,000 --> 00:15:02,000 ovisno o vrsti uređaja, a temelji se na vrsti formatu da ste zapravo 265 00:15:02,000 --> 00:15:04,000 žele prikazati korisniku. 266 00:15:04,000 --> 00:15:10,000 Idemo pogledati nekoliko progresivno složenije i dobro dizajniran primjera 267 00:15:10,000 --> 00:15:13,000 počevši prvo s verzijom 0 ovdje. 268 00:15:13,000 --> 00:15:16,000 Pusti me naprijed i otvoriti u našem MVC imeniku danas 269 00:15:16,000 --> 00:15:21,000 datoteka zove index.php u imeniku 0. 270 00:15:21,000 --> 00:15:26,000 Obavijest ovo je super jednostavna i vrlo underwhelming web 271 00:15:26,000 --> 00:15:29,000 to je vrsta verziji 0 od početne stranice za CS50, 272 00:15:29,000 --> 00:15:32,000 i primijetiti kako imamo link na predavanja, imamo link na nastavni plan i program, 273 00:15:32,000 --> 00:15:35,000 i ako sam slijedite link na predavanja obavijesti da URL 274 00:15:35,000 --> 00:15:39,000 do vrha će se promijeniti za lectures.php. 275 00:15:39,000 --> 00:15:44,000 Ako sam tada slijedite link do tjedna 1 najave da URL promjene week1.php. 276 00:15:44,000 --> 00:15:46,000 Čini se da postoji prilično jednostavna hijerarhijska struktura ovdje. 277 00:15:46,000 --> 00:15:49,000 >> Ajmo uzeti brzo pogledati ispod haube, na kako je to iznio, 278 00:15:49,000 --> 00:15:53,000 i doista, ako gledam index.php to je prilično jednostavna. 279 00:15:53,000 --> 00:15:57,000 U stvari, iako sam to nazvao PHP datoteka ne postoji stvarna programski kod. 280 00:15:57,000 --> 00:16:01,000 Tu je komentar koji sam napisao ovdje u PHP samo tako korisnik ne završiti gledajući ga. 281 00:16:01,000 --> 00:16:05,000 Naravno, kao i prije, sve što je između PHP oznake 282 00:16:05,000 --> 00:16:08,000 dobiva tumačiti, čak i ako je to komentar, i interpretirati komentar 283 00:16:08,000 --> 00:16:11,000 znači samo da ga bacaju na kraju dana, a ne zapravo 284 00:16:11,000 --> 00:16:15,000 poslati ga na e, tako da je sve ovdje je samo estetika. 285 00:16:15,000 --> 00:16:20,000 Ako sam otvoriti sličan lectures.php ovo je samo teško kodirana datoteka. 286 00:16:20,000 --> 00:16:23,000 To se događa da se zove nešto. Php, 287 00:16:23,000 --> 00:16:27,000 ali to je stvarno samo. html, i week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 slično, samo su oznake, tako da je hrpa nedostataka ovog dizajna. 289 00:16:31,000 --> 00:16:33,000 Jedan od njih, to je ogroman iznos od copy / paste. 290 00:16:33,000 --> 00:16:37,000 Iako je jedina stvar koja se mijenja među tim datotekama je neuređen popis, 291 00:16:37,000 --> 00:16:41,000 Li oznake, ja ipak imaju doc ​​tip, HTML, glava, 292 00:16:41,000 --> 00:16:44,000 Naslov, blizu tijela, u neposrednoj blizini HTML i više 293 00:16:44,000 --> 00:16:47,000 u svakoj pojedinoj datoteci, što znači da ako sam ikada želim da restrukturira 294 00:16:47,000 --> 00:16:50,000 ova web stranica ili ga restylize moram otići i promijeniti 295 00:16:50,000 --> 00:16:54,000 sve te datoteke ručno ili s nekim masivni pronaći i zamijeniti. 296 00:16:54,000 --> 00:17:01,000 >> Idemo korak prema pametnije, više razmišljanja dizajna u izvedbi jedne ovdje 297 00:17:01,000 --> 00:17:04,000 pri čemu kao i po me pročitao da smo uključeni, tako da možete igrati zajedno sa 298 00:17:04,000 --> 00:17:07,000 to više ležerno kod kuće najave da imamo ovdje 299 00:17:07,000 --> 00:17:10,000 sažetak datoteke u verziji 1 ove stranice, 300 00:17:10,000 --> 00:17:13,000 i čini se da sam ga uzeti na sebe da faktor od 301 00:17:13,000 --> 00:17:17,000 neki zajednički broj, header.php i footer.php. 302 00:17:17,000 --> 00:17:20,000 Pa, neka je pogledati što je unutra je prvi od njih. 303 00:17:20,000 --> 00:17:23,000 Header.php izgleda poznato, 304 00:17:23,000 --> 00:17:26,000 ali primijetiti gdje to dobiti odsječen? 305 00:17:26,000 --> 00:17:30,000 Odmah nakon liniji 19, tako da je sve što je bilo uobičajeno 306 00:17:30,000 --> 00:17:33,000 iz datoteke index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 i week2.php iz prethodnog primjera. 308 00:17:36,000 --> 00:17:40,000 Ono što sam učinio je kopirati i rezati sve što je zajedničko svim tim datotekama, 309 00:17:40,000 --> 00:17:44,000 staviti ga u zasebnu datoteku zaglavlja, a slično je u footer.php 310 00:17:44,000 --> 00:17:48,000 sam primijeniti isti princip pri čemu su samo zanimljive linije 311 00:17:48,000 --> 00:17:52,000 u footer.php su njih dvojica, u neposrednoj blizini i tijelo blizu HTML. 312 00:17:52,000 --> 00:17:55,000 >> No, što to znači sada je da u novoj verziji 313 00:17:55,000 --> 00:17:59,000 od index.php obavijesti kako je mnogo jednostavnije to može dobiti. 314 00:17:59,000 --> 00:18:02,000 Istina, malo više zagonetan gleda, malo manje intuitivno 315 00:18:02,000 --> 00:18:06,000 slijediti vrha do dna, ali Bože moj, sve to redundancije je sada otišao. 316 00:18:06,000 --> 00:18:10,000 Tražimo koristeći PHP funkciju doslovno zove zahtijevaju do vrha, 317 00:18:10,000 --> 00:18:15,000 koji jako podsjeća, podsjetimo, od Cs # include mehanizam. 318 00:18:15,000 --> 00:18:17,000 Tražimo header.php na vrhu. 319 00:18:17,000 --> 00:18:20,000 Tražimo footer.php na dnu, a jedina stvar koja je drugačija 320 00:18:20,000 --> 00:18:25,000 ili posebno o ovoj datoteci je sadržaj koji je trebao biti jedinstven za njega. 321 00:18:25,000 --> 00:18:29,000 Ako sam tada otići u, recimo, lectures.php, isti princip vrijedi. 322 00:18:29,000 --> 00:18:32,000 Opet, neki komentari do vrha, ali onda sam zahtijevaju zaglavlje, podnožje zahtijevaju, 323 00:18:32,000 --> 00:18:35,000 a između je samo sadržaj koji zapravo nije promijenilo. 324 00:18:35,000 --> 00:18:38,000 A ako smo gledali u tjednu 1. i 2. tjedan ćemo vidjeti 325 00:18:38,000 --> 00:18:42,000 da isti princip je primijenjen tamo. 326 00:18:42,000 --> 00:18:44,000 Pa, nismo sasvim učinio tamo. 327 00:18:44,000 --> 00:18:48,000 >> Idemo pogledati verziji 2, koji ima sličnu strukturu, 328 00:18:48,000 --> 00:18:50,000 ali primijetiti sada sam upoznao nešto drugo. 329 00:18:50,000 --> 00:18:53,000 U liniji 10 sam upoznao helpers.php, 330 00:18:53,000 --> 00:18:55,000 koja očito sadrži pomoćne funkcije. 331 00:18:55,000 --> 00:18:58,000 Pomagač funkcije je općenito relativno kratko funkcija 332 00:18:58,000 --> 00:19:01,000 da pišete da vam pomoći u raznim mjestima, 333 00:19:01,000 --> 00:19:04,000 pa da vidimo što je unutar helpers.php. 334 00:19:04,000 --> 00:19:07,000 U ovom slučaju, to izgleda kao da ima dvije funkcije. 335 00:19:07,000 --> 00:19:10,000 Podsjetimo od neki dan s našim kocke primjer 336 00:19:10,000 --> 00:19:13,000 možete definirati svoje vlastite funkcije u PHP-u, i ono što sam učinio je sada imam 337 00:19:13,000 --> 00:19:17,000 definirane funkcije zove donijeti podnožje i donijeti zaglavlje, 338 00:19:17,000 --> 00:19:21,000 od kojih je prvi traje parametar zove podataka, 339 00:19:21,000 --> 00:19:25,000 čija je zadana vrijednost je prazan niz, kako je predložio tamo, 340 00:19:25,000 --> 00:19:29,000 i zapravo možemo napisati ovo još jezgrovito u najnovijoj verziji PHP 341 00:19:29,000 --> 00:19:32,000 rekavši otvoreno četvornih nosač, zatvorena uglata zagrada. 342 00:19:32,000 --> 00:19:35,000 To znači prazan niz veličine 0, ali svejedno polje. 343 00:19:35,000 --> 00:19:38,000 >> To ekstrakt funkcija je malo poseban u tome 344 00:19:38,000 --> 00:19:41,000 što to je to uzima kao argument je asocijativni niz 345 00:19:41,000 --> 00:19:45,000 koji ima 0 ili više ključnih parova, a ako imate ključ foo 346 00:19:45,000 --> 00:19:48,000 a vrijednost bar ekstrakta funkcije 347 00:19:48,000 --> 00:19:51,000 stvara situaciju u kojoj sada, kao u liniji 11, 348 00:19:51,000 --> 00:19:57,000 imate lokalnu varijablu pod nazivom $ foo čija je vrijednost bar. 349 00:19:57,000 --> 00:19:59,000 A ako ste imali više ključeva i vrijednosti u podatkovnom polju, 350 00:19:59,000 --> 00:20:03,000 Slično bi oni biti izvađen u lokalnoj djelokruga 351 00:20:03,000 --> 00:20:06,000 ili naziv prostora, tako da footer.php i 352 00:20:06,000 --> 00:20:09,000 Ista ideja ovdje dolje, tako da header.php 353 00:20:09,000 --> 00:20:12,000 imaju pristup tim varijablama. 354 00:20:12,000 --> 00:20:15,000 U stvari, neka mi otvoriti opet header.php 355 00:20:15,000 --> 00:20:18,000 i skrenuti pozornost na što sada to izgleda u ovoj verziji. 356 00:20:18,000 --> 00:20:22,000 >> Umjesto teško kodiranje CS50 kao naslov za svaku pojedinu stranicu 357 00:20:22,000 --> 00:20:24,000 primijetiti dinamizam koji je sada moguće. 358 00:20:24,000 --> 00:20:29,000 U skladu pet sam odjekuje naslov varijablu, 359 00:20:29,000 --> 00:20:34,000 ali prvo sam prolazeći taj naslov varijablu u funkciji zove htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Glupo ime za funkciju, dok je, ali to stvarno čini ono što kaže. 361 00:20:38,000 --> 00:20:41,000 To osigurava da su svi posebni znakovi 362 00:20:41,000 --> 00:20:46,000 u nizu koji je bio donesen u ispravno pobjegao HTML. 363 00:20:46,000 --> 00:20:49,000 To je zapravo način da se izbjegnu nešto zove cross site scripting napada 364 00:20:49,000 --> 00:20:52,000 kojom netko može zlonamjerno ili slučajno 365 00:20:52,000 --> 00:20:55,000 ubrizgati vlastitu HTML u vaše web stranice 366 00:20:55,000 --> 00:20:59,000 lijepljenjem u nekom obliku, na primjer, 367 00:20:59,000 --> 00:21:02,000 nešto što nije sasvim očekuje, posebno kod JavaScripta, 368 00:21:02,000 --> 00:21:05,000 kao što ćemo govoriti o u tjedan ili dva na vrijeme. 369 00:21:05,000 --> 00:21:08,000 >> Ovo je sada header.php, to je pogled 370 00:21:08,000 --> 00:21:12,000 u smislu da vam omogućuje da vidite estetski sadržaj nekog skupa podataka. 371 00:21:12,000 --> 00:21:14,000 No, točnije, to je predložak. 372 00:21:14,000 --> 00:21:19,000 To je neka vrsta nacrta sada ono što želimo u zaglavlju svake stranice izgledati, 373 00:21:19,000 --> 00:21:23,000 ali ima nekih dinamika u koje želimo naslov dinamički umetnute 374 00:21:23,000 --> 00:21:26,000 na temelju naslova varijablu 375 00:21:26,000 --> 00:21:30,000 koji je izvađen kad smo pozvani, opet, 376 00:21:30,000 --> 00:21:33,000 Funkcija uzvratiti udarac glavom. 377 00:21:33,000 --> 00:21:36,000 Sada, ako smo gledali na uzvratiti podnožje, tu je zapravo nije puno korištenje tog prava sada 378 00:21:36,000 --> 00:21:40,000 jer u footer.php nema dinamizam god. 379 00:21:40,000 --> 00:21:43,000 Tu bi moglo biti, ali u ovom trenutku to je teško kodirano popis dvije oznake, 380 00:21:43,000 --> 00:21:46,000 ali ista ideja se odnosi, tako da zapravo sugerira zašto 381 00:21:46,000 --> 00:21:49,000 nije mi gubiti vrijeme ima Render zaglavlje i podnožje Render funkciju? 382 00:21:49,000 --> 00:21:52,000 Pusti me umjesto sada u verziji 3, 383 00:21:52,000 --> 00:21:56,000 iu verziji 3 u pomagača odlučio sam da ga pojednostaviti još više. 384 00:21:56,000 --> 00:21:58,000 >> Dopustite mi da imaju jedan Render funkciju. 385 00:21:58,000 --> 00:22:02,000 Dopustite mi da su ga uzeti još jedan argument, ovaj put pod nazivom predložak, 386 00:22:02,000 --> 00:22:05,000 što je značilo da se naziv predloška, 387 00:22:05,000 --> 00:22:11,000 i onda ću spojite drskosti. php za te varijable vrijednosti, 388 00:22:11,000 --> 00:22:17,000 i onda ako postoji foo.php, bar.php ili header.php i footer.php, 389 00:22:17,000 --> 00:22:20,000 onda ću ići naprijed i izvući varijabilnih podataka 390 00:22:20,000 --> 00:22:23,000 i onda zahtijevati da put. 391 00:22:23,000 --> 00:22:29,000 Drugim riječima, koristiti to sada, ako sam otvoriti index.php 392 00:22:29,000 --> 00:22:32,000 primijetiti da ja ne nazvati Render zaglavlje više. 393 00:22:32,000 --> 00:22:36,000 Ja samo zovi donijeti, ali ja proći u citiranom vrijednosti zaglavlja 394 00:22:36,000 --> 00:22:39,000 jasno dati do znanja što predložak sam zapravo želite učitati. 395 00:22:39,000 --> 00:22:41,000 >> Onda ovdje primijetiti što radim. 396 00:22:41,000 --> 00:22:44,000 Ja sam prolazi u dinamički ključ od naslova, 397 00:22:44,000 --> 00:22:47,000 Vrijednost CS50, i to previše, kao što smo vidjeli prije, 398 00:22:47,000 --> 00:22:51,000 mogao biti više jezgrovit u najnovijoj verziji PHP 399 00:22:51,000 --> 00:22:54,000 gdje mogu zamijeniti polje funkciju sa uglatim zagradama, 400 00:22:54,000 --> 00:22:57,000 što ja predlažem je čak i više čitati i sigurno 401 00:22:57,000 --> 00:22:59,000 malo lakše pisati. 402 00:22:59,000 --> 00:23:02,000 I naravno, s uzvratiti podnožja poziva na dnu, 403 00:23:02,000 --> 00:23:05,000 mi ne smetaju prolazu u drugi argument uopće ne asocijativni niz, 404 00:23:05,000 --> 00:23:07,000 jer nema ništa dinamičan unutar tog podnožje. 405 00:23:07,000 --> 00:23:10,000 To je samo neki bliski oznake za HTML. 406 00:23:10,000 --> 00:23:14,000 Dobro, mi smo poduzimanje koraka prema stvarno čišćenje stvari ovdje, 407 00:23:14,000 --> 00:23:17,000 ali dopustite mi da se otvaraju dvije finalne primjere. 408 00:23:17,000 --> 00:23:21,000 Ovo je jedna, broj 4, obavijest da sam napravio svjesnu odluku sada 409 00:23:21,000 --> 00:23:26,000 unaprijediti na prethodni primjer, konačno koristeći neku hijerarhiju s mojim datotekama. 410 00:23:26,000 --> 00:23:29,000 >> Imajte na umu da u ovom sažetku, u to me čitaju, ja sam uveo 411 00:23:29,000 --> 00:23:32,000 uključuje imenik i predložaka imenik 412 00:23:32,000 --> 00:23:35,000 čiji sadržaj će biti stvari koje želim uključiti 413 00:23:35,000 --> 00:23:38,000 i predloške koje želim učiniti, respektivno. 414 00:23:38,000 --> 00:23:42,000 Ovo je stvarno mi se analni i pokušava držati stvari uredan, 415 00:23:42,000 --> 00:23:45,000 držati povezanih datoteka zajedno, ali krajnji rezultat 416 00:23:45,000 --> 00:23:48,000 je da sada imamo nešto tidier postava, ali moramo se sjetiti sada 417 00:23:48,000 --> 00:23:51,000 u, na primjer, index.php 418 00:23:51,000 --> 00:23:55,000 kada tražimo datoteke helpers.php 419 00:23:55,000 --> 00:24:01,000 moramo ga sada zahtijevaju preko uključuje / helpers.php 420 00:24:01,000 --> 00:24:06,000 umjesto samo govoreći helpers.php jer sada je to zapravo u sub imeniku. 421 00:24:06,000 --> 00:24:09,000 Sada, kao stranu, vidjet ćete u ovim primjerima i nekih drugih 422 00:24:09,000 --> 00:24:11,000 funkcije poput zahtijevaju, zahtijevaju jednom. 423 00:24:11,000 --> 00:24:15,000 Tu je zapravo funkcija sama zove uključiti, a svi oni imaju malo drugačije ponašanje. 424 00:24:15,000 --> 00:24:18,000 Ovdje sam reći zahtijevaju nekada bi super jasno da želim samo one 425 00:24:18,000 --> 00:24:20,000 pomagači uključeni u mom projektu jednom. 426 00:24:20,000 --> 00:24:24,000 Ali, ako sam oprezan i ako ja zapravo razmišljam kroz moje logike ispravno 427 00:24:24,000 --> 00:24:27,000 to bi trebalo biti dostatno previše samo reći zahtijevaju do vrha 428 00:24:27,000 --> 00:24:31,000 tako dugo kao što sam ja slučajno ne zahtijevaju da istu datoteku negdje drugdje. 429 00:24:31,000 --> 00:24:34,000 U stvari, to je nešto učinkovitiji način radiš stvari onda pomoću 430 00:24:34,000 --> 00:24:38,000 zahtijevaju jednom, pa ću ga riš dolje samo zahtijevaju. 431 00:24:38,000 --> 00:24:40,000 >> Ajmo uzeti jedan korak dalje. 432 00:24:40,000 --> 00:24:46,000 Ovaj posljednji primjer sada, verzija 5, ima još čišći mapa. 433 00:24:46,000 --> 00:24:50,000 Obavijest što sam učinio ovdje po mene pročitati u ovoj završnoj verziji 434 00:24:50,000 --> 00:24:54,000 Sada je imam HTML imenik, koji sam imala sve ovo vrijeme, 435 00:24:54,000 --> 00:24:58,000 ali unutar postoji sada je samo index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php i week2.php. 437 00:25:01,000 --> 00:25:05,000 Uključuje katalog sada živi pored HTML direktorij, 438 00:25:05,000 --> 00:25:08,000 tako da je na istoj razini kao polubrat, da se tako izrazim. 439 00:25:08,000 --> 00:25:10,000 Dakle, ne predlošci mape. 440 00:25:10,000 --> 00:25:14,000 Ključ takeaway ovdje sam upoznao malo više strukture, 441 00:25:14,000 --> 00:25:17,000 ali ključna značajka je sada da samo datoteke 442 00:25:17,000 --> 00:25:21,000 koji trebaju biti dostupni web, javno adresabilni 443 00:25:21,000 --> 00:25:25,000 po URL na javnom internetu su u mom HTML direktorij. 444 00:25:25,000 --> 00:25:28,000 >> U međuvremenu, ostale datoteke, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, koji su nedvojbeno možda i više osjetljiva, 446 00:25:32,000 --> 00:25:35,000 možda pomagači zapravo ima neke korisnička imena i lozinke ili neke intelektualne 447 00:25:35,000 --> 00:25:39,000 vlasništvo rudnika, djeluje mi stvarno ne želim da svijet vidi, čak i ako slučajno. 448 00:25:39,000 --> 00:25:45,000 To je dobra praksa da držati izvan javne HTML imeniku 449 00:25:45,000 --> 00:25:48,000 sve datoteke koje sebe ne moraju biti javni. 450 00:25:48,000 --> 00:25:51,000 Sve što trebate učiniti u ovom slučaju kada se gleda na, primjerice, 451 00:25:51,000 --> 00:25:55,000 HTML imenik u index.php datoteka, 452 00:25:55,000 --> 00:25:58,000 primijetiti samo moramo biti malo oprezniji kada zahtijevaju 453 00:25:58,000 --> 00:26:00,000 ili zahtijevati jednom ovu datoteku. 454 00:26:00,000 --> 00:26:03,000 Moram prvo napraviti .. ići na nadređeni imenik, 455 00:26:03,000 --> 00:26:06,000 onda ne / uključuje / helpers.php 456 00:26:06,000 --> 00:26:12,000 zaroniti natrag dolje kako biste dobili datoteku da sam stalo. 457 00:26:12,000 --> 00:26:16,000 >> Sva pitanja onda na MVC 458 00:26:16,000 --> 00:26:20,000 ili ovaj relativno jednostavan inkarnacija tome? 459 00:26:20,000 --> 00:26:23,000 I neka mi jasno da smo usredotočeni dosta na 460 00:26:23,000 --> 00:26:27,000 V ovdje, stavovi i faktoring iz tih predložaka. 461 00:26:27,000 --> 00:26:30,000 Nismo doista razlikovati m od C samo još. 462 00:26:30,000 --> 00:26:33,000 U stvari, tu stvarno nema M ovdje, pa čak i naš C, 463 00:26:33,000 --> 00:26:36,000 kontroler, nije stvarno radi sve što je mnogo, ali ćete dobiti mnogo više 464 00:26:36,000 --> 00:26:39,000 upoznat s oba od tih dvaju pisama iz MVC, 465 00:26:39,000 --> 00:26:43,000 odnosno, da ćete dobiti puno više upoznati s C 466 00:26:43,000 --> 00:26:49,000 u MVC za problema set 7, tako da je više od toga na horizontu. 467 00:26:49,000 --> 00:26:51,000 Pitanja? 468 00:26:51,000 --> 00:26:53,000 Tu je zapravo nitko ovdje. 469 00:26:53,000 --> 00:26:57,000 >> Ok, ajmo sada prijeći na drugi i završni temu za danas. 470 00:26:57,000 --> 00:27:00,000 To je uvod u baze podataka. 471 00:27:00,000 --> 00:27:03,000 Do ove točke smo imali nekoliko načina za pohranu podataka. 472 00:27:03,000 --> 00:27:05,000 Koristili smo varijable. 473 00:27:05,000 --> 00:27:08,000 Povratak u našem C datoteci, I / O raspravi smo počeli koristiti tekstualne datoteke 474 00:27:08,000 --> 00:27:11,000 i pomoću datoteke kao fprintf, a onda smo čak počeli 475 00:27:11,000 --> 00:27:14,000 govori o CSV datoteke malo, zarezom odvojene vrijednosti, 476 00:27:14,000 --> 00:27:17,000 pa sve to nam je omogućilo da imaju podaci pohranjeni 477 00:27:17,000 --> 00:27:19,000 bilo ne-stalno ili uporno. 478 00:27:19,000 --> 00:27:23,000 No, čak i CSVs zapravo nisu pogodne za pretraživanje 479 00:27:23,000 --> 00:27:25,000 i umetanja i brisanja. 480 00:27:25,000 --> 00:27:28,000 To je zapravo samo glupa tekstualna datoteka odvojene zarezima 481 00:27:28,000 --> 00:27:30,000 red po red, pa ako želite 482 00:27:30,000 --> 00:27:32,000 traži da datoteka najbolje što možete učiniti je stvarno linearno pretraživanje. 483 00:27:32,000 --> 00:27:34,000 Morate početi na vrhu datoteke, pročitajte cijelu stvar u, 484 00:27:34,000 --> 00:27:36,000 i tražiti neke vrijednosti interesa. 485 00:27:36,000 --> 00:27:39,000 Ako želite umetnuti u njega morate učiniti istu stvar, 486 00:27:39,000 --> 00:27:41,000 Ponavljanje preko njega i umetanjem u određenom mjestu, 487 00:27:41,000 --> 00:27:45,000 i zapravo, morate učiniti sve u potrazi logike sebe. 488 00:27:45,000 --> 00:27:49,000 >> Vi ne možete učiniti pametan uzorak podudaranja na CSV datoteku, osim ako ste sami pisati kod. 489 00:27:49,000 --> 00:27:51,000 Vi ne možete učiniti filtraciju CSV datoteku 490 00:27:51,000 --> 00:27:53,000 osim ako se pisati kod. 491 00:27:53,000 --> 00:27:56,000 Zar ne bi bilo lijepo ako netko stavio u svim naporima 492 00:27:56,000 --> 00:27:59,000 da zapravo čine potrazi jednostavno i lako umetanje 493 00:27:59,000 --> 00:28:01,000 i brisanje i ažuriranje i tako dalje? 494 00:28:01,000 --> 00:28:04,000 To je upravo ono što je baza podataka. 495 00:28:04,000 --> 00:28:07,000 SQL, strukturirani upitni jezik, još jedan jezik 496 00:28:07,000 --> 00:28:10,000 da smo uvođenjem danas ovdje, ali ovo je previše je prilično pristupačna, 497 00:28:10,000 --> 00:28:13,000 i ono što mi stvarno ide na to samo je iščupati iz njega neke od najmarkantnije 498 00:28:13,000 --> 00:28:16,000 obilježja, tako da je za pset 7, a ako to ne učinite nešto weba, 499 00:28:16,000 --> 00:28:19,000 Vaš konačni projekt, imate mogućnost da se izrazim 500 00:28:19,000 --> 00:28:22,000 u smislu podataka upita. 501 00:28:22,000 --> 00:28:25,000 Imate sposobnost da se pohraniti malo ili puno podataka 502 00:28:25,000 --> 00:28:28,000 u mnogo strukturiran način koji će na kraju dana 503 00:28:28,000 --> 00:28:32,000 učiniti vaš život lakšim jer sa SQL možete izraziti sebe 504 00:28:32,000 --> 00:28:35,000 puno preciznije, mnogo više sustavno kako bi se 505 00:28:35,000 --> 00:28:40,000 vratiti neki podskup podataka iz većeg korpusa podataka. 506 00:28:40,000 --> 00:28:45,000 >> Možete misliti baze podataka, u ovom slučaju, SQL baza podataka, stvarno kao Excel 507 00:28:45,000 --> 00:28:48,000 ili Brojevi gdje je tablica, 508 00:28:48,000 --> 00:28:50,000 ili možda više proračunske tablice i proračunske tablice, naravno, 509 00:28:50,000 --> 00:28:53,000 ima retke i stupce, te da je zbog toga 510 00:28:53,000 --> 00:28:56,000 SQL baze podataka relacijska, relacijska u smislu 511 00:28:56,000 --> 00:28:59,000 da pohraniti podatke u smislu ove tablice, 512 00:28:59,000 --> 00:29:01,000 redaka i stupaca. 513 00:29:01,000 --> 00:29:03,000 Oni su veći izvedbom nego nešto poput tablice, 514 00:29:03,000 --> 00:29:05,000 a tablice je značilo da se koristi od strane čovjeka. 515 00:29:05,000 --> 00:29:08,000 Baza podataka je značilo da se koristi programer 516 00:29:08,000 --> 00:29:12,000 pisanja koda protiv njega, pa je inkarnacija baze podataka 517 00:29:12,000 --> 00:29:14,000 će biti ili naredbenog retka. 518 00:29:14,000 --> 00:29:18,000 >> Jedan od najpopularnijih relacijskim bazama vani je, opet, MySQL, 519 00:29:18,000 --> 00:29:22,000 koja je predivno besplatno, vrlo visokih performansi, a to je ono što 520 00:29:22,000 --> 00:29:24,000 Facebook koristi vrlo rano i donekle još i danas 521 00:29:24,000 --> 00:29:27,000 pohraniti mnogo svojih podataka, a mi ćemo vidjeti u trenutku 522 00:29:27,000 --> 00:29:30,000 da koriste relativno jednostavne naredbe 523 00:29:30,000 --> 00:29:33,000 možemo odabrati podatke, umetanje podataka, ažuriranje podataka, 524 00:29:33,000 --> 00:29:37,000 brisanje podataka i slično, ali srećom, tu je više user-friendly sučelje 525 00:29:37,000 --> 00:29:39,000 nego samo tipkanje na crno, a bijelo redak ovdje. 526 00:29:39,000 --> 00:29:43,000 Mi ćemo koristiti za pset 7 i izvan besplatan alat zove phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Ime je slučajna. 528 00:29:45,000 --> 00:29:47,000 Alat se dogodi da se provodi u PHP-u, 529 00:29:47,000 --> 00:29:49,000 ali to je temeljno nebitno. 530 00:29:49,000 --> 00:29:53,000 Što je korisno o phpMyAdmin je da je web-based alat. 531 00:29:53,000 --> 00:29:55,000 Mi smo ga unaprijed instaliran u uređaju za vas, 532 00:29:55,000 --> 00:29:58,000 i uz to možete napraviti tablice u bazi podataka, 533 00:29:58,000 --> 00:30:01,000 možete umetnuti podatke, brisati podatke, i općenito vidjeti 534 00:30:01,000 --> 00:30:04,000 vaši podaci u prilično user-friendly okruženju. 535 00:30:04,000 --> 00:30:07,000 Vaši korisnici neće koristiti phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> To je zapravo samo administrativno ili programer je alat 537 00:30:09,000 --> 00:30:12,000 s koje se vidi i guranje oko vaših podataka i shvatiti kako ga strukturirati, 538 00:30:12,000 --> 00:30:15,000 puno poput tebe se može koristiti Excel ili brojeva, 539 00:30:15,000 --> 00:30:19,000 ali to će biti odličan način vizualizacije što se događa ispod haube 540 00:30:19,000 --> 00:30:22,000 tako da se možete usredotočiti na zanimljiv rješavanje problema, a ne toliko 541 00:30:22,000 --> 00:30:25,000 na kompliciranih naredbi. 542 00:30:25,000 --> 00:30:28,000 Idemo pogledati primjer podataka koji bi mogli biti pohranjeni tablični 543 00:30:28,000 --> 00:30:30,000 u relacijsku bazu podataka. 544 00:30:30,000 --> 00:30:32,000 Evo jedan takav primjer. 545 00:30:32,000 --> 00:30:35,000 Sada, na žalost, phpMyAdmin pogriješilo na strani bacanja način previše riječi 546 00:30:35,000 --> 00:30:38,000 i grafike na vas, ali ako brusiti u samo na 547 00:30:38,000 --> 00:30:42,000 ID stupac, stupac korisničko ime i mljeveno meso stupac, 548 00:30:42,000 --> 00:30:45,000 ovo je učinkovito tablice, ali to se događa da se isječak 549 00:30:45,000 --> 00:30:49,000 od tablice unutrašnjosti uređaja 550 00:30:49,000 --> 00:30:53,000 koristite datoteku koja smo vam pružiti u problemu set sedam. 551 00:30:53,000 --> 00:30:57,000 >> Konkretno, mi vam dati sliku koja predstavlja 552 00:30:57,000 --> 00:31:01,000 korisnikov stol, tako da tablica sadrži korisnicima s tri stupa, 553 00:31:01,000 --> 00:31:05,000 od kojih je jedan jedinstveni ID počevši s 1 te se nakon toga porastao. 554 00:31:05,000 --> 00:31:08,000 Drugi stup je korisničko ime, a one od vas koji je Hacker, 555 00:31:08,000 --> 00:31:12,000 Haker izdanje za pset dva, možda prepoznati neke od ovih korisničkih imena najmanje. 556 00:31:12,000 --> 00:31:16,000 Na desnoj strani su lozinke, ali oni nisu doslovni lozinke. 557 00:31:16,000 --> 00:31:19,000 Oni Skosan tome, pa ispada 558 00:31:19,000 --> 00:31:22,000 da spremanje lozinke u bazi podataka je stvarno loša ideja. 559 00:31:22,000 --> 00:31:25,000 Vi ste svi vjerojatno pročitali u nekom trenutku neki website 560 00:31:25,000 --> 00:31:28,000 ili neke tvrtke baza biti ugrožena, a zatim morate 561 00:31:28,000 --> 00:31:31,000 promijeniti svoju lozinku, morate dobiti povrat na stvari 562 00:31:31,000 --> 00:31:34,000 jer neki negativac zapravo provalio u obzir kao rezultat. 563 00:31:34,000 --> 00:31:38,000 >> Spremanje lozinke u jasnom tekstu, nesigurna u bazi podataka 564 00:31:38,000 --> 00:31:41,000 je potpuno glup, a ipak je to uvelike zabavno 565 00:31:41,000 --> 00:31:44,000 tada čitati o nekim vrlo dobro poznate tvrtke 566 00:31:44,000 --> 00:31:47,000 ponekad u medijima čije baze su ugrožena, 567 00:31:47,000 --> 00:31:50,000 a taj dio nije smiješno, ali činjenica da su baze podataka sadrže nekodiran 568 00:31:50,000 --> 00:31:53,000 lozinke je smiješno jer je doslovno s jedne linije koda 569 00:31:53,000 --> 00:31:57,000 možete zaštititi od tog prijetnje, i to je ono što smo učinili ovdje. 570 00:31:57,000 --> 00:32:00,000 Čak i za naše lažne malo CS50 financija verziji 571 00:32:00,000 --> 00:32:03,000 mi smo kriptiranje lozinke samo za dobru mjeru, kao i činjenica da 572 00:32:03,000 --> 00:32:07,000 sve od tih lozinki početi s $ 1 $ je samo konvencija. 573 00:32:07,000 --> 00:32:10,000 To samo znači da su kriptirani ili stvarno raspršen, 574 00:32:10,000 --> 00:32:13,000 koji je kao jednosmjernu šifriranja funkciji 575 00:32:13,000 --> 00:32:17,000 pri čemu se ne može poništiti njegov učinak s nečim što se zove MD5. 576 00:32:17,000 --> 00:32:21,000 >> Činjenica da je nakon 50 to znači da sol vrijednost 577 00:32:21,000 --> 00:32:24,000 od 50 korištena je za izračunavanje sažetka svih tih lozinki, osim jedne. 578 00:32:24,000 --> 00:32:27,000 Rudnik je, naravno, kao što možete vidjeti postoji, HA, 579 00:32:27,000 --> 00:32:30,000 bio koristeći različite soli, tako da one od vas koji lagano dobio spotaknuo se 580 00:32:30,000 --> 00:32:33,000 možda u Hacker 2, možda je to bio rezultat naše što se koristi 581 00:32:33,000 --> 00:32:36,000 drukčiji hash od drugih jer je moja lozinka je zapravo ista 582 00:32:36,000 --> 00:32:38,000 kao neke druge korisnika do tamo. 583 00:32:38,000 --> 00:32:41,000 U stvari, ako ste čekali sve ove tjedana saznati 584 00:32:41,000 --> 00:32:44,000 ono što ti lozinke ovdje su bili lozinke koje su osporenim 585 00:32:44,000 --> 00:32:48,000 ispucati u Hacker izdanju problema setu 2, tako da nitko previše lukav. 586 00:32:48,000 --> 00:32:50,000 U stvari, malan je bio isti kao i jharvard, 587 00:32:50,000 --> 00:32:54,000 ali ako se vratimo su izgledali drugačije. 588 00:32:54,000 --> 00:32:58,000 >> Fokusirajte se na jharvard u grimizne jer su slani drugačije. 589 00:32:58,000 --> 00:33:01,000 Algoritam je uznemiren na način da su 590 00:33:01,000 --> 00:33:05,000 hash vrijednost, kodiran vrijednost izgleda malo drugačije 591 00:33:05,000 --> 00:33:08,000 jer ulazi bili malo drugačiji, ali zaporka ispod haube 592 00:33:08,000 --> 00:33:10,000 je još uvijek u konačnici grimizno. 593 00:33:10,000 --> 00:33:12,000 Sada, tko mari za to? 594 00:33:12,000 --> 00:33:15,000 Pa, mi smo vam pružiti uzorka korisnika, uzorak korisničkih imena 595 00:33:15,000 --> 00:33:18,000 i hashes njihovih lozinki, tako da zapravo imaju neke 596 00:33:18,000 --> 00:33:23,000 kupci za CS50 financija kada ste prvi put sići na zemlju sa svojim kodom. 597 00:33:23,000 --> 00:33:27,000 Morat ćete provesti više tablica unutar MySQL, unutar baze podataka. 598 00:33:27,000 --> 00:33:30,000 Morat ćete stvoriti više proračunskih tablica, učinkovito, ali smo odlučili da vam ovo jedan 599 00:33:30,000 --> 00:33:33,000 da biste dobili ste ga počeli, i vidjet ćete da je specifikacija Problem skup 600 00:33:33,000 --> 00:33:37,000 provest će vas kroz proces uvoza ovu tablicu 601 00:33:37,000 --> 00:33:39,000 i objašnjavajući što neke od karakteristika su, 602 00:33:39,000 --> 00:33:41,000 i vidjet ćete da smo Vam pružiti koda 603 00:33:41,000 --> 00:33:44,000 za obradu hashing ili šifriranje tih lozinki, 604 00:33:44,000 --> 00:33:49,000 , tako da ne morate brinuti previše o tome što MD5 ili slično je zapravo sve o tome. 605 00:33:49,000 --> 00:33:53,000 >> Dakle, SQL, strukturirani upitni jezik. 606 00:33:53,000 --> 00:33:56,000 To je, jednostavno, jezik mi smo uskoro početi koristiti u pset 7 607 00:33:56,000 --> 00:34:01,000 a možda i šire zatražiti podatke iz neke baze podataka. 608 00:34:01,000 --> 00:34:06,000 Podaci se, opet, pohranjeni tablični u tim relacijskih tablica, stupaca i redaka, 609 00:34:06,000 --> 00:34:09,000 ali koristeći neke relativno jednostavne sintakse poput brisanja, 610 00:34:09,000 --> 00:34:12,000 umetanje, ažuriranje i odaberite možemo učiniti upravo to. 611 00:34:12,000 --> 00:34:15,000 Možemo izbrisati iz baze podataka, umetanje, 612 00:34:15,000 --> 00:34:19,000 ažurirati podatke, kao i odabir, koji se, dohvatiti podatke iz baze podataka. 613 00:34:19,000 --> 00:34:21,000 Kako ćemo ići o događaj ovaj? 614 00:34:21,000 --> 00:34:23,000 Pusti me naprijed u aparat. 615 00:34:23,000 --> 00:34:28,000 Dopustite mi podići http://localhost, 616 00:34:28,000 --> 00:34:30,000 koji, opet, je lokalna sam aparat. 617 00:34:30,000 --> 00:34:32,000 To je njegova zadana nadimak. 618 00:34:32,000 --> 00:34:35,000 I pusti me da / phpMyAdmin. 619 00:34:35,000 --> 00:34:39,000 To se događa da se poseban URL koji uređaj unaprijed konfiguriran za razumjeti 620 00:34:39,000 --> 00:34:42,000 da odmah me pita za korisničko ime i lozinku. 621 00:34:42,000 --> 00:34:46,000 >> Kao i obično, ja ću upisati jharvard i grimizne, 622 00:34:46,000 --> 00:34:48,000 ali shvatite da je administratorski račun na računalu. 623 00:34:48,000 --> 00:34:53,000 To je samo slučajnost da je također jharvard registriran za CS50 financija. 624 00:34:53,000 --> 00:34:56,000 Jharvard, grimizno, enter mi daje korisničko sučelje koje smo vidjeli 625 00:34:56,000 --> 00:34:59,000 pogled na trenutak prije, a to je malo neodoljiv na prvom mjestu, 626 00:34:59,000 --> 00:35:02,000 ali budite uvjereni, nikada si idući u morati kliknuti većina veza u ovom alatu. 627 00:35:02,000 --> 00:35:05,000 Vi ćete završiti koristeći mali podskup da su super korisne, 628 00:35:05,000 --> 00:35:08,000 prvi koji je baza ovdje. 629 00:35:08,000 --> 00:35:11,000 Ako odem do bazama podataka, primijetiti da sam zatraži da stvoriti bazu podataka. 630 00:35:11,000 --> 00:35:14,000 To je kao stvaranje nove Excel datoteku, učinkovito. 631 00:35:14,000 --> 00:35:18,000 Ja ću ići naprijed i pozvati na predavanju, a ja sam samo ću ignorirati polju, uspoređivanje. 632 00:35:18,000 --> 00:35:20,000 To ima veze s prikazom podataka u njoj, 633 00:35:20,000 --> 00:35:24,000 i ja ću kliknuti stvoriti, a sada primjetiti kako sam pustio stvoriti 634 00:35:24,000 --> 00:35:27,000 na lijevoj strani gdje se kaže nema baze podataka 635 00:35:27,000 --> 00:35:30,000 Uskoro sam trebao vidjeti bazu podataka predavanje. 636 00:35:30,000 --> 00:35:32,000 >> Ako ja sada kliknite na lijevoj strani, predavanje baze podataka, 637 00:35:32,000 --> 00:35:34,000 Primijetit moji Kartice promijeniti malo. 638 00:35:34,000 --> 00:35:38,000 Imam strukturu, SQL, izvoz, uvoz i neke druge stvari. 639 00:35:38,000 --> 00:35:40,000 Struktura je prilično prazan. 640 00:35:40,000 --> 00:35:43,000 Nema tablice nalaze u bazi podataka, kao što kaže ovdje, 641 00:35:43,000 --> 00:35:47,000 pa neka je stvoriti tablicu, i idemo naprijed i stvoriti tablicu 642 00:35:47,000 --> 00:35:53,000 sviđa studenata, a koliko stupaca ne želimo? 643 00:35:53,000 --> 00:35:55,000 Ajmo zadržati ovaj jednostavan, a neka je rekord za svakog učenika 644 00:35:55,000 --> 00:35:58,000 ID broj, ime i e-mail adresu. 645 00:35:58,000 --> 00:36:02,000 >> Držat ćemo ga jednostavno kao da, tako tri kolone, ići. 646 00:36:02,000 --> 00:36:05,000 Oblik koji vidite ovdje je sada malo neuredan i neodoljiv, 647 00:36:05,000 --> 00:36:08,000 ali mi jednostavno moramo proći kroz njega red, tako da stvarno brzo dajmo 648 00:36:08,000 --> 00:36:14,000 Prvi stupac u ovoj bazi podataka naziv ID za jedinstveni identifikator. 649 00:36:14,000 --> 00:36:17,000 To će biti cijeli broj. Ja zapravo ne može ignorirati duljinu i vrijednosti. 650 00:36:17,000 --> 00:36:21,000 Int će biti 32 bita bez obzira što upišete tamo, pa ajmo ostavite prazno. 651 00:36:21,000 --> 00:36:24,000 Zadana vrijednost, mogao sam to učiniti null, kao što je definirano. 652 00:36:24,000 --> 00:36:27,000 Ja ću ostaviti da sama. Nemojmo brinuti o zadanim vrijednostima. 653 00:36:27,000 --> 00:36:29,000 Ajmo dođite ovamo na desno, atributa. 654 00:36:29,000 --> 00:36:31,000 To je zanimljivo. 655 00:36:31,000 --> 00:36:33,000 Idemo naprijed i pomalo proizvoljno kažu da iskaznice moraju biti nepotpisana. 656 00:36:33,000 --> 00:36:35,000 Nemojmo gubiti nikakve negativne brojeve. 657 00:36:35,000 --> 00:36:37,000 >> Idemo 0-4 milijarde, dati ili uzeti, 658 00:36:37,000 --> 00:36:40,000 i onda nemojmo dirati bilo koji od tih polja samo još tamo, 659 00:36:40,000 --> 00:36:43,000 ali onda neka mi upisati ime ovdje dolje, 660 00:36:43,000 --> 00:36:46,000 i onda je drugi e-mail, tako da ulov je e-mail 661 00:36:46,000 --> 00:36:50,000 i ime, očito se nisu cijeli brojevi, pa neka ih promijenili u neku drugu polju. 662 00:36:50,000 --> 00:36:53,000 Ispada VARCHAR, promjenjiva dužina char, 663 00:36:53,000 --> 00:36:56,000 je kao niz u SQL baze podataka 664 00:36:56,000 --> 00:36:59,000 ali varijabla duljina, a vi zapravo imaju to reći unaprijed 665 00:36:59,000 --> 00:37:02,000 Maksimalna duljina niza, pa ću nešto proizvoljno 666 00:37:02,000 --> 00:37:05,000 po kongresnog tipa 255 znakova. 667 00:37:05,000 --> 00:37:08,000 Ja potpuno mogao reći 32. Mogao bih reći 1000. 668 00:37:08,000 --> 00:37:11,000 Vi vrsta morati odlučiti za sebe na temelju vaših demografije što je 669 00:37:11,000 --> 00:37:14,000 The Longest učenika ime i otići s tog broja ili malo veći, 670 00:37:14,000 --> 00:37:17,000 ali ono što je lijepo o varchar je to ne ide na otpad 671 00:37:17,000 --> 00:37:19,000 255 bajtova na svaki učenik imenom. 672 00:37:19,000 --> 00:37:23,000 Ako je David to neće koristiti samo cijelih 255 bajtova, 673 00:37:23,000 --> 00:37:26,000 ali to je gornja granica, tako da ću ići s 255 samo po konvenciji, 674 00:37:26,000 --> 00:37:30,000 ali možemo raspravljati da će biti neki niža vrijednost, a za e-mail adresu 675 00:37:30,000 --> 00:37:34,000 samo da bude u skladu 255, ali opet, mogli bismo imati istu raspravu. 676 00:37:34,000 --> 00:37:36,000 No, ja ću to učiniti jednu drugu stvar ovdje na desnoj strani. 677 00:37:36,000 --> 00:37:40,000 >> Što je moćan o bazi podataka je da to može učiniti puno teškog dizanja 678 00:37:40,000 --> 00:37:42,000 ili složen posao za vas. 679 00:37:42,000 --> 00:37:46,000 Konkretno, ja stvarno ne briga što moj učenik je ID brojevi. 680 00:37:46,000 --> 00:37:49,000 To je samo značilo da se jedinstveni identifikator u bazi podataka 681 00:37:49,000 --> 00:37:52,000 pa imam 32-bitnu kratak prikaz tog studenta 682 00:37:52,000 --> 00:37:55,000 tako da imam neki način jedinstveno ih identificira 683 00:37:55,000 --> 00:37:58,000 da ne bi dvije Davids, na primjer, u klasi. 684 00:37:58,000 --> 00:38:01,000 U stvari, ja ću provjeriti ovu AI okvir, auto prirast, 685 00:38:01,000 --> 00:38:04,000 tako da je baza podataka, MySQL, figure out 686 00:38:04,000 --> 00:38:08,000 Ono što svaki novoobjavljene studenta ID će biti. 687 00:38:08,000 --> 00:38:11,000 Ja čak ne moraju brinuti o tome da je u mom kodu, 688 00:38:11,000 --> 00:38:13,000 i ja također ću odabrati nešto ispod indeksa izbornika. 689 00:38:13,000 --> 00:38:17,000 Indeks padajući ovdje je primarna, jedinstvena, 690 00:38:17,000 --> 00:38:19,000 Indeks i cijeli tekst. 691 00:38:19,000 --> 00:38:21,000 Vi možda možete pogoditi što par tih stvari su, 692 00:38:21,000 --> 00:38:24,000 ali ispada u relacijskim bazama podataka 693 00:38:24,000 --> 00:38:28,000 ti programer ili administrator baza podataka doći do preventivno 694 00:38:28,000 --> 00:38:32,000 daju savjete na bazu podataka kako bi se ono stavke 695 00:38:32,000 --> 00:38:34,000 u tablici su malo posebna. 696 00:38:34,000 --> 00:38:37,000 >> Na primjer, u ovom slučaju ja ću reći da je ID 697 00:38:37,000 --> 00:38:42,000 će biti primarni indeks, inače poznat kao primarni ključ. 698 00:38:42,000 --> 00:38:44,000 Što to znači po definiciji je da ID odsada 699 00:38:44,000 --> 00:38:48,000 će jedinstveno identificirati učenike u ovoj tablici. 700 00:38:48,000 --> 00:38:53,000 Ne student će imati isti ID jer sam nameće ovo ograničenje ili ovaj indeks. 701 00:38:53,000 --> 00:38:55,000 Štoviše, ono će to učiniti za mene je to će reći 702 00:38:55,000 --> 00:38:58,000 MySQL da gradijent je posebna. 703 00:38:58,000 --> 00:39:03,000 Brinem osobito o ID, pa ići naprijed i učiniti vaše fancy struktura podataka u magiju, 704 00:39:03,000 --> 00:39:05,000 izgraditi neku vrstu stabla. 705 00:39:05,000 --> 00:39:08,000 Obično je to nešto što se zove B-stablo, koje nismo pogledati tjedana, 706 00:39:08,000 --> 00:39:11,000 ali to je druga takva struktura podataka slični u duhu s binarnim stablima 707 00:39:11,000 --> 00:39:15,000 i pokušava da smo gledali, ali to će reći 708 00:39:15,000 --> 00:39:18,000 bazi podataka ovo polje je tako važno da sam vjerojatno 709 00:39:18,000 --> 00:39:22,000 želim biti u mogućnosti to traženje na njega, ići naprijed i graditi neki fancy 710 00:39:22,000 --> 00:39:25,000 struktura podataka u memoriji kako bi ubrzali pretraživanja, tako da je idealno 711 00:39:25,000 --> 00:39:28,000 oni su stalno vrijeme ili barem što bliže onome što je više moguće 712 00:39:28,000 --> 00:39:32,000 tako da ne spadaju u linearno pretraživanje, koji se ne će biti 713 00:39:32,000 --> 00:39:34,000 većina visokih performansi pristup. 714 00:39:34,000 --> 00:39:37,000 Nasuprot tome, e-mail adresa je mogao biti primarni ključ. 715 00:39:37,000 --> 00:39:41,000 >> U teoriji, svačija e-mail adresa je jedinstvena, ako ste dijeljenje nekih računa, 716 00:39:41,000 --> 00:39:45,000 ali to općenito nije dobro koristiti nešto poput niza 717 00:39:45,000 --> 00:39:49,000 kao primarni ključ, jer ako je njegova svrha u životu je jedinstveno identificirati 718 00:39:49,000 --> 00:39:55,000 retke u tablici nema razloga za korištenje 255 bajtova maksimalno 719 00:39:55,000 --> 00:39:58,000 jedinstveno identificirati nekoga ako možete dobiti daleko sa samo 4 bajta 720 00:39:58,000 --> 00:40:00,000 ili 32-bitni int. 721 00:40:00,000 --> 00:40:03,000 Općenito, primarni ključ treba biti kratak i jezgrovit 722 00:40:03,000 --> 00:40:07,000 i idealno nešto kao cijeli broj ili veliki Int, koji se dogoditi da se 64 bita. 723 00:40:07,000 --> 00:40:11,000 No, e-mail adresa mora biti jedinstvena, a jedan od značajki baze podataka previše 724 00:40:11,000 --> 00:40:14,000 je provesti jedinstvenost za mene. 725 00:40:14,000 --> 00:40:18,000 Odabirom unique ovdje uz poruku e-pošte, iako se e-mail 726 00:40:18,000 --> 00:40:21,000 je pomicana isključili zaslon, govorim na bazi 727 00:40:21,000 --> 00:40:23,000 ne vjeruj mi. 728 00:40:23,000 --> 00:40:26,000 Ne dopustite da umetnuti u bazu podataka 729 00:40:26,000 --> 00:40:29,000 isti e-mail adresu dva puta, čak i ako sam idiot i nisam 730 00:40:29,000 --> 00:40:32,000 vrlo dobar s mojim oklijevanja i drugdje IFS i stvarne PHP koda 731 00:40:32,000 --> 00:40:37,000 i ja slučajno pustiti korisnik registrirati postojeće e-mail adresu 732 00:40:37,000 --> 00:40:40,000 Baza podataka je još jedna razina obrane za ispravnost 733 00:40:40,000 --> 00:40:44,000 kako bi se osiguralo da je duplikat e-mail adresa ne završiti u tablici. 734 00:40:44,000 --> 00:40:49,000 >> Sada, s druge strane, za ime koje vjerojatno ne želite da taj jedinstveni 735 00:40:49,000 --> 00:40:51,000 jer onda nikada ne bi mogao biti 2 Davids ili dva Mike Smiths, na primjer, 736 00:40:51,000 --> 00:40:55,000 u svojoj bazi podataka, tako da se samo ćemo ostaviti na miru. 737 00:40:55,000 --> 00:40:58,000 Ja ću ići naprijed i kliknite spremiti u donjem desnom, 738 00:40:58,000 --> 00:41:02,000 i sve izgleda dobro, ali primijetiti ovdje 739 00:41:02,000 --> 00:41:04,000 to je dio koji za sada nećemo trošiti previše vremena na 740 00:41:04,000 --> 00:41:07,000 jer je sintaksa malo složeniji, a mi nemamo za stvaranje tablice 741 00:41:07,000 --> 00:41:10,000 sve to često, ali SQL sama je jezik, 742 00:41:10,000 --> 00:41:13,000 sintaksa za koje je ovdje da sam istaknuo. 743 00:41:13,000 --> 00:41:18,000 Što phpMyAdmin doista je to stvara web-based GUI za vas 744 00:41:18,000 --> 00:41:23,000 s kojima možete uštedjeti vrijeme i ne moraju ručno upisati se 745 00:41:23,000 --> 00:41:26,000 prilično dugo SQL upit tako. 746 00:41:26,000 --> 00:41:29,000 >> Drugim riječima, ako ste htjeli ručno stvoriti ovu tablicu, 747 00:41:29,000 --> 00:41:32,000 pri tom crne i bijele redak ili čak u phpMyAdmin 748 00:41:32,000 --> 00:41:35,000 pomoću ovu drugu karticu, to SQL kartica gdje možete upisati bilo SQL upita 749 00:41:35,000 --> 00:41:38,000 želite, iskreno, ovo bi trebalo mi je minutu 750 00:41:38,000 --> 00:41:41,000 zapravo zapamtiti cijelu sintaksu, pa čak i onda ću vjerojatno imati 751 00:41:41,000 --> 00:41:45,000 napravio neke greške u pisanju, tako da je ovo alat je koristan za stvari kao što je to, i to je također poučan. 752 00:41:45,000 --> 00:41:49,000 Možete početi zaključiti što je sintaksa 753 00:41:49,000 --> 00:41:52,000 samo lijepe boje kodiranje da phpMyAdmin je dodao 754 00:41:52,000 --> 00:41:54,000 za naše vizualne udobnosti. 755 00:41:54,000 --> 00:41:56,000 Ali sada hajdemo to učiniti umjesto. 756 00:41:56,000 --> 00:42:00,000 Pusti me na kartici Umetanje u vrhu, i pusti me naprijed i umetnuti primjer 757 00:42:00,000 --> 00:42:04,000 ID recimo-zapravo ne zanima. 758 00:42:04,000 --> 00:42:07,000 To će auto prirasta. Ja ću pustiti baze nositi s ovim. 759 00:42:07,000 --> 00:42:11,000 Ali ja ću biti David, i moj e-mail bi trebao biti malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Idemo naprijed ovdje i staviti u Mike Smith kao još jedan. 761 00:42:16,000 --> 00:42:18,000 Ja ću dati sebi prezime kao i, 762 00:42:18,000 --> 00:42:22,000 a mi ćemo ga i biti smith@example.com, 763 00:42:22,000 --> 00:42:24,000 i onda gdje trebam ići dalje? 764 00:42:24,000 --> 00:42:27,000 Pa, to izgleda kao go je gumb miša, i voila. 765 00:42:27,000 --> 00:42:30,000 Obavijest na vrhu dva reda umetnute. 766 00:42:30,000 --> 00:42:32,000 To je stvarna SQL upit. 767 00:42:32,000 --> 00:42:36,000 To je phpMyAdmin alat pogubljen za mene, 768 00:42:36,000 --> 00:42:40,000 ali krajnji rezultat, obavijest, ako ja sada ići na traženih kartici 769 00:42:40,000 --> 00:42:43,000 je vidjeti dva reda u ovoj tablici, jako podsjeća estetski 770 00:42:43,000 --> 00:42:46,000 stola smo vidjeli ranije za naše korisnike iz pset 7, 771 00:42:46,000 --> 00:42:51,000 od kojih je jedan David Malan, od kojih je jedan sada je Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Ali samo da bude jasno, ne trebam koristiti phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 i doista, da ćeš uskoro biti pisanje koda za pset 7 774 00:42:56,000 --> 00:43:01,000 koji automatizira proces dodavanja redaka, brisanje redaka, ažuriranje redaka i slično, 775 00:43:01,000 --> 00:43:04,000 pa neka mi umjesto toga ići na SQL kartici ovdje 776 00:43:04,000 --> 00:43:14,000 i tip u SELECT * FROM studenata gdje 777 00:43:14,000 --> 00:43:18,000 e = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Drugim riječima pretpostavimo da sada imate 779 00:43:21,000 --> 00:43:26,000 neki HTML oblik, a korisnik upiše u svojoj e-mail adresu, među ostalim poljima, 780 00:43:26,000 --> 00:43:29,000 , a cilj je sada u PHP na leđa kraj koda 781 00:43:29,000 --> 00:43:31,000 zapravo gledati tog korisnika druge pojedinosti. 782 00:43:31,000 --> 00:43:34,000 Koje je vaše puno ime? Koji je vaš ID broj? 783 00:43:34,000 --> 00:43:37,000 Ti bi mogao napisati SQL upit ovako, odaberite * od studenata 784 00:43:37,000 --> 00:43:40,000 gdje je e = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 A ako sam zatim ići, primijetiti da sam trebao, i doista mi je činiti, vratiti samo jedan redak. 786 00:43:46,000 --> 00:43:50,000 Mike je izostavljen iz ovog seta rezultata, kao zbirka redaka 787 00:43:50,000 --> 00:43:53,000 se općenito zove, jer on ne imati istu adresu kao i mene. 788 00:43:53,000 --> 00:43:57,000 >> Sada, opet, ovdje pset sedam ćete koristiti phpMyAdmin kao administrativnog alata 789 00:43:57,000 --> 00:44:00,000 i pedagoški alat za naučiti svoj put 790 00:44:00,000 --> 00:44:03,000 oko svijeta SQL, ali na kraju dana 791 00:44:03,000 --> 00:44:08,000 ti si idući u biti pisanje ove upite unutar stvarnog PHP kodu, 792 00:44:08,000 --> 00:44:11,000 i tako ostati sinkroniziran na Zamyla je prohod posebice 793 00:44:11,000 --> 00:44:14,000 gdje ćete dobiti obilazak distribucije koda za ovaj problem setu 794 00:44:14,000 --> 00:44:18,000 gdje smo vam dati ne samo estetika za stranicu za prijavu 795 00:44:18,000 --> 00:44:21,000 i lijepo seksi logotip koji kaže CS50 financije, ali mi smo također vam dati 796 00:44:21,000 --> 00:44:24,000 hrpa funkcija koje će učiniti vaš život malo lakše. 797 00:44:24,000 --> 00:44:27,000 Također smo pisani dio pset za vas, 798 00:44:27,000 --> 00:44:32,000 prijava dio njega posebno, da vam dati osjećaj reprezentativnog dizajna 799 00:44:32,000 --> 00:44:36,000 koji zapravo koristi kontroler, na primjer, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php i slično, a onda ćete vidjeti pset također ima predloške imenik 801 00:44:40,000 --> 00:44:43,000 da ima sve svoje stavove, sve estetike. 802 00:44:43,000 --> 00:44:46,000 I tako ukupni tijek rada u pset 7 će biti da 803 00:44:46,000 --> 00:44:49,000 Vaši korisnici posjete kontroler putem URL-a u pregledniku. 804 00:44:49,000 --> 00:44:53,000 To kontroler sadrži PHP kod koji ste zapisali, i unutar svoje PHP koda 805 00:44:53,000 --> 00:44:57,000 Možda će neke linije SQL smješteno između navodnicima 806 00:44:57,000 --> 00:45:00,000 i prošao u funkciji smo pisali pod nazivom upit 807 00:45:00,000 --> 00:45:03,000 koji će vam pomoći da razgovaraju s bazom podataka bez korištenja nešto poput 808 00:45:03,000 --> 00:45:05,000 upravni alat poput phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Vi ćete biti u mogućnosti pisati SQL izraza u PHP kodu 810 00:45:08,000 --> 00:45:11,000 i vratiti PHP niz set rezultata, 811 00:45:11,000 --> 00:45:14,000 od redaka koji zapravo odgovaraju taj upit. 812 00:45:14,000 --> 00:45:18,000 A slično će vam biti u mogućnosti to učiniti umetke ili briše 813 00:45:18,000 --> 00:45:22,000 ili ažuriranja ili slično, sintaksa za koji je prilično sličan, 814 00:45:22,000 --> 00:45:25,000 i vidjet ćete iz nekih online referenci, od distribucije koda 815 00:45:25,000 --> 00:45:29,000 i od pset se pakirati točno kako to ide o tome da radiš. 816 00:45:29,000 --> 00:45:33,000 Shvatite konačno smo stvarno samo grebanje površine SQL 817 00:45:33,000 --> 00:45:36,000 i MySQL, ali snaga je stvarno da vas oslobađa 818 00:45:36,000 --> 00:45:40,000 usredotočiti na probleme želite riješiti, korištenje slučajevi želite provesti 819 00:45:40,000 --> 00:45:43,000 bez brige sasvim jednako, barem u početku, 820 00:45:43,000 --> 00:45:47,000 o tome gdje i kako za pohranu i pretraživanje baze podataka, 821 00:45:47,000 --> 00:45:50,000 i to je doslovno gdje Facebook sama dobila početak 822 00:45:50,000 --> 00:45:53,000 pomoću MySQL, a zatim koristite više MySQL poslužitelja i onda više MySQL poslužitelja 823 00:45:53,000 --> 00:45:57,000 prije dugo dok oni tada morali stvarno početi razmišljati teško o tome kako 824 00:45:57,000 --> 00:46:00,000 pohranu podataka, kako za pohranu stvari čak i učinkovitije, 825 00:46:00,000 --> 00:46:04,000 pa iako ćemo uzeti zdravo za gotovo činjenicu da indekse i jedinstvene ograničenja 826 00:46:04,000 --> 00:46:08,000 i tako dalje raditi samo tamo je vrlo zanimljiv razgovor 827 00:46:08,000 --> 00:46:12,000 da to sve može na kraju dovesti do tako shvatiti da smo samo grebanje površine 828 00:46:12,000 --> 00:46:17,000 od čega bi u konačnici moglo za vas ili vaše projekte postati vrlo malo velikih podataka. 829 00:46:17,000 --> 00:46:22,000 >> Sa taj je rekao, ajmo završiti ovdje, a mi ćemo vas vidjeti sljedeći tjedan. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]