1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Săptămâna 8, Continuare] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Universitatea Harvard] 3 00:00:04,000 --> 00:00:08,000 [Acest lucru este CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Acest lucru este CS50, astfel încât acesta este sfârșitul săptămânii 8 aici. 5 00:00:13,000 --> 00:00:16,000 Am avut, desigur, un pic de un uragan la începutul acestei săptămâni, 6 00:00:16,000 --> 00:00:19,000 astfel încât acum este într-adevăr doar tu și cu mine în această sală de conferințe, 7 00:00:19,000 --> 00:00:22,000 dar astăzi vom continua conversația noastră despre PHP 8 00:00:22,000 --> 00:00:25,000 si despre programare web, în ​​general, mai mult, si vom introduce, de asemenea, ideea 9 00:00:25,000 --> 00:00:29,000 bazelor de date, în special unul numit MySQL, care este destul de popular in aceste zile, 10 00:00:29,000 --> 00:00:34,000 în mare parte din cauza scalabilității sale, precum și din cauza acesteia fiind sursă liberă și deschisă. 11 00:00:34,000 --> 00:00:37,000 >> Dar, mai întâi, o privire la unde am rămas data trecută. 12 00:00:37,000 --> 00:00:40,000 Amintiți-vă că am fost în căutarea la mai multe exemple Frosh AI, 13 00:00:40,000 --> 00:00:44,000 și aceasta a fost formular hidos pe care am venit cu aproximativ 15 ani în urmă + 14 00:00:44,000 --> 00:00:49,000 , în scopul de a avea elevi pe registrul campus pentru sport boboc intramurale 15 00:00:49,000 --> 00:00:52,000 , fără de fapt a fi nevoie să mai Trek peste șantierul să Wigglesworth 16 00:00:52,000 --> 00:00:56,000 să alunece o bucată de hârtie fizică sub ușa lui Proctor ceva. 17 00:00:56,000 --> 00:00:59,000 În schimb ne-am mutat totul on-line, dar pentru a face acest lucru avem nevoie să facă uz 18 00:00:59,000 --> 00:01:03,000 de câteva tehnologii, astfel încât unul, am nevoie de HTML, Hypertext Markup Language, 19 00:01:03,000 --> 00:01:07,000 care din nou este acest limbaj de marcare cu care faci pagini web structural. 20 00:01:07,000 --> 00:01:10,000 >> Folosind un pic de CSS aceste zile, foi de stil în cascadă, 21 00:01:10,000 --> 00:01:16,000 prin care vom folosi stilizari ale paginii web folosind o sintaxă ușor diferită, 22 00:01:16,000 --> 00:01:19,000 întrucât HTML a fost tot despre structura acestora. 23 00:01:19,000 --> 00:01:21,000 De asemenea, trebuie să se introducă un limbaj de programare web. 24 00:01:21,000 --> 00:01:25,000 În acest caz, vom folosi PHP, și PHP este de gând să ne permită 25 00:01:25,000 --> 00:01:28,000 la continut dinamic de ieșire, precum și face ca lucruri cum ar fi programatice 26 00:01:28,000 --> 00:01:33,000 trimiterea de email-uri, cum a fost cazul în nota am plecat săptămâna trecută. 27 00:01:33,000 --> 00:01:35,000 >> Amintiți-vă că acest cod pentru a fost în 2 părți. 28 00:01:35,000 --> 00:01:38,000 Unu, am avut froshims3.php, 29 00:01:38,000 --> 00:01:42,000 și acest lucru a fost în mare parte de marcare cu un formular HTML în interiorul său, 30 00:01:42,000 --> 00:01:45,000 un pic de CSS aici în atributele de stil 31 00:01:45,000 --> 00:01:48,000 astfel încât formularul în sine ar fi centrat pe pagină, dar dincolo de asta 32 00:01:48,000 --> 00:01:51,000 am avut unele intrări reprezentative formular, un câmp de text, o casetă de selectare, 33 00:01:51,000 --> 00:01:55,000 unele butoane de radio, un meniu de selectare, și un buton de submit. 34 00:01:55,000 --> 00:02:01,000 Și prin intermediul acestui formular, am prezentat un dosar care a fost aparent numit register3.php, 35 00:02:01,000 --> 00:02:04,000 care se uita un pic ceva de genul asta. 36 00:02:04,000 --> 00:02:08,000 Acum, cea mai mare parte din codul register3.php, retragerea, a fost vorba de e-mail. 37 00:02:08,000 --> 00:02:11,000 A făcut un pic de validare a formularului, care a fost prezentat pentru a vă asigura 38 00:02:11,000 --> 00:02:14,000 că domeniile au fost de fapt condiția care au fost de așteptat. 39 00:02:14,000 --> 00:02:18,000 Apoi am sunat unele funcții PHP folosind noua sintaxă ușor, 40 00:02:18,000 --> 00:02:20,000 chiar dacă este împrumutat de la C. 41 00:02:20,000 --> 00:02:24,000 >> Acest operator săgeată ne permite să facă uz de ceva numit programarea orientată pe obiecte. 42 00:02:24,000 --> 00:02:27,000 Nu vom intra în faptul că, în orice detaliu aici, dar știu de acum 43 00:02:27,000 --> 00:02:31,000 este un mod de a avea funcții asociate cu obiecte, 44 00:02:31,000 --> 00:02:34,000 care sunt un tip special de structură, așa cum am văzut în C. 45 00:02:34,000 --> 00:02:37,000 Dar pentru acum, ia doar pe credința că aceasta este sintaxa corectă pentru a utiliza 46 00:02:37,000 --> 00:02:41,000 atunci când se utilizează o bibliotecă ca această bibliotecă PHPMailer. 47 00:02:41,000 --> 00:02:44,000 Și apoi, până la sfârșitul acestui fișier am generat dinamic un e-mail 48 00:02:44,000 --> 00:02:47,000 care s-au trimis la contul meu jharvard@cs50.net 49 00:02:47,000 --> 00:02:50,000 din contul meu jharvard@cs50.net, 50 00:02:50,000 --> 00:02:54,000 și am informat utilizatorul în consecință, că acestea au fost înregistrate pentru acest sport. 51 00:02:54,000 --> 00:02:57,000 Asta este destul de mult ceea ce Frosh site-ul AI făcut în toți acei ani în urmă 52 00:02:57,000 --> 00:03:00,000 cand l-am pus în aplicare, a acordat, într-o altă limbă, 53 00:03:00,000 --> 00:03:02,000 dar tu, probabil, arata puterea pe care o aveți 54 00:03:02,000 --> 00:03:05,000 Acum, că vă puteți exprima nu numai prin programare 55 00:03:05,000 --> 00:03:08,000 la un nivel scăzut într-o limbă precum C, dar la un nivel mult mai mare 56 00:03:08,000 --> 00:03:11,000 cu aceste aplicații foarte reale, cum ar fi e-mail pentru a rezolva efectiv 57 00:03:11,000 --> 00:03:13,000 unele probleme din lumea reală. 58 00:03:13,000 --> 00:03:16,000 >> Acum, desigur, chiar dacă am folosi acest script pentru a genera unele 59 00:03:16,000 --> 00:03:20,000 e-mailuri de la jharvard@cs50.net dinamic, ceea ce este într-adevăr un cont 60 00:03:20,000 --> 00:03:23,000 că am avea acces la, nu fi destul de atent pentru a trimite 61 00:03:23,000 --> 00:03:26,000 prin poștă numai din conturi care sunt de fapt propriul dvs., 62 00:03:26,000 --> 00:03:30,000 ca nu cumva lucrurile pe care le obține într-un pic de apă caldă în viață. 63 00:03:30,000 --> 00:03:35,000 Cu care a spus, hai acum tranziția la rezolvarea unei probleme cu totul diferit, 64 00:03:35,000 --> 00:03:37,000 a statelor de fixare. 65 00:03:37,000 --> 00:03:39,000 Acum, ce înseamnă asta de fapt? 66 00:03:39,000 --> 00:03:42,000 HTTP, acest Hypertext Transfer Protocol, 67 00:03:42,000 --> 00:03:45,000 este de fapt un protocol de apatrid, și ce înseamnă acest lucru este faptul că 68 00:03:45,000 --> 00:03:48,000 atunci când vă trageți în sus ceva de genul Google.com și apoi a lovit introduceți 69 00:03:48,000 --> 00:03:51,000 de obicei, browser-ul dvs. are un fel de icoană filare, care apoi 70 00:03:51,000 --> 00:03:54,000 rezultate din unele pagini web să fie descărcate, 71 00:03:54,000 --> 00:03:57,000 și apoi că icoana mica oprește filare, și că într-adevăr sugerează 72 00:03:57,000 --> 00:04:02,000 HTTP care a finalizat un fel de conexiune la server și asta e tot. 73 00:04:02,000 --> 00:04:05,000 HTTP este apatrid, în sensul că nu se menține 74 00:04:05,000 --> 00:04:08,000 o conexiune persistentă la server în același mod Skype nu 75 00:04:08,000 --> 00:04:11,000 sau Gchat face, deoarece cu HTTP 76 00:04:11,000 --> 00:04:15,000 ipoteză este că, odată ce v-ați adus-o pagină web care este aceasta. 77 00:04:15,000 --> 00:04:18,000 >> Acum, în realitate, în aceste zile de pe site-uri precum Facebook si Google Maps 78 00:04:18,000 --> 00:04:21,000 și Twitter si ca nu e mult mai mult dinamism prin care 79 00:04:21,000 --> 00:04:25,000 chiar și după faptul că icoana se oprește filare puteți obține, de fapt, mai multe actualizări 80 00:04:25,000 --> 00:04:29,000 de la server, mai multe tweets, mai multe actualizări de stare de pe Facebook și cum ar fi. 81 00:04:29,000 --> 00:04:33,000 Dar chiar că este folosind o tehnica pe care vom vorbi despre într-o săptămână sau două 82 00:04:33,000 --> 00:04:36,000 cunoscut sub numele de Ajax folosind un limbaj numit JavaScript, 83 00:04:36,000 --> 00:04:38,000 dar la sfârșitul zilei, HTTP este încă apatrid. 84 00:04:38,000 --> 00:04:42,000 Și totuși, dacă doriți să vă amintiți cumva lucruri despre un utilizator 85 00:04:42,000 --> 00:04:44,000 chiar și după ce au deconectat de la server-ul dvs. 86 00:04:44,000 --> 00:04:47,000 PHP nu permite o cale de a face acest 87 00:04:47,000 --> 00:04:52,000 pentru că, așa cum am văzut ultima oară, PHP are un număr de superglobals, 88 00:04:52,000 --> 00:04:55,000 și o superglobale este, din nou, o variabilă specială la nivel mondial 89 00:04:55,000 --> 00:04:59,000 care este predat la tine de serverul de web și de PHP în sine. 90 00:04:59,000 --> 00:05:02,000 >> Nu trebuie să faceți nimic pentru a pune valorile în ea, 91 00:05:02,000 --> 00:05:05,000 iar printre superglobals le-am văzut până acum sunt GET si POST, 92 00:05:05,000 --> 00:05:08,000 care este în cazul în care câmpurile de formular sunt puse în mod automat pentru tine, 93 00:05:08,000 --> 00:05:11,000 precum și o serie de alte persoane pe care nu le-am văzut încă. 94 00:05:11,000 --> 00:05:17,000 In interiorul $ _SERVER sunt niste variabile speciale referitoare la serverul de sine. 95 00:05:17,000 --> 00:05:22,000 Care este adresa IP, ce protocol, HTTP sau HTTPS ai folosit, 96 00:05:22,000 --> 00:05:25,000 ce metodă cerere ai folosit si ca, deci nu e ceva interesant, 97 00:05:25,000 --> 00:05:29,000 detalii picante despre server, și de fapt, ghidul de acolo, de asemenea. 98 00:05:29,000 --> 00:05:33,000 Nu e $ _COOKIE, care este în cazul în care aceste lucruri numite cookie-uri sunt stocate. 99 00:05:33,000 --> 00:05:36,000 Noi nu va petrece timpul pe cookie-uri se astăzi, 100 00:05:36,000 --> 00:05:40,000 dar stiu acum ca un cookie este doar o mică bucată de informații 101 00:05:40,000 --> 00:05:43,000 faptul că un server web poate planta pe un browser Web 102 00:05:43,000 --> 00:05:46,000 și, la rândul său RAM sau drive-ul computerului său hard 103 00:05:46,000 --> 00:05:49,000 pentru a stoca informații despre un utilizator, de exemplu, numele lor de utilizator 104 00:05:49,000 --> 00:05:52,000 astfel încât acestea nu trebuie să-l introduceți de fiecare dată când se autentifică sau unele 105 00:05:52,000 --> 00:05:55,000 numărul unic de identificare sau pentru acel utilizator 106 00:05:55,000 --> 00:05:58,000 astfel încât să nu trebuie să le hartuiti cu aceleași tipuri de întrebări despre 107 00:05:58,000 --> 00:06:00,000 Preferințele în viitor, dar cele mai multe de interes 108 00:06:00,000 --> 00:06:02,000 acum este de $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Acest superglobale, care, la fel ca ceilalți, este predat la tine în mod automat de către PHP 110 00:06:07,000 --> 00:06:10,000 atunci când scrii PHP pe bază de site-uri web 111 00:06:10,000 --> 00:06:13,000 poate stoca tot ce vrei, siruri de caractere, numere întregi, 112 00:06:13,000 --> 00:06:16,000 puncte plutitoare, valori, tablouri, obiecte, 113 00:06:16,000 --> 00:06:20,000 într-adevăr tot ce vrei, și vă permite să stocați-l într-un mod 114 00:06:20,000 --> 00:06:23,000 că, chiar dacă utilizatorul pe care vizitează acum și apoi 115 00:06:23,000 --> 00:06:26,000 vine înapoi un minut de acum sau de 5 minute de acum, deoarece 116 00:06:26,000 --> 00:06:28,000 au nevoie de timp înainte de clic pe link-ul de unele alt 117 00:06:28,000 --> 00:06:32,000 PHP va asigura că orice ai pus în superglobale sesiune 118 00:06:32,000 --> 00:06:37,000 câteva minute de minute sau 5 în urmă vor fi în continuare acolo când se întoarce de utilizator. 119 00:06:37,000 --> 00:06:40,000 Și sub capota acestui superglobale este pus în aplicare prin intermediul 120 00:06:40,000 --> 00:06:44,000 aceste lucruri numite cookie-uri, dar pentru acum, e doar o abstracțiune 121 00:06:44,000 --> 00:06:47,000 prin care e un fel de echivalent al programatic un coș de cumpărături. 122 00:06:47,000 --> 00:06:50,000 Orice ai, programator, pus în 123 00:06:50,000 --> 00:06:53,000 matrice superglobale asociativ va fi acolo un numar de minute mai târziu, 124 00:06:53,000 --> 00:06:59,000 până când îl ștergeți sau până când utilizatorul iese browser-ul lui sau a ei cu totul. 125 00:06:59,000 --> 00:07:02,000 >> Să aruncăm o privire la un exemplu de modul în care acest lucru este, de fapt utilizat. 126 00:07:02,000 --> 00:07:07,000 În counter.php printre bucăți de astăzi de cod 127 00:07:07,000 --> 00:07:09,000 avem următoarea linie. 128 00:07:09,000 --> 00:07:13,000 La începutul acestui fișier avem o grămadă de comentarii albastre, care sunt neinteresante pentru acum. 129 00:07:13,000 --> 00:07:15,000 Dar în linia 13, avem o linie nouă, 130 00:07:15,000 --> 00:07:18,000 session_start, și că de fapt face exact ceea ce spune. 131 00:07:18,000 --> 00:07:20,000 Acesta începe sesiuni. 132 00:07:20,000 --> 00:07:25,000 Acesta vă permite să utilizați atât de mare superglobale $ _SESSION, și e la fel de simplu ca asta. 133 00:07:25,000 --> 00:07:30,000 Acum, dacă am proceda să se uite la linia 16, să încercăm să ne dăm seama ce această pagină web este de gând să facă. 134 00:07:30,000 --> 00:07:35,000 If (isset ($ _SESSION ["contra"]), apoi mergeți mai departe 135 00:07:35,000 --> 00:07:39,000 și se păstrează în variabila de contor, contor cu litere mici, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Contra"]. 137 00:07:42,000 --> 00:07:45,000 Acest lucru pare să fie de declarare a unei variabile locale numit contor 138 00:07:45,000 --> 00:07:48,000 în interiorul căreia se pune o copie a ceea ce este în interiorul superglobale 139 00:07:48,000 --> 00:07:52,000 numit sesiune la locația "contra". 140 00:07:52,000 --> 00:07:56,000 Altfel, se pare, acest contor mic locală variabilă, este initializat cu 0. 141 00:07:56,000 --> 00:08:01,000 >> Dar apoi câteva rânduri mai târziu, în 26 observați că exemplarul sesiunea de contra, 142 00:08:01,000 --> 00:08:06,000 cheia sa, are o valoare alocate nou, care este valoarea sa actuală, plus 1. 143 00:08:06,000 --> 00:08:09,000 Pe scurt, acest fișier pare să fi actualizarea 144 00:08:09,000 --> 00:08:13,000 un contor care este stocat în interiorul superglobale sesiunii 145 00:08:13,000 --> 00:08:16,000 prin incrementarea prin 1, dar păstrează prima o copie a valorii anterioare 146 00:08:16,000 --> 00:08:20,000 prin stocarea într-o variabilă locală numită $ contra, 147 00:08:20,000 --> 00:08:22,000 și apoi în jos aici să vedem ce rămâne. 148 00:08:22,000 --> 00:08:24,000 Se pare că e destul de mult doar HTML. 149 00:08:24,000 --> 00:08:29,000 La partea de jos a acestei pagini vom vedea în linia 37 care le-am vizitat acest site 150 00:08:29,000 --> 00:08:33,000 Numărul contor de ori, deci nu e un cuplu de caracteristici interesante aici. 151 00:08:33,000 --> 00:08:36,000 , Acest lucru este în mod clar o variabilă, dar nu suficient pentru a pune pur și simplu 152 00:08:36,000 --> 00:08:39,000 $ Contor în corpul HTML, deoarece, desigur, 153 00:08:39,000 --> 00:08:43,000 dacă e doar acolo, printre PHP HTML este de gând să presupunem că e doar HTML. 154 00:08:43,000 --> 00:08:48,000 Tu pur și simplu doriți $ contor pentru a fi imprimate pe ecran. 155 00:08:48,000 --> 00:08:51,000 >> Dar, în loc de cădere în modul PHP 156 00:08:51,000 --> 00:08:55,000 cu această bucată de sintaxă, putem insera dinamic o valoare aici 157 00:08:55,000 --> 00:08:58,000 foarte similare în spirit cu ceea ce am făcut ultima dată cu 158 00:08:58,000 --> 00:09:00,000 inserarea valori în siruri de caractere. 159 00:09:00,000 --> 00:09:04,000 De fapt, aceasta este doar o notație prescurtare pentru a spune ceva de genul asta literal, 160 00:09:04,000 --> 00:09:12,000 de imprimare ($ contor) sau chiar ceva de genul printf (% s, contra), 161 00:09:12,000 --> 00:09:14,000 sau chiar, cum poate ați văzut on-line sau în manuale, 162 00:09:14,000 --> 00:09:17,000 există o funcție în PHP numit ecou 163 00:09:17,000 --> 00:09:20,000 care face același lucru, și toate acestea sunt doar moduri mai tărăgănat 164 00:09:20,000 --> 00:09:25,000 de a spune <=.? 165 00:09:25,000 --> 00:09:28,000 În acest caz, cel pe care nu trebuie să afișezi 166 00:09:28,000 --> 00:09:30,000 PHP cuvânt după semnul de întrebare. 167 00:09:30,000 --> 00:09:34,000 Acest lucru este prescurtarea pentru notație, din nou, ceea ce tocmai am văzut o clipă în urmă 168 00:09:34,000 --> 00:09:37,000 care este un ecou o anumită valoare. 169 00:09:37,000 --> 00:09:39,000 >> Să vedem ce rezultatul final al acestui fapt este. 170 00:09:39,000 --> 00:09:43,000 Lasă-mă să merg într-un fișier de peste counter.php nostru, 171 00:09:43,000 --> 00:09:47,000 și vom vedea că David a făcut doar o greșeală de joc cu codul de acolo. 172 00:09:47,000 --> 00:09:50,000 Să mergem fix indiferent de el greșit, 173 00:09:50,000 --> 00:09:54,000 și eroarea pare a fi acolo, plecat, pe linia 37. 174 00:09:54,000 --> 00:09:59,000 Potrivit partea de sus a acestei pagini, am vizitat acest site de 0 ori. 175 00:09:59,000 --> 00:10:02,000 Ei bine, hai să mergem mai departe acum, și în partea de sus a browser-ului faceți clic pe 176 00:10:02,000 --> 00:10:05,000 reîncărcați pictograma, și am faceți clic pe reîncărca, 177 00:10:05,000 --> 00:10:12,000 si acum am vizitat site-ul 1 dată, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 Și într-adevăr, dacă ne uităm la sursă a acestei pagini codul sursă reală se schimbă, 179 00:10:16,000 --> 00:10:19,000 și observați absența completă a oricărei PHP, și asta pentru că 180 00:10:19,000 --> 00:10:23,000 Cod PHP este evaluată sau interpretat partea de server, 181 00:10:23,000 --> 00:10:27,000 și astfel ceea ce înseamnă că producția de script-ul PHP este ceea ce în cele din urmă trimis la browser-ul, 182 00:10:27,000 --> 00:10:31,000 care în acest caz este un cod HTML crud și un text crud. 183 00:10:31,000 --> 00:10:33,000 Ce se întâmplă aici? 184 00:10:33,000 --> 00:10:37,000 >> Ei bine, cu linii de cod relativ puține I sînt capabil de a stoca 185 00:10:37,000 --> 00:10:40,000 persistent pe parcursul cateva secunde, sau în cazul în care am așteptat destul de mult, 186 00:10:40,000 --> 00:10:44,000 minute, ore, chiar și o anumită valoare într-un mod care face HTTP 187 00:10:44,000 --> 00:10:47,000 par dinamică ca și cum ne-am păstrat 188 00:10:47,000 --> 00:10:51,000 această conexiune la server, si e doar amintirea a ceea ce am spus data trecută, 189 00:10:51,000 --> 00:10:55,000 dar, în realitate, există o grămadă de complexitate se întâmplă sub capotă 190 00:10:55,000 --> 00:10:59,000 implicând cookie-uri care se permit PHP să-mi dea această iluzie 191 00:10:59,000 --> 00:11:02,000 din acest cos de cumparaturi-ca facilitate. 192 00:11:02,000 --> 00:11:05,000 Pentru moment, un exemplu banal în cazul în care vom stoca doar un număr întreg, 193 00:11:05,000 --> 00:11:08,000 dar această caracteristică va reveni pentru a fi de mare valoare 194 00:11:08,000 --> 00:11:10,000 când începem să vorbim despre mai multe proiecte complexe, 195 00:11:10,000 --> 00:11:12,000 printre ei problema stabilit 7. 196 00:11:12,000 --> 00:11:16,000 Aceasta este problema ta foarte ultima stabilit în CS50. 197 00:11:16,000 --> 00:11:19,000 Știu, e atât de trist, dar ceea ce veți găsi este că am de gând să încheie 198 00:11:19,000 --> 00:11:22,000 această parte a semestrului de fapt, trecerea de 199 00:11:22,000 --> 00:11:25,000 din cadrul C cu siguranță la contextul PHP 200 00:11:25,000 --> 00:11:27,000 dar în timp ce utilizați unele dintre fundamentele aceleași 201 00:11:27,000 --> 00:11:29,000 am vorbit despre de ceva timp. 202 00:11:29,000 --> 00:11:33,000 >> Obiectivul cu PSET 7 este de a pune în aplicare CS50 Finanțe, 203 00:11:33,000 --> 00:11:37,000 care este propria voastră versiune a Yahoo Finance sau de Finante Google 204 00:11:37,000 --> 00:11:40,000 sau chiar Etrade.com, prin care au capacitatea de a 205 00:11:40,000 --> 00:11:43,000 privi în sus prețurile acțiunilor pentru simboluri date, dar chiar mai mult decât atât 206 00:11:43,000 --> 00:11:48,000 aveți posibilitatea de a "cumpăra" și "vinde" stocurile de 207 00:11:48,000 --> 00:11:51,000 care sunt tranzacționate pe bursele de valori diferite, deoarece ca aceasta pagina de start 208 00:11:51,000 --> 00:11:55,000 aici sugerează, care este într-adevăr măsura în care am început 209 00:11:55,000 --> 00:11:59,000 setul problema pentru tine, ai un formular de autentificare care este asking pentru un nume de utilizator și o parolă. 210 00:11:59,000 --> 00:12:03,000 Ea are un buton de submit, dar ulterior, după cum vom vedea în cele din urmă, 211 00:12:03,000 --> 00:12:06,000 nu este nimic adevărat întâmplă sub capotă încă, deoarece 212 00:12:06,000 --> 00:12:09,000 rămâne pentru tine de a pune în aplicare capacitatea de a inregistra noi utilizatori, 213 00:12:09,000 --> 00:12:12,000 capacitatea de a cumpara actiuni, de a vinde stocurile, 214 00:12:12,000 --> 00:12:14,000 pentru a uita de fapt, creșterea prețurilor curente în stoc. 215 00:12:14,000 --> 00:12:17,000 >> Și într-adevăr, acest lucru va fi la fel de lumea reală cât posibil, deoarece am făcut 216 00:12:17,000 --> 00:12:20,000 includ un pic de cod care vă va permite cu o singură funcție 217 00:12:20,000 --> 00:12:25,000 pentru a interoga Yahoo Finance, ceea ce face minunat datele disponibile gratuit 218 00:12:25,000 --> 00:12:31,000 pentru căutarea prețurile acțiunilor bazate pe simbolul stoc sau simbolul bursier, 219 00:12:31,000 --> 00:12:34,000 și te-ai întors prețul curent al zilei. 220 00:12:34,000 --> 00:12:37,000 Datele pe care le ai de fapt, vedem în acest PSET special, va fi 221 00:12:37,000 --> 00:12:40,000 despre cum lumea reală ca se poate ajunge, astfel încât sunteți de fapt interfațare 222 00:12:40,000 --> 00:12:43,000 cu stocuri reale, locurile din lumea reală, 223 00:12:43,000 --> 00:12:47,000 și vom vedea cât de mult bani puteți face, probabil, 224 00:12:47,000 --> 00:12:51,000 peste următoarele câteva zile de joc cu un set problema ta proprie. 225 00:12:51,000 --> 00:12:55,000 >> Dar haideți să setați mai întâi scena pentru modul de a proiecta ceva care este cu siguranță mult mai complicat 226 00:12:55,000 --> 00:12:59,000 decât counter.php, asta e mai complicat decât oricare din exemplele de Frosh AI până în prezent, 227 00:12:59,000 --> 00:13:02,000 și să încerce să introducă o paradigme câteva aici, care ne permit 228 00:13:02,000 --> 00:13:06,000 atât pentru PSET 7 și poate pentru proiectul final dacă faci ceva pe web 229 00:13:06,000 --> 00:13:11,000 pentru a menține codul de bine organizat, pentru a te mentine sanatos, 230 00:13:11,000 --> 00:13:15,000 și să facă un pas spre colaborare, fie în proiectul final CS50 lui 231 00:13:15,000 --> 00:13:18,000 sau dincolo de cazul în care veți continua să programați ceva în viitor. 232 00:13:18,000 --> 00:13:21,000 E această paradigmă de proiectare generală 233 00:13:21,000 --> 00:13:24,000 în informatică și în dezvoltarea de software, în general, mai 234 00:13:24,000 --> 00:13:27,000 cunoscut sub numele de MVC, modelul vedere controler, 235 00:13:27,000 --> 00:13:30,000 și acest lucru este un acronim care descrie o prostie idee foarte frumos, 236 00:13:30,000 --> 00:13:34,000 care este separarea diferitelor aspecte ale unui program, 237 00:13:34,000 --> 00:13:39,000 păstrarea în special separat logica sau de logica de afaceri a unui site web 238 00:13:39,000 --> 00:13:42,000 astfel că orice implica lucruri cum ar fi 239 00:13:42,000 --> 00:13:45,000 apelând funcții și interogarea bazelor de date și cum ar fi 240 00:13:45,000 --> 00:13:48,000 se întâmplă nu printre HTML 241 00:13:48,000 --> 00:13:51,000 ci mai degrabă în fișiere separate, și într-adevăr, există un singur fișier cu acest 242 00:13:51,000 --> 00:13:54,000 de obicei, pe care le-au numit controler 243 00:13:54,000 --> 00:13:56,000 că e într-adevăr creierul din spatele operațiunii, și vom vedea un exemplu 244 00:13:56,000 --> 00:13:58,000 de acest lucru în doar un moment. 245 00:13:58,000 --> 00:14:01,000 >> E un model de programare care este codul 246 00:14:01,000 --> 00:14:05,000 că nu vorbesc cu bazele de date, care vorbeste cu Yahoo Finance și cum ar fi, 247 00:14:05,000 --> 00:14:08,000 și apoi există V în MVC, opiniile, 248 00:14:08,000 --> 00:14:11,000 toate lucrurile care are legătură cu estetica, fișierele care conțin de fapt, 249 00:14:11,000 --> 00:14:14,000 HTML, CSS si poate ca. 250 00:14:14,000 --> 00:14:17,000 Ideea aici, așa cum sugerează această imagine, este faptul că operatorul 251 00:14:17,000 --> 00:14:21,000 este fișierul, după cum vom vedea în curând și după cum veți vedea în special în PSET 7, 252 00:14:21,000 --> 00:14:24,000 că lumea vorbește prin intermediul browser-elor web ale acestora. 253 00:14:24,000 --> 00:14:27,000 Acesta este fișierul care se vizitat pe internet publice, 254 00:14:27,000 --> 00:14:30,000 dar operatorul vorbește cu un potential model, 255 00:14:30,000 --> 00:14:34,000 care este unul sau mai multe alte fișiere care conțin cod referitoare la date, 256 00:14:34,000 --> 00:14:37,000 Codul legate de bazele de date și cum ar fi, și apoi vorbește cu 257 00:14:37,000 --> 00:14:40,000 controller-unul sau mai multe alte fișiere cunoscute sub numele de vizualizări, 258 00:14:40,000 --> 00:14:43,000 care sunt estetica unei pagini web, template-uri de soiuri, 259 00:14:43,000 --> 00:14:47,000 care ar putea să ia unele date ca intrare, dar la sfârșitul zilei 260 00:14:47,000 --> 00:14:50,000 logica doar în interiorul unei viziuni ar trebui să fie de redare a acestor date, 261 00:14:50,000 --> 00:14:53,000 iterarea peste o buclă și de fapt scuipa unele 262 00:14:53,000 --> 00:14:56,000 HTML pe bază de extrădare a acestuia sau chiar ceva de genul un PDF. 263 00:14:56,000 --> 00:14:59,000 >> Ce e frumos despre MVC este că puteți avea puncte de vedere diferite 264 00:14:59,000 --> 00:15:02,000 bazează pe tipul de dispozitiv, în funcție de tipul de format de fișier pe care tu de fapt 265 00:15:02,000 --> 00:15:04,000 doresc să arate la utilizator. 266 00:15:04,000 --> 00:15:10,000 Să aruncăm o privire la câteva exemple ce în ce mai complexe și mai bine concepute 267 00:15:10,000 --> 00:15:13,000 pornind de prima versiune cu 0 aici. 268 00:15:13,000 --> 00:15:16,000 Lasă-mă să mergeți mai departe și să deschidă în directorul nostru de astăzi MVC 269 00:15:16,000 --> 00:15:21,000 un fișier numit index.php in directorul 0. 270 00:15:21,000 --> 00:15:26,000 Observa acest lucru este un site super-simplu și foarte underwhelming 271 00:15:26,000 --> 00:15:29,000 asta e un fel de versiune 0 din o pagina pentru CS50, 272 00:15:29,000 --> 00:15:32,000 și observați modul în care avem o legătură într-Prelegeri, avem un link către Programa, 273 00:15:32,000 --> 00:15:35,000 și dacă am urmați link-ul de la anunțul Prelegeri că adresa URL 274 00:15:35,000 --> 00:15:39,000 până top se va schimba la lectures.php. 275 00:15:39,000 --> 00:15:44,000 Dacă aș apoi urmați link-ul de la Săptămâna 1 Notă că modificările la week1.php URL. 276 00:15:44,000 --> 00:15:46,000 Nu pare a fi o structură destul de simplă, ierarhică aici. 277 00:15:46,000 --> 00:15:49,000 >> Să aruncăm o privire rapidă sub capota de la modul în care acest lucru este prevăzut afară, 278 00:15:49,000 --> 00:15:53,000 și într-adevăr, dacă mă uit la index.php e destul de simplu. 279 00:15:53,000 --> 00:15:57,000 De fapt, chiar dacă am numit acest fișier un PHP nu e nici un cod de programare actuale. 280 00:15:57,000 --> 00:16:01,000 E un comentariu pe care am scris aici, în PHP așa utilizatorul nu ajunge să-l vedem. 281 00:16:01,000 --> 00:16:05,000 Desigur, ca și înainte, nimic din ce e în între tag-uri PHP 282 00:16:05,000 --> 00:16:08,000 se interpretat, chiar dacă e un comentariu, și să interpreteze un comentariu 283 00:16:08,000 --> 00:16:11,000 înseamnă doar să-l arunce de la sfârșitul zilei și de fapt, nu 284 00:16:11,000 --> 00:16:15,000 trimite-l la browser-ul, așa că totul aici este doar estetica. 285 00:16:15,000 --> 00:16:20,000 Dacă aș deschide în mod similar lectures.php și aceasta este doar un fișier greu codificate. 286 00:16:20,000 --> 00:16:23,000 Se întâmplă să fie numit ceva. Php, 287 00:16:23,000 --> 00:16:27,000 dar de fapt este doar. html, și week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 În mod similar sunt doar de marcare, astfel încât există o grămadă de neajunsuri ale acestui design. 289 00:16:31,000 --> 00:16:33,000 Unul, este o mare cantitate de copy / paste. 290 00:16:33,000 --> 00:16:37,000 Chiar dacă singurul lucru care se schimba intre aceste fișiere este lista neordonată, 291 00:16:37,000 --> 00:16:41,000 tag-uri li, am totuși doc tip, HTML, cap, 292 00:16:41,000 --> 00:16:44,000 titlu, corpul aproape, aproape de HTML și mai mult 293 00:16:44,000 --> 00:16:47,000 în fiecare singur fișier, ceea ce înseamnă că, dacă am dori vreodată să restructureze 294 00:16:47,000 --> 00:16:50,000 această pagină de web sau restylize-l trebuie să mă duc și să modificați 295 00:16:50,000 --> 00:16:54,000 toate aceste fișiere manual sau cu unele masive găsi și înlocui. 296 00:16:54,000 --> 00:17:01,000 >> Să luăm un pas spre un design mai inteligent, mai gândește în versiunea 1 aici 297 00:17:01,000 --> 00:17:04,000 prin care ca pe mine citit că am inclus, astfel încât să puteți juca împreună cu 298 00:17:04,000 --> 00:17:07,000 Acestea mai pe îndelete în timp acasă pe care le avem aici 299 00:17:07,000 --> 00:17:10,000 un rezumat al dosarelor în versiunea 1 a acestui site, 300 00:17:10,000 --> 00:17:13,000 și se pare că l-am luat asupra mea să țină afară 301 00:17:13,000 --> 00:17:17,000 un cod comun, header.php si footer.php. 302 00:17:17,000 --> 00:17:20,000 Ei bine, haideți să aruncăm o privire la ceea ce este în interiorul Primul dintre acestea. 303 00:17:20,000 --> 00:17:23,000 Header.php pare familiar, 304 00:17:23,000 --> 00:17:26,000 dar observați în cazul în care nu se obține taie? 305 00:17:26,000 --> 00:17:30,000 Imediat după linia 19, astfel că e tot ceea ce era comun 306 00:17:30,000 --> 00:17:33,000 din index.php fișiere, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 și week2.php din exemplul anterior. 308 00:17:36,000 --> 00:17:40,000 Ceea ce am făcut a fost copie și tot tăiat, care a fost comună la toate aceste fișiere, 309 00:17:40,000 --> 00:17:44,000 pune-l într-un fișier antet separat, și în mod similar, în footer.php 310 00:17:44,000 --> 00:17:48,000 am aplica același principiu prin care doar linii interesante 311 00:17:48,000 --> 00:17:52,000 în footer.php sunt acestea organism doi, aproape și aproape HTML. 312 00:17:52,000 --> 00:17:55,000 >> Dar ce înseamnă acest lucru acum este faptul că, în noua versiune 313 00:17:55,000 --> 00:17:59,000 de punere în index.php cât de mult se poate obține mai simplu. 314 00:17:59,000 --> 00:18:02,000 Acordate, un pic mai mult Cautati criptic, un pic mai puțin intuitivă 315 00:18:02,000 --> 00:18:06,000 să urmeze sus în jos, ci Dumnezeul meu, tot de concediere, care este acum plecat. 316 00:18:06,000 --> 00:18:10,000 Avem nevoie de ajutorul unei funcții PHP literalmente numit necesită până sus, 317 00:18:10,000 --> 00:18:15,000 care este foarte amintește, reamintim, a lui C # include mecanism. 318 00:18:15,000 --> 00:18:17,000 Avem nevoie de header.php în partea de sus. 319 00:18:17,000 --> 00:18:20,000 Avem nevoie de footer.php de la partea de jos, iar singurul lucru care este diferit 320 00:18:20,000 --> 00:18:25,000 sau speciale despre acest fisier este conținutul care este menit să fie unică pentru ea. 321 00:18:25,000 --> 00:18:29,000 Dacă mă duc apoi în, să zicem, lectures.php, același principiu se aplică. 322 00:18:29,000 --> 00:18:32,000 Din nou, unele comentarii de până sus, dar apoi am nevoie de antet, subsol necesită, 323 00:18:32,000 --> 00:18:35,000 și între acesta e doar conținutul care sa schimbat de fapt. 324 00:18:35,000 --> 00:18:38,000 Și dacă ne-am uitat în Săptămâna 1 Săptămâna 2 și vom vedea 325 00:18:38,000 --> 00:18:42,000 că același principiu a fost aplicat acolo. 326 00:18:42,000 --> 00:18:44,000 Ei bine, nu suntem destul de făcut acolo. 327 00:18:44,000 --> 00:18:48,000 >> Să aruncăm o privire la versiunea 2, care are o structură similară, 328 00:18:48,000 --> 00:18:50,000 dar observa acum am introdus altceva. 329 00:18:50,000 --> 00:18:53,000 În linia 10 am introdus helpers.php, 330 00:18:53,000 --> 00:18:55,000 care conține aparent funcții helper. 331 00:18:55,000 --> 00:18:58,000 O funcție helper este, în general, o funcție relativ scurt 332 00:18:58,000 --> 00:19:01,000 pe care le scriu pentru a vă ajuta în diferite locuri, 333 00:19:01,000 --> 00:19:04,000 și să vedem ce e în interiorul helpers.php. 334 00:19:04,000 --> 00:19:07,000 În acest caz, se pare ca acesta are 2 funcții. 335 00:19:07,000 --> 00:19:10,000 Retrag de la altă zi, cu exemplul nostru cub 336 00:19:10,000 --> 00:19:13,000 puteți defini propriile funcții în PHP, și ceea ce am făcut este acum Am 337 00:19:13,000 --> 00:19:17,000 Funcțiile definite numite face subsol și face antet, 338 00:19:17,000 --> 00:19:21,000 prima care ia un parametru numit de date, 339 00:19:21,000 --> 00:19:25,000 a cărui valoare implicită este o matrice goală, așa cum a sugerat acolo, 340 00:19:25,000 --> 00:19:29,000 și putem scrie de fapt, acest lucru chiar și mai succint, în cea mai recentă versiune a PHP 341 00:19:29,000 --> 00:19:32,000 prin a spune deschis suportul pătrat, pătrat închis suport. 342 00:19:32,000 --> 00:19:35,000 Asta înseamnă un array gol de mărimea 0, dar cu toate acestea, o matrice. 343 00:19:35,000 --> 00:19:38,000 >> Această funcție extract este un pic specială în care 344 00:19:38,000 --> 00:19:41,000 ceea ce face este nevoie de ca argument un tablou asociativ 345 00:19:41,000 --> 00:19:45,000 care are 0 sau mai multe perechi de chei de valoare, și, dacă aveți o cheie de foo 346 00:19:45,000 --> 00:19:48,000 și o valoare de bar funcția de extract 347 00:19:48,000 --> 00:19:51,000 creează o situație în care acum, din linia 11, 348 00:19:51,000 --> 00:19:57,000 aveți o variabilă locală numită $ foo a căror valoare este de bari. 349 00:19:57,000 --> 00:19:59,000 Și dacă ai avut mai multe chei și valori în matrice de date, 350 00:19:59,000 --> 00:20:03,000 în mod similar le-ar fi extrase în domeniul de aplicare locală 351 00:20:03,000 --> 00:20:06,000 sau numele spațiu, astfel încât footer.php și 352 00:20:06,000 --> 00:20:09,000 aceeași idee aici, astfel încât header.php 353 00:20:09,000 --> 00:20:12,000 să aibă acces la aceste variabile. 354 00:20:12,000 --> 00:20:15,000 De fapt, lasă-mă să deschid din nou header.php 355 00:20:15,000 --> 00:20:18,000 și se atrage atenția acum ceea ce se pare că în această versiune. 356 00:20:18,000 --> 00:20:22,000 >> Mai degrabă decât de codare greu CS50 ca titlu pentru fiecare pagina 357 00:20:22,000 --> 00:20:24,000 observați dinamismul pe care e posibil acum. 358 00:20:24,000 --> 00:20:29,000 În linia de 5 Mă ecou o variabilă titlu, 359 00:20:29,000 --> 00:20:34,000 dar mai întâi am treacăt că variabila titlu la o funcție numită htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Un nume stupid pentru o funcție, atâta timp cât acesta este, dar chiar face ceea ce spune. 361 00:20:38,000 --> 00:20:41,000 Se asigură că orice caractere speciale 362 00:20:41,000 --> 00:20:46,000 în șir, care a fost adoptată în mod corespunzător sunt scăpat HTML. 363 00:20:46,000 --> 00:20:49,000 Aceasta este de fapt o modalitate de a evita ceea ce se numește o cruce atac site scripting 364 00:20:49,000 --> 00:20:52,000 prin care cineva poate rea-credință sau accidental 365 00:20:52,000 --> 00:20:55,000 injectați HTML propriul lor site-ul tău 366 00:20:55,000 --> 00:20:59,000 prin lipirea într-o formă, de exemplu, 367 00:20:59,000 --> 00:21:02,000 ceva ce nu ai fost destul de așteptam, în special cod JavaScript, 368 00:21:02,000 --> 00:21:05,000 cum vom vorbi despre într-o săptămână sau o perioadă de două lui. 369 00:21:05,000 --> 00:21:08,000 >> Acest header.php acum, este o imagine 370 00:21:08,000 --> 00:21:12,000 în sensul că vă permite să vizualizați punct de vedere estetic conținutul anumit set de date. 371 00:21:12,000 --> 00:21:14,000 Dar mai exact, e un șablon. 372 00:21:14,000 --> 00:21:19,000 Aceasta este un fel de plan acum de ceea ce ne dorim antetul fiecărei pagini pentru a arata ca, 373 00:21:19,000 --> 00:21:23,000 dar există unele dinamism în care dorim titlu să fie dinamic inserate 374 00:21:23,000 --> 00:21:26,000 bazează pe variabila titlu 375 00:21:26,000 --> 00:21:30,000 care a fost extras atunci când am sunat, din nou, 376 00:21:30,000 --> 00:21:33,000 tencuiala antetul funcției. 377 00:21:33,000 --> 00:21:36,000 Acum, dacă ne-am uitat la subsol face, nu e de fapt, nu folosi mai mult de faptul că, chiar acum 378 00:21:36,000 --> 00:21:40,000 pentru că, în footer.php nu exista nici un fel de dinamism. 379 00:21:40,000 --> 00:21:43,000 S-ar putea să fie, dar la moment este o listă greu codificate de 2 tag-uri, 380 00:21:43,000 --> 00:21:46,000 dar aceeași idee se aplică, astfel că, de fapt sugereaza de ce 381 00:21:46,000 --> 00:21:49,000 ne-am pierde timp cu un antet de randare și o funcție de randare subsol? 382 00:21:49,000 --> 00:21:52,000 Lasă-mă să merg în locul acum în versiunea 3, 383 00:21:52,000 --> 00:21:56,000 și în versiunea 3 din ajutoare am decis să-l simplifice și mai mult. 384 00:21:56,000 --> 00:21:58,000 >> Lasă-mă să aveți o singură funcție de randare. 385 00:21:58,000 --> 00:22:02,000 Lasă-mă să-l ia un alt argument, de data aceasta numit șablon, 386 00:22:02,000 --> 00:22:05,000 care este menit să fie numele unui șablon, 387 00:22:05,000 --> 00:22:11,000 și apoi voi înlănțui îndrăzneală php la valoarea acelei variabile lui., 388 00:22:11,000 --> 00:22:17,000 și apoi, dacă acesta există, sau bar.php foo.php header.php si footer.php, 389 00:22:17,000 --> 00:22:20,000 apoi m-am de gând să meargă mai departe și extrage date variabile 390 00:22:20,000 --> 00:22:23,000 și necesită apoi această cale. 391 00:22:23,000 --> 00:22:29,000 Cu alte cuvinte, pentru a utiliza aceasta acum, dacă aș deschide index.php 392 00:22:29,000 --> 00:22:32,000 observați că eu nu numesc header randare mai. 393 00:22:32,000 --> 00:22:36,000 Eu doar fac apel, dar am trecut într-o valoare citat de antet 394 00:22:36,000 --> 00:22:39,000 pentru a face clar pe care eu de fapt vreau șablonul să se încarce. 395 00:22:39,000 --> 00:22:41,000 >> Apoi peste observați aici ceea ce fac. 396 00:22:41,000 --> 00:22:44,000 Mă trec într-dinamic o cheie de titlu, 397 00:22:44,000 --> 00:22:47,000 o valoare de CS50, și asta, după cum am văzut mai înainte, 398 00:22:47,000 --> 00:22:51,000 ar putea fi mai succintă în cea mai recentă versiune a PHP 399 00:22:51,000 --> 00:22:54,000 unde pot înlocui funcția de matrice cu paranteze drepte, 400 00:22:54,000 --> 00:22:57,000 pe care o propunem este chiar mai ușor de citit și cu siguranță 401 00:22:57,000 --> 00:22:59,000 un pic mai ușor să tastați. 402 00:22:59,000 --> 00:23:02,000 Și, desigur, cu apelul de randare subsol în partea de jos, 403 00:23:02,000 --> 00:23:05,000 noi nu te deranja trece într-un al doilea argument, la toate, nu tablou asociativ, 404 00:23:05,000 --> 00:23:07,000 pentru că nu e nimic în interior dinamic din subsol. 405 00:23:07,000 --> 00:23:10,000 E doar cateva tag-uri HTML apropiate pentru. 406 00:23:10,000 --> 00:23:14,000 Bine, vom lua măsuri în vederea curățare într-adevăr lucrurile aici, 407 00:23:14,000 --> 00:23:17,000 dar lasă-mă să deschid 2 exemple finale. 408 00:23:17,000 --> 00:23:21,000 Acesta, numărul 4, observați că am luat o decizie conștientă acum 409 00:23:21,000 --> 00:23:26,000 pentru a îmbunătăți la exemplul anterior, prin utilizarea în cele din urmă unele ierarhie cu fișierele mele. 410 00:23:26,000 --> 00:23:29,000 >> Observați că în acest rezumat, în acest ma citesc, am introdus 411 00:23:29,000 --> 00:23:32,000 un director și include un director șabloane 412 00:23:32,000 --> 00:23:35,000 Conținutul ale căror vor fi lucrurile pe care vreau să le includă 413 00:23:35,000 --> 00:23:38,000 și șabloanele pe care doresc să facă, respectiv. 414 00:23:38,000 --> 00:23:42,000 Acest lucru este într-adevăr eu fiind anal și încearcă să mențină lucrurile ordonat, 415 00:23:42,000 --> 00:23:45,000 păstrați fișierele legate împreună, dar rezultatul final 416 00:23:45,000 --> 00:23:48,000 este că acum avem o configurare ușoară tidier, dar trebuie să ne amintim acum 417 00:23:48,000 --> 00:23:51,000 în, de exemplu, index.php 418 00:23:51,000 --> 00:23:55,000 atunci când avem nevoie de helpers.php fișierul 419 00:23:55,000 --> 00:24:01,000 trebuie să solicite acum prin intermediul include / helpers.php 420 00:24:01,000 --> 00:24:06,000 mai degrabă decât a spune doar că acum helpers.php este de fapt într-un director sub. 421 00:24:06,000 --> 00:24:09,000 Acum, ca o paranteză, veți vedea în aceste exemple și altele 422 00:24:09,000 --> 00:24:11,000 funcții, cum ar fi nevoie, nevoie de o singură dată. 423 00:24:11,000 --> 00:24:15,000 E de fapt o funcție de sine numită includ, și toate au un comportament ușor diferit. 424 00:24:15,000 --> 00:24:18,000 Aici am nevoie de o dată spun să super-clar că vreau doar pe cei 425 00:24:18,000 --> 00:24:20,000 ajutoare incluse în proiectul meu o dată. 426 00:24:20,000 --> 00:24:24,000 Dar dacă eu sunt atent și, dacă mă gândesc de fapt, prin logica mea în mod corespunzător 427 00:24:24,000 --> 00:24:27,000 aceasta ar trebui să suficient doar să spun prea solicita până sus 428 00:24:27,000 --> 00:24:31,000 atât timp cât eu însumi nu necesită accidental faptul că același fișier în altă parte. 429 00:24:31,000 --> 00:24:34,000 De fapt, aceasta este o modalitate ușor mai eficiente de a face lucrurile, atunci cu ajutorul 430 00:24:34,000 --> 00:24:38,000 impun o dată, așa că am să-l tăiați în jos pentru a cere doar. 431 00:24:38,000 --> 00:24:40,000 >> Să luăm un pas mai departe. 432 00:24:40,000 --> 00:24:46,000 Acest ultim exemplu acum, versiunea 5, are o ierarhie dosar mai curat. 433 00:24:46,000 --> 00:24:50,000 Observați ce am făcut aici, pe mine citit în această versiune finală 434 00:24:50,000 --> 00:24:54,000 acum am directorul meu HTML, pe care le-am avut în tot acest timp, 435 00:24:54,000 --> 00:24:58,000 dar în interior de-acolo acum este doar lectures.php index.php,, 436 00:24:58,000 --> 00:25:01,000 week1.php și week2.php. 437 00:25:01,000 --> 00:25:05,000 Include directorul de acum trăiește alături de directorul de HTML, 438 00:25:05,000 --> 00:25:08,000 astfel, la același nivel ca și un frate, ca să spunem așa. 439 00:25:08,000 --> 00:25:10,000 Deci, nu folderul template-uri. 440 00:25:10,000 --> 00:25:14,000 Cheia aici este livrata acasa, m-am prezentat structura de un pic mai mult, 441 00:25:14,000 --> 00:25:17,000 dar caracteristica cheie este faptul că acum numai fișierele 442 00:25:17,000 --> 00:25:21,000 care trebuie să fie accesibile de web, public adresabil 443 00:25:21,000 --> 00:25:25,000 printr-o adresă URL pe internet publice sunt în directorul meu HTML. 444 00:25:25,000 --> 00:25:28,000 >> Fișiere Între timp, alte, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, care sunt, fără îndoială, poate mai sensibile, 446 00:25:32,000 --> 00:25:35,000 Poate că ajutoarele de fapt, are cateva nume de utilizator și parole sau unele intelectuală 447 00:25:35,000 --> 00:25:39,000 proprietatea mea, funcționează chiar nu vreau ca lumea să vadă, chiar dacă accidental. 448 00:25:39,000 --> 00:25:45,000 E o bună practică să țină departe de director publice HTML 449 00:25:45,000 --> 00:25:48,000 orice fișiere care nu se trebuie să fie publice. 450 00:25:48,000 --> 00:25:51,000 Tot ce trebuie să faceți în acest caz, atunci când se uită la, de exemplu, 451 00:25:51,000 --> 00:25:55,000 directorul HTML index.php fișier, 452 00:25:55,000 --> 00:25:58,000 observați trebuie doar sa fie un pic mai atenți atunci când solicită 453 00:25:58,000 --> 00:26:00,000 sau necesită o dată acest fișier. 454 00:26:00,000 --> 00:26:03,000 Am nevoie să faci prima dată .. pentru a merge la directorul părinte, 455 00:26:03,000 --> 00:26:06,000 atunci nu / include / helpers.php 456 00:26:06,000 --> 00:26:12,000 pentru a se arunca cu capul în jos în a obține fișierul pe care îmi pasă. 457 00:26:12,000 --> 00:26:16,000 >> Orice întrebări, apoi pe MVC 458 00:26:16,000 --> 00:26:20,000 sau aceasta incarnare relativ simplă cu privire la aceasta? 459 00:26:20,000 --> 00:26:23,000 Și permiteți-mi să fac clar faptul că ne-am concentrat destul de un pic pe 460 00:26:23,000 --> 00:26:27,000 V aici, punctele de vedere și de factoring din aceste șabloane. 461 00:26:27,000 --> 00:26:30,000 Noi nu am distins cu adevărat M din C doar încă. 462 00:26:30,000 --> 00:26:33,000 De fapt, există într-adevăr nu este aici M, C și chiar noastră, 463 00:26:33,000 --> 00:26:36,000 controler, nu se face într-adevăr tot atât de mult, dar veți obține mult mai mult 464 00:26:36,000 --> 00:26:39,000 familiarizați cu aceste două scrisori de la 2 MVC, 465 00:26:39,000 --> 00:26:43,000 sau, mai degrabă, veți obține mult mai familiarizați cu C 466 00:26:43,000 --> 00:26:49,000 în MVC pentru set de probleme 7, deci nu e mai mult de faptul că la orizont. 467 00:26:49,000 --> 00:26:51,000 Întrebări? 468 00:26:51,000 --> 00:26:53,000 Nu e nimeni aici, de fapt. 469 00:26:53,000 --> 00:26:57,000 >> Bine, să trecem acum la subiectul al doilea și ultimul pentru ziua de azi. 470 00:26:57,000 --> 00:27:00,000 Aceasta este introducerea unei baze de date. 471 00:27:00,000 --> 00:27:03,000 Până în acest moment am avut câteva modalități de stocare a datelor. 472 00:27:03,000 --> 00:27:05,000 Ne-am folosit variabile. 473 00:27:05,000 --> 00:27:08,000 Înapoi în fișierul nostru de C, I / O discuție pe care am inceput sa folosesc fisiere text 474 00:27:08,000 --> 00:27:11,000 și folosirea fișierelor cum ar fi fprintf, iar apoi am început chiar 475 00:27:11,000 --> 00:27:14,000 vorbesc despre CSV depune un pic, valori separate prin virgulă, 476 00:27:14,000 --> 00:27:17,000 astfel încât toate acestea ne-a permis să avem datele stocate 477 00:27:17,000 --> 00:27:19,000 fie non-persistent sau persistent. 478 00:27:19,000 --> 00:27:23,000 Dar chiar CSVs nu sunt cu adevărat favorabile pentru căutarea 479 00:27:23,000 --> 00:27:25,000 și inserarea și ștergerea. 480 00:27:25,000 --> 00:27:28,000 E într-adevăr doar un fișier text prost separate prin virgule 481 00:27:28,000 --> 00:27:30,000 rând de rând cu rând cu rând, deci, dacă doriți să 482 00:27:30,000 --> 00:27:32,000 cauta acel fișier tot ce poți face este într-adevăr căutare liniară. 483 00:27:32,000 --> 00:27:34,000 Trebuie să înceapă de la partea de sus a fișierului, citește totul în, 484 00:27:34,000 --> 00:27:36,000 și căutați pentru o anumită valoare a dobânzii. 485 00:27:36,000 --> 00:27:39,000 Dacă doriți să inserați în el va trebui să facă același lucru, 486 00:27:39,000 --> 00:27:41,000 iterarea peste ea și introducerea într-un loc special, 487 00:27:41,000 --> 00:27:45,000 și, de fapt, trebuie să faci tot logica căutare tine. 488 00:27:45,000 --> 00:27:49,000 >> Nu se poate face de model de potrivire inteligent pe un fișier CSV dacă nu vă scrie codul. 489 00:27:49,000 --> 00:27:51,000 Nu se poate face filtrarea a unui fișier CSV 490 00:27:51,000 --> 00:27:53,000 excepția cazului în care vă scrie codul. 491 00:27:53,000 --> 00:27:56,000 Nu ar fi frumos dacă cineva pune în toate eforturile 492 00:27:56,000 --> 00:27:59,000 pentru a face de fapt, căutarea ușoară și o inserare ușoară 493 00:27:59,000 --> 00:28:01,000 și ștergerea și actualizarea și așa mai departe? 494 00:28:01,000 --> 00:28:04,000 Asta e exact ceea ce este o bază de date. 495 00:28:04,000 --> 00:28:07,000 SQL, Structured Query Language, este încă o altă limbă 496 00:28:07,000 --> 00:28:10,000 că vom introduce astăzi aici, dar acest lucru este destul de accesibil si, 497 00:28:10,000 --> 00:28:13,000 și ceea ce ne adevărat de gând să faceți este să smulgă doar din ea unele dintre cele mai proeminent 498 00:28:13,000 --> 00:28:16,000 Caracteristicile astfel încât pentru PSET 7, și dacă faci ceva pe web, 499 00:28:16,000 --> 00:28:19,000 proiectul final, aveți posibilitatea de a vă exprima 500 00:28:19,000 --> 00:28:22,000 în termeni de interogări de date. 501 00:28:22,000 --> 00:28:25,000 Aveți posibilitatea de a stoca un pic sau o mulțime de date 502 00:28:25,000 --> 00:28:28,000 într-un mod mult mai structurat, care va la sfârșitul zilei 503 00:28:28,000 --> 00:28:32,000 face viața mai ușoară, deoarece cu SQL vă puteți exprima 504 00:28:32,000 --> 00:28:35,000 mult mai precis, mult mai metodic, în scopul de a 505 00:28:35,000 --> 00:28:40,000 mă întorc unele subset de date dintr-un corpus mare de date. 506 00:28:40,000 --> 00:28:45,000 >> Vă puteți gândi la o bază de date, în acest caz, o bază de date SQL, într-adevăr cum ar fi Excel 507 00:28:45,000 --> 00:28:48,000 sau Numere unde este o foaie de calcul, 508 00:28:48,000 --> 00:28:50,000 sau poate mai multe foi de calcul, precum și o foaie de calcul, desigur, 509 00:28:50,000 --> 00:28:53,000 are rânduri și coloane, și asta pentru că 510 00:28:53,000 --> 00:28:56,000 Baze de date SQL sunt relațional, relațional, în sensul 511 00:28:56,000 --> 00:28:59,000 pe care le stoca date în ceea ce privește aceste tabele, 512 00:28:59,000 --> 00:29:01,000 rânduri și coloane. 513 00:29:01,000 --> 00:29:03,000 Ele sunt mai mari performantă decât ceva ca o foaie de calcul, 514 00:29:03,000 --> 00:29:05,000 și o foaie de calcul este menit să fie folosit de un om. 515 00:29:05,000 --> 00:29:08,000 O bază de date este menit să fie folosit de un programator 516 00:29:08,000 --> 00:29:12,000 scrierea de cod împotriva sa, astfel încât întruparea unei baze de date 517 00:29:12,000 --> 00:29:14,000 este de gând să fie linia de comandă. 518 00:29:14,000 --> 00:29:18,000 >> Una dintre cele mai populare baze de date relationale acolo este, din nou, MySQL, 519 00:29:18,000 --> 00:29:22,000 care este minunat gratuit, de fapt foarte mari, iar acest lucru este ceea ce 520 00:29:22,000 --> 00:29:24,000 Facebook folosit foarte devreme și într-o oarecare măsură, și astăzi 521 00:29:24,000 --> 00:29:27,000 pentru a stoca o mulțime de date sale, și vom vedea într-o clipă 522 00:29:27,000 --> 00:29:30,000 că folosind comenzi relativ simple 523 00:29:30,000 --> 00:29:33,000 putem selecta date, date insera date, actualizare, 524 00:29:33,000 --> 00:29:37,000 șterge datele și cum ar fi, dar din fericire, există o mult mai user-friendly interfata 525 00:29:37,000 --> 00:29:39,000 decât tastarea într-un prompt alb-negru aici. 526 00:29:39,000 --> 00:29:43,000 Vom folosi pentru PSET 7 și dincolo de un instrument gratuit numit phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Numele este o coincidență. 528 00:29:45,000 --> 00:29:47,000 Instrumentul se întâmplă să fie puse în aplicare în PHP, 529 00:29:47,000 --> 00:29:49,000 dar asta e irelevant fundamental. 530 00:29:49,000 --> 00:29:53,000 Ce e utile despre phpMyAdmin este că este un utilitar web-based. 531 00:29:53,000 --> 00:29:55,000 L-am pre-instalat în aparat pentru tine, 532 00:29:55,000 --> 00:29:58,000 și cu el puteți crea tabele într-o bază de date, 533 00:29:58,000 --> 00:30:01,000 aveți posibilitatea să inserați date, ștergeți datele, și, în general, a se vedea 534 00:30:01,000 --> 00:30:04,000 datele într-o destul de user-friendly mediu. 535 00:30:04,000 --> 00:30:07,000 Utilizatorii dvs. nu sunt de gând să folosească phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Aceasta este de fapt doar un instrument administrativ sau dezvoltator 537 00:30:09,000 --> 00:30:12,000 cu care să vadă și să scormoni în jurul valorii de datele dumneavoastră și dea seama cum să-l structureze, 538 00:30:12,000 --> 00:30:15,000 mai mult ca te-ai putea folosi Excel sau numere, 539 00:30:15,000 --> 00:30:19,000 dar va fi o modalitate foarte bună de vizualizare ce se întâmplă sub capotă 540 00:30:19,000 --> 00:30:22,000 astfel încât să vă puteți concentra pe problema interesanta rezolvare și nu atât de mult 541 00:30:22,000 --> 00:30:25,000 privind comenzile arcane. 542 00:30:25,000 --> 00:30:28,000 Să aruncăm o privire la un exemplu de date care ar putea fi stocate tabularly 543 00:30:28,000 --> 00:30:30,000 într-o bază de date relațională. 544 00:30:30,000 --> 00:30:32,000 Iată un astfel de exemplu. 545 00:30:32,000 --> 00:30:35,000 Acum, din păcate, phpMyAdmin a săvârșit o eroare pe partea de modul arunca prea multe cuvinte 546 00:30:35,000 --> 00:30:38,000 și grafică la tine, dar dacă vă perfecționa în doar pe 547 00:30:38,000 --> 00:30:42,000 Coloana ID, numele de coloană de utilizator, iar coloana hash, 548 00:30:42,000 --> 00:30:45,000 aceasta este de fapt o foaie de calcul, dar se întâmplă să fie un fragment 549 00:30:45,000 --> 00:30:49,000 a unui tabel în interiorul aparatului de 550 00:30:49,000 --> 00:30:53,000 utilizând un fișier care vă oferim în set problema 7. 551 00:30:53,000 --> 00:30:57,000 >> În special, vă oferim un fișier care reprezintă 552 00:30:57,000 --> 00:31:01,000 unui utilizator tabel, astfel încât o foaie de calcul care conține utilizatorii cu 3 coloane, 553 00:31:01,000 --> 00:31:05,000 dintre care unul este un ID unic începând de la 1 și se crește ulterior. 554 00:31:05,000 --> 00:31:08,000 Doua coloană este un nume de utilizator, și aceia dintre voi care au facut Hacker, 555 00:31:08,000 --> 00:31:12,000 Ediție Hacker pentru PSET 2, s-ar putea să recunoască unele dintre aceste nume de utilizator, cel puțin. 556 00:31:12,000 --> 00:31:16,000 Pe partea dreaptă sunt parolele, dar nu sunt parolele literale. 557 00:31:16,000 --> 00:31:19,000 Sunt hash al acestuia, astfel încât se pare 558 00:31:19,000 --> 00:31:22,000 că stocarea parolelor într-o bază de date este o idee foarte proastă. 559 00:31:22,000 --> 00:31:25,000 Ati citit, probabil, toate la un moment dat de unele site-ul 560 00:31:25,000 --> 00:31:28,000 sau baza de date o companie a lui să fie compromise, iar apoi va trebui să 561 00:31:28,000 --> 00:31:31,000 schimbați parola, aveți nevoie pentru a obține restituiri asupra lucrurilor 562 00:31:31,000 --> 00:31:34,000 pentru că un tip rău, de fapt a intrat în contul dvs. ca un rezultat. 563 00:31:34,000 --> 00:31:38,000 >> Stocarea parolele în text clar, necriptate într-o bază de date 564 00:31:38,000 --> 00:31:41,000 este complet stupid, și totuși e foarte amuzant 565 00:31:41,000 --> 00:31:44,000 apoi pentru a citi despre unele companii foarte bine cunoscute 566 00:31:44,000 --> 00:31:47,000 uneori în bazele de date ale căror presa sunt compromise, 567 00:31:47,000 --> 00:31:50,000 și că o parte nu este amuzant, dar faptul că bazele de date conțin necriptate 568 00:31:50,000 --> 00:31:53,000 parole este ridicol, deoarece literalmente, cu o linie de cod 569 00:31:53,000 --> 00:31:57,000 vă puteți proteja împotriva acestei amenințări special, și asta e ceea ce am făcut aici. 570 00:31:57,000 --> 00:32:00,000 Chiar și pentru mica noastră fals CS50 versiune Finanțe 571 00:32:00,000 --> 00:32:03,000 suntem criptare parole doar pentru o bună măsură, și faptul că 572 00:32:03,000 --> 00:32:07,000 toate aceste parole încep cu $ 1 $ este doar o convenție. 573 00:32:07,000 --> 00:32:10,000 Asta înseamnă că sunt criptate sau foarte trunchiată, 574 00:32:10,000 --> 00:32:13,000 care este ca o funcție de criptare într-o direcție 575 00:32:13,000 --> 00:32:17,000 , prin care nu se poate inversa efectele sale cu ceva numit MD5. 576 00:32:17,000 --> 00:32:21,000 >> Faptul că 50 este, după ce inseamna ca o sare de valoare 577 00:32:21,000 --> 00:32:24,000 de 50 a fost folosit pentru hashing toate aceste parole, cu excepția pentru unul. 578 00:32:24,000 --> 00:32:27,000 A mea, desigur, după cum puteți vedea acolo, HA, 579 00:32:27,000 --> 00:32:30,000 a fost folosind o sare diferită, astfel încât cei dintre voi care s-au ușor piedică 580 00:32:30,000 --> 00:32:33,000 Poate că în Hacker 2, care ar fi putut fi rezultatul noastre au folosit 581 00:32:33,000 --> 00:32:36,000 un hash diferit decât altele, deoarece parola mea este de fapt aceeași 582 00:32:36,000 --> 00:32:38,000 ca unii alt utilizator acolo. 583 00:32:38,000 --> 00:32:41,000 De fapt, dacă ați fost de așteptare toate aceste săptămâni pentru a afla 584 00:32:41,000 --> 00:32:44,000 ce aceste parole au fost aici au fost parolele pe care le au fost contestate 585 00:32:44,000 --> 00:32:48,000 a sparge în ediția Hacker de set de probleme 2, deci nu prea complicat. 586 00:32:48,000 --> 00:32:50,000 De fapt, lui Malan a fost aceeași ca și jharvard, 587 00:32:50,000 --> 00:32:54,000 dar dacă ne întoarcem s-au uitat diferit. 588 00:32:54,000 --> 00:32:58,000 >> Concentrați-vă pe jharvard în purpura, deoarece acestea au fost sărate diferit. 589 00:32:58,000 --> 00:33:01,000 Algoritmul a fost perturbat într-un mod care 590 00:33:01,000 --> 00:33:05,000 hash valoare, valoarea criptat arată un pic diferit 591 00:33:05,000 --> 00:33:08,000 deoarece intrările au fost ușor diferite, dar sub capota parola 592 00:33:08,000 --> 00:33:10,000 era încă în cele din urmă Crimson. 593 00:33:10,000 --> 00:33:12,000 Acum, cui îi pasă de asta? 594 00:33:12,000 --> 00:33:15,000 Ei bine, vă oferim cu utilizatorii de eșantionare, numele de utilizator eșantion 595 00:33:15,000 --> 00:33:18,000 și rosturi ale lemnului de parolele lor, astfel că aveți de fapt, unele 596 00:33:18,000 --> 00:33:23,000 clienții pentru CS50 Finanțelor atunci când vei ajunge primul pe sol, cu codul. 597 00:33:23,000 --> 00:33:27,000 Va trebui să pună în aplicare mai multe mese in interiorul MySQL, în interiorul bazei de date. 598 00:33:27,000 --> 00:33:30,000 Va trebui să creați foi de calcul mai multe, în mod eficient, dar am decis să vă dau asta 599 00:33:30,000 --> 00:33:33,000 pentru a obține ai început, și veți vedea că problema setul caietul de sarcini 600 00:33:33,000 --> 00:33:37,000 merge de-a lungul procesului de import acestui tabel 601 00:33:37,000 --> 00:33:39,000 și, de asemenea, să explice ceea ce unii dintre caracteristici sunt, 602 00:33:39,000 --> 00:33:41,000 și veți vedea, de asemenea, că noi vă oferim cu codul 603 00:33:41,000 --> 00:33:44,000 să se ocupe de hashing sau de criptare a acestor parole, 604 00:33:44,000 --> 00:33:49,000 astfel încât nu aveți nevoie să vă faceți griji prea mult despre ceea ce MD5 sau ca este de fapt vorba. 605 00:33:49,000 --> 00:33:53,000 >> Deci, SQL, Structured Query Language. 606 00:33:53,000 --> 00:33:56,000 Acest lucru este, pur și simplu, limba suntem pe cale de a începe să utilizați în PSET 7 607 00:33:56,000 --> 00:34:01,000 și, probabil, dincolo de a solicita date din baza de date ceva. 608 00:34:01,000 --> 00:34:06,000 Datele sunt, din nou, stocate tabularly în aceste tabele relationale, coloane, și rânduri, 609 00:34:06,000 --> 00:34:09,000 dar folosind unele sintaxă relativ simplu ca de ștergere, 610 00:34:09,000 --> 00:34:12,000 insera, actualiza și selectați putem face exact acest lucru. 611 00:34:12,000 --> 00:34:15,000 Putem șterge din baza de date, introduceți, 612 00:34:15,000 --> 00:34:19,000 actualizați datele, precum și selectați, care este, regăsirea datelor din baza de date. 613 00:34:19,000 --> 00:34:21,000 Cum putem merge despre a face acest lucru? 614 00:34:21,000 --> 00:34:23,000 Lasă-mă să merg înainte în aparat. 615 00:34:23,000 --> 00:34:28,000 Lasă-mă să trageți în sus http://localhost, 616 00:34:28,000 --> 00:34:30,000 care, din nou, este aparatul local de sine. 617 00:34:30,000 --> 00:34:32,000 Asta e porecla sa implicită. 618 00:34:32,000 --> 00:34:35,000 Și lasă-mă să merg la / phpMyAdmin. 619 00:34:35,000 --> 00:34:39,000 Acest lucru se întâmplă să fie un URL special care aparatul este preconfigurat pentru a înțelege 620 00:34:39,000 --> 00:34:42,000 că imediat mă solicită un nume de utilizator și o parolă. 621 00:34:42,000 --> 00:34:46,000 >> Ca de obicei, am de gând să tastați jharvard și crimson, 622 00:34:46,000 --> 00:34:48,000 dar seama că e cont de administrator pe computer. 623 00:34:48,000 --> 00:34:53,000 E doar o coincidență că există, de asemenea, un jharvard înregistrat pentru CS50 Finanțelor. 624 00:34:53,000 --> 00:34:56,000 Jharvard, Crimson, enter îmi dă interfața cu utilizatorul pe care am văzut- 625 00:34:56,000 --> 00:34:59,000 o bucatica de un moment în urmă, și este un pic coplesitoare la prima, 626 00:34:59,000 --> 00:35:02,000 dar fiți siguri, nu sunteți niciodată de gând să trebuie să faceți clic pe link-urile de cele mai multe în acest instrument. 627 00:35:02,000 --> 00:35:05,000 Vei ajunge folosind un subset mic, care sunt super utile, 628 00:35:05,000 --> 00:35:08,000 dintre care prima este de baze de date aici. 629 00:35:08,000 --> 00:35:11,000 Dacă mă duc până la baze de date, observăm că mă solicită să creați o bază de date. 630 00:35:11,000 --> 00:35:14,000 Aceasta este cum ar fi crearea unui nou fișier Excel, în mod eficient. 631 00:35:14,000 --> 00:35:18,000 Am de gând să merg mai departe și numesc acest curs, iar eu sunt doar de gând să ignore câmpul acolo, colaționare. 632 00:35:18,000 --> 00:35:20,000 Ea are de a face cu reprezentarea datelor în aceasta, 633 00:35:20,000 --> 00:35:24,000 și am de gând să faceți clic pe Creare, iar acum observa ca am dat drumul de a crea 634 00:35:24,000 --> 00:35:27,000 pe partea stângă în cazul în care acesta spune ca nu baze de date 635 00:35:27,000 --> 00:35:30,000 Ar trebui să vedem în curând baza de date curs. 636 00:35:30,000 --> 00:35:32,000 >> Dacă aș faceți clic pe acum la partea stângă, baza de date curs, 637 00:35:32,000 --> 00:35:34,000 observați file mele se schimba un pic. 638 00:35:34,000 --> 00:35:38,000 Am structură, SQL, export, import și alte lucruri. 639 00:35:38,000 --> 00:35:40,000 Structura este destul de mult gol. 640 00:35:40,000 --> 00:35:43,000 Nu există tabele găsit în baza de date, așa cum se spune aici, 641 00:35:43,000 --> 00:35:47,000 așa că hai să creați un tabel, și să mergem mai departe și de a crea un tabel 642 00:35:47,000 --> 00:35:53,000 ca elevii, și cât de multe coloane vrem? 643 00:35:53,000 --> 00:35:55,000 Record Să menținem acest simplu, și hai să pentru fiecare elev 644 00:35:55,000 --> 00:35:58,000 un număr de identificare, un nume, si o adresa de email. 645 00:35:58,000 --> 00:36:02,000 >> Vom păstrați-l simplu ca asta, deci 3 coloane, du-te. 646 00:36:02,000 --> 00:36:05,000 Forma pe care o vedeți aici este acum un pic dezordonat și copleșitoare, 647 00:36:05,000 --> 00:36:08,000 dar trebuie doar să treacă prin ea rând cu rând, astfel încât într-adevăr să dăm repede 648 00:36:08,000 --> 00:36:14,000 prima coloană din această bază de date un nume de identificare pentru identificatorul unic. 649 00:36:14,000 --> 00:36:17,000 Acesta va fi un număr întreg. Eu pot ignora de fapt, lungimea și valori. 650 00:36:17,000 --> 00:36:21,000 O int va fi 32 de biți indiferent de ceea ce tastați acolo, așa că hai să lăsați-l necompletat. 651 00:36:21,000 --> 00:36:24,000 Valoarea implicită, aș putea face asta nul, astfel cum este definită. 652 00:36:24,000 --> 00:36:27,000 Am de gând să părăsească în pace. Sa nu vă faceți griji despre valorile implicite. 653 00:36:27,000 --> 00:36:29,000 Să defila pe aici la atributele potrivite,. 654 00:36:29,000 --> 00:36:31,000 Acest lucru este interesant. 655 00:36:31,000 --> 00:36:33,000 Să mergem mai departe și oarecum arbitrar spun că ID-uri trebuie să fie nesemnat. 656 00:36:33,000 --> 00:36:35,000 Să nu pierdem nici numere negative. 657 00:36:35,000 --> 00:36:37,000 >> Să mergem 0-4 miliarde, da sau de a lua, 658 00:36:37,000 --> 00:36:40,000 și atunci să nu atingeți oricare dintre aceste domenii încă acolo, 659 00:36:40,000 --> 00:36:43,000 dar atunci să-mi scrieți numele aici jos, 660 00:36:43,000 --> 00:36:46,000 și apoi celălalt a fost de e-mail, astfel încât captură este de e-mail 661 00:36:46,000 --> 00:36:50,000 și numele, evident, nu întregi, așa că hai să schimbe acestea la un domeniu diferit. 662 00:36:50,000 --> 00:36:53,000 Se pare VARCHAR, lungime variabila char, 663 00:36:53,000 --> 00:36:56,000 este ca un șir într-o bază de date SQL 664 00:36:56,000 --> 00:36:59,000 dar o lungime variabilă, iar tu de fapt, trebuie să-l spun în avans 665 00:36:59,000 --> 00:37:02,000 Lungimea maximă a șirului, așa că am de gând să oarecum arbitrar 666 00:37:02,000 --> 00:37:05,000 de tipul convenție de 255 de caractere. 667 00:37:05,000 --> 00:37:08,000 Am putea spune cu totul 32. Am putea spune 1000. 668 00:37:08,000 --> 00:37:11,000 Ai un fel de nevoia de a decide pentru tine bazează pe datele demografice dvs. ceea ce este 669 00:37:11,000 --> 00:37:14,000 cel mai lung nume elevului și du-te cu acest număr sau un pic mai mare, 670 00:37:14,000 --> 00:37:17,000 dar ceea ce este frumos despre un varchar este nu este de gând să deșeuri 671 00:37:17,000 --> 00:37:19,000 255 de octeți pe numele fiecărui student. 672 00:37:19,000 --> 00:37:23,000 Dacă e DAVID nu este de gând să utilizeze un întreg 255 octeți, 673 00:37:23,000 --> 00:37:26,000 dar asta e un legat de sus, așa că voi merge cu 255 doar prin convenție, 674 00:37:26,000 --> 00:37:30,000 dar am putea dezbate, care să fie o valoare mai mică, și pentru adresa de email 675 00:37:30,000 --> 00:37:34,000 doar pentru a fi în concordanță 255, dar, din nou, am putea avea aceeași dezbatere. 676 00:37:34,000 --> 00:37:36,000 Dar am de gând să fac un lucru pe aici, pe partea dreaptă. 677 00:37:36,000 --> 00:37:40,000 >> Ce este puternic despre o bază de date este că se poate face o mulțime de ridicare grele 678 00:37:40,000 --> 00:37:42,000 sau lucrări complexe pentru tine. 679 00:37:42,000 --> 00:37:46,000 În special, eu chiar nu-mi pasă ce numărul de studenți meu de identitate sunt. 680 00:37:46,000 --> 00:37:49,000 Este doar menit să fie un identificator unic într-o bază de date 681 00:37:49,000 --> 00:37:52,000 așa că am avea o reprezentare pe 32 de biți succintă a studenților 682 00:37:52,000 --> 00:37:55,000 astfel că am un mod de a identifica unic ele 683 00:37:55,000 --> 00:37:58,000 ca nu cumva exista 2 Davids, de exemplu, într-o clasă. 684 00:37:58,000 --> 00:38:01,000 De fapt, am de gând să bifați această casetă de AI, auto increment, 685 00:38:01,000 --> 00:38:04,000 astfel încât baza de date, MySQL, cifrele din 686 00:38:04,000 --> 00:38:08,000 ID-ul de ceea ce fiecare student nou introdusa se va fi. 687 00:38:08,000 --> 00:38:11,000 Eu nu am nici să le pese de faptul că, în codul meu, 688 00:38:11,000 --> 00:38:13,000 și am, de asemenea, de gând să aleagă ceva sub meniul index. 689 00:38:13,000 --> 00:38:17,000 Indicele drop jos aici a primară, unic, 690 00:38:17,000 --> 00:38:19,000 index și textul integral. 691 00:38:19,000 --> 00:38:21,000 Puteți ghici ce poate o pereche de aceste lucruri sunt, 692 00:38:21,000 --> 00:38:24,000 dar se pare că în baze de date relaționale 693 00:38:24,000 --> 00:38:28,000 vă programator sau administratorul bazei de date pentru a ajunge preventiv 694 00:38:28,000 --> 00:38:32,000 da indicii pentru a bazei de date cu privire la ce domenii 695 00:38:32,000 --> 00:38:34,000 într-un tabel sunt un pic aparte. 696 00:38:34,000 --> 00:38:37,000 >> De exemplu, în acest caz, am de gând să spun că ID-ul 697 00:38:37,000 --> 00:38:42,000 va fi un indice principal, altfel cunoscut ca o cheie primară. 698 00:38:42,000 --> 00:38:44,000 Ce înseamnă acest lucru este faptul că, prin definiție, ID-ul de acum înainte 699 00:38:44,000 --> 00:38:48,000 va identifica unic studenți în acest tabel. 700 00:38:48,000 --> 00:38:53,000 Nici un student nu va avea același ID pentru că eu sunt impunerea acestei constrângeri sau acest indice. 701 00:38:53,000 --> 00:38:55,000 Mai mult decât atât, ce se va face pentru mine este o să spună 702 00:38:55,000 --> 00:38:58,000 MySQL ca ID-ul este special. 703 00:38:58,000 --> 00:39:03,000 Îmi pasă în special despre ID-ul, merge atât de departe și de a face magie structura de date fantezie a lui, 704 00:39:03,000 --> 00:39:05,000 construi un fel de copac. 705 00:39:05,000 --> 00:39:08,000 De obicei e ceva numit B-arbore, pe care nu ne-am uita la săptămâni în urmă, 706 00:39:08,000 --> 00:39:11,000 dar e alta structura de date, cum ar similare în spirit copaci binare 707 00:39:11,000 --> 00:39:15,000 și încearcă pe care ne-am uitat la, dar se va spune 708 00:39:15,000 --> 00:39:18,000 la baza de date acest domeniu este atât de important că am, probabil, 709 00:39:18,000 --> 00:39:22,000 doresc să fie în măsură de a căuta pe el, mergeți mai departe și construi unele de lux 710 00:39:22,000 --> 00:39:25,000 structură de date în memorie pentru a accelera căutările, astfel încât în ​​mod ideal, 711 00:39:25,000 --> 00:39:28,000 sunt constanta de timp sau cel puțin la fel de apropiat de cel în care este posibil 712 00:39:28,000 --> 00:39:32,000 astfel încât să nu revină în căutare liniară, care nu va fi 713 00:39:32,000 --> 00:39:34,000 cel mai performant abordare. 714 00:39:34,000 --> 00:39:37,000 În schimb, adresa de e-mail ar fi putut fi o cheie primară. 715 00:39:37,000 --> 00:39:41,000 >> În teorie, adresa de e-mail a tuturor este unic, cu excepția cazului în ai împărtăși câteva cont, 716 00:39:41,000 --> 00:39:45,000 dar nu este, în general, bine să utilizați ceva de genul un șir 717 00:39:45,000 --> 00:39:49,000 ca o cheie primară pentru că, dacă scopul său în viață este de a identifica unic 718 00:39:49,000 --> 00:39:55,000 rândurile din tabel nu există nici un motiv pentru a utiliza la maximum 255 de octeți 719 00:39:55,000 --> 00:39:58,000 pentru a identifica unic cineva dacă puteți obține departe cu doar 4 octeți 720 00:39:58,000 --> 00:40:00,000 sau o int 32-biți. 721 00:40:00,000 --> 00:40:03,000 În general, o cheie primară trebuie să fie scurt și concis 722 00:40:03,000 --> 00:40:07,000 și în mod ideal, ceva de genul un întreg sau o int mare, care se întâmplă să fie pe 64 de biți. 723 00:40:07,000 --> 00:40:11,000 Dar o adresă de e-mail trebuie să fie unic, și una dintre caracteristicile unei baze de date prea 724 00:40:11,000 --> 00:40:14,000 este de a pune în aplicare unicitatea pentru mine. 725 00:40:14,000 --> 00:40:18,000 Prin selectarea unic de aici de lângă e-mail, chiar dacă el însuși e-mail 726 00:40:18,000 --> 00:40:21,000 este defilat în afara ecranului, spun la baza de date 727 00:40:21,000 --> 00:40:23,000 nu ai încredere în mine. 728 00:40:23,000 --> 00:40:26,000 Nu mă lăsa să introduceți în baza de date 729 00:40:26,000 --> 00:40:29,000 adresă e-mail de două ori același, chiar dacă eu sunt un idiot și nu sunt 730 00:40:29,000 --> 00:40:32,000 foarte bună cu IFS mele si IFS altă și cod PHP reală 731 00:40:32,000 --> 00:40:37,000 și am lăsat accidental utilizatorul inregistreaza-te cu o adresă de e-mail existentă 732 00:40:37,000 --> 00:40:40,000 Baza de date este încă un alt nivel de aparare pentru corectitudinea 733 00:40:40,000 --> 00:40:44,000 pentru a se asigura că această adresă de e-mail duplicat nu se termină în tabel. 734 00:40:44,000 --> 00:40:49,000 >> Acum, în schimb, pentru numele pe care, probabil, nu vor să facă asta unic 735 00:40:49,000 --> 00:40:51,000 pentru că atunci nu ar putea niciodată să fie 2 Davids sau 2 Smiths Mike, de exemplu, 736 00:40:51,000 --> 00:40:55,000 în baza de date, astfel încât unul vom lăsa pur și simplu în pace. 737 00:40:55,000 --> 00:40:58,000 Am de gând să merg mai departe și faceți clic pe Salvare dreapta jos, 738 00:40:58,000 --> 00:41:02,000 si totul arata bine, dar observați aici 739 00:41:02,000 --> 00:41:04,000 aceasta este o parte pentru că acum nu vom petrece prea mult timp pe 740 00:41:04,000 --> 00:41:07,000 deoarece sintaxa este un complex mic, iar noi nu trebuie să creeze tabele 741 00:41:07,000 --> 00:41:10,000 toate că de multe ori, dar SQL este un limbaj în sine, 742 00:41:10,000 --> 00:41:13,000 Sintaxa pentru care este chiar aici, pe care le-am subliniat. 743 00:41:13,000 --> 00:41:18,000 Ceea ce într-adevăr este phpMyAdmin se creează un GUI web-based pentru tine 744 00:41:18,000 --> 00:41:23,000 cu care puteți economisi timp și nu trebuie să tastați manual afară 745 00:41:23,000 --> 00:41:26,000 o interogare SQL destul de lungă de genul asta. 746 00:41:26,000 --> 00:41:29,000 >> Cu alte cuvinte, dacă ai vrut să creați manual acest tabel, 747 00:41:29,000 --> 00:41:32,000 fie la faptul că phpMyAdmin alb-negru rapidă sau chiar în 748 00:41:32,000 --> 00:41:35,000 prin folosirea acestui tab altă parte, această filă SQL în cazul în care aveți posibilitatea să tastați în orice interogări SQL 749 00:41:35,000 --> 00:41:38,000 vrei, sincer, acest lucru ar fi luat-mi un minut 750 00:41:38,000 --> 00:41:41,000 să-și amintească de fapt, întregul sintaxa, și chiar și atunci probabil că ar avea 751 00:41:41,000 --> 00:41:45,000 a făcut unele erorile de scriere, astfel încât acest instrument este util pentru lucruri de genul asta, si este, de asemenea instructivă. 752 00:41:45,000 --> 00:41:49,000 Puteți începe să deducem ceea ce este sintaxa 753 00:41:49,000 --> 00:41:52,000 doar prin culoare frumoasa de codificare, care phpMyAdmin este adăugarea 754 00:41:52,000 --> 00:41:54,000 pentru comfortul nostru vizual. 755 00:41:54,000 --> 00:41:56,000 Dar acum să faci asta în loc. 756 00:41:56,000 --> 00:42:00,000 Lasă-mă să merg la fila Inserare la partea de sus, și lasă-mă să merg mai departe și introduce, de exemplu, 757 00:42:00,000 --> 00:42:04,000 un ID de să zicem, de fapt, nu-mi pasă. 758 00:42:04,000 --> 00:42:07,000 Se va auto increment. Mă duc să lase afacerea baza de date cu asta. 759 00:42:07,000 --> 00:42:11,000 Dar eu trebuie să fie pe David, si e-mailul meu ar trebui să fie malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Să mergem mai departe aici și pune în Mike Smith ca un altul. 761 00:42:16,000 --> 00:42:18,000 Îți dau eu un nume de familie, precum și, 762 00:42:18,000 --> 00:42:22,000 și vom l-am fi smith@example.com, 763 00:42:22,000 --> 00:42:24,000 și apoi în cazul în care nu merg mai departe? 764 00:42:24,000 --> 00:42:27,000 Ei bine, se pare ca mergem este să faceți clic pe butonul, și voila. 765 00:42:27,000 --> 00:42:30,000 Observați la primele 2 rânduri inserate. 766 00:42:30,000 --> 00:42:32,000 Aceasta este, de fapt interogare SQL. 767 00:42:32,000 --> 00:42:36,000 Asta e unealta phpMyAdmin executat pentru mine, 768 00:42:36,000 --> 00:42:40,000 dar rezultatul final, preaviz, dacă mă duc acum la fila răsfoire, 769 00:42:40,000 --> 00:42:43,000 este de a vedea 2 rânduri în acest tabel, foarte amintește punct de vedere estetic 770 00:42:43,000 --> 00:42:46,000 din tabelul am văzut mai devreme pentru utilizatorii noștri din PSET 7, 771 00:42:46,000 --> 00:42:51,000 dintre care unul este David Malan, dintre care unul este acum Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Dar, doar pentru a fi clar, nu am nevoie să utilizați phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 și într-adevăr, ai de gând să fi scris în curând codul pentru PSET 7 774 00:42:56,000 --> 00:43:01,000 care automatizează procesul de adăugare rânduri, ștergerea rândurilor, actualizarea rânduri și cum ar fi, 775 00:43:01,000 --> 00:43:04,000 asa ca lasa-ma sa plec loc la fila SQL aici 776 00:43:04,000 --> 00:43:14,000 și de tip în * select de studenți în cazul în care 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Cu alte cuvinte, să presupunem că aveți acum 779 00:43:21,000 --> 00:43:26,000 o anumită formă HTML, precum și tipurile de utilizatori din adresa de e-mail lor, printre alte domenii, 780 00:43:26,000 --> 00:43:29,000 și obiectivul este acum în PHP pe codul de back end 781 00:43:29,000 --> 00:43:31,000 pentru a uita de fapt, pana detaliile care altor utilizatori. 782 00:43:31,000 --> 00:43:34,000 Care este numele tău complet? Care este ID-ul dvs.? 783 00:43:34,000 --> 00:43:37,000 Ai putea scrie o interogare SQL ca aceasta, selectați * de la elevi 784 00:43:37,000 --> 00:43:40,000 în cazul în care e-mail = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 Și dacă mă duc apoi faceți clic pe, observați că eu ar trebui, într-adevăr, și eu nu, mă întorc doar un singur rând. 786 00:43:46,000 --> 00:43:50,000 Mike este omis din acest set de rezultate, ca colectarea de rânduri 787 00:43:50,000 --> 00:43:53,000 este, în general, numit, pentru că el nu are adresă e-mail la fel ca mine. 788 00:43:53,000 --> 00:43:57,000 >> Acum, din nou, aici, pentru PSET 7 vei folosi phpMyAdmin ca un instrument administrativ 789 00:43:57,000 --> 00:44:00,000 și un instrument pedagogic pentru a afla calea ta 790 00:44:00,000 --> 00:44:03,000 în jurul valorii de lumea de SQL, dar la sfârșitul zilei 791 00:44:03,000 --> 00:44:08,000 ai de gând să fi scris aceste interogări în interiorul codul actual PHP, 792 00:44:08,000 --> 00:44:11,000 și stați așa acordat în prezentare Zamyla în special, 793 00:44:11,000 --> 00:44:14,000 în cazul în care veți obține un tur al codului de distribuție pentru acest set de probleme 794 00:44:14,000 --> 00:44:18,000 în cazul în care v-am dat nu numai de estetica pentru pagina de logare 795 00:44:18,000 --> 00:44:21,000 și logo-ul frumos sexy, care spune CS50 Finanțe, dar am dat de tine, de asemenea, 796 00:44:21,000 --> 00:44:24,000 o grămadă de funcții care vor face viața un pic mai ușor. 797 00:44:24,000 --> 00:44:27,000 Am scris, de asemenea, o parte din PSET pentru tine, 798 00:44:27,000 --> 00:44:32,000 porțiunea de conectare a acesteia, în special, pentru a vă oferi un sentiment de un design reprezentativ 799 00:44:32,000 --> 00:44:36,000 care utilizează un controler de fapt, de exemplu, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php și cum ar fi, și apoi veți vedea PSET are de asemenea un director șabloane 801 00:44:40,000 --> 00:44:43,000 care are toate punctele de vedere, toate estetica. 802 00:44:43,000 --> 00:44:46,000 Și astfel fluxul de lucru general în PSET 7 se va fi faptul că 803 00:44:46,000 --> 00:44:49,000 utilizatorii vizitati o controler prin intermediul unui URL într-un browser. 804 00:44:49,000 --> 00:44:53,000 Că operatorul conține cod PHP pe care ai scris, si in interiorul codului PHP 805 00:44:53,000 --> 00:44:57,000 ar putea fi unele linii de SQL imbricate între ghilimele duble 806 00:44:57,000 --> 00:45:00,000 și a trecut la o funcție de interogare numit am scris 807 00:45:00,000 --> 00:45:03,000 care vă va ajuta să vorbești cu baza de date fără a utiliza ceva de genul 808 00:45:03,000 --> 00:45:05,000 un instrument administrativ ca phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Vei fi capabil să scrie declarații SQL în cod PHP 810 00:45:08,000 --> 00:45:11,000 și mă întorc o matrice PHP a setului de rezultate, 811 00:45:11,000 --> 00:45:14,000 din rândurile care se potrivesc de fapt, acea interogare. 812 00:45:14,000 --> 00:45:18,000 Și în mod similar va fi capabil să facă insertii sau șterge 813 00:45:18,000 --> 00:45:22,000 sau actualizări sau similare, sintaxa pentru care este destul de similar, 814 00:45:22,000 --> 00:45:25,000 și veți vedea de la câteva referințe on-line, de la codul de distribuție 815 00:45:25,000 --> 00:45:29,000 și de la sine PSET ambalaj exact cum de a merge despre a face acest lucru. 816 00:45:29,000 --> 00:45:33,000 Seama în cele din urmă suntem cu adevărat doar zgarieturi suprafața de SQL 817 00:45:33,000 --> 00:45:36,000 și al MySQL, dar puterea într-adevăr este că te elibereaza 818 00:45:36,000 --> 00:45:40,000 să se concentreze pe problemele pe care doriți să rezolve, în cazuri de utilizare pe care doriți să pună în aplicare 819 00:45:40,000 --> 00:45:43,000 fără a fi nevoie să vă faceți griji la fel de mult, cel puțin la început, 820 00:45:43,000 --> 00:45:47,000 despre unde și cum să stocați și să căutați baza de date, 821 00:45:47,000 --> 00:45:50,000 și acest lucru este destul de literalmente în cazul în care Facebook a inceput sa se 822 00:45:50,000 --> 00:45:53,000 folosind MySQL și apoi folosind mai multe servere MySQL si apoi mai multe servere MySQL 823 00:45:53,000 --> 00:45:57,000 Înainte de mult timp până când, apoi a trebuit să înceapă cu adevărat gândesc mult la cum să 824 00:45:57,000 --> 00:46:00,000 stochează date, cum de a stoca lucrurile chiar mai eficient, 825 00:46:00,000 --> 00:46:04,000 Deci, chiar daca vom lua de la sine faptul că indicii și constrângerile unice 826 00:46:04,000 --> 00:46:08,000 și așa mai departe lucreze doar acolo e o conversație foarte interesantă 827 00:46:08,000 --> 00:46:12,000 că acest lucru poate duce în cele din urmă tot la, astfel seama că suntem zgarieturi doar de suprafata 828 00:46:12,000 --> 00:46:17,000 a ceea ce ar putea în cele din urmă pentru tine sau pentru proiectele tale devin destul de un pic de date mari. 829 00:46:17,000 --> 00:46:22,000 >> Cu care a spus, hai sa se termine aici, și ne vedem săptămâna viitoare. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]