1 00:00:00,000 --> 00:00:10,393 >> [MUSIC JOC] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: În regulă. 4 00:00:12,120 --> 00:00:12,830 Bine ai revenit. 5 00:00:12,830 --> 00:00:13,890 Acest lucru este CS50. 6 00:00:13,890 --> 00:00:15,570 Acesta este sfârșitul săptămânii 8. 7 00:00:15,570 --> 00:00:18,360 Și, după cum știți, avem destul de orelor normale în câteva 8 00:00:18,360 --> 00:00:21,090 din sălile de mese, inclusiv Annenberg. 9 00:00:21,090 --> 00:00:23,860 Și o parte din echipa de amabilitate a luat câteva fotografii în ultima vreme. 10 00:00:23,860 --> 00:00:26,230 Și în onoarea lui Halloween, ne-am gandit 11 00:00:26,230 --> 00:00:30,160 împărtășesc una care mai degrabă ne-a prins de către surpriză aici, în Annenberg Hall doar 12 00:00:30,160 --> 00:00:31,490 noaptea. 13 00:00:31,490 --> 00:00:36,300 Colegul tău Iacov a pozat pentru această fotografie, dar a fost mai mult amuzant 14 00:00:36,300 --> 00:00:39,760 a fost pe Facebook, a urmat conversație ce sa întâmplat după aceea. 15 00:00:39,760 --> 00:00:43,020 >> Primul său post răspuns pentru a fotografia lui a fost aceasta. 16 00:00:43,020 --> 00:00:46,740 Câteva minute mai târziu, el a decis una la el cu asta. 17 00:00:46,740 --> 00:00:53,800 A mers pe atunci pentru a merge la acest lucru, și apoi, chiar mai amuzant 18 00:00:53,800 --> 00:00:55,320 este atunci când mama lui chimed în. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 Și apoi în cele din urmă, se pare că acest lucru a fost doar 21 00:01:01,800 --> 00:01:04,860 un șiretlic minunat pentru o joacă ce se intampla. 22 00:01:04,860 --> 00:01:07,080 >> Așa că, dacă doriți pentru a vedea Iacov și alții, 23 00:01:07,080 --> 00:01:10,880 printre ei Cynthia Meng, cine e în spatele scenei de personal zone CS50, 24 00:01:10,880 --> 00:01:13,970 cap de la această adresă URL și acest joc aici. 25 00:01:13,970 --> 00:01:18,810 Deci, fără alte formalități, astazi am continua această gasiti programare web, 26 00:01:18,810 --> 00:01:21,810 și crearea efectivă a programelor care nu intră la linia de comandă, 27 00:01:21,810 --> 00:01:24,080 dar în loc să ruleze în interiorul unui browser. 28 00:01:24,080 --> 00:01:26,320 >> Probabil acum, sau aveti la scurt timp, veti 29 00:01:26,320 --> 00:01:30,200 pentru a fi în mijlocul de punere în aplicare serverul de web proprie, care 30 00:01:30,200 --> 00:01:31,700 este diferit de programare web. 31 00:01:31,700 --> 00:01:36,210 Serverul de web în pset6 este despre toate software-ul care știe cum să ia scris 32 00:01:36,210 --> 00:01:39,300 Cereri HTTP de la un browser, sau chiar de la tine, un om, 33 00:01:39,300 --> 00:01:42,340 cu un program numit Telnet, și apoi răspunde acestor solicitări, fie 34 00:01:42,340 --> 00:01:48,600 de scuipa un fișier HTML, sau un jpeg, gif sau o, sau chiar un fișier .php. 35 00:01:48,600 --> 00:01:52,490 >> Dar cu un server de web, nu e ar trebui să deschidă un fișier PHP, 36 00:01:52,490 --> 00:01:55,260 ceva se termină în .php, și apoi scuipa conținutul. 37 00:01:55,260 --> 00:01:58,440 Ar trebui să faci ceea ce la acel fișier în primul rând? 38 00:01:58,440 --> 00:01:59,390 Ca să spunem așa. 39 00:01:59,390 --> 00:02:04,060 Nu-l compilați, ne-a declarat, luni, dar rather-- Deci, interpreta. 40 00:02:04,060 --> 00:02:08,070 >> PHP este un limbaj interpretat, și așa una dintre caracteristicile cheie în dvs. de web 41 00:02:08,070 --> 00:02:11,550 serverul, deși pusă în aplicare de noi, este această abilitate pentru serverul de web 42 00:02:11,550 --> 00:02:12,490 pentru a observa, oh. 43 00:02:12,490 --> 00:02:14,580 Acesta este un fișier care se termină în PHP. 44 00:02:14,580 --> 00:02:17,970 Lasă-mă nu doar trimite-l la utilizator ca e conținut static, 45 00:02:17,970 --> 00:02:20,970 ci mai degrabă lasă-mă să citesc linie de linie, de la stânga la dreapta, și interpreteze. 46 00:02:20,970 --> 00:02:23,030 >> Și de a face, pentru ca tu baieti va esență, 47 00:02:23,030 --> 00:02:26,520 punt la un program în aparat, și pe o mulțime de sisteme informatice, 48 00:02:26,520 --> 00:02:27,500 Tocmai a sunat PHP. 49 00:02:27,500 --> 00:02:30,579 Care este numele de PSP interpret propria limbă a lui. 50 00:02:30,579 --> 00:02:33,120 Astfel, că piesa punem în aplicare pentru tu, și ceea ce a mai rămas pentru tine, 51 00:02:33,120 --> 00:02:35,240 în cele din urmă, este un număr de bucăți, dintre care 52 00:02:35,240 --> 00:02:37,960 este de punere în aplicare sprijin pentru conținut static. 53 00:02:37,960 --> 00:02:40,180 >> Dar acum, și cu problemă a seta șapte, ești 54 00:02:40,180 --> 00:02:43,660 va începe să trecerii la scris de fapt codul PHP 55 00:02:43,660 --> 00:02:45,970 care devine interpretat în a vorbi la un capăt înapoi 56 00:02:45,970 --> 00:02:47,960 bază de date care stochează informații. 57 00:02:47,960 --> 00:02:51,020 Deci, haideți să înțeleagă mai bine în primul rând o pereche de aceste superglobals 58 00:02:51,020 --> 00:02:53,720 și doar cât de mult putere iesi din cutie pentru drum liber 59 00:02:53,720 --> 00:02:55,250 cu un limbaj ca PHP. 60 00:02:55,250 --> 00:02:57,350 Lucruri pe care nu le au să te pună în aplicare. 61 00:02:57,350 --> 00:03:01,700 >> Așa că, am văzut pe luni $ _GET, care este o superglobale, 62 00:03:01,700 --> 00:03:05,496 care este doar PHP vorbi de un global variabila puteți accesa oriunde. 63 00:03:05,496 --> 00:03:06,620 Si ceea ce este în interiorul $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Ce e în interiorul acestei superglobale pe care o vedem? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Cu siguranță statistic la cel puțin o persoană știe. 68 00:03:19,020 --> 00:03:21,590 Ce se află în interiorul de $ _GET? 69 00:03:21,590 --> 00:03:22,426 Da? 70 00:03:22,426 --> 00:03:24,130 >> Audiența: E variabilele ai pus în șirul de interogare. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. MALAN: Perfect. 72 00:03:24,530 --> 00:03:26,488 E variabilele te pune în șirul de interogare. 73 00:03:26,488 --> 00:03:29,910 Astfel, în exemplul nostru mai în vârstă de reimplementing Google atunci când am avut 74 00:03:29,910 --> 00:03:34,130 o adresă URL, iar apoi semn de întrebare, care delimitează începutul HTTP 75 00:03:34,130 --> 00:03:37,950 parametri, atunci am avut q egal ceva, cum ar fi q este egal cu pisici, 76 00:03:37,950 --> 00:03:41,500 ce s-ar merge în mod automat în interiorul din care _GET $ super-global pentru tine, 77 00:03:41,500 --> 00:03:47,430 din cauza PHP, este o cheie de Q, și de valoare a acestora de pisici. 78 00:03:47,430 --> 00:03:51,250 >> Cu alte cuvinte, $ _GET și toate aceste lucruri sunt tablouri asociative, 79 00:03:51,250 --> 00:03:54,530 tabele de dispersie de soiuri, care chei magazin și valori. 80 00:03:54,530 --> 00:03:57,980 Acum, înapoi în pset5, hash tabel s-ar putea fi puse în aplicare, 81 00:03:57,980 --> 00:04:00,220 sau să încercați-ar putea au pus în aplicare, într-adevăr 82 00:04:00,220 --> 00:04:04,010 a fost efectiv o asociativ matrice, o structură de date 83 00:04:04,010 --> 00:04:07,220 prin care puteți asocia chei cu valori. 84 00:04:07,220 --> 00:04:09,690 >> Dar, în pset5, valorile au fost banal. 85 00:04:09,690 --> 00:04:12,430 Valoarea a fost, în esență, adevărat sau fals. 86 00:04:12,430 --> 00:04:13,900 Este cuvântul în dicționar? 87 00:04:13,900 --> 00:04:18,279 Așa că, atunci când distribuit un cuvânt ca de mere pentru a vedea dacă Apple este în dicționar, 88 00:04:18,279 --> 00:04:21,820 funcția de verificare probabil a revenit adevărat sau fals. 89 00:04:21,820 --> 00:04:24,120 Deci, asta e eficient Valoarea primim înapoi. 90 00:04:24,120 --> 00:04:26,456 >> Dar am văzut pe luni pe scurt, puteți cu siguranță 91 00:04:26,456 --> 00:04:28,830 asocia mai interesant valori decât doar adevărat sau fals 92 00:04:28,830 --> 00:04:30,790 cu chei, cum ar fi mere. 93 00:04:30,790 --> 00:04:33,909 Ai putea reveni de fapt o șir arbitrar, și într-adevăr, 94 00:04:33,909 --> 00:04:36,200 asta e ceea ce $ _GET și acestea alte variabile lasa sa faci. 95 00:04:36,200 --> 00:04:40,595 >> Deci, $ _POST este similară în spirit, dar dacă trimiteți un formular prin poștă, 96 00:04:40,595 --> 00:04:44,490 o metodă HTTP diferit, care este folosit pentru lucruri cum ar fi carduri de credit, 97 00:04:44,490 --> 00:04:48,410 și informații private, și chiar informații binare cum ar fi fotografii, 98 00:04:48,410 --> 00:04:51,840 aceste lucruri pune in interiorul $ _POST. 99 00:04:51,840 --> 00:04:53,770 Și de fapt pentru fișiere cum ar fi JPEG-urile și fleacuri, 100 00:04:53,770 --> 00:04:58,290 există chiar și un altul care nu e aici numit $ _FILES la fel de bine. 101 00:04:58,290 --> 00:05:01,280 >> Așa că, serverul nu vom insista prea mult, dar îți dă acces 102 00:05:01,280 --> 00:05:04,860 pentru a sorta de mai mici detalii de nivel de aproximativ serverul în sine pe care îl utilizați. 103 00:05:04,860 --> 00:05:07,430 Cookie și sesiune, deși, vom vedea în mod eficient în prezent. 104 00:05:07,430 --> 00:05:10,940 Ultimul este ceea ce am folosi pentru a pune în aplicare noțiunea de un coș de cumpărături. 105 00:05:10,940 --> 00:05:14,480 O singura super-simplu, dar rechemare că am avut acest exemplu aici, 106 00:05:14,480 --> 00:05:17,640 de numărare de câte ori a vizitat aceasta pagina înainte. 107 00:05:17,640 --> 00:05:20,850 >> Dar astăzi, mai degrabă decât doar uita-te la efectul acestei, să deschidem 108 00:05:20,850 --> 00:05:22,640 Inspector Chrome, pe care le puteți, de obicei, 109 00:05:22,640 --> 00:05:25,740 face prin clic dreapta sau Control click oriunde pe o pagină web, 110 00:05:25,740 --> 00:05:27,250 și apoi alegeți inspecta elementului. 111 00:05:27,250 --> 00:05:31,600 Sau poti sa te duci prin meniuri pe care le descrie în spec pset6 lui. 112 00:05:31,600 --> 00:05:35,020 Și am de gând să fila Rețea aici, și să urmăriți pentru o clipă 113 00:05:35,020 --> 00:05:37,590 traficul HTTP care este merge înainte și înapoi. 114 00:05:37,590 --> 00:05:40,929 >> Lasă-mă să merg mai departe în primul rând și cache clar Chrome. 115 00:05:40,929 --> 00:05:43,470 Deci, unii dintre voi s-ar putea să fie familiarizați cu aceasta tehnica deja, 116 00:05:43,470 --> 00:05:45,790 și vom folosi pentru scopuri de depanare aici. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Acum, noi, ca de calculator oamenii de stiinta sunt de gând să înceapă 119 00:05:50,890 --> 00:05:53,920 face acest lucru pentru depanare scopuri, în care 120 00:05:53,920 --> 00:05:55,910 vom șterge memoria cache, în mod tipic, astfel încât să ne 121 00:05:55,910 --> 00:05:57,670 poate scăpa de lucruri numite cookie-uri. 122 00:05:57,670 --> 00:06:01,700 Deci tu esti, probabil, în general familiar cu ce cookie-urile sunt, sau cel puțin 123 00:06:01,700 --> 00:06:04,370 că acestea există, dar ceea ce este înțelegerea dintre ei, 124 00:06:04,370 --> 00:06:06,920 ca doar un utilizator de computere, ceea ce este un cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Da. 127 00:06:09,990 --> 00:06:14,391 >> Audiența: E un pic de-- bine, nu bit într-un termen de informatică. 128 00:06:14,391 --> 00:06:18,303 E o bucată de date pe care un site-ul trimite la tine în ordine 129 00:06:18,303 --> 00:06:20,209 pentru a putea înregistra statisticile pe tine. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, bine. 131 00:06:21,250 --> 00:06:24,980 Deci, este o bucată de date pe care un serverul, pune pe computer, 132 00:06:24,980 --> 00:06:28,840 și să-l mai generală, chiar mai mult, este o cheie value-- bine, 133 00:06:28,840 --> 00:06:30,064 că din ce în ce mai precisă. 134 00:06:30,064 --> 00:06:31,980 Este o bucată de informații, o bucată de date, 135 00:06:31,980 --> 00:06:34,430 că un server este capabil pentru a pune pe computer 136 00:06:34,430 --> 00:06:38,592 și de foarte multe ori, serverul face acest lucru în așa fel încât să-și amintească cine ești. 137 00:06:38,592 --> 00:06:40,300 Deci, de exemplu, cote sunt esti, probabil, 138 00:06:40,300 --> 00:06:42,982 conectat la site-uri precum Facebook, sau Gmail, sau alții înainte, 139 00:06:42,982 --> 00:06:44,940 și vă conectați cu dvs. numele de utilizator și parola, 140 00:06:44,940 --> 00:06:49,000 și apoi, după care, pentru un numar de minute sau ore sau chiar zile, 141 00:06:49,000 --> 00:06:52,970 serverul își amintește că vă sunt, de fapt, autentificat. 142 00:06:52,970 --> 00:06:54,600 Acum, cum se întâmplă că, de fapt? 143 00:06:54,600 --> 00:06:58,630 Pentru că tu cu siguranță nu ești rescrie numele de utilizator și parola de fiecare dată 144 00:06:58,630 --> 00:07:00,760 navigați la o Pagina diferit pe Facebook. 145 00:07:00,760 --> 00:07:02,570 Deci, se dovedește cookie-urile sunt răspunsul. 146 00:07:02,570 --> 00:07:05,360 >> Un cookie vă puteți gândi ca, Un fel de, o mână digitală 147 00:07:05,360 --> 00:07:09,200 ștampila care v-ar ajunge la un distracții parc sau un club care, în esență, 148 00:07:09,200 --> 00:07:11,740 indică faptul că au fost aici înainte, și ai deja 149 00:07:11,740 --> 00:07:16,070 arată ID-ul dvs. de bouncer, pentru exemplu, și că clubul sau parc 150 00:07:16,070 --> 00:07:19,050 ar trebui să-și asume acum că te s-au autentificat deja. 151 00:07:19,050 --> 00:07:21,270 Ați fost deja identificate de aceasta. 152 00:07:21,270 --> 00:07:24,740 >> Deci, cu asta în minte, hai sa deschidem contra aici. 153 00:07:24,740 --> 00:07:27,220 Lasă-mă să merg mai departe, am făcut-o, și șterge toate cookie-urilor mele. 154 00:07:27,220 --> 00:07:29,970 Și acum, ce am de gând să faceți este să țineți apăsat Shift, doar pentru o bună măsură, 155 00:07:29,970 --> 00:07:31,740 și cu forța să reîncărcați pagina. 156 00:07:31,740 --> 00:07:34,170 Shift doar asigurați-vă că că nimic nu se memorat in cache. 157 00:07:34,170 --> 00:07:36,850 Și aici este cererea că mers înainte și înapoi. 158 00:07:36,850 --> 00:07:41,560 Deci, aici avem o cerere, apoi permiteți- mă apropia aici, și o mulțime de acest 159 00:07:41,560 --> 00:07:44,710 este un fel de detalii neinteresante pentru acum că browser-ul are în mod automat 160 00:07:44,710 --> 00:07:47,800 a trimis, dar haideți să faceți clic pe Vizualizare Sursă pentru a vedea antetele prime. 161 00:07:47,800 --> 00:07:51,700 >> Și dacă v-ați scufundat în pset6 deja, veți recunoaște cu siguranță lucrurile 162 00:07:51,700 --> 00:07:54,990 în acest fel, și poate că unele din aceste alte linii de aici, 163 00:07:54,990 --> 00:07:59,040 dar ceea ce este mai interesant pentru ziua de azi dacă am defilați în jos, nu la cererea 164 00:07:59,040 --> 00:08:02,870 dar la așa-numitul răspuns, această linie, probabil, pare familiar. 165 00:08:02,870 --> 00:08:04,977 Asta e un lucru bun când vezi un 200 OK. 166 00:08:04,977 --> 00:08:07,060 Aparent aceasta este data și ora de pe server 167 00:08:07,060 --> 00:08:08,268 și există o grămadă de lucruri. 168 00:08:08,268 --> 00:08:09,290 Oh, acest lucru este interesant. 169 00:08:09,290 --> 00:08:13,430 >> Se pare că de fiecare dată când utilizați PHP, cel puțin în acest server, 170 00:08:13,430 --> 00:08:16,360 serverul scuipă ce versiune de PHP pe care o utilizați. 171 00:08:16,360 --> 00:08:18,962 Ceea ce, de fapt, de securitate scopuri, nu este un lucru bun. 172 00:08:18,962 --> 00:08:21,170 Dar, ne vom întoarce la care altă dată, poate. 173 00:08:21,170 --> 00:08:25,740 Dar acum aceasta este linia suculent astăzi, și am văzut pe scurt unele dintre acestea, 174 00:08:25,740 --> 00:08:29,240 Cred ca te cu Facebook atunci când am bagat în jurul valorii de inspectorul la acel moment, 175 00:08:29,240 --> 00:08:33,380 set cookie este ceea ce este de plantare că bucățică de informație 176 00:08:33,380 --> 00:08:34,890 pe computer. 177 00:08:34,890 --> 00:08:37,490 >> Acesta este un antet HTTP care este efectiv 178 00:08:37,490 --> 00:08:39,970 spune browser-ul dvs., Chrome, IE, indiferent de, 179 00:08:39,970 --> 00:08:44,480 hei magazin browser-ul pe Consumatorului hard disk, sau în memoria RAM a utilizatorului, 180 00:08:44,480 --> 00:08:49,680 o cheie numita PHPSESSID, care este un notație prescurtare pentru ID-ul de sesiune, 181 00:08:49,680 --> 00:08:53,670 și dau o valoare de 0vlk8t, punct, punct, punct. 182 00:08:53,670 --> 00:08:56,480 Un pseudo foarte lung șir alfanumeric aleatoare. 183 00:08:56,480 --> 00:08:59,480 E doar un număr foarte mare, dar este codificat cu litere și cifre 184 00:08:59,480 --> 00:09:03,550 astfel încât dimensiunea aceasta poate fi chiar mai mare decât numere singur. 185 00:09:03,550 --> 00:09:06,947 Și apoi, apropo, Path = /, care înseamnă doar că acest cookie trebuie să fie 186 00:09:06,947 --> 00:09:08,780 Asociat cu totalitate a site-ului, 187 00:09:08,780 --> 00:09:11,150 nu doar de un anumit Pagina totul. 188 00:09:11,150 --> 00:09:12,930 Deci, aceasta este faptul că ștampila mână virtuală. 189 00:09:12,930 --> 00:09:16,330 E ca și cum server, Facebook, sau în cazul nostru aparatului, 190 00:09:16,330 --> 00:09:21,140 are 0vlk8t literalmente scris și așa mai departe, pe mâna ta. 191 00:09:21,140 --> 00:09:24,360 Observați ce a serverului, a nu face este nu e 192 00:09:24,360 --> 00:09:27,730 stocarea numele meu de utilizator, cu siguranță, Nu stocarea parola. 193 00:09:27,730 --> 00:09:31,710 >> În schimb, se pare a fi stocarea de informații pseudo-aleatoare 194 00:09:31,710 --> 00:09:35,010 astfel încât nimeni nu poate ghici ceea ce ștampila mâna mea este. 195 00:09:35,010 --> 00:09:37,590 Pe partea de server, Între timp, serverul 196 00:09:37,590 --> 00:09:40,370 este de gând să ne amintim, probabil, într-o bază de date sau ceva, 197 00:09:40,370 --> 00:09:46,490 că utilizatorul, care în viitor prezintă o ștampilă mână de 0vlk8t, dot, 198 00:09:46,490 --> 00:09:51,440 dot, dot, ar trebui să fie asociate cu acest special coș de cumpărături, ca să spunem așa. 199 00:09:51,440 --> 00:09:55,060 Cu alte cuvinte, dacă acum mă duc înapoi aici și reîncărcați această pagină, 200 00:09:55,060 --> 00:09:58,020 cum știe pe server că am vizitat o dată? 201 00:09:58,020 --> 00:10:01,730 >> Sau, dacă o fac din nou, cum se serverul știu că am vizitat o de două ori? 202 00:10:01,730 --> 00:10:04,680 Ei bine, dacă mă duc în jos la acest cel mai recent cerere, care 203 00:10:04,680 --> 00:10:09,150 este acum a treia pe care le-am trimis în total, observați cererea mea acum. 204 00:10:09,150 --> 00:10:11,300 Nu există încă acest solicita până aici, la fel 205 00:10:11,300 --> 00:10:15,040 ca și mai înainte, există încă o mulțime de lucruri pe care le-am ignorat ca și mai înainte, 206 00:10:15,040 --> 00:10:19,350 dar în ultimul antet, acest timp, pentru că am fost aici înainte, 207 00:10:19,350 --> 00:10:21,980 este o prezentare a acest timbru mână virtuală. 208 00:10:21,980 --> 00:10:28,957 >> Prin aceasta linie de aici, nu sunt setate cookie dar colon cookie PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 asta e doar a browserului meu automată Prezentarea acestui timbru mână, astfel încât 210 00:10:32,040 --> 00:10:37,910 acum server, de îndată ce își dă seama, ooh, aceasta este utilizator 0vlk8t dot, dot, dot, 211 00:10:37,910 --> 00:10:42,010 Îmi amintesc acum care el sau ea este și reassociate cu acel utilizator, indiferent de 212 00:10:42,010 --> 00:10:46,450 Informații vreau, și toate aceste informații pot fi stocate de către tine, 213 00:10:46,450 --> 00:10:50,130 programator, în $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Deci, să fie clar, dacă am deschide foarte repede în gedit acel fișier real, counter.php, 215 00:10:57,170 --> 00:11:02,340 în directorul meu gazdă publică locală ca și mai înainte, observa că, într-adevăr, 216 00:11:02,340 --> 00:11:06,860 Sunt în cele din urmă de depozitare în $ _SESSION Citat unquote "contra", 217 00:11:06,860 --> 00:11:10,110 valoarea contorului precedent care I a lua de la aceste linii aici că noi 218 00:11:10,110 --> 00:11:13,010 sa uitat la ultima dată plus unu. 219 00:11:13,010 --> 00:11:14,980 Deci, sub capota, asta-i toate cookie-urile sunt. 220 00:11:14,980 --> 00:11:17,563 E doar un fel de digital ștampila mână merge înainte și înapoi, 221 00:11:17,563 --> 00:11:20,450 și sincer dacă deschideți Chrome Inspector pe orice site 222 00:11:20,450 --> 00:11:22,580 le vizitați astăzi, cu foarte mare probabilitate, 223 00:11:22,580 --> 00:11:25,450 veti vedea, poate, unul, poate o jumătate de duzină de cookie-uri 224 00:11:25,450 --> 00:11:26,650 fiind amintit de tine. 225 00:11:26,650 --> 00:11:29,500 >> Și mai rău, în cazul în care cei site-ul pe care îl vizitați 226 00:11:29,500 --> 00:11:32,640 au toate anunțuri, care este cu siguranță destul de comună astăzi, 227 00:11:32,640 --> 00:11:36,100 și dacă aceste anunțuri provin de la un partid de centru, cineva 228 00:11:36,100 --> 00:11:39,000 cum ar fi Google AdWords sau în care acestea suna la unul din produsele lor 229 00:11:39,000 --> 00:11:42,880 sau alte astfel de furnizori care vinde reclame, ceea ce este interesant, 230 00:11:42,880 --> 00:11:46,510 și sincer ceea ce este un pic ingrijoratoare, despre cum functioneaza HTTP, 231 00:11:46,510 --> 00:11:50,855 este că, dacă aveți un anunț încorporat în Facebook.com, și Google.com, 232 00:11:50,855 --> 00:11:54,240 și Harvard.edu, orice număr de site-uri, asa ca este o astfel 233 00:11:54,240 --> 00:11:58,130 că există un om de mijloc care ispășește up de anunțuri de toate cele trei dintre aceste site-uri, 234 00:11:58,130 --> 00:12:02,110 se dovedește că cookie-uri sunt pe domeniu. 235 00:12:02,110 --> 00:12:05,910 >> Deci, dacă aveți un anunț provenind din aceeași companie pe diferite site-uri web, 236 00:12:05,910 --> 00:12:11,140 care firma poate urmări în mod eficient care Dacă sunteți pe toate aceste site-uri. 237 00:12:11,140 --> 00:12:13,140 Harvard s-ar putea să nu știu sunteți vizita Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook ar putea să nu știe și sunteți vizita la Harvard. 239 00:12:15,306 --> 00:12:18,160 Dar, indiferent de serviciu de cautare ei folosesc în cazul în care domeniu este 240 00:12:18,160 --> 00:12:21,710 prezent în ambele Harvard.edu web pagini și pagini web Facebook.com, 241 00:12:21,710 --> 00:12:26,850 acest om de mijloc cu siguranță știe cine ești din cauza acestor cookie-uri partajat 242 00:12:26,850 --> 00:12:30,910 peste, sau mai degrabă a, că așa-numitul intermediar. 243 00:12:30,910 --> 00:12:33,820 >> Deci, vom reveni la acest lucru în implicațiile de securitate ale acestora, 244 00:12:33,820 --> 00:12:37,170 dar există o mulțime de informații fiind stocate despre tine orice moment 245 00:12:37,170 --> 00:12:40,120 vizitați cel mai orice pagina web pe internet și este într-adevăr 246 00:12:40,120 --> 00:12:42,877 reduce la acest mecanism foarte simplu. 247 00:12:42,877 --> 00:12:44,710 Ce se întâmplă, atunci, în cazul în care esti foarte paranoic 248 00:12:44,710 --> 00:12:48,190 și vă decideți să mergeți în Chrome sau IE sau orice altceva și apoi opriți cookie-urile? 249 00:12:48,190 --> 00:12:49,365 Ce se întâmplă? 250 00:12:49,365 --> 00:12:50,790 Da? 251 00:12:50,790 --> 00:12:53,170 Tu really-- ai făcut acest drept? 252 00:12:53,170 --> 00:12:54,350 OK. 253 00:12:54,350 --> 00:12:55,994 Nu, dă-i drumul. 254 00:12:55,994 --> 00:12:59,645 >> Audiența: Anumite site-uri nu au o funcție fără a-mi place Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. MALAN: Da! 256 00:13:00,520 --> 00:13:02,311 Deci, anumite site-uri se va opri doar de lucru. 257 00:13:02,311 --> 00:13:05,520 Și în cele mai multe site-uri web in aceste zile care se bazează fundamental pe cookie-uri, 258 00:13:05,520 --> 00:13:08,360 mai ales dacă acestea au autentifică în, ei doar va rupe. 259 00:13:08,360 --> 00:13:10,360 Pentru că ia în considerare alternativă, în cazul în care site-ul 260 00:13:10,360 --> 00:13:14,480 nu are nici o modalitate de a amintirii cine esti, și, prin urmare, browser-ul web nu este 261 00:13:14,480 --> 00:13:16,949 reprezentând cu fiecare HTTP cerere de acest timbru mână, 262 00:13:16,949 --> 00:13:18,740 în mod eficient un site web cum ar fi in curs de Facebook 263 00:13:18,740 --> 00:13:22,050 de a avea pentru a vă solicita să LOGIN fiecare dată naibii 264 00:13:22,050 --> 00:13:26,200 vă schimbați pagini, sau faceți clic pe un link, care nu este cu siguranță un utilizator deosebit de bun 265 00:13:26,200 --> 00:13:26,920 experiență. 266 00:13:26,920 --> 00:13:30,020 >> Astfel încât să existe, de asemenea, este printre compromisuri. 267 00:13:30,020 --> 00:13:34,140 Deci, fără alte formalități, haideți să aruncăm de la sine că, odată cu programarea web, 268 00:13:34,140 --> 00:13:37,630 în limbaje ca PHP, vă puteți aminti informații cum ar fi faptul că, în problema setat 269 00:13:37,630 --> 00:13:41,550 șapte, atunci când pune în aplicare propria ta Site-ul E * Trade asemănătoare cu ceea ce cumpara 270 00:13:41,550 --> 00:13:45,710 și vânzarea de stocuri, vă veți aminti exact ceea ce utilizatorul a cumpărat și vândut 271 00:13:45,710 --> 00:13:49,110 și care el sau ea este prin intermediul acestei sesiuni. 272 00:13:49,110 --> 00:13:51,110 Dar vom avea nevoie de un mod crescator decât de e-mail 273 00:13:51,110 --> 00:13:52,640 pentru a începe păstrarea informațiilor în jurul valorii. 274 00:13:52,640 --> 00:13:53,140 Dreapta? 275 00:13:53,140 --> 00:13:56,780 >> Luni, am vorbit despre Frosh AI și cum în versiunea una din acel site, 276 00:13:56,780 --> 00:14:00,250 cu ani în urmă, tot ce am făcut a fost trimite Proctor cine e 277 00:14:00,250 --> 00:14:04,250 care se ocupă de sport intramural Programul, numele, și de gen, 278 00:14:04,250 --> 00:14:07,330 si daca au sau nu le sunt căpitan, și căminul de cineva care este 279 00:14:07,330 --> 00:14:10,136 înregistrarea pentru un sport intramural. 280 00:14:10,136 --> 00:14:13,010 Deci, nu e rău, dar el sau ea atunci A trebuit să troll prin e-mail lor, 281 00:14:13,010 --> 00:14:16,010 face o foaie de calcul sau ceva de genul că, pentru a păstra totul organizat. 282 00:14:16,010 --> 00:14:19,750 Deci, cu siguranță noi ca programatori poate face acest lucru pentru că Proctor. 283 00:14:19,750 --> 00:14:22,970 Și astfel intră în SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 care este de gând să se uite destul de diferit pentru ambii C și PHP, 285 00:14:26,050 --> 00:14:30,990 și veți arunca cu capul în mai multe mâini pe PHP și problemă a seta șapte, dar, de asemenea, SQL, 286 00:14:30,990 --> 00:14:35,310 sau SQL, aceasta este o limbă care utilizați pentru a vorbi la o bază de date. 287 00:14:35,310 --> 00:14:36,480 >> Dar ceea ce este o bază de date? 288 00:14:36,480 --> 00:14:38,440 Ei bine, te gandesti la un baze de date, cel puțin pentru moment, 289 00:14:38,440 --> 00:14:41,750 ca doar fiind ca un fișier Excel, sau daca esti un număr de utilizator un fișier Mac, 290 00:14:41,750 --> 00:14:44,400 sau daca esti un Apps Google utilizator o foaie de calcul Google, 291 00:14:44,400 --> 00:14:49,120 este efectiv o bază de date, sau într-adevăr în special o bază de date relațională. 292 00:14:49,120 --> 00:14:53,070 O bază de date relațională este doar ceva care are rânduri și coloane, 293 00:14:53,070 --> 00:14:56,440 și puteți stoca orice tip de informații în aceste rânduri sau coloane. 294 00:14:56,440 --> 00:15:00,480 >> Dar ceea ce este frumos despre SQL, și despre bazele de date reale, nu doar 295 00:15:00,480 --> 00:15:04,910 foi de calcul sau foi de calcul Google, este că puteți folosi un limbaj 296 00:15:04,910 --> 00:15:09,000 pentru a executa efectiv interogări la introduce date, pentru a elimina de date, 297 00:15:09,000 --> 00:15:11,620 să caute date, chiar cel mai important, și tu 298 00:15:11,620 --> 00:15:16,110 Nu trebuie să-l folosească destul de manual cum s-ar putea de obicei un Google 299 00:15:16,110 --> 00:15:17,690 foaie de calcul ca aceasta. 300 00:15:17,690 --> 00:15:22,217 >> Deci, în SQL, există o grămadă de Declarații fundamentale sau piese 301 00:15:22,217 --> 00:15:23,300 de funcționalitate construit în. 302 00:15:23,300 --> 00:15:26,450 E mai mult decât acestea multe, dar poti sa te duci o distanță foarte mare 303 00:15:26,450 --> 00:15:28,620 doar prin știind că acest limbaj numit 304 00:15:28,620 --> 00:15:30,840 SQL are cel puțin patru Declarații puteți utiliza. 305 00:15:30,840 --> 00:15:34,420 >> Șterge, pentru îndepărtarea de date, Introduceți, pentru adăugarea de rânduri, 306 00:15:34,420 --> 00:15:37,340 Update, pentru a schimba rânduri, și Selectarea, 307 00:15:37,340 --> 00:15:39,860 pentru a obține înapoi rânduri și asta e într-adevăr, ceea ce face SQL. 308 00:15:39,860 --> 00:15:43,810 Acesta funcționează în întregime pe rânduri astfel că, atunci când introduce, sau eliminați, 309 00:15:43,810 --> 00:15:47,470 sau de actualizare, sau pentru a selecta ce esti intrare din nou în calitate de așa-zisul set de rezultate, 310 00:15:47,470 --> 00:15:49,690 ca o serie de rânduri. 311 00:15:49,690 --> 00:15:51,700 Un buchet de rânduri dintr-un tabel. 312 00:15:51,700 --> 00:15:54,050 >> Deci, din nou în a doua zi, și chiar la această zi, 313 00:15:54,050 --> 00:15:56,560 puteți interacționa cu bază de date utilizând o linie de comandă, 314 00:15:56,560 --> 00:15:59,691 dar nu este deosebit de distractiv de utilizat această fereastră alb-negru stil 315 00:15:59,691 --> 00:16:02,190 și de fapt executa comenzi și scormoni în jurul valorii de baza de date. 316 00:16:02,190 --> 00:16:06,054 O interfață grafică cu utilizatorul, sau GUI, este mult mai de preferat, fără îndoială, 317 00:16:06,054 --> 00:16:08,970 și astfel instrumentul recomandăm și preinstalat pentru tine pe aparat 318 00:16:08,970 --> 00:16:10,580 este numit phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 E o coincidență totală care Numele de acest lucru are PHP în ea, 320 00:16:14,060 --> 00:16:17,430 aceasta înseamnă doar că oamenii care a scris acest program s-au 321 00:16:17,430 --> 00:16:18,670 a scris-o în PHP. 322 00:16:18,670 --> 00:16:23,740 >> Dar este în cele din urmă cu privire la administrarea un server de baze de date, cum ar fi un server MYSQL 323 00:16:23,740 --> 00:16:26,589 care le-ar putea avea, în timp ce face, în aparatul CS50. 324 00:16:26,589 --> 00:16:29,130 Deci, există mai multe detalii aici mult trebuie să ne pese de ziua de azi, 325 00:16:29,130 --> 00:16:33,280 dar ceea ce este esențial este că pe stânga în partea stângă este o listă a bazelor de date 326 00:16:33,280 --> 00:16:36,040 că aveți pe computer, pe aparatul CS50, 327 00:16:36,040 --> 00:16:40,090 sau vin proiecte finale pe care le-ar putea au pe o parte terță, o societate de 328 00:16:40,090 --> 00:16:43,415 site-ul sau web serverul, că s-ar putea să plătiți pentru spațiu. 329 00:16:43,415 --> 00:16:45,290 Deci, pe stânga este baze de date, dintre care unul 330 00:16:45,290 --> 00:16:48,750 este pset7 pe care am împrumutat de la viitor PSET săptămâni, iar apoi pe partea de sus 331 00:16:48,750 --> 00:16:51,570 nu observa există o buchet de file, dintre care unul 332 00:16:51,570 --> 00:16:55,150 Este baze de date, SQL, statut, utilizatori, export și așa mai departe. 333 00:16:55,150 --> 00:16:56,900 Astfel încât să puteți merge un lung mod doar prin realizarea 334 00:16:56,900 --> 00:16:59,770 că cea mai mare parte a interfeței utilizator este în coloana din stânga sus 335 00:16:59,770 --> 00:17:02,650 și în partea de sus dreapta sus acolo. 336 00:17:02,650 --> 00:17:04,980 Deci, ce putem face de fapt cu asta? 337 00:17:04,980 --> 00:17:08,609 Ei bine, să începem crearea unui bit de informație, după cum urmează. 338 00:17:08,609 --> 00:17:11,760 >> Să presupunem că următorul text este cazul, cum va fi în doar câteva zile, 339 00:17:11,760 --> 00:17:14,440 pe care doriți să pună în aplicare o site-ul, numit CS50 Finante, 340 00:17:14,440 --> 00:17:17,328 și acest site vă permite să cumpărați cita încheiat citatul și vânzarea de stocuri. 341 00:17:17,328 --> 00:17:19,619 Și o să dau seama prețul de aceste stocuri, 342 00:17:19,619 --> 00:17:22,380 în cele din urmă așa cum veți vedea, vorbind cu Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Ceea ce, minunat, are un serviciu gratuit prin care puteți trece într-un ticker stoc 344 00:17:26,250 --> 00:17:29,830 ca GOOG pentru Google, și se va vă dau înapoi stocul curent Google 345 00:17:29,830 --> 00:17:32,250 Prețul în trecut câteva minute, cel puțin. 346 00:17:32,250 --> 00:17:35,080 >> Deci, veți utiliza că, în cele din urmă, de a pretinde pentru utilizator 347 00:17:35,080 --> 00:17:37,750 să cumpere și să vândă efectiv stocurile si folosind bani virtuali, 348 00:17:37,750 --> 00:17:39,750 dar primul lucru utilizatorul va vedea 349 00:17:39,750 --> 00:17:43,850 este acest ecran de conectare pe care le cere pentru numele de utilizator și parola. 350 00:17:43,850 --> 00:17:46,540 Și astfel, unul dintre primii provocări pentru tine în pset7 351 00:17:46,540 --> 00:17:50,460 va fi să pună în aplicare la sfârșitul spate baze de date, foaia de calcul dacă vreți, 352 00:17:50,460 --> 00:17:53,369 care va stoca nume de utilizatori și parole 353 00:17:53,369 --> 00:17:56,660 și în cele din urmă ceea ce a stocurilor pe care le dețin, și cât de multe și cât de mult bani au, 354 00:17:56,660 --> 00:18:00,110 astfel încât o grămadă de alte lucruri în alte tabele sau foi de calcul,. 355 00:18:00,110 --> 00:18:05,020 >> Deci, haideți să aruncăm o privire la modul în care acest s-ar putea părea la prima vedere. 356 00:18:05,020 --> 00:18:06,980 Am de gând să mă întorc la aparatul și eu sunt 357 00:18:06,980 --> 00:18:14,102 de gând să meargă la această adresă URL aici phpMyAdmin localhost / phpMyAdmin 358 00:18:14,102 --> 00:18:16,060 și veți vedea că acesta mă duce la o interfață 359 00:18:16,060 --> 00:18:18,520 exact așa cum am văzut la captură de ecran, și aici am 360 00:18:18,520 --> 00:18:21,560 au o bază de date suplimentar chemat curs pentru ziua de azi 361 00:18:21,560 --> 00:18:24,280 și lasă-mă să mergeți mai departe în primul rând și apăsați pe pset7. 362 00:18:24,280 --> 00:18:27,940 >> Se pare că am o pereche de opțiuni, unul pentru noi, pentru a crea un tabel nou, 363 00:18:27,940 --> 00:18:30,770 precum și un link către utilizatori, care este un tabel deja l-am creat. 364 00:18:30,770 --> 00:18:31,790 Deci, ce este un tabel? 365 00:18:31,790 --> 00:18:33,740 Deci, dacă ați folosit Excel înainte, iar dacă ai 366 00:18:33,740 --> 00:18:37,110 numerele utilizate sau Google Foi de calcul, se va deschide o fereastră 367 00:18:37,110 --> 00:18:39,350 și veți obține o grămadă de rânduri și coloane, 368 00:18:39,350 --> 00:18:43,120 dar atunci ai de obicei, foi de lucru în partea de jos, sau file separate. 369 00:18:43,120 --> 00:18:46,140 Puteți să vă gândiți de fiecare foaie de lucru ca un tabel 370 00:18:46,140 --> 00:18:51,150 astfel încât baza de date, în cele din urmă, este o combinație de unul sau mai multe tabele, o 371 00:18:51,150 --> 00:18:54,064 sau mai multe foi de lucru, în lume a unei foi de calcul normale. 372 00:18:54,064 --> 00:18:55,980 Așa că lasă-mă să mergeți mai departe și click pe această foaie de lucru 373 00:18:55,980 --> 00:18:59,420 că am premade, numit utilizatori, a.k.a. 374 00:18:59,420 --> 00:19:00,700 Tabel de bază de date. 375 00:19:00,700 --> 00:19:04,130 Și dacă eu derula în jos aici, lasă-mă să micșora un pic, 376 00:19:04,130 --> 00:19:08,479 aceasta este ceea ce phpMyAdmin se spune noi este în interiorul acestui tabel chiar acum. 377 00:19:08,479 --> 00:19:11,020 E un pic confuz la început ochire pentru că interfața cu utilizatorul nu este 378 00:19:11,020 --> 00:19:15,140 cel mai frumos lucru din lume, dar ceea ce este interesant este această parte aici. 379 00:19:15,140 --> 00:19:17,970 ID-ul, numele de utilizator, și hash. 380 00:19:17,970 --> 00:19:20,510 >> În prealabil, și veți fi pronunțate această problemă în a seta șapte, 381 00:19:20,510 --> 00:19:25,050 vă oferim un fișier care conține un super- tabel de baze de date mic, împrumutat de fapt 382 00:19:25,050 --> 00:19:27,070 de la ediția hacker de problemă stabilit două, 383 00:19:27,070 --> 00:19:29,480 în interiorul cărora există șase rânduri. 384 00:19:29,480 --> 00:19:32,720 Una pentru Belinda toate modalitate de până la unul pentru Zamyla, 385 00:19:32,720 --> 00:19:35,980 și observați în stânga celor nume de utilizator sunt ID-uri unice, cum ar fi unul, 386 00:19:35,980 --> 00:19:39,410 doi, trei, patru, cinci, șase, numere întregi, și apoi la dreapta sunt hash-uri. 387 00:19:39,410 --> 00:19:42,780 >> Și dacă, cote de pariuri sunt, n-ai făcut problema ediție hacker stabilit două, 388 00:19:42,780 --> 00:19:46,560 dar un hash este la fel ca un criptat parolă cu câteva rezerve. 389 00:19:46,560 --> 00:19:49,470 Și astfel, ceea ce vedeți aici sunt versiunile criptate ale tuturor șase 390 00:19:49,470 --> 00:19:52,950 de parole noștri din problemă stabilit ediție hacker două lui. 391 00:19:52,950 --> 00:19:56,500 Acum, la stânga este doar unele chestii GUI, editarea acestei rând, copierea acest rând, 392 00:19:56,500 --> 00:19:57,630 ștergerea acest rând. 393 00:19:57,630 --> 00:19:59,840 >> Dar ceea ce este interesant acum este următoarea. 394 00:19:59,840 --> 00:20:03,810 Eu pot începe de fapt experimentarea cu acest tabel. 395 00:20:03,810 --> 00:20:07,330 Așa că, dacă mă duc și faceți clic pe SQL tab, I a lua această casetă de text mare. 396 00:20:07,330 --> 00:20:10,190 Și acest lucru nu este modul în care vom fă-o atunci când scrieți de fapt cod. 397 00:20:10,190 --> 00:20:12,700 Pentru a fi clar, phpMyAdmin este doar un instrument care este 398 00:20:12,700 --> 00:20:16,450 de gând să ne lase să scormoni în jurul bazei de date și să ne experimenteze cu interogări. 399 00:20:16,450 --> 00:20:19,430 >> Deci, de exemplu, să presupunem Am executa exact acest lucru. 400 00:20:19,430 --> 00:20:22,820 Selectați, care este unul dintre cei cuvinte-cheie am menționat mai devreme, stele, 401 00:20:22,820 --> 00:20:25,900 care reprezintă toate coloanele într-un tabel. 402 00:20:25,900 --> 00:20:26,820 Din ce masă? 403 00:20:26,820 --> 00:20:27,990 Ei bine, utilizatorii. 404 00:20:27,990 --> 00:20:29,950 Și Aviz acolo e asta convenție ciudat în SQL 405 00:20:29,950 --> 00:20:32,140 în cazul în care utilizați efectiv înapoi căpușe, de obicei, 406 00:20:32,140 --> 00:20:35,940 citate nu simple și citate nu duble cand vorbesti despre nume tabele, 407 00:20:35,940 --> 00:20:38,990 astfel citatul din spate este un lucru, pe de mana stanga sus a tastaturii cele mai 408 00:20:38,990 --> 00:20:39,720 probabil. 409 00:20:39,720 --> 00:20:41,850 >> Așa că lasă-mă să merg mai departe acum și lasă doar că în pace 410 00:20:41,850 --> 00:20:46,020 și defilați în jos și faceți clic pe Start, iar noi suntem de fapt, vom vedea același lucru. 411 00:20:46,020 --> 00:20:52,410 Tocmai am executat o interogare SQL spunând selectați tot stea 412 00:20:52,410 --> 00:20:55,610 din tabel numit utilizatori, și ceea ce veți obține înapoi este aceasta. 413 00:20:55,610 --> 00:20:58,400 În cele din urmă, vom fi în măsură să face același lucru în cod, 414 00:20:58,400 --> 00:21:02,109 dar pentru acum tot ce am vrut să nu a fost vedea în browser-ul meu. 415 00:21:02,109 --> 00:21:03,900 Ei bine, hai sa facem ceva un pic diferit. 416 00:21:03,900 --> 00:21:08,330 Lasă-mă să mă întorc la fila SQL, și să spunem doar că ce? 417 00:21:08,330 --> 00:21:11,520 Zamyla a pierdut toate de ei bani, și, prin urmare, este 418 00:21:11,520 --> 00:21:13,190 timp pentru noi, pentru ei a șterge ca un utilizator. 419 00:21:13,190 --> 00:21:14,630 Ea nu mai e logare. 420 00:21:14,630 --> 00:21:18,870 >> Așa că am de gând să spun șterge from-- bine, să mențină capitalizare 421 00:21:18,870 --> 00:21:23,080 pentru consecvență, șterge de la utilizatorii de unde. 422 00:21:23,080 --> 00:21:25,430 Și astfel, putem avea aceste predicate, sau acestea 423 00:21:25,430 --> 00:21:31,180 de calificare, la sfârșitul declarația mea unde și cum aș putea șterge Zamyla? 424 00:21:31,180 --> 00:21:34,190 De numele ei Zamyla, așa coloană, una dintre coloane 425 00:21:34,190 --> 00:21:37,950 a fost numit, astfel încât în ​​cazul în care name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 Și aici am folosi dublă citate sau ghilimele simple, 427 00:21:40,000 --> 00:21:42,958 utilizați numai partea din spate căpușe, atunci când vorbind despre numele, de exemplu, 428 00:21:42,958 --> 00:21:45,130 de tabele sau câmpuri. 429 00:21:45,130 --> 00:21:47,440 Și lasă-mă să faceți clic pe Du-te aici. 430 00:21:47,440 --> 00:21:50,400 Și acum, pagina de web este fiind un pic încordat. 431 00:21:50,400 --> 00:21:53,620 >> Sau, vrei într-adevăr să execute șterge de la utilizatorii de unde numele este egal cu Zamyla? 432 00:21:53,620 --> 00:21:54,680 Da. 433 00:21:54,680 --> 00:22:01,900 Deci, acum, dacă ne întoarcem la masa mea de către utilizatori clic, observați că Hm. 434 00:22:01,900 --> 00:22:02,530 I goofed. 435 00:22:02,530 --> 00:22:04,070 Și, de fapt, am facut un fel de clic distanță atât de repede 436 00:22:04,070 --> 00:22:06,195 N-ai văzut măcar mesaj de eroare roșu, poate. 437 00:22:06,195 --> 00:22:07,649 Ce am gresit? 438 00:22:07,649 --> 00:22:09,690 Audiența: Nu ai nevoie pentru a valorifica numele ei. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Da, capitalizate numele ei, 440 00:22:11,260 --> 00:22:13,770 dar ei de fapt username-- I a făcut câteva greșeli, nu? 441 00:22:13,770 --> 00:22:16,720 Unul, numele de utilizator ei este zamyla, litere mici Z, 442 00:22:16,720 --> 00:22:20,140 și numele de coloană este numele de utilizator, nu este numele, așa să facem acest lucru din nou. 443 00:22:20,140 --> 00:22:25,750 Lasă-mă să mergeți mai departe și șterge de la utilizatori în cazul în care 444 00:22:25,750 --> 00:22:28,990 numele de utilizator este egal cu citat unquote "Zamyla". 445 00:22:28,990 --> 00:22:29,490 În regulă? 446 00:22:29,490 --> 00:22:32,600 Deci, acest lucru pare un pic mai bine, lasă- mă să plec defilați în jos și faceți clic pe Start. 447 00:22:32,600 --> 00:22:34,730 E încă în desfășurare la țipa la mine pentru a fi sigur. 448 00:22:34,730 --> 00:22:37,500 Am faceți clic pe Da, iar acum vom vedea, sincer sa întâmplat acest lucru, într-adevăr 449 00:22:37,500 --> 00:22:39,870 rapid, mai puțin de o în al doilea rând cu siguranță, acest 450 00:22:39,870 --> 00:22:41,720 este exact interogarea care s-au executat. 451 00:22:41,720 --> 00:22:45,617 Pentru a confirma, lasă-mă să faceți clic utilizatori și într-adevăr, acum Zamyla este plecat. 452 00:22:45,617 --> 00:22:46,700 Acum, hai să facem exact opusul. 453 00:22:46,700 --> 00:22:49,320 Să presupunem că Gabe vrea să înregistra pentru site-ul web. 454 00:22:49,320 --> 00:22:52,825 Care este interogarea SQL, ceea ce este comandă aș putea să tastați pentru a adăuga Gabe? 455 00:22:52,825 --> 00:22:54,200 Ei bine, e destul de simplu. 456 00:22:54,200 --> 00:22:58,260 Introduceți în utilizatori, iar acum ea devine un pic criptic. 457 00:22:58,260 --> 00:23:03,190 Trebuie să precizeze, la server, ce domenii vreau să atribui. 458 00:23:03,190 --> 00:23:06,630 Nu-mi pasă cu adevărat ceea ce Gabe de identitate număr este, așa am de gând să săriți peste asta. 459 00:23:06,630 --> 00:23:11,360 Am în schimb să spun numele de utilizator, hash, iar apoi 460 00:23:11,360 --> 00:23:14,960 valorile vreau să pun acolo va fi Gabe. 461 00:23:14,960 --> 00:23:16,800 Și apoi hash lui, nu știu. 462 00:23:16,800 --> 00:23:19,900 Deci, de acum, am de gând să lăsa ca ca o mare de a face. 463 00:23:19,900 --> 00:23:21,650 Ne vom întoarce la că în stabilit problema 464 00:23:21,650 --> 00:23:23,390 spec ca la modul în care face de fapt asta. 465 00:23:23,390 --> 00:23:24,630 >> Deci, observa, din nou, sintaxa. 466 00:23:24,630 --> 00:23:28,430 Introduceți în nume tabelă, atunci o Lista paranteze domenii, 467 00:23:28,430 --> 00:23:30,980 coloanele pe care doriți să adăugați Valorile la, și apoi doar 468 00:23:30,980 --> 00:23:34,495 În același ordonarea exact la stânga la drept de valorile pe care doriți să le adăugați, 469 00:23:34,495 --> 00:23:36,870 și e doar de ambalaj pentru că textul este un pic cam lung. 470 00:23:36,870 --> 00:23:38,520 Deci, acum lasă-mă să faceți clic pe Start. 471 00:23:38,520 --> 00:23:39,830 Un rând inserat. 472 00:23:39,830 --> 00:23:43,020 Și acum, dacă mă întorc la utilizatori, ceea ce este interesant 473 00:23:43,020 --> 00:23:48,960 este faptul că nu numai că este Gabe acum în baze de date, ceea ce este aparent ID-ul lui? 474 00:23:48,960 --> 00:23:49,820 >> Ei bine, e șapte. 475 00:23:49,820 --> 00:23:51,479 De ce este șapte, atunci când nu l-am adăuga? 476 00:23:51,479 --> 00:23:54,020 Deci, aceasta, de asemenea, este unul dintre caracteristici ai bazei de date. 477 00:23:54,020 --> 00:23:55,750 O mulțime de construit în funcționalitate. 478 00:23:55,750 --> 00:23:57,950 Se pare că, atunci când a creat acest tabel, 479 00:23:57,950 --> 00:24:01,390 Am preconfigurat este în mod automat atribui un ID în așa fel 480 00:24:01,390 --> 00:24:02,480 că incrementează. 481 00:24:02,480 --> 00:24:05,470 Așadar, dacă ai bagat vreodată în jurul valorii de, si se uita la ID-ul ceea ce dvs. de Facebook 482 00:24:05,470 --> 00:24:09,292 Numărul este, in aceste zile nu e adevărat un lucru de făcut, dar Facebook ca un API, 483 00:24:09,292 --> 00:24:11,750 Interfata de programare a aplicațiilor, prin care puteți obține înapoi 484 00:24:11,750 --> 00:24:14,430 o grămadă de date despre le despre prietenii tăi, 485 00:24:14,430 --> 00:24:15,347 și conexiunile. 486 00:24:15,347 --> 00:24:17,430 Și ceea ce folosit pentru a fi un fel de rece, înapoi în a doua zi, 487 00:24:17,430 --> 00:24:19,510 a fost de a privi în sus ceea ce dvs. Facebook număr de identificare a fost. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg, de exemplu, este de trei 489 00:24:22,390 --> 00:24:23,890 deoarece el a fost autorul a site-ului. 490 00:24:23,890 --> 00:24:27,610 Și, după cum spune povestea, el a creat două conturi de test, utilizatorii unu și doi, 491 00:24:27,610 --> 00:24:28,690 pe care el apoi eliminat. 492 00:24:28,690 --> 00:24:32,780 Și astfel, Zuck, așa cum este numele lui pe Facebook, este ID-ul numărul trei, 493 00:24:32,780 --> 00:24:36,110 și noi toți avem un număr mult mai mult de trei aceste zile. 494 00:24:36,110 --> 00:24:37,980 De fapt, la un moment dat Facebook mutat departe 495 00:24:37,980 --> 00:24:42,410 de la chiar folosind un int, care este o valoare pe 32 de biți, pentru utilizarea 496 00:24:42,410 --> 00:24:44,480 pasul următor în sus, în esență, un lung lung, astfel încât 497 00:24:44,480 --> 00:24:47,150 că acestea ar putea găzdui chiar și mai mulți utilizatori înregistrarea. 498 00:24:47,150 --> 00:24:49,420 Deci, un fapt istoric pic de distracție. 499 00:24:49,420 --> 00:24:51,660 >> Așa că e doar sintaxa de bază cu care 500 00:24:51,660 --> 00:24:54,470 am putea executa o pereche de interogări, dar putem de fapt 501 00:24:54,470 --> 00:24:56,744 faci o grămadă mai multe lucruri cu SQL. 502 00:24:56,744 --> 00:24:58,910 Și veți vedea, în cele din urmă, în problema stabilit șapte 503 00:24:58,910 --> 00:25:01,034 care va trebui să facă o Numărul de deciziile de design, 504 00:25:01,034 --> 00:25:03,290 printre ei va fi ce tipuri de date pentru a utiliza. 505 00:25:03,290 --> 00:25:08,240 Deci, la fel ca în C, există date Tipuri într-o bază de date, cum ar fi MySQL, 506 00:25:08,240 --> 00:25:12,640 și tipurile de date pe care trebuie să alegeți de a include aceste domenii de aici. 507 00:25:12,640 --> 00:25:17,287 Char, VARCHAR, Int, Int mare, zecimal și de timp data, si multe altele. 508 00:25:17,287 --> 00:25:18,370 Deci, hai sa facem de fapt acest lucru. 509 00:25:18,370 --> 00:25:21,060 Să presupunem că nu am făcut- mână pe tabelă acestui utilizator 510 00:25:21,060 --> 00:25:25,080 și lasă-mă să mergeți mai departe și de a crea, pentru eu, în conferințele database-- 511 00:25:25,080 --> 00:25:31,000 de fapt, lasă-mă să merg mai departe și șterge tabelul am aici deja 512 00:25:31,000 --> 00:25:32,940 astfel încât să putem crea de fapt acest lucru. 513 00:25:32,940 --> 00:25:33,550 Ne pare rău. 514 00:25:33,550 --> 00:25:35,970 Am de gând să renunțe la acest masă, iar acum eu sunt 515 00:25:35,970 --> 00:25:38,337 de gând să meargă din nou la prelegeri bază de date de peste aici, 516 00:25:38,337 --> 00:25:40,420 Am de gând pentru a crea un tabel numitele utilizatori si sa 517 00:25:40,420 --> 00:25:43,010 face doar trei coloane inițial și faceți clic pe Start. 518 00:25:43,010 --> 00:25:44,990 >> Acum, pentru cea mai mare parte, din nou, aceasta este doar 519 00:25:44,990 --> 00:25:48,570 folosirea acestui instrument grafic numit phpMyAdmin, iar ceea ce facem noi acum 520 00:25:48,570 --> 00:25:49,600 creează un tabel. 521 00:25:49,600 --> 00:25:53,170 Deci, aceasta este ca merge File, New, și crearea unui nou fișier Excel. 522 00:25:53,170 --> 00:25:55,440 Așa că mă întreabă câteva întrebări, de la stânga la dreapta, 523 00:25:55,440 --> 00:25:58,620 Care este numele primei coloane, și apoi numele de a doua coloană, 524 00:25:58,620 --> 00:25:59,560 și numele celui de al treilea. 525 00:25:59,560 --> 00:26:00,518 Așa că haideți să recrea aceasta. 526 00:26:00,518 --> 00:26:05,460 ID-ul, iar apoi numele de utilizator a fost unul, și apoi hash a fost un alt. 527 00:26:05,460 --> 00:26:08,970 Deci, ce ar trebui tipul de date fi acum pentru un domeniu cum ar fi ID-ul? 528 00:26:08,970 --> 00:26:14,470 >> Aici este toata lista de tipuri de date disponibile în baza de date, 529 00:26:14,470 --> 00:26:16,070 și pentru acum hai să mergem cu int. 530 00:26:16,070 --> 00:26:18,160 Valoarea pe 32 de biți, eu nu fac cred că eu sunt realist 531 00:26:18,160 --> 00:26:21,484 O să aibă mai mult de 4 miliarde de euro utilizatorii din contul meu, în serviciul meu, 532 00:26:21,484 --> 00:26:23,650 așa că am de gând să păstreze în mișcare la următoarea întrebare. 533 00:26:23,650 --> 00:26:25,490 Eu nu am de gând să specificați o lungime sau valori, 534 00:26:25,490 --> 00:26:28,540 nu este aplicabil aici pentru un int, în sine. 535 00:26:28,540 --> 00:26:30,740 Și acum pot specifica, aparent, un default 536 00:26:30,740 --> 00:26:33,970 valoare, pe care nu am de gând să specificați. 537 00:26:33,970 --> 00:26:36,050 O colaționare, eu nu știu ce e asta. 538 00:26:36,050 --> 00:26:37,290 Un atribut. 539 00:26:37,290 --> 00:26:39,455 Acum facem de fapt au o decizie de design. 540 00:26:39,455 --> 00:26:42,580 Deci, există câteva domenii de aici, nu toate din care se aplică, dar fără semn 541 00:26:42,580 --> 00:26:43,380 înseamnă doar ce? 542 00:26:43,380 --> 00:26:45,400 Că int trebuie să fie? 543 00:26:45,400 --> 00:26:46,210 Doar non-negativ. 544 00:26:46,210 --> 00:26:48,090 Deci, trebuie să fie 0 pe sus. 545 00:26:48,090 --> 00:26:51,120 Nu, nu am de gând să verifice că Vreau ca fiecare utilizator să aibă o identitate, 546 00:26:51,120 --> 00:26:52,470 ea nu poate fi nul. 547 00:26:52,470 --> 00:26:55,949 Și apoi, ajungem la ceva mai mult deciziile de design interesante ca aceasta. 548 00:26:55,949 --> 00:26:58,990 Vom reveni la acest lucru într-o clipă, dar ce o altă caracteristică de bază de date 549 00:26:58,990 --> 00:27:04,200 este, este că vă pot spune serverul de baze de date merge mai departe 550 00:27:04,200 --> 00:27:07,100 și de a optimiza le-ul RAM și spațiu pe hard disk, 551 00:27:07,100 --> 00:27:11,770 astfel încât selectează, și inserții, și șterge, iar actualizările sunt foarte repede. 552 00:27:11,770 --> 00:27:13,250 In contrast cu pset5. 553 00:27:13,250 --> 00:27:16,259 >> Dacă ați vrut să se uite la ceva din tabelul hash, care 554 00:27:16,259 --> 00:27:18,300 te gandesti ca o bază de date, care a trebuit să facă tot 555 00:27:18,300 --> 00:27:21,500 de lucru pentru a face masa de hash rapid. 556 00:27:21,500 --> 00:27:22,840 E ca și cum, în mod evident, voi. 557 00:27:22,840 --> 00:27:23,060 Dreapta? 558 00:27:23,060 --> 00:27:26,080 Ai avut de a pune în toate amenzii de timp Tuning lucruri, printr-o funcție hash 559 00:27:26,080 --> 00:27:27,820 Bine, imaginind cum mai multe galeti de a avea. 560 00:27:27,820 --> 00:27:29,611 >> Dar ceea ce este frumos, din nou, despre o bază de date este 561 00:27:29,611 --> 00:27:31,762 doar tu punt toate aceasta a altor persoane 562 00:27:31,762 --> 00:27:33,720 care au crezut că acest lucru prin pentru tine, și ceea ce 563 00:27:33,720 --> 00:27:37,170 Am de gând să spun aici, sub index este faptul că domeniul meu de identitate 564 00:27:37,170 --> 00:27:41,149 va fi principalul mod de identificarea utilizatorilor în această bază de date. 565 00:27:41,149 --> 00:27:42,940 Eu nu am de gând să cred de Zamyla ca Zamyla, 566 00:27:42,940 --> 00:27:45,800 Am de gând să se gândească la ei ca numărul 6. 567 00:27:45,800 --> 00:27:49,814 >> De ce este, probabil, mai bine intuitiv să se gândească la și modelul 568 00:27:49,814 --> 00:27:52,480 fiecare dintre rânduri individuale, utilizând un număr în loc de ceva 569 00:27:52,480 --> 00:27:56,480 ca un șir de caractere, cum ar fi Zamyla sau Gabe sau șir mai lung încă? 570 00:27:56,480 --> 00:27:57,444 Da? 571 00:27:57,444 --> 00:28:00,117 >> Audiența: Un ID este unic? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: Spune din nou? 573 00:28:01,200 --> 00:28:02,283 Audiența: Un ID este unic? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: Un ID este unic, dar suppose-- 575 00:28:04,400 --> 00:28:06,320 după caz, în general cu nume de utilizator, să presupunem 576 00:28:06,320 --> 00:28:10,110 De asemenea, am spus nu poate exista decât un singur Zamyla în lume, și doar un singur Gabe. 577 00:28:10,110 --> 00:28:13,730 Aș putea impune unicitatea constrângere pe siruri de caractere, de asemenea, în cazul în care mi-am dorit. 578 00:28:13,730 --> 00:28:15,550 Deci, nu un gând rău. 579 00:28:15,550 --> 00:28:16,500 >> Audiența: Mai sigur. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Mai sigur, de ce? 581 00:28:17,874 --> 00:28:20,705 Audiența: Nu pot spune care este care, la fel ca în utilizatorul. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, tu Nu pot spune ce utilizator 583 00:28:22,580 --> 00:28:24,380 este care deci nu e un aspect intimitate la el, 584 00:28:24,380 --> 00:28:27,810 mai ales dacă ID-urile poate care apare în adresele URL. 585 00:28:27,810 --> 00:28:29,960 Deci, sigur, că ar putea fel de muncă, de asemenea. 586 00:28:29,960 --> 00:28:30,640 Alte gânduri? 587 00:28:30,640 --> 00:28:31,383 Da? 588 00:28:31,383 --> 00:28:34,316 >> Audiența: Este mai ușor să efectua operațiuni pe un int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. MALAN: Asta e fotbalist adevărat. 590 00:28:35,940 --> 00:28:38,850 E doar mai eficient, sau mai ușor pentru calculator, 591 00:28:38,850 --> 00:28:40,431 de a efectua operațiuni pe un întreg. 592 00:28:40,431 --> 00:28:40,930 Dreapta? 593 00:28:40,930 --> 00:28:43,905 Un int este garantat de fie pe 32 de biți, în timp ce Zamyla 594 00:28:43,905 --> 00:28:47,660 este de câteva caractere, Gabriel este o câteva caractere, 595 00:28:47,660 --> 00:28:51,930 Davenport este foarte lung, și deci este nu deosebit de eficient de a utiliza 596 00:28:51,930 --> 00:28:55,860 siruri de caractere pentru a compara valorile si uita-te pentru câmpuri și câmpuri de actualizare, 597 00:28:55,860 --> 00:28:57,790 dacă puteți obține departe cu doar un singur număr întreg. 598 00:28:57,790 --> 00:28:59,090 Doar 32 de biți. 599 00:28:59,090 --> 00:29:02,570 Deci, nume de utilizator, de asemenea, în acest fel, nu trebuie să fie unic, 600 00:29:02,570 --> 00:29:05,040 deși, probabil, ar trebui fi, și de asemenea chiar și în acest fel 601 00:29:05,040 --> 00:29:07,520 un utilizator ar putea permite să schimba numele de utilizator lui sau a ei. 602 00:29:07,520 --> 00:29:10,810 >> Așa că haideți să lăsăm acum acest lucru ca mijloc principal de identificare a utilizatorului. 603 00:29:10,810 --> 00:29:13,510 Acest lucru este de a spune în baza de date mergeți mai departe și de a optimiza te 604 00:29:13,510 --> 00:29:17,065 astfel încât look up-uri pe ID sunt super rapid. 605 00:29:17,065 --> 00:29:19,620 AI, oribil pe nume, doar înseamnă Auto Increment, 606 00:29:19,620 --> 00:29:21,500 și aceasta este cecul caseta avem nevoie pentru a verifica 607 00:29:21,500 --> 00:29:24,614 să se precizeze că domeniul de identitate pentru a fi actualizate automat pentru mine, 608 00:29:24,614 --> 00:29:26,530 și apoi am de gând să derulați la dreapta aici 609 00:29:26,530 --> 00:29:29,279 si sincer eu nu sunt cu adevarat interesati în orice mai multe din aceste domenii. 610 00:29:29,279 --> 00:29:30,630 Desigur, nu azi. 611 00:29:30,630 --> 00:29:33,770 >> Așa că am de gând să mă întorc aici, pentru prima coloană, unde 612 00:29:33,770 --> 00:29:35,830 Trebuie să se precizeze numele de utilizator și hash, și să 613 00:29:35,830 --> 00:29:38,080 cel puțin FOCUS PE în al doilea rând una de acum. 614 00:29:38,080 --> 00:29:41,498 Int nu este, probabil, apelul dreapta, deci ceea ce face mai mult sens poate? 615 00:29:41,498 --> 00:29:42,741 >> Audiența: Text. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: Spune din nou? 617 00:29:43,824 --> 00:29:44,710 Audiența: Text. 618 00:29:44,710 --> 00:29:44,980 DAVID J. MALAN: Text? 619 00:29:44,980 --> 00:29:45,590 OK, am auzit text. 620 00:29:45,590 --> 00:29:46,090 Ce altceva? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Avem un fel de o grămadă de alegeri care sunt textuale în natură. 623 00:29:53,860 --> 00:29:55,990 Așa că, atunci când, și de ce, nu utilizați unele dintre acestea? 624 00:29:55,990 --> 00:29:59,560 Ei bine char, contrar a ceea ce s-ar putea cred, nu este un singur caracter. 625 00:29:59,560 --> 00:30:01,550 E un anumit număr de caractere. 626 00:30:01,550 --> 00:30:04,600 Deci, dacă știm că toate numele de utilizator trebuie să fie ca opt caractere, 627 00:30:04,600 --> 00:30:08,490 cum obisnuia sa fie comun în vârstă sisteme de calcul, am putea spune char 628 00:30:08,490 --> 00:30:09,830 și apoi am putea spune 8 aici. 629 00:30:09,830 --> 00:30:12,930 Asta e atunci când coloana a treia devine aplicabil la crearea unui tabel. 630 00:30:12,930 --> 00:30:15,450 >> Dar asta e un fel de enervant pentru că unii oameni s-ar putea 631 00:30:15,450 --> 00:30:17,660 doriți să aveți un nume de utilizator mai mult mult de opt caractere, 632 00:30:17,660 --> 00:30:19,743 unii oameni ar putea dori să au un nume de utilizator mai scurtă, 633 00:30:19,743 --> 00:30:22,210 așa că de ce mă angajez la un anumit număr? 634 00:30:22,210 --> 00:30:24,710 De ce nu au o variabilă numărul de caractere și doar 635 00:30:24,710 --> 00:30:28,580 spune că lungimea maximă a unui nume este, nu stiu, ca 64 de caractere. 636 00:30:28,580 --> 00:30:31,780 Nu mă pot gândi la orice prieteni care au nume lungi de 64 de caractere, 637 00:30:31,780 --> 00:30:34,810 și chiar dacă asta e prea scurt ai putea cu siguranță ciocni sus arbitrar. 638 00:30:34,810 --> 00:30:37,330 >> Deci, varchar este o variabilă numărul de caractere. 639 00:30:37,330 --> 00:30:41,010 Text nu este un instinct rău, și sincer la fel de bine face ceea ce spune, 640 00:30:41,010 --> 00:30:45,460 dar un câmp de text poate fi ca 65.000 de bytes cel puțin. 641 00:30:45,460 --> 00:30:50,790 Asta e, probabil, nejustificată de câmp, și, de fapt, Da, 65,535. 642 00:30:50,790 --> 00:30:53,740 Asta e, probabil, nejustificată de nume, așa că vom lipi, de obicei, 643 00:30:53,740 --> 00:30:56,910 cu varchars pentru textual câmp și hash, de asemenea. 644 00:30:56,910 --> 00:30:59,990 Hash, se pare, am putea face o varchar fel de bine sau ceva de genul asta, 645 00:30:59,990 --> 00:31:03,080 dar nu ne vom concentra astăzi cu privire la criptografie acolo și numerele 646 00:31:03,080 --> 00:31:05,210 pe care le-ar putea de fapt doriți să utilizați pentru lungimea sa. 647 00:31:05,210 --> 00:31:07,430 >> Dar permiteți-mi să defilați în jos la dreapta. 648 00:31:07,430 --> 00:31:11,280 Puteți avea doar un singur index primar pentru un tabel, 649 00:31:11,280 --> 00:31:16,380 dar nu vreau să se aplice oricare dintre acestea, acum, la numele de utilizator, ați spune? 650 00:31:16,380 --> 00:31:21,980 Ce ar trebui să username trebui să se bazeze pe un vag înțelegere a acestor patru opțiuni? 651 00:31:21,980 --> 00:31:23,340 Doar prin numele lor? 652 00:31:23,340 --> 00:31:24,140 >> Audiența: Unic. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. MALAN: Deci unic, nu? 654 00:31:25,100 --> 00:31:28,190 Deci, se dovedește că nu numai ar putea să vă spun o bază de date, în prealabil, 655 00:31:28,190 --> 00:31:30,380 aceasta este calea principală de identificare câmpuri. 656 00:31:30,380 --> 00:31:32,990 Se poate spune, de asemenea, acest lucru este Va fi un câmp unic. 657 00:31:32,990 --> 00:31:34,700 Aceasta nu va fi lucru pe care se bazează pe, 658 00:31:34,700 --> 00:31:38,490 dar aș dori baza de date a în esență, că, dacă au condiție, așa 659 00:31:38,490 --> 00:31:42,340 că dacă am încercat vreodată să se înregistreze doi utilizatori cu același nume, 660 00:31:42,340 --> 00:31:44,360 baza de date out plat nu este de gând să mă lase. 661 00:31:44,360 --> 00:31:47,490 Am putea avea un cod suplimentar în PHP care previne fel de mult, 662 00:31:47,490 --> 00:31:50,640 dar baza de date, de asemenea, poate asigura că niciodată nu se va întâmpla. 663 00:31:50,640 --> 00:31:53,370 >> Acum, ca o parte, mai ales ca ai despre proiectele finale, 664 00:31:53,370 --> 00:31:57,030 tineti minte index ea și complet Text sunt de fapt destul de util. 665 00:31:57,030 --> 00:32:01,080 Dacă aveți o bază de date mai mare, nu cu zeci, dar cu sute sau mii 666 00:32:01,080 --> 00:32:05,270 sau chiar milioane de domenii, puteți spune, de asemenea, baza de date în avans 667 00:32:05,270 --> 00:32:07,980 acesta este un domeniu am de gând care urmează să fie căutarea pe un lot. 668 00:32:07,980 --> 00:32:10,520 Poate că numele de utilizator sale, poate e bio, dacă ești 669 00:32:10,520 --> 00:32:13,750 a face un site web pe Facebook, cum ar fi faptul că are alineatele ca utilizator este permis 670 00:32:13,750 --> 00:32:16,799 pentru a salva, și, dacă doriți să spune bazei de date în avans 671 00:32:16,799 --> 00:32:20,090 Am de gând să fie în căutarea pe acest domeniu o mulțime, dar nu este neapărat unic, 672 00:32:20,090 --> 00:32:22,800 puteți specifica crea mi un index. 673 00:32:22,800 --> 00:32:27,990 Sau, se poate spune, de asemenea, permiteți-mi să fac un fel de căutări arbitrare, cum ar fi Command 674 00:32:27,990 --> 00:32:30,420 sau de control F, ca tine s-ar putea într-un procesor de text, 675 00:32:30,420 --> 00:32:34,184 deci ai putea sa te uiti siruri de caractere arbitrare sau siruri de caractere in acest domeniu. 676 00:32:34,184 --> 00:32:36,600 Cu alte cuvinte, ne apropiem la punctul în semestrul 677 00:32:36,600 --> 00:32:40,720 în cazul în care nu trebuie să vă faceți griji cu privire la cum să pună în aplicare lucrurile în mod eficient. 678 00:32:40,720 --> 00:32:44,540 Trebuie doar sa stii despre ce deciziile de design pentru a face în așa fel încât tu ești 679 00:32:44,540 --> 00:32:48,470 folosind instrumentele potrivite pentru Comert cu scopul de a mobiliza caracteristici 680 00:32:48,470 --> 00:32:50,380 ca alte persoane s-au construit pentru tine. 681 00:32:50,380 --> 00:32:54,240 Deci, pentru a recapitulare, primar ar trebui doar au unul, puteți avea doar una, 682 00:32:54,240 --> 00:32:59,630 și e un lucru ce te angaja în utilizați pentru a identifica domeniile unic. 683 00:32:59,630 --> 00:33:02,710 Unic este doar similară în spirit, dar s-ar putea doar ocazional-l folosească, 684 00:33:02,710 --> 00:33:04,530 dar doriți baza de date pentru a impune. 685 00:33:04,530 --> 00:33:08,050 Indicele înseamnă doar preventiv accelera lucrurile în viitor 686 00:33:08,050 --> 00:33:10,230 astfel încât să pot căuta lucruri în acest domeniu. 687 00:33:10,230 --> 00:33:13,700 Și apoi textul integral este, în general, pentru paragrafe, sau eseuri, sau organismele de mari dimensiuni 688 00:33:13,700 --> 00:33:16,270 de text în cazul în care s-ar putea dori, de asemenea, să aibă 689 00:33:16,270 --> 00:33:19,420 Carduri sălbatice, cum ar fi echivalentul de stele. 690 00:33:19,420 --> 00:33:19,920 Dreapta. 691 00:33:19,920 --> 00:33:22,580 >> Astfel că a fost un fel de o mulțime de toate odată. 692 00:33:22,580 --> 00:33:25,220 Să vedem dacă nu putem distilarea o pereche de aceste caracteristici 693 00:33:25,220 --> 00:33:29,540 și apoi construi ceva destul de simplu, dar puternic. 694 00:33:29,540 --> 00:33:31,380 Deci, printre celălalt deciziile de design esti 695 00:33:31,380 --> 00:33:34,005 în cele din urmă de gând să aibă de-a lungul este liniile de motoare de stocare. 696 00:33:34,005 --> 00:33:37,370 Și să-mi face doar o mentiune a acestui în anticiparea unor proiecte finale, 697 00:33:37,370 --> 00:33:42,020 și anticiparea Să say-- nu să facă acest lucru. 698 00:33:42,020 --> 00:33:43,820 Să construim acest mic aplicare în primul rând. 699 00:33:43,820 --> 00:33:48,070 Am de gând să merg în terminalul meu fereastră, și aici nu este 700 00:33:48,070 --> 00:33:52,500 numai counter.php, pe care vom merge acum pentru a scăpa de ca nu mai Germane, 701 00:33:52,500 --> 00:33:54,570 dar avem o grămadă de directoare și prezenta 702 00:33:54,570 --> 00:33:58,080 va fi foarte similare în spirit pentru ceea ce veți vedea în probleme stabilit șapte. 703 00:33:58,080 --> 00:34:00,980 >> Deci, avem trei directoare include publice și template-uri, care 704 00:34:00,980 --> 00:34:05,040 Este exact unde am rămas pe Luni cu întreaga noastră paradigmă MVC. 705 00:34:05,040 --> 00:34:09,290 Și pentru recapitulare, în public este de gând să meargă orice fișier pe care vreau utilizatori la realitate 706 00:34:09,290 --> 00:34:12,969 v posibilitatea de a vizita în Browser-ul lor, prin intermediul URL. 707 00:34:12,969 --> 00:34:13,502 Template. 708 00:34:13,502 --> 00:34:14,710 Ce am pus in template-uri? 709 00:34:14,710 --> 00:34:17,070 Ce fel de lucruri? 710 00:34:17,070 --> 00:34:21,659 Nu a fost mult, dar un cuplu Fișierele cel puțin pe luni. 711 00:34:21,659 --> 00:34:22,619 Da. 712 00:34:22,619 --> 00:34:23,100 >> Audiența: Antet și subsol? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: antet și subsol. 714 00:34:24,516 --> 00:34:26,679 Deci avem ceva asemănător astăzi, de asemenea. 715 00:34:26,679 --> 00:34:30,330 Avem câteva mai multe fișiere, dar Subsol Văd, văd Antet, 716 00:34:30,330 --> 00:34:31,909 și apoi o grămadă de alte fișiere. 717 00:34:31,909 --> 00:34:35,482 Deci, aceasta este echivalentul consideră V MVC, care, 718 00:34:35,482 --> 00:34:37,690 din nou, va fi un pic mai mult clar în problema stabilit șapte, 719 00:34:37,690 --> 00:34:40,380 dar acest lucru este doar un dosar am pune o mulțime de estetica mele. 720 00:34:40,380 --> 00:34:42,840 O mulțime de HTML meu, o mulțime de forme mele. 721 00:34:42,840 --> 00:34:46,899 Intre timp, include, este un alt director care are aceste trei dosare 722 00:34:46,899 --> 00:34:48,440 și haideți să aruncăm o scurtă privire la acestea. 723 00:34:48,440 --> 00:34:51,699 >> Am de gând să merg mai departe și deschide config.php. 724 00:34:51,699 --> 00:34:54,610 După cum se pare, mult ca mai devreme în termen, 725 00:34:54,610 --> 00:34:57,850 ați inclus ascuțite CS50 dot h cu pset7. 726 00:34:57,850 --> 00:35:00,780 În exemplul de azi, ai de gând pentru a face echivalentul a care 727 00:35:00,780 --> 00:35:03,600 cu o declarație necesită că în mod eficient 728 00:35:03,600 --> 00:35:05,340 include aceste mai multe linii. 729 00:35:05,340 --> 00:35:08,225 Deci, să fie clar, aceasta este un fișier numit config.php. 730 00:35:08,225 --> 00:35:09,350 Și observați ce face. 731 00:35:09,350 --> 00:35:11,970 Se pare că face ceva cotitură pe mesaje criptice, de eroare 732 00:35:11,970 --> 00:35:13,680 astfel încât să le puteți vedea în browser-ul. 733 00:35:13,680 --> 00:35:15,860 Este, deci, aparent care necesită alte două fișiere 734 00:35:15,860 --> 00:35:19,530 astfel încât aceasta este ca # include în C, iar apoi acesta ne-am văzut, 735 00:35:19,530 --> 00:35:22,720 și ne-am bazat pe, aceasta se transformă pe care cosul de cumparaturi ca funcționalitate. 736 00:35:22,720 --> 00:35:25,610 >> Acest lucru înseamnă un testament cookie fie trimise înainte și înapoi. 737 00:35:25,610 --> 00:35:27,290 Deci, de ce este acest interesant? 738 00:35:27,290 --> 00:35:32,460 Ei bine, dacă ne întoarcem la acest director și deschide, de exemplu, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Observați că PHP are constante de sprijin, nu e destul ca #define în C. 741 00:35:38,840 --> 00:35:41,290 În schimb, literalmente spune definit, și aviz 742 00:35:41,290 --> 00:35:44,110 care le-am stocat în avans patru constante în acest dosar. 743 00:35:44,110 --> 00:35:47,020 Una pentru baza de date de astăzi, pentru parola, pentru numele meu de utilizator, 744 00:35:47,020 --> 00:35:48,690 și pentru numele serverului. 745 00:35:48,690 --> 00:35:51,644 Deci, acestea sunt de fapt vor fi destul de asemănătoare în probleme stabilit șapte. 746 00:35:51,644 --> 00:35:54,560 Și, în fine, și acest lucru este în cazul în care eu sunt mergi la a lua putea funcționa frumos 747 00:35:54,560 --> 00:35:59,000 de personal, în functions.php este o grămadă de cod care le-am scris, 748 00:35:59,000 --> 00:36:01,040 și am furat o parte din aceasta de problemă seta șapte 749 00:36:01,040 --> 00:36:05,920 pentru ziua de azi, care face o gramada de lucruri și hai să uităm la unul dintre ei 750 00:36:05,920 --> 00:36:07,270 în special. 751 00:36:07,270 --> 00:36:09,720 Această funcție aici, interogare, va fi 752 00:36:09,720 --> 00:36:13,600 funcția PHP numim în scopul de a executa SQL. 753 00:36:13,600 --> 00:36:16,070 Acum o clipă am fost utilizați phpMyAdmin, dar asta e doar 754 00:36:16,070 --> 00:36:18,720 de fel de scopuri de învățare și în scopuri de diagnosticare 755 00:36:18,720 --> 00:36:20,494 și uitând set de bază de date. 756 00:36:20,494 --> 00:36:22,660 Când utilizați efectiv ta baze de date, tu, omul, 757 00:36:22,660 --> 00:36:24,100 sunt, evident, nu vor care urmează să fie trăgând în sus un web 758 00:36:24,100 --> 00:36:25,740 pagina de fiecare dată când cineva înregistrează. 759 00:36:25,740 --> 00:36:29,870 Ai de gând să scrie cod care inserții și șterge utilizatori la cerere, 760 00:36:29,870 --> 00:36:32,490 și vom face acest lucru prin intermediul funcției de interogare. 761 00:36:32,490 --> 00:36:35,360 Dacă acum am defila în jos, nu e O să fie câteva caracteristici. 762 00:36:35,360 --> 00:36:37,170 Redirecționare este de gând să o funcție am scris 763 00:36:37,170 --> 00:36:40,160 pentru tine, care vă permite să trimite utilizatorul la o altă adresă URL, 764 00:36:40,160 --> 00:36:43,780 și face este o funcție, cum ar fi destul am văzut, luni, că, de fapt face 765 00:36:43,780 --> 00:36:48,000 un șablon, ci mai mult pe acestea în formă de pset7 propriu plimbare prin. 766 00:36:48,000 --> 00:36:50,500 Pentru moment, să mergem mai departe și de a face acest lucru. 767 00:36:50,500 --> 00:36:54,860 >> Lasă-mă să intru în masa mea prelegeri și a se vedea că nu există în prezent nimic 768 00:36:54,860 --> 00:36:59,640 aici doar încă, și lasă-mă să merg, de asemenea, în directorul mea publică, în cazul în care 769 00:36:59,640 --> 00:37:02,780 există doar un singur fișier, index.php. 770 00:37:02,780 --> 00:37:06,920 Acest fișier pare a fi foarte simplu în acest moment, se pare ca aceasta. 771 00:37:06,920 --> 00:37:09,110 Foarte mult ca modul în care ne rămas pe luni. 772 00:37:09,110 --> 00:37:11,945 Sunt necesită acest fișier, config.php, care este în 773 00:37:11,945 --> 00:37:15,160 o include director, care este în dot dot, părinții mei, 774 00:37:15,160 --> 00:37:17,650 și apoi e doar făcând acest fișier. 775 00:37:17,650 --> 00:37:18,960 Deci, ce este acest fișier? 776 00:37:18,960 --> 00:37:24,700 >> Să deschidem în șabloane mele form.php, și vom vedea acest lucru. 777 00:37:24,700 --> 00:37:28,500 Super-simplu, se pare că această formă este O să prezinte de o _GET $ _POST sau $. 778 00:37:28,500 --> 00:37:29,320 Check bun-simț rapid. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Literalmente de căutare vizual dosar. 781 00:37:35,690 --> 00:37:36,610 Metoda este egal cu mesaj. 782 00:37:36,610 --> 00:37:39,280 Asa ca nu va utiliza adresa URL, cum ar fi Google nu, o să sortați din piele 783 00:37:39,280 --> 00:37:41,030 informațiile din spatele scenele și este 784 00:37:41,030 --> 00:37:43,580 de gând să prezinte o fișier numit register.php, 785 00:37:43,580 --> 00:37:45,660 și asta e dosarul încă nu am scris 786 00:37:45,660 --> 00:37:47,610 dar ceea ce acest lucru se întâmplă pentru a arata ca este aceasta. 787 00:37:47,610 --> 00:37:52,670 >> Dacă mă duc la o pagină separată Acest lucru este ceea ce localhost / index.php arată. 788 00:37:52,670 --> 00:37:56,930 Și din nou, a serverului doar asumarea index.php. 789 00:37:56,930 --> 00:37:57,910 Enter. 790 00:37:57,910 --> 00:37:59,870 Deci, asta e în cazul în care suntem la, și ceea ce vreau să fac 791 00:37:59,870 --> 00:38:02,450 Se putea să tastați lucruri cum ar fi David, și apoi 792 00:38:02,450 --> 00:38:08,050 numărul meu de telefon, care va spune 617-555-1212 pentru acum, inscrieti- 793 00:38:08,050 --> 00:38:09,910 iar acum register.php nu a fost găsit. 794 00:38:09,910 --> 00:38:11,440 Așa că am nevoie să pună în aplicare acest lucru. 795 00:38:11,440 --> 00:38:13,320 Deci, haideți să bici rapid ceva de genul asta. 796 00:38:13,320 --> 00:38:18,640 Lasă-mă să intru în directorul meu publice și de a face gedit de register.php, 797 00:38:18,640 --> 00:38:22,300 și acum am de gând să merg mai departe și porni modul PHP, așa cum am făcut-o, luni, 798 00:38:22,300 --> 00:38:25,430 și tag-ul aproape PHP, și hai sa facem o serie de lucruri. 799 00:38:25,430 --> 00:38:28,336 >> Deci, un, eu știu, de la au scris că forma, 800 00:38:28,336 --> 00:38:29,960 că vreau să verificați următoarele. 801 00:38:29,960 --> 00:38:35,670 În cazul în care este gol, indiferent de utilizatorul tastat în câmpul de nume, atunci 802 00:38:35,670 --> 00:38:39,860 Am de gând să spun ceva ca cer scuze lipsesc nume. 803 00:38:39,860 --> 00:38:42,380 Cerem scuze, între timp, este nu o construit în PHP lucru, 804 00:38:42,380 --> 00:38:45,970 este o funcție am scris în functions.php pentru pset7 805 00:38:45,970 --> 00:38:47,940 astfel încât să aveți acces la ea. 806 00:38:47,940 --> 00:38:53,830 Altfel în cazul în care celălalt câmp este gol, număr, atunci eu sunt 807 00:38:53,830 --> 00:38:58,370 O să-mi cer scuze la utilizator și spune numărul lipsă. 808 00:38:58,370 --> 00:38:59,320 Salvați acest fișier. 809 00:38:59,320 --> 00:39:02,640 >> Acum, să ne întoarcem la browser-ul meu, du-te înapoi la forumul încercați din nou. 810 00:39:02,640 --> 00:39:04,070 Inregistreaza-te. 811 00:39:04,070 --> 00:39:05,090 OK. 812 00:39:05,090 --> 00:39:06,730 Nu sa întâmplat nimic, ceea ce este bine. 813 00:39:06,730 --> 00:39:08,120 Nu am primit un mesaj de eroare. 814 00:39:08,120 --> 00:39:11,651 Dar, dacă în schimb, să reîncărcați această pagină, și nu oferi nimic. 815 00:39:11,651 --> 00:39:12,150 La naiba. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Face asta. 818 00:39:17,140 --> 00:39:18,810 Inregistreaza-te. 819 00:39:18,810 --> 00:39:20,350 Ce am gresit? 820 00:39:20,350 --> 00:39:24,860 În cazul în gol, nume $ _POST. 821 00:39:24,860 --> 00:39:26,350 Spune din nou? 822 00:39:26,350 --> 00:39:27,670 >> Oh, desigur. 823 00:39:27,670 --> 00:39:30,919 Am uitat partea cea mai importantă, care este nevoie ("../ include / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Am nevoie pentru a avea acces la Funcția cerem scuze, ceea ce 826 00:39:36,460 --> 00:39:37,770 De aceea, nimic nu se intampla. 827 00:39:37,770 --> 00:39:39,460 Funcția nu există în realitate. 828 00:39:39,460 --> 00:39:40,640 Așa că haideți să mai încercăm o dată. 829 00:39:40,640 --> 00:39:42,350 Să reîncărca pagina, faceți clic pe Register. 830 00:39:42,350 --> 00:39:43,060 OK. 831 00:39:43,060 --> 00:39:43,770 Acolo este. 832 00:39:43,770 --> 00:39:45,700 Așa că, de ieșire suntem vedeți aici este rezultatul 833 00:39:45,700 --> 00:39:47,685 a convoca un cer scuze funcție, super-simplu, 834 00:39:47,685 --> 00:39:50,060 și doar imprimă indiferent L-am da ca argument. 835 00:39:50,060 --> 00:39:51,370 >> În regulă, deci hai să coopereze. 836 00:39:51,370 --> 00:39:54,240 Să furnizeze numele meu cum ar fi David, inscrieti-, 837 00:39:54,240 --> 00:39:56,890 lipsă număr OK Să prevăd că, de asemenea. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Inregistreaza-te. 840 00:39:59,250 --> 00:39:59,750 OK. 841 00:39:59,750 --> 00:40:02,760 Deci, totul este bine acum, doar nimic interesant se întâmplă. 842 00:40:02,760 --> 00:40:06,000 Deci, acum hai să facem ceva mai mult se întâmplă interesant ca aceasta. 843 00:40:06,000 --> 00:40:09,980 Lasă-mă să intru în phpMyAdmin, și să de fapt, a crea un tabel numit utilizatori, 844 00:40:09,980 --> 00:40:12,330 Am de gând să-l dea trei coloane, iar eu voi repede 845 00:40:12,330 --> 00:40:16,250 a crea ID-ul, și apoi numele, apoi numărul, 846 00:40:16,250 --> 00:40:18,832 și câmpul ID eu sunt de gând să plece ca un int. 847 00:40:18,832 --> 00:40:20,790 Câmpul nume am de gând să lase ca un varchar, 848 00:40:20,790 --> 00:40:23,257 și vom spune 64, oarecum arbitrar. 849 00:40:23,257 --> 00:40:25,090 Numărul Mă duc pentru a face, știi ce? 850 00:40:25,090 --> 00:40:27,350 Mergem în sprijini numere din SUA aici, 851 00:40:27,350 --> 00:40:31,510 așa că am de gând să fac ceva cum ar fi char și apoi 10 de caractere 852 00:40:31,510 --> 00:40:34,540 max pentru un cod de zonă și apoi șapte cifre. 853 00:40:34,540 --> 00:40:37,870 Și apoi aici, am de gând să specifica auto increment acest domeniu, 854 00:40:37,870 --> 00:40:40,550 face acest lucru o cheie primară, și Am de gând să merg mai departe și nu 855 00:40:40,550 --> 00:40:42,240 verifica oricare dintre aceste alte cutii. 856 00:40:42,240 --> 00:40:48,030 >> Așa că, atunci când faceți clic pe acum am în sfârșit pe Salvare, și mă întorc la masa de utilizatori mea, 857 00:40:48,030 --> 00:40:52,270 aceasta este ceea ce se pare ca daca am acum faceți clic pe o structură Filă nouă. 858 00:40:52,270 --> 00:40:54,550 Deci, acest lucru, să fie clar, este doar un fel de phpMyAdmin 859 00:40:54,550 --> 00:40:58,570 de a spune masa ta de baze de date are o identitate, un nume, și un număr 860 00:40:58,570 --> 00:41:02,040 cu acele configurații particulare și vom ignora restul domeniilor 861 00:41:02,040 --> 00:41:03,140 acolo pentru acum. 862 00:41:03,140 --> 00:41:04,810 >> Deci, acum ce vreau să fac? 863 00:41:04,810 --> 00:41:09,060 Deci, dacă mă duc acum în mea codul sursă, dacă totul este bine 864 00:41:09,060 --> 00:41:11,190 Vreau să execute următoarea interogare. 865 00:41:11,190 --> 00:41:14,970 Introduceți în, și eu pot doar spun utilizatorii Eu nu fac strict 866 00:41:14,970 --> 00:41:18,620 au nevoie de cele înapoi căpușe dacă e nu un cuvânt periculos ca utilizatorii. 867 00:41:18,620 --> 00:41:22,810 Am de gând să spun numele, număr, iar apoi aici am 868 00:41:22,810 --> 00:41:24,960 nu merge cu codul greu Format din cinci cifre valorilor încă. 869 00:41:24,960 --> 00:41:26,760 Am de gând să pun două semne de întrebare. 870 00:41:26,760 --> 00:41:29,320 Și aceasta este o convenție în mai multe limbi 871 00:41:29,320 --> 00:41:31,730 prin care, dacă doriți să aveți un înlocuitor pentru un șir 872 00:41:31,730 --> 00:41:34,105 ai de gând să folosească întrebare mărci, pentru motive pe care le vom 873 00:41:34,105 --> 00:41:36,370 vin înapoi pentru a vorbi despre securitate, și aici 874 00:41:36,370 --> 00:41:39,420 Am de gând să treacă în cele două câmpuri posta numele, 875 00:41:39,420 --> 00:41:44,850 și apoi introduceți un număr, iar acum salvați fișierul. 876 00:41:44,850 --> 00:41:47,090 >> Și acum am de gând să du-te jos de aici este un super- 877 00:41:47,090 --> 00:41:55,690 spune pur și simplu rendersuccess.php, care va fi un alt șablon. 878 00:41:55,690 --> 00:41:57,380 Am de gând pentru a crea foarte repede. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php și Mă duc să spun succes H1 în acel dosar. 880 00:42:06,270 --> 00:42:06,990 Bine. 881 00:42:06,990 --> 00:42:11,312 Deci, acum, să ne întoarcem la Browser-ul, unde am vizitat înainte. 882 00:42:11,312 --> 00:42:14,270 Să mergem mai departe și să confirmați am scris David, am scris într-un număr de telefon, 883 00:42:14,270 --> 00:42:15,390 înregistrați. 884 00:42:15,390 --> 00:42:16,100 La naiba. 885 00:42:16,100 --> 00:42:17,420 Ce am gresit? 886 00:42:17,420 --> 00:42:20,850 Deci, eu văd o eroare aici, au o eroare în sintaxa SQL. 887 00:42:20,850 --> 00:42:24,900 Lasă-mă să sar înapoi la gedit, să mă să mă întorc la register.php, 888 00:42:24,900 --> 00:42:28,830 și ceea ce am omite faptul că a fost important ultima dată? 889 00:42:28,830 --> 00:42:29,722 Am nevoie de acest lucru. 890 00:42:29,722 --> 00:42:32,930 Vrei să știi că, altele decât din având în observat înainte, dar am nevoie de acest lucru. 891 00:42:32,930 --> 00:42:35,596 >> Deci, acum hai să mergem înapoi, iar acest lucru a fost de ajutor pentru a vedea în browser-ul 892 00:42:35,596 --> 00:42:37,680 și de aceea în config.php ne-am scuipat erori. 893 00:42:37,680 --> 00:42:41,770 Să mergem mai departe și să reîncărcați, faceți clic pe Continuare, succes. 894 00:42:41,770 --> 00:42:47,060 Deci, acum lasă-mă să merg pe la meu baza de date aici și faceți clic pe Utilizatori, 895 00:42:47,060 --> 00:42:51,680 și căuta, și observați eu acum Trebuie David în baza mea de date aici. 896 00:42:51,680 --> 00:42:55,810 Acum, punct de vedere tehnic acest site care nu sunt încă pe internet publice, 897 00:42:55,810 --> 00:42:57,890 asa ca nu pot avea alte oameni în a pune aici, 898 00:42:57,890 --> 00:43:01,120 dar dacă aș vrea acum să, pentru exemplu, mă trimite un mesaj text. 899 00:43:01,120 --> 00:43:03,920 Să mergem pe un diavol aici și a vedea dacă aceasta funcționează de fapt. 900 00:43:03,920 --> 00:43:07,331 Am de gând să merg mai departe și șterge acest rând 901 00:43:07,331 --> 00:43:09,080 și vom estompa aceasta în video mai târziu 902 00:43:09,080 --> 00:43:11,900 deci nu avem Întreaga internet îmi trimitea mesaje, 903 00:43:11,900 --> 00:43:17,270 și vom merge acum până la Browser-ul și vom merge pe la prelegere 904 00:43:17,270 --> 00:43:22,040 și vom introduce în diferite Numărul de aici, inscrieti-, succes. 905 00:43:22,040 --> 00:43:25,550 >> Deci, acum, propria ta numărul este probabil în baza de date, iar acum partea distractivă. 906 00:43:25,550 --> 00:43:28,774 Să folosim de fapt PHP pentru a face ceva programatic, 907 00:43:28,774 --> 00:43:30,940 fie de la comanda line sau din altă parte, 908 00:43:30,940 --> 00:43:32,773 și de acum eu sunt doar de gând să-l păstrați simplu 909 00:43:32,773 --> 00:43:36,230 și am de gând să intru în mea Director aici și procedați în felul următor. 910 00:43:36,230 --> 00:43:44,920 Script gedit să zicem, vom numesc text, #! / user / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 ca și cum am văzut ultima dată. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Acum am de gând să nevoie include config.php, 914 00:43:55,055 --> 00:43:57,360 chiar dacă acest lucru s-ar putea induce o ușoară eroare. 915 00:43:57,360 --> 00:44:03,960 Și acum am de gând să merg mai departe și spune rânduri, interogare, selectați stea de la utilizatori, 916 00:44:03,960 --> 00:44:08,149 iar acum aici am de gând să fac o tehnica de la ultima dată pentru fiecare rânduri ca rând. 917 00:44:08,149 --> 00:44:09,690 Și am de gând să fac ceva simplu. 918 00:44:09,690 --> 00:44:19,090 Printf să spunem că numele este aceasta, iar numărul este aceasta, backslash n. 919 00:44:19,090 --> 00:44:23,320 Și acum am de gând să treacă în rândul cita numele încheiat citatul, 920 00:44:23,320 --> 00:44:28,140 și numărul de rând citat încheiat citatul, și acum să mergem mai departe 921 00:44:28,140 --> 00:44:31,430 și fereastra mea terminale chmod aceasta a + x pentru a face 922 00:44:31,430 --> 00:44:33,970 acest script numit executabil text. 923 00:44:33,970 --> 00:44:36,080 Si acum sa ruleze text. 924 00:44:36,080 --> 00:44:37,590 >> OK, deci progres. 925 00:44:37,590 --> 00:44:39,960 O așa l-am scris acum script linie de comandă, 926 00:44:39,960 --> 00:44:43,300 într-un limbaj numit PHP, care, din cauza că necesită linie, 927 00:44:43,300 --> 00:44:46,380 are acces la toate cele configurație constante pe care am specificat. 928 00:44:46,380 --> 00:44:48,177 Numele bazei de date și așa mai departe. 929 00:44:48,177 --> 00:44:50,260 De fapt, doar pentru a fi clar că aceasta nu este o întâmplare, 930 00:44:50,260 --> 00:44:54,730 lasă-mă să mergeți mai departe și registru, foarte repede, altcineva ca Rob 931 00:44:54,730 --> 00:44:58,890 și îi va da numarul 555-1212. 932 00:44:58,890 --> 00:45:01,557 >> Și acum, dacă am rula scriptul din nou, observați puterea 933 00:45:01,557 --> 00:45:03,140 de ceea ce facem cu baza de date. 934 00:45:03,140 --> 00:45:07,680 Acum l-am văzut imediat ce Celelalte două rânduri sunt în baza mea de date. 935 00:45:07,680 --> 00:45:10,699 Deci, acum, haideți să încercăm să facem ceva chiar crescator interiorul, 936 00:45:10,699 --> 00:45:12,740 iar aceasta este partea ne-am nu a fost testat în prealabil, 937 00:45:12,740 --> 00:45:15,910 astfel ultima dată când am făcut asta lucrurile au mers oribil razna, 938 00:45:15,910 --> 00:45:17,120 Avem videoclip în acest sens. 939 00:45:17,120 --> 00:45:18,286 >> De fapt, da, amuzant deoparte. 940 00:45:18,286 --> 00:45:20,480 Deci, ultima dată, într-o prelegere ca acum doi ani, 941 00:45:20,480 --> 00:45:23,230 ne-am decis, am decis, pentru a fi toate acestea ar fi o idee buna 942 00:45:23,230 --> 00:45:28,150 pentru a genera dinamic e-mailuri în clasă, utilizând întreaga bază de date CS50 943 00:45:28,150 --> 00:45:33,390 studenți, care ne-a dat numerele lor și transportatorii lor telefoane mobile pe care le 944 00:45:33,390 --> 00:45:36,290 s-ar putea retrage de la pset0, cum de a raționa, se pare 945 00:45:36,290 --> 00:45:40,650 Am avut un bug minor în programul meu și a făcut câteva greșeli în 2012, cred. 946 00:45:40,650 --> 00:45:43,997 >> Prin care, o aveam pentru bucla care a făcut exact acest tip de lucru, 947 00:45:43,997 --> 00:45:46,580 iterarea peste baza de date, obtinerea unui nume din baza de date, 948 00:45:46,580 --> 00:45:49,940 numele din baza de date, și apoi la fiecare iterație a buclei am trimis un e-mail. 949 00:45:49,940 --> 00:45:54,130 Dar, în loc de a trimite un e-mail, I a trimis un e-mail la prima iterație, 950 00:45:54,130 --> 00:45:58,200 și două e-mailuri a doua repetare, a trimis trei e-mailuri a doua repetare, care 951 00:45:58,200 --> 00:46:01,230 cum s-ar putea retrage de la noastră discuție de notație asimptotic 952 00:46:01,230 --> 00:46:06,400 O mare de acest rău, ca n pătrat este cât de multe mesaje am trimis, 953 00:46:06,400 --> 00:46:08,560 dar nu a fost chiar e-mailuri a fost mesaje text. 954 00:46:08,560 --> 00:46:12,070 >> Și, după cum știți, participarea nu este foarte mare spre sfârșitul semestrului 955 00:46:12,070 --> 00:46:15,360 și așa m-am gândit că ar fi drăguț la timp pentru a spune, "De ce nu ești de clasă?" 956 00:46:15,360 --> 00:46:17,880 În mesaj text I trimis la întreaga clasă, 957 00:46:17,880 --> 00:46:22,140 și a fost amuzant să-i placă 50% de clasă, dar restul de 50%, dintre care unii 958 00:46:22,140 --> 00:46:26,102 speriat, am trimis incredibil note dulci apologetice 959 00:46:26,102 --> 00:46:28,560 a personalului scuze pentru după ce a ratat curs doar 960 00:46:28,560 --> 00:46:29,530 de data asta, nu? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> Așa că ar fi oribil gresit. 963 00:46:34,030 --> 00:46:37,030 Deci, în acest spirit, să încercăm această din nou, dar doar cu numărul meu. 964 00:46:37,030 --> 00:46:41,940 În prealabil, în functions.php, Am scris această funcție aici. 965 00:46:41,940 --> 00:46:44,250 Se numește text, și-l ia în trei argumente. 966 00:46:44,250 --> 00:46:46,360 Un număr, un purtător, și un mesaj. 967 00:46:46,360 --> 00:46:50,390 >> Sunt folosind o declarație comutator, care minunat PHP lua siruri de caractere, nu doar 968 00:46:50,390 --> 00:46:53,350 numere întregi, și nu a pus în aplicare tot sprijinul pentru acest lucru încă, 969 00:46:53,350 --> 00:46:55,370 Tocmai am făcut AT & T și Verizon. 970 00:46:55,370 --> 00:46:57,610 Pentru ca se pare că cu acești transportatori 971 00:46:57,610 --> 00:47:00,570 ei au de e-mail pentru a gateway SMS, prin care poți de fapt 972 00:47:00,570 --> 00:47:05,529 trimite un e-mail la o adresă cum ar fi numărul de telefon la vtext.com 973 00:47:05,529 --> 00:47:08,070 iar în cazul în care utilizatorul nu a blocat mesajele, acesta va trece prin 974 00:47:08,070 --> 00:47:09,340 este un mesaj text. 975 00:47:09,340 --> 00:47:13,270 >> Acum, pentru a face acest lucru, am de gând să trebuie să adăugați un câmp foarte repede la baza mea de date. 976 00:47:13,270 --> 00:47:15,470 Am de gând să merg în structura mea, și eu sunt 977 00:47:15,470 --> 00:47:21,880 de gând să meargă mai departe și se adaugă o câmp la sfârșitul tabelului. 978 00:47:21,880 --> 00:47:25,227 Să faceți clic pe Start, și eu sunt O să numesc acest transportator 979 00:47:25,227 --> 00:47:27,310 iar de acum am de gând să lăsa acest lucru ca un text bar, 980 00:47:27,310 --> 00:47:29,320 dar putem fi crescator in viitor. 981 00:47:29,320 --> 00:47:31,961 Am de gând să merg repede în masa mea, și eu sunt 982 00:47:31,961 --> 00:47:34,210 de gând să scape de Rob, pentru că este un număr de fals, 983 00:47:34,210 --> 00:47:38,540 Am de gând să merg în edita aici si eu sunt va schimba manual purtător meu 984 00:47:38,540 --> 00:47:43,410 pentru a fi Verizon, care se este, iar acum aici. 985 00:47:43,410 --> 00:47:44,980 >> Să facem o verificare bun-simț rapid. 986 00:47:44,980 --> 00:47:52,730 Să deschidem script-ul nostru de text, care Se pare ca aceasta, purtător este de% s. 987 00:47:52,730 --> 00:47:58,230 Facem o mult mai eroare verificarea decât am făcut-o în 2012, purtător. 988 00:47:58,230 --> 00:48:01,160 Și acum, am de gând să merg înainte și re-rula script-ul. 989 00:48:01,160 --> 00:48:01,660 OK. 990 00:48:01,660 --> 00:48:06,100 Carrier este Verizon, ceea ce înseamnă acum sperăm pot face doar acest lucru. 991 00:48:06,100 --> 00:48:08,360 În mod corect acest an, sperăm, aici vom merge. 992 00:48:08,360 --> 00:48:12,200 >> Deci, în interiorul de acest lucru pentru bucla, eu sunt Va trebui nu numai acest printf, 993 00:48:12,200 --> 00:48:15,990 Am, de asemenea, de gând pentru a apela text și utilizarea acestei funcții rechemare 994 00:48:15,990 --> 00:48:19,670 era nevoie de un număr, o purtător, și un mesaj. 995 00:48:19,670 --> 00:48:23,310 Deci, haideți să vedem, numărul este de gând să fi rândul citat unquote "număr", 996 00:48:23,310 --> 00:48:31,660 rând citat unquote "purtător", iar ultima a fost mesajul. 997 00:48:31,660 --> 00:48:36,250 Nu în bară acest an, punct și virgulă. 998 00:48:36,250 --> 00:48:36,780 >> OK. 999 00:48:36,780 --> 00:48:38,280 Pumnii. 1000 00:48:38,280 --> 00:48:39,970 Să vedem dacă aceasta funcționează. 1001 00:48:39,970 --> 00:48:41,720 Bine, așa. 1002 00:48:41,720 --> 00:48:43,000 Aici vom merge. 1003 00:48:43,000 --> 00:48:47,380 Să debloca telefonul, cruce degetele, la naiba. 1004 00:48:47,380 --> 00:48:50,300 May-- variabila nedefinita oh stai, stai, stai, foarte repede. 1005 00:48:50,300 --> 00:48:51,340 Foarte repede, foarte repede. 1006 00:48:51,340 --> 00:48:53,380 Acest lucru este total meritat. 1007 00:48:53,380 --> 00:48:57,710 Lasă-mă apuca, lasă-mă apuca, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Vă mulțumesc, textele au a pornit de la altcineva. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Lasă-mă să mergeți mai departe și să se deschidă reale rapid, dropbox.php / e-mail aici. 1011 00:49:11,650 --> 00:49:12,660 Regimul de așteptare. 1012 00:49:12,660 --> 00:49:14,455 Total meritat. 1013 00:49:14,455 --> 00:49:17,430 Descărcări. 1014 00:49:17,430 --> 00:49:18,560 OK, sursa src8m. 1015 00:49:18,560 --> 00:49:19,700 OK. 1016 00:49:19,700 --> 00:49:21,380 >> Aveti nevoie de mai mult de o linie de aici. 1017 00:49:21,380 --> 00:49:24,530 Oh, asta e, se află într-Frosh AI, e în registru la trei. 1018 00:49:24,530 --> 00:49:28,820 Oh Bună ziua, Margo, vă mulțumesc foarte mult. 1019 00:49:28,820 --> 00:49:31,130 OK, și am fost lipsește această linie aici. 1020 00:49:31,130 --> 00:49:33,010 Așa că lasă-mă apuca repede această linie de cod, 1021 00:49:33,010 --> 00:49:36,200 care include e-mail sau biblioteca că eu de fapt vreau să utilizeze, 1022 00:49:36,200 --> 00:49:38,300 Am de gând să rapid du-te înapoi în funcții, 1023 00:49:38,300 --> 00:49:42,337 Am de gând să merg la partea de sus a acestei dosar și solicită acest fișier, de asemenea, 1024 00:49:42,337 --> 00:49:45,420 și acum am de gând să treacă într-adevăr mea degetele atunci când mă întorc la comanda 1025 00:49:45,420 --> 00:49:49,530 script linie, care este în interiorul Director gazdă locală de astăzi. 1026 00:49:49,530 --> 00:49:50,610 Textul a alerga. 1027 00:49:50,610 --> 00:49:52,720 Enter. 1028 00:49:52,720 --> 00:49:53,220 Mail. 1029 00:49:53,220 --> 00:49:53,719 Regimul de așteptare. 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 Regimul de așteptare. 1032 00:49:59,600 --> 00:50:01,680 Mail. 1033 00:50:01,680 --> 00:50:02,290 Oh, OK. 1034 00:50:02,290 --> 00:50:03,870 Aici vom merge. 1035 00:50:03,870 --> 00:50:06,880 >> Mail are un nou PHP Mailer. 1036 00:50:06,880 --> 00:50:09,970 Am făcut acest drept? 1037 00:50:09,970 --> 00:50:11,067 La naiba. 1038 00:50:11,067 --> 00:50:12,150 Sa-- oh, stai, stai, stai. 1039 00:50:12,150 --> 00:50:12,649 Stand by. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Promit, acest lucru este Va fi atât de meritat. 1042 00:50:18,630 --> 00:50:20,340 Adresă. 1043 00:50:20,340 --> 00:50:24,390 De aceea, nu fac Exemple de drept înainte de clasă. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 Următorilor destinatari a eșuat. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Să încercăm un ultim lucru. 1048 00:50:33,040 --> 00:50:40,660 SMTP stabilit de la, adaugă adresa, adresa este într-adevăr că. 1049 00:50:40,660 --> 00:50:43,980 Să încercăm această ultimă parte la adresă. 1050 00:50:43,980 --> 00:50:47,210 Aw, eu sunt foarte trist acum. 1051 00:50:47,210 --> 00:50:47,854 Mulțumesc. 1052 00:50:47,854 --> 00:50:50,270 Dar eu chiar apreciez tot textele care le-ați trimis. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Ai această David. 1055 00:50:56,320 --> 00:50:59,310 Ești o suflare. 1056 00:50:59,310 --> 00:51:01,720 Să-l lăsăm acolo și vom stabili pe luni. 1057 00:51:01,720 --> 00:51:04,290 Ne vedem atunci. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: Și acum adâncime Gânduri de Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 În cazul în care un arbore binar se încadrează într-o pădure și nimeni nu este în jurul valorii de la C it-- [chicotind]. 1061 00:51:17,590 --> 00:51:18,998