1 00:00:00,000 --> 00:00:03,920 >> [MUSIC JOC] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. MALAN: În regulă. 4 00:00:13,800 --> 00:00:15,640 Acest lucru este CS50. 5 00:00:15,640 --> 00:00:17,620 Acesta este începutul săptămânii opt. 6 00:00:17,620 --> 00:00:22,440 Și vă amintiți că am rămas Ultima dată se uită la o nouă limbă 7 00:00:22,440 --> 00:00:23,240 cu totul. 8 00:00:23,240 --> 00:00:25,905 De fapt, una care e destul de ușor și nu e chiar 9 00:00:25,905 --> 00:00:26,940 un limbaj de programare. 10 00:00:26,940 --> 00:00:31,100 Este un limbaj de marcare care ne permite structura de fapt și de a face pagini web. 11 00:00:31,100 --> 00:00:33,350 Iar atunci când altceva în legătură cu asta: 12 00:00:33,350 --> 00:00:35,670 sau în curând vei face, dacă nu ați făcut deja. 13 00:00:35,670 --> 00:00:38,530 Am de gând să utilizeze Cascading Foi de stil, sau CSS, care 14 00:00:38,530 --> 00:00:40,971 este un alt tip de limbaj cu proprietăți și valori 15 00:00:40,971 --> 00:00:43,220 care va să ne facem lucrurile se vrea a schimba culoarea 16 00:00:43,220 --> 00:00:46,010 și schimba poziția iar aceste tipuri de trucuri. 17 00:00:46,010 --> 00:00:49,940 Dar astăzi și mai departe, vom începe să se concentreze pe limbi mai puternice, 18 00:00:49,940 --> 00:00:52,810 limbaje de programare actuale, cum ar fi PHP. 19 00:00:52,810 --> 00:00:54,880 >> Deci, PHP a fost în jur de ceva timp. 20 00:00:54,880 --> 00:00:56,810 Și, după cum veți vedea, ea a fost proiectat în primul rând, 21 00:00:56,810 --> 00:01:00,280 timpuriu pentru real utilizați în dezvoltare web 22 00:01:00,280 --> 00:01:02,360 și de fapt, generatoare de pagini web. 23 00:01:02,360 --> 00:01:04,849 Deci, ce tipuri de Caracteristici face o limbă 24 00:01:04,849 --> 00:01:10,040 nevoie pentru a face web Pagini dinamic cu ea? 25 00:01:10,040 --> 00:01:14,760 >> Cu alte cuvinte, dacă vrei să genereze dynamically-- conținut cum ar fi Facebook 26 00:01:14,760 --> 00:01:19,480 Newsfeed, care se schimbă în mod constant, sau mesaje instant care pop-up din timp 27 00:01:19,480 --> 00:01:21,872 a time-- ca ceea ce este piesă cheie de funcționalitate 28 00:01:21,872 --> 00:01:24,580 aveți nevoie într-un limbaj de programare care le-ar permite în mod dinamic 29 00:01:24,580 --> 00:01:28,070 imprima informații noi la ecran? 30 00:01:28,070 --> 00:01:28,685 >> STUDENT: Cod. 31 00:01:28,685 --> 00:01:29,560 DAVID J. MALAN: Cod. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Vom lua asta. 34 00:01:31,995 --> 00:01:35,310 Un pic mai precis. 35 00:01:35,310 --> 00:01:37,639 Adică, am putea face acest lucru cu C, sincer. 36 00:01:37,639 --> 00:01:38,930 Ar fi o durere în gât. 37 00:01:38,930 --> 00:01:41,045 Dar-- este acest angajament? 38 00:01:41,045 --> 00:01:41,895 >> STUDENT: Da. 39 00:01:41,895 --> 00:01:42,677 Variabile, poate? 40 00:01:42,677 --> 00:01:43,760 DAVID J. MALAN: Variabile. 41 00:01:43,760 --> 00:01:44,160 OK, sigur. 42 00:01:44,160 --> 00:01:45,740 Variabile ne poate ajuta cu siguranță. 43 00:01:45,740 --> 00:01:47,020 Și chiar ceva mai simplu. 44 00:01:47,020 --> 00:01:50,640 L-am folosit în prima Programul de prima zi 45 00:01:50,640 --> 00:01:55,686 când de fapt ne-a spus "Hello World". 46 00:01:55,686 --> 00:01:56,570 >> STUDENT: Print. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. MALAN: Print, nu? 48 00:01:57,778 --> 00:02:01,050 Imprimare, sau printf în lume de C. Deci tot acest timp, 49 00:02:01,050 --> 00:02:03,362 am avut la noastre de eliminare a language-- C, 50 00:02:03,362 --> 00:02:05,570 în particular-- și chiar Scratch pentru care contează că 51 00:02:05,570 --> 00:02:07,400 poate genera șiruri de text. 52 00:02:07,400 --> 00:02:11,090 >> Ei bine, în cazul în HTML, așa cum am văzut săptămâna trecută, este doar o grămadă de siruri de caractere textului 53 00:02:11,090 --> 00:02:14,692 deși cu paranteze deschise și închise paranteze și un fel de rimă 54 00:02:14,692 --> 00:02:16,650 și un motiv în spatele ei, Ei bine, atunci am putea într-adevăr 55 00:02:16,650 --> 00:02:20,440 începe generatoare de pagini web, fie manual prin tastarea ei în gedit 56 00:02:20,440 --> 00:02:23,870 sau în Microsoft Word, pentru că matter-- avem nevoie doar de un editor de text. 57 00:02:23,870 --> 00:02:26,830 >> Sau am putea scrie cod, la sugestia 58 00:02:26,830 --> 00:02:30,435 mai devreme, care ne-ar permite genera dinamic HTML, 59 00:02:30,435 --> 00:02:32,560 și asta e ceea ce vom pentru a începe să faci cu PHP 60 00:02:32,560 --> 00:02:34,900 și în cele din urmă chiar și cu o limbaj numit JavaScript, 61 00:02:34,900 --> 00:02:37,910 Este folosiți un limbaj pentru a genera altul. 62 00:02:37,910 --> 00:02:40,720 Și într-adevăr, aceasta este ceea ce Facebook si multe, multe alte site-uri 63 00:02:40,720 --> 00:02:44,530 face să de fapt dinamic afișa informații noi pentru tine. 64 00:02:44,530 --> 00:02:47,117 >> Deci, haideți să începem cu asta: o line în căutarea criptic, dar una 65 00:02:47,117 --> 00:02:48,450 care este de fapt destul de puternic. 66 00:02:48,450 --> 00:02:51,210 Până acum, am fost folosind C, care este un limbaj compilat. 67 00:02:51,210 --> 00:02:55,050 Și doar un recap-- rapid o compilat Limba are ce caracteristic? 68 00:02:55,050 --> 00:02:59,050 În mod evident, aveți nevoie pentru a compila ea, dar ce înseamnă asta? 69 00:02:59,050 --> 00:03:00,505 Da? 70 00:03:00,505 --> 00:03:02,940 >> STUDENT: Acesta trebuie să fie asamblate în cod mașină. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. MALAN: OK. 72 00:03:03,060 --> 00:03:04,530 Acesta trebuie să fie asamblate în cod mașină. 73 00:03:04,530 --> 00:03:07,340 Deci, luați codul sursă, care este un fel de limba engleză-ca. 74 00:03:07,340 --> 00:03:09,270 Poti converti care să nivel inferior ceva, 75 00:03:09,270 --> 00:03:11,590 care este în cele din urmă numit obiect code-- lui 0 și 1. 76 00:03:11,590 --> 00:03:14,830 Și e acele 0 și 1, conform căreia un procesor, cum ar fi cele realizate de Intel, 77 00:03:14,830 --> 00:03:16,110 de fapt, înțeleg. 78 00:03:16,110 --> 00:03:19,690 >> Acum, PHP si Python și Ruby și JavaScript și ciorchini de alte 79 00:03:19,690 --> 00:03:23,190 limbi nu sunt elaborate Limbi dar interpretate de limbi, 80 00:03:23,190 --> 00:03:26,630 ceea ce înseamnă că doar le scrieți și apoi nu le transforma în 0 și 1 a lui. 81 00:03:26,630 --> 00:03:30,790 Tu în schimb oferă doar atunci ca Intrare la programul altcuiva, 82 00:03:30,790 --> 00:03:32,080 numit un interpret. 83 00:03:32,080 --> 00:03:34,460 Și că persoane program a fost conceput 84 00:03:34,460 --> 00:03:38,280 pentru a înțelege ceea ce fiecare și fiecare simbol în Python sau PHP 85 00:03:38,280 --> 00:03:42,650 sau Ruby sau orice număr de alte limbi înseamnă. 86 00:03:42,650 --> 00:03:44,760 >> Și atunci tot ce avem nevoie este ceva de genul asta. 87 00:03:44,760 --> 00:03:46,350 Deci, în fapt, am de gând să du-te pe la aparatul 88 00:03:46,350 --> 00:03:48,100 aici, doar în orice fereastră vechi, și noi suntem 89 00:03:48,100 --> 00:03:52,580 O să mergeți mai departe și deschis un fișier numit, spune, salut. 90 00:03:52,580 --> 00:03:55,780 Acum anterior, s-ar putea fi salvat acest lucru chiar și cu o extensie de fișier, 91 00:03:55,780 --> 00:03:57,910 dar am de gând să fac ceva mai simplu aici. 92 00:03:57,910 --> 00:04:02,450 Am de gând să mergeți mai departe și să înceapă acest fișier cu acest sintaxă criptic. 93 00:04:02,450 --> 00:04:06,310 Așa că "utilizator, bin, env, pentru mediu, php ". 94 00:04:06,310 --> 00:04:10,670 >> Acest lucru este pur și simplu o linie de cod care este O să spuneți sistemul meu de operare, 95 00:04:10,670 --> 00:04:13,730 du-te găsi în reprezentanța locală mediu, indiferent că este, 96 00:04:13,730 --> 00:04:18,149 ori de câte ori PHP este-- interpreter-- și mergeți mai departe și de a folosi ca interpret 97 00:04:18,149 --> 00:04:20,589 de a interpreta codul de mai jos. 98 00:04:20,589 --> 00:04:22,760 Acum, aceasta este un fel de o caracteristică urât de PHP. 99 00:04:22,760 --> 00:04:24,980 Dar în această limbă, orice dată când scrie cod PHP, 100 00:04:24,980 --> 00:04:29,200 aveți nevoie pentru a avea una dintre aceste urât Tag-uri PHP care delimitează începutul 101 00:04:29,200 --> 00:04:32,220 a ta code-- 00:04:37,430 >> Dar mai jos de aici, eu pot face acum ceva destul de simplu, cum ar fi printf salut virgulă 103 00:04:37,430 --> 00:04:40,922 lume backslash n close citat, aproape paranteze. 104 00:04:40,922 --> 00:04:42,630 Și apoi doar pentru bun măsură, am de gând 105 00:04:42,630 --> 00:04:45,380 a merge mai departe și de aproape tag-ul meu php aici 106 00:04:45,380 --> 00:04:47,390 astfel încât totul arată frumos destul de imprimat. 107 00:04:47,390 --> 00:04:50,780 >> Și, de îndată ce am faceți clic pe Salvare, gedit este suficient de inteligent, de fapt 108 00:04:50,780 --> 00:04:54,620 să se uite la acea prima linie și realiza, oh, esti scrierea de cod PHP. 109 00:04:54,620 --> 00:04:56,710 Lasă-mă să evidențiați sintaxă se cu culorile 110 00:04:56,710 --> 00:04:58,690 aici astfel încât să stea un pic mai mult. 111 00:04:58,690 --> 00:05:01,300 Dar acum am de gând să merg până la fereastra mea terminal. 112 00:05:01,300 --> 00:05:02,340 Voi mări. 113 00:05:02,340 --> 00:05:06,860 >> Acest program a fost numit "hello", așa că am de gând să fac slash punct salut, 114 00:05:06,860 --> 00:05:07,990 dar permisiune a negat. 115 00:05:07,990 --> 00:05:08,490 Și bash. 116 00:05:08,490 --> 00:05:10,610 Am auzit de fapt de care în urmă lucru câteva săptămâni 117 00:05:10,610 --> 00:05:13,140 în contextul Shellshock, una dintre aceste bug-uri. 118 00:05:13,140 --> 00:05:16,240 >> Dar permisiunea a negat le-am văzut înainte, poate că într-un context diferit. 119 00:05:16,240 --> 00:05:19,060 Are cineva amintesc cum s-ar putea repara ceva 120 00:05:19,060 --> 00:05:22,100 în cazul în care permisiunea este refuzat ca aceasta? 121 00:05:22,100 --> 00:05:23,490 Care este comanda, cel puțin? 122 00:05:23,490 --> 00:05:24,159 >> STUDENT: chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. MALAN: Da, chmod, pentru schimbarea modului de un fișier. 124 00:05:26,700 --> 00:05:30,171 Și veți obține cu atât mai mult folosit pentru a această săptămâna viitoare cu o problemă ulterioară 125 00:05:30,171 --> 00:05:30,670 setat. 126 00:05:30,670 --> 00:05:33,211 Dar pentru acum, am de gând să se schimbe modul de a nu fi citite, 127 00:05:33,211 --> 00:05:36,650 dar pentru a oferi tuturor executeability privilegii, abilitatea 128 00:05:36,650 --> 00:05:37,710 pentru a rula acest fișier. 129 00:05:37,710 --> 00:05:40,360 Și am de gând să atribui că la dosar salut. 130 00:05:40,360 --> 00:05:45,150 >> Dacă fac acum slash punct salut intra, voi a se vedea, de fapt, programul meu, salut lume. 131 00:05:45,150 --> 00:05:48,760 Și ce pas am făcut clar sări cu totul? 132 00:05:48,760 --> 00:05:49,520 Compilarea. 133 00:05:49,520 --> 00:05:51,680 Așa că am fugit acest program destul de simplu. 134 00:05:51,680 --> 00:05:55,690 >> Și se pare că puteți face acest lucru cu o mulțime de sintaxă care amintește de C. 135 00:05:55,690 --> 00:06:03,400 Lasă-mă să merg în codul de astăzi, pe care mi-am pus în directorul meu vhost 136 00:06:03,400 --> 00:06:05,250 aici, din motive reale ne vom întoarce la. 137 00:06:05,250 --> 00:06:09,350 Și am de gând să meargă în, să zicem, condițiilor 1. 138 00:06:09,350 --> 00:06:12,450 >> Și veți vedea aici, în primul rând și în primul rând, o grămadă de comentarii. 139 00:06:12,450 --> 00:06:15,240 Dar aceasta este de fapt o re-creație în PHP 140 00:06:15,240 --> 00:06:18,960 a unui program am făcut în săptămână unul numit condiții 1.c 141 00:06:18,960 --> 00:06:20,690 în cazul în care scopul în de viață a acestui program 142 00:06:20,690 --> 00:06:22,950 este aparent de a cere utilizatorul pentru un număr întreg 143 00:06:22,950 --> 00:06:25,270 și apoi face unele pufos Analiza pe ea, prin care 144 00:06:25,270 --> 00:06:29,510 you say dacă este pozitiv sau negativă sau egală cu zero. 145 00:06:29,510 --> 00:06:34,220 Și eu aduc asta numai pentru că, cu excepția, poate, un mic detaliu, 146 00:06:34,220 --> 00:06:37,150 e imposibil de distins pana acum de la C. 147 00:06:37,150 --> 00:06:39,930 >> Care este caracteristica unul aici că poate sare 148 00:06:39,930 --> 00:06:41,410 la tine ca un pic diferit? 149 00:06:41,410 --> 00:06:42,160 Poate că două lucruri. 150 00:06:42,160 --> 00:06:42,660 Da? 151 00:06:42,660 --> 00:06:44,070 >> STUDENT: Dolar semn n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. MALAN: Da. 153 00:06:44,944 --> 00:06:46,210 Deci, semn dolar n este prezent. 154 00:06:46,210 --> 00:06:48,120 Și semne dolar, ar fi vom vedea, vom 155 00:06:48,120 --> 00:06:51,460 să fie un fix la începutul a oricărei variabile în PHP. 156 00:06:51,460 --> 00:06:54,250 E atât de bine bine și bad-- în că este un fel de evident ceea ce este 157 00:06:54,250 --> 00:06:56,797 o variabilă, rău în asta e încă un alt lucru de tip. 158 00:06:56,797 --> 00:06:58,630 Și mai există un altul lucru pe care nu au destul 159 00:06:58,630 --> 00:07:00,876 văzut, cel puțin de această ortografie. da? 160 00:07:00,876 --> 00:07:01,630 >> STUDENT: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. MALAN: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline nu ne-am văzut, în sine, în C, chiar dacă există ceva 163 00:07:06,550 --> 00:07:09,530 similar, dar ne-am folosit getstring, și acesta este echivalentul său. 164 00:07:09,530 --> 00:07:12,950 Așa că, dacă mă duc în această director, care se întâmplă să fie, 165 00:07:12,950 --> 00:07:18,030 cum voi explica într-un pic în vhost mea director și sursa mea A director, 166 00:07:18,030 --> 00:07:22,730 și am merge mai departe și de a face slash dot conditions-- punct slash whoops-- 167 00:07:22,730 --> 00:07:26,710 Condiții de 1, veți vedea, din nou, În același permisiunea issue-- negat. 168 00:07:26,710 --> 00:07:33,610 >> Așa că lasă-mă să zoom in și de a face chmod un plus x privind condițiile, condițiile slash dot. 169 00:07:33,610 --> 00:07:35,222 Aș dori un număr întreg, vă rog, 50. 170 00:07:35,222 --> 00:07:36,930 Și am putea juca acest Joc pe tot parcursul zilei. 171 00:07:36,930 --> 00:07:39,140 O să se comporte exact așa cum a făcut-o într-o săptămână. 172 00:07:39,140 --> 00:07:42,860 >> OK asa ca nu tot ce diferit, cu excepția Nu doar că usoara pic de sintaxă, 173 00:07:42,860 --> 00:07:45,490 dar în partea de sus, am din nou a avut această linie care 174 00:07:45,490 --> 00:07:49,760 mi-a permis de a crea ceva care Se pare ca un program C numit salut, 175 00:07:49,760 --> 00:07:51,150 numitele condiții 1. 176 00:07:51,150 --> 00:07:54,520 Dar nu este 0 și cele Sunt de executare direct. 177 00:07:54,520 --> 00:07:57,620 Este în schimb rulează acest interpret al cărui nume 178 00:07:57,620 --> 00:07:59,440 se întâmplă să fie identică cu limba. 179 00:07:59,440 --> 00:08:04,970 Programul se numeste PHP, și codul meu de mai jos o linie este trecut în ea. 180 00:08:04,970 --> 00:08:07,740 >> Putem face o altă destul de simplu exemplu amintește de ceva 181 00:08:07,740 --> 00:08:09,240 am făcut acum câteva săptămâni. 182 00:08:09,240 --> 00:08:12,020 Din nou, aceasta este un fel de bucată arbitrară de cod 183 00:08:12,020 --> 00:08:14,000 care se pare că nu ceea ce atunci când îl rulați? 184 00:08:14,000 --> 00:08:15,625 Ce se întâmplă acest lucru pentru a imprima, probabil? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Deci, inițial, pe linia 16, e O să spun X este acum de 2, probabil. 187 00:08:28,250 --> 00:08:30,920 % D este același ca i $ pentru printf. 188 00:08:30,920 --> 00:08:33,460 Deci, atunci este cubaj, punct, dot, dot, în linie 17. 189 00:08:33,460 --> 00:08:36,299 Și apoi linia 18 apare pentru a apela o funcție Cubed. 190 00:08:36,299 --> 00:08:37,600 Și în cazul în care este definit Cubed? 191 00:08:37,600 --> 00:08:40,319 >> Ei bine, se pare că în linia 25, astfel încât nu e tot ce diferit. 192 00:08:40,319 --> 00:08:42,610 Am unele comentarii de mai sus ea, dar pentru cea mai mare parte, 193 00:08:42,610 --> 00:08:45,370 este o destul de simplu portare sau de conversie 194 00:08:45,370 --> 00:08:48,470 din programul C la versiunea PHP. 195 00:08:48,470 --> 00:08:52,670 Dar există în prezent un cuplu de Diferențele că poate ar trebui să sari. 196 00:08:52,670 --> 00:08:56,100 Ce altceva este diferit despre modul în care s-ar putea scrie acest fel de program in C? 197 00:08:56,100 --> 00:08:57,900 >> STUDENT: [inaudibil]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. MALAN: Nu nici un prototip până sus. 199 00:09:00,070 --> 00:09:03,210 Deci, PHP-- și sincer, un mulțime de languages-- moderne 200 00:09:03,210 --> 00:09:06,920 sunt mult mai deștept și mai mult de ajutor decât compilatoare C, în care 201 00:09:06,920 --> 00:09:09,740 poate pune funcția de aici, puteți pune o funcție de aici, 202 00:09:09,740 --> 00:09:12,740 iar interpretul se întâmplă să faci favoarea de lectură 203 00:09:12,740 --> 00:09:16,010 întregul dosar înainte de a decide că unele funcții nu există. 204 00:09:16,010 --> 00:09:17,970 Deci îmbunătățiri frumos ani mai târziu. 205 00:09:17,970 --> 00:09:22,126 Dar există, de asemenea, ceva altceva diferit sau absent aici. 206 00:09:22,126 --> 00:09:22,626 Da? 207 00:09:22,626 --> 00:09:25,084 >> STUDENT: [inaudibil]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. MALAN: Noi nu trebuie să declara tipurile de variabile, 209 00:09:27,750 --> 00:09:31,780 așa, vom vedea înainte de mult timp că există diferite tipuri în PHP, 210 00:09:31,780 --> 00:09:34,970 dar nu trebuie să le precizeze, care, de asemenea, este și bine și rău. 211 00:09:34,970 --> 00:09:36,623 Și mai e un lucru care lipsește. 212 00:09:36,623 --> 00:09:37,430 >> STUDENT: Nu sunt biblioteci. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. MALAN: Nu este nici o biblioteci. 214 00:09:38,630 --> 00:09:39,350 OK, așa că e drăguț. 215 00:09:39,350 --> 00:09:40,540 Am obține o mulțime mai mult din cutie. 216 00:09:40,540 --> 00:09:43,373 Deci nu e de fapt mult mai mult lucruri decât am crezut au fost diferite. 217 00:09:43,373 --> 00:09:44,350 Ce zici de drum în spate? 218 00:09:44,350 --> 00:09:46,032 Ce-i asta? 219 00:09:46,032 --> 00:09:46,740 Spune-o încă o dată? 220 00:09:46,740 --> 00:09:47,960 >> STUDENT: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. MALAN: Nu pointer. 222 00:09:49,270 --> 00:09:51,280 OK, cel puțin în acest exemplu, nr. 223 00:09:51,280 --> 00:09:52,070 Asta-i corect. 224 00:09:52,070 --> 00:09:55,090 Deci, nu există indicii în PHP de fapt, în general. 225 00:09:55,090 --> 00:09:58,730 Există ceva numit referințe, dar nu vom cheltui prea mult timp acolo. 226 00:09:58,730 --> 00:09:59,520 Și ce altceva? 227 00:09:59,520 --> 00:10:00,185 >> STUDENT: Main. 228 00:10:00,185 --> 00:10:01,060 DAVID J. MALAN: Main. 229 00:10:01,060 --> 00:10:02,768 Deci, aceasta a fost Biggie Mă gândeam. 230 00:10:02,768 --> 00:10:04,660 Observați nu există nici un punct de intrare principal. 231 00:10:04,660 --> 00:10:06,525 Pur și simplu începe să scrie codul. 232 00:10:06,525 --> 00:10:08,400 Și aceasta este, de fapt Va fi avantajos 233 00:10:08,400 --> 00:10:10,560 când ne-am tranziție momentan la de fapt, folosind 234 00:10:10,560 --> 00:10:13,980 aceeași limbă pentru web-based programare, pentru care noi 235 00:10:13,980 --> 00:10:16,580 Nu vreau să aibă doar un singur punct de intrare. 236 00:10:16,580 --> 00:10:19,980 S-ar putea dori să aibă o grămadă de URL-uri, o grămadă de fișiere diferite 237 00:10:19,980 --> 00:10:22,930 toate luând în datele introduse de utilizator și ieșire producătoare. 238 00:10:22,930 --> 00:10:27,130 >> Dar aici este foarte deprimant exemplu pe care am promis data trecută, 239 00:10:27,130 --> 00:10:30,130 și anume în acest dosar aici, greșeli de ortografie. 240 00:10:30,130 --> 00:10:33,680 Deci, în acest abecedar dosar, pe care noi nu va petrece prea mult timp pe, există 241 00:10:33,680 --> 00:10:37,870 în esență, o porting-- P-O-R-T. E doar cuvântul dat atunci când, să zicem, 242 00:10:37,870 --> 00:10:40,800 conversia dintr-o limbă într-un alt manual de obicei. 243 00:10:40,800 --> 00:10:45,680 >> Aceasta este o portare de PC-uri Versiunea de pronuntie din PSET 5. 244 00:10:45,680 --> 00:10:48,856 Și am încercat, în esență, să convertească line prin linie la fel de strâns ca pot. 245 00:10:48,856 --> 00:10:51,730 Deci, dacă vă place acest tip de lucru, el de fapt este în valoare de la un moment dat 246 00:10:51,730 --> 00:10:54,229 trăgând-le atât în ​​sus partea de laterale și a vedea ceea ce este la fel 247 00:10:54,229 --> 00:10:55,230 și ceea ce este diferit. 248 00:10:55,230 --> 00:10:57,510 Dar sunt destul de darn similare. 249 00:10:57,510 --> 00:11:00,110 Dacă vă amintiți ceea ce pronuntie chiar arata ca, 250 00:11:00,110 --> 00:11:02,110 chiar dacă nu a făcut- trebuie să se schimbe acest fișier, 251 00:11:02,110 --> 00:11:04,860 e destul de asemănătoare structural cu doar un cuplu 252 00:11:04,860 --> 00:11:06,200 de modificări aici și acolo. 253 00:11:06,200 --> 00:11:10,140 >> Deci, aceasta este doar să spun că e destul de simplu pentru a converti descifrează 254 00:11:10,140 --> 00:11:12,000 de la C la PHP. 255 00:11:12,000 --> 00:11:15,390 Dar în dicționar, nu e ceva chiar mai convingătoare. 256 00:11:15,390 --> 00:11:19,270 Lasă-mă să mergeți mai departe și de a crea propria ta dosar dictionary.php. 257 00:11:19,270 --> 00:11:24,010 Deci, ușor diferite în care vom numi .php în loc de .c. 258 00:11:24,010 --> 00:11:26,980 Deoarece acesta este un fișier PHP, I do-- ușor annoyingly-- avea 259 00:11:26,980 --> 00:11:30,132 pentru a începe dosarul cu o etichetă php de genul asta. 260 00:11:30,132 --> 00:11:32,340 Și am de gând să merg mai departe și defini câteva funcții. 261 00:11:32,340 --> 00:11:35,770 Funcție numită de validare, care este de gând să ia într-un cuvânt ca înainte. 262 00:11:35,770 --> 00:11:37,520 Dar acest argument lui va avea un dolar 263 00:11:37,520 --> 00:11:39,840 Înregistrează că suntem, din nou, folosind PHP. 264 00:11:39,840 --> 00:11:42,350 O altă funcție din dictionary.c a fost de sarcină 265 00:11:42,350 --> 00:11:47,120 și a luat în numele unui dicționar, așa că vom primi această funcție gata de plecare. 266 00:11:47,120 --> 00:11:50,920 >> Un altul în dictionary.c a fost ce? 267 00:11:50,920 --> 00:11:54,580 Dimensiune a fost unul dintre cele mai frumoase, la cel puțin dacă ai păstrat unele variabile în jurul valorii. 268 00:11:54,580 --> 00:11:57,830 astfel încât dimensiune trebuie doar să se întoarcă o variabilă. 269 00:11:57,830 --> 00:11:59,090 Și apoi a fost de descărcare. 270 00:11:59,090 --> 00:12:02,830 >> Deci, au existat aceste patru funcții în problemă seta 5 271 00:12:02,830 --> 00:12:06,770 care ai nevoie pentru a pune în aplicare cu unele structuri de date sau structuri. 272 00:12:06,770 --> 00:12:10,170 Așa că am promis că, în PHP, putem declara 273 00:12:10,170 --> 00:12:14,490 o tabelă de dispersie, de exemplu, tot ce mai ușor. 274 00:12:14,490 --> 00:12:17,377 De fapt, dacă vreau un tabel hash, Mă duc să meargă așa 275 00:12:17,377 --> 00:12:18,460 și nu e masa mea hash. 276 00:12:18,460 --> 00:12:21,555 Și asta e nota, evoluat destul de timid, că am rămas pe ultima oara. 277 00:12:21,555 --> 00:12:23,930 Și știi ce, dacă am vrut o variabilă de dimensiune, ei bine, 278 00:12:23,930 --> 00:12:25,867 asta nu e tot că diferit de C, 279 00:12:25,867 --> 00:12:27,450 dar am de gând să merg mai departe și de a face asta. 280 00:12:27,450 --> 00:12:28,630 Și observați nici un tip de date. 281 00:12:28,630 --> 00:12:31,180 Și Mă voi întoarce mai târziu și de fapt, adauga cateva comentarii aici. 282 00:12:31,180 --> 00:12:32,480 Dar ceea ce despre sarcină? 283 00:12:32,480 --> 00:12:35,780 >> În cazul în dicționarul semn dolar este numele fișierului meu 284 00:12:35,780 --> 00:12:39,600 și eu de fapt vreau să se încarce Cuvinte în acest tabel acum, 285 00:12:39,600 --> 00:12:42,360 Eu pot face de fapt ceva destul de simplu. 286 00:12:42,360 --> 00:12:44,880 Unu și acest lucru este minorly annoying-- în PHP, 287 00:12:44,880 --> 00:12:47,710 trebuie să specificați interior a unei funcții, dacă 288 00:12:47,710 --> 00:12:51,060 doresc sa acceseze unele global variabilă care este definit afară. 289 00:12:51,060 --> 00:12:53,530 >> Dar asta nu e deosebit de interesant chiar acum. 290 00:12:53,530 --> 00:12:57,920 Ce e mai interesant este acest lucru pentru fiecare construi pe care am menționat data trecută. 291 00:12:57,920 --> 00:13:01,880 Și se pare că PHP are o funcție numitul dosar al cărui scop în viață 292 00:13:01,880 --> 00:13:05,550 este de a deschide un fișier și se citesc în toate liniile sale de într-o matrice 293 00:13:05,550 --> 00:13:06,840 și să le restituie la. 294 00:13:06,840 --> 00:13:12,170 >> Care este de a spune ce pot face în dicționarul astfel care acum în mod eficient, atunci când eu numesc dosar, 295 00:13:12,170 --> 00:13:15,472 acest lucru se întâmplă să-mi dai înapoi o serie de cuvinte din dosar. 296 00:13:15,472 --> 00:13:16,430 Nu e tot atât de bun. 297 00:13:16,430 --> 00:13:20,130 Este încă va fi o linie de cuvinte, ceva liniar. 298 00:13:20,130 --> 00:13:23,880 Dar eu pot merge mai departe și repeta peste fiecare dintre aceste cuvinte, folosind 299 00:13:23,880 --> 00:13:25,710 că sintaxa am văzut pe scurt ultima dată. 300 00:13:25,710 --> 00:13:27,940 Și veți vedea mai mult în PSET viitoare. 301 00:13:27,940 --> 00:13:32,070 >> Dar acum am o iterarea buclă peste fiecare cuvânt în dicționar. 302 00:13:32,070 --> 00:13:36,100 Și pe fiecare iterație, amintesc eu sunt de asteptare cuvântul curent "cuvânt". 303 00:13:36,100 --> 00:13:39,790 Și tot ce va fi nevoie pentru a a pus un cuvânt în dicționar este 304 00:13:39,790 --> 00:13:43,530 Va fi cuvântul ghici "adevărat". 305 00:13:43,530 --> 00:13:44,740 Asta e funcția mea de inserție. 306 00:13:44,740 --> 00:13:46,661 Asta e funcția mea de sarcină pentru dicționarul meu. 307 00:13:46,661 --> 00:13:49,410 Acum e un pic de ieftin, deoarece, Știi ce, nu e de fapt 308 00:13:49,410 --> 00:13:52,920 backslash n la sfârșitul cuvintelor că eu ar trebui sa scape, probabil, de, 309 00:13:52,920 --> 00:13:56,380 dar asta nu-i o problemă, deoarece PHP are o funcție numită cotlet de care literalmente 310 00:13:56,380 --> 00:13:58,480 cotletul de off un caracter la sfârșit. 311 00:13:58,480 --> 00:13:59,400 Deci, nici o problema acolo. 312 00:13:59,400 --> 00:14:02,199 Am mers mai departe și de fapt scurtat că la doar aceasta. 313 00:14:02,199 --> 00:14:05,240 Și acum ar trebui probabil să țină evidența de mărime, deci haideți să facem cel puțin asta: 314 00:14:05,240 --> 00:14:05,835 dimensiune ++. 315 00:14:05,835 --> 00:14:07,339 Eu pot face asta la fel ca înainte. 316 00:14:07,339 --> 00:14:10,380 Și atunci acest lucru este, probabil, va funcționează foarte bine, în așa fel încât revenim adevărat. 317 00:14:10,380 --> 00:14:10,930 Efectuat. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Râsete] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. MALAN: OK. 321 00:14:14,420 --> 00:14:16,628 Noi o să facem asta din nou cu PSET următor, de asemenea. 322 00:14:16,628 --> 00:14:18,730 Deci, ce despre mărimea? 323 00:14:18,730 --> 00:14:22,080 Ei bine, acesta sperăm este gata așa cum v-ați aștepta ultimul timp, 324 00:14:22,080 --> 00:14:24,460 deși am să fac acest lucru global stupid. 325 00:14:24,460 --> 00:14:26,610 E doar un artefact de la de design limba lui. 326 00:14:26,610 --> 00:14:28,450 >> Dar de verificare este un pic mai interesant. 327 00:14:28,450 --> 00:14:31,420 Deci, dacă am trecut la dolar Înregistrează cuvânt, eu în primul rând 328 00:14:31,420 --> 00:14:34,060 doresc să aibă acces la că tabelul Global variabilă. 329 00:14:34,060 --> 00:14:36,700 Și acum, dacă vreau să verifica dacă un cuvânt este acolo, 330 00:14:36,700 --> 00:14:44,350 Pot să spun pur și simplu, dacă este adevărat că următoarele este stabilit în tabel, 331 00:14:44,350 --> 00:14:49,957 apoi mergeți mai departe și retur adevărat; altfel, return false. 332 00:14:49,957 --> 00:14:51,180 Efectuat. 333 00:14:51,180 --> 00:14:52,440 Cealaltă jumătate a PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> În regulă, deci din nou, eu sunt de tăiere câteva colțuri. 335 00:14:54,540 --> 00:14:56,831 În corectitudine, eu ar trebui, probabil, petrece câteva secunde 336 00:14:56,831 --> 00:14:58,300 pe această punere în aplicare. 337 00:14:58,300 --> 00:15:01,860 Și eu, probabil, nu ar trebui să Mock toate ore ai pus pe PSET atât de mult. 338 00:15:01,860 --> 00:15:04,045 Deci strtolower este o funcție. 339 00:15:04,045 --> 00:15:06,670 Ceva existențialist similare în C, cel puțin pentru caractere, 340 00:15:06,670 --> 00:15:08,560 dar a PHP are o versiune șir întreg. 341 00:15:08,560 --> 00:15:11,226 >> Asta se întâmplă pentru a forța tot la litere mici, pe care unii dintre voi 342 00:15:11,226 --> 00:15:14,944 ar fi putut face pentru a canonic ceea ce ai fost punerea în dicționarul ta. 343 00:15:14,944 --> 00:15:16,360 Și acum poți să faci acest lucru în C, de asemenea. 344 00:15:16,360 --> 00:15:17,780 Acest lucru nu are nimic de-a face cu PHP. 345 00:15:17,780 --> 00:15:20,260 >> Dar de fiecare dată când aveți o condiție booleană, 346 00:15:20,260 --> 00:15:22,680 ca și cum ceva on-line 10 acolo, care este de numai 347 00:15:22,680 --> 00:15:27,145 O să evalueze la adevărat sau fals, iar dacă mai clar 348 00:15:27,145 --> 00:15:33,620 se întoarce adevărat sau fals, am putut pur și simplu face într-adevăr acest lucru mai sexy 349 00:15:33,620 --> 00:15:38,360 și la fel face ceva de genul asta. 350 00:15:38,360 --> 00:15:40,500 Așa că nu e funcția mea de verificare. 351 00:15:40,500 --> 00:15:42,560 Dreapta, în cazul în care Boolean returnează un adevărat sau fals o, 352 00:15:42,560 --> 00:15:44,630 hai să-l întoarcă imediat. 353 00:15:44,630 --> 00:15:47,340 >> Și există câteva alte trucuri Am putea face aici și acolo. 354 00:15:47,340 --> 00:15:51,380 Descărcare Load--, de altfel, că a făcut. 355 00:15:51,380 --> 00:15:52,850 Nimic de a face acolo. 356 00:15:52,850 --> 00:15:55,840 Din moment ce toate de memorie în PHP și multe alte limbi 357 00:15:55,840 --> 00:15:57,570 este, de fapt gestionat pentru tine. 358 00:15:57,570 --> 00:16:00,330 Deci întrucât în ​​C, ca care le-ați învățat dureros, 359 00:16:00,330 --> 00:16:04,700 tot ce malloc sau calloc sau realloc, trebuie să te elibereze. 360 00:16:04,700 --> 00:16:08,770 Tot ceea ce fopen, trebuie să fclose, astfel încât resursele sunt eliberate în cele din urmă 361 00:16:08,770 --> 00:16:11,690 și instrumente, cum ar fi Valgrind nu observă și nu se plâng, 362 00:16:11,690 --> 00:16:13,570 care este un lucru bun pentru a rula pe ele. 363 00:16:13,570 --> 00:16:16,190 >> Dar, cu siguranță, nu trebuie să fie o captură, nu? 364 00:16:16,190 --> 00:16:19,400 În caz contrar, ne-am cam pierdut de o grămadă de săptămâni. 365 00:16:19,400 --> 00:16:23,270 Deci, nu există nici un număr de motive de ce am un fel de a lua această traiectorie, 366 00:16:23,270 --> 00:16:24,440 dar există un compromis. 367 00:16:24,440 --> 00:16:25,820 Dreapta, acest lucru a fost tematică. 368 00:16:25,820 --> 00:16:29,690 >> Deci, ce s-ar putea un compromis aici se deplasează, de la C la PHP? 369 00:16:29,690 --> 00:16:33,250 Se simte la fel ca toate câștiga până acum, altele decât un pic de urâțenie aici sau acolo. 370 00:16:33,250 --> 00:16:34,040 Da. 371 00:16:34,040 --> 00:16:34,700 Ce-i asta? 372 00:16:34,700 --> 00:16:36,064 >> STUDENT: [neauzit] memorie. 373 00:16:36,064 --> 00:16:36,980 DAVID J. MALAN: Viteză. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Ei bine, viteza mea a fost destul de repede. 376 00:16:40,720 --> 00:16:42,020 Dreapta? 377 00:16:42,020 --> 00:16:44,320 Dar viteza de execuție a programului? 378 00:16:44,320 --> 00:16:45,580 OK, așa că e un punct corect. 379 00:16:45,580 --> 00:16:50,930 >> Deci, cum s-ar întâmpla, am anticipat cued up atât soluția mea încercare, cea 380 00:16:50,930 --> 00:16:53,510 Am avut pe placa mare a fost o soluție pe bază de încercare, 381 00:16:53,510 --> 00:16:55,510 și am că în acest director aici. 382 00:16:55,510 --> 00:16:58,510 Așa că am într-un moment, pot merge mai departe și rula acest lucru pe Biblia King James, 383 00:16:58,510 --> 00:16:59,657 apăsarea Enter. 384 00:16:59,657 --> 00:17:01,990 Și acest lucru este, sperăm corect punerea în aplicare la sfârșitul anului, 385 00:17:01,990 --> 00:17:05,109 dă-mi timp în total de 0.38 secunde pentru ca 386 00:17:05,109 --> 00:17:07,270 un exemplu oarecum arbitrară. 387 00:17:07,270 --> 00:17:09,270 >> Și dacă acum mă duc în această în al doilea rând fereastră de terminal 388 00:17:09,270 --> 00:17:14,569 aici unde am deschis primul gedit, permiteți- mă să merg în code-- de astăzi care, din nou, 389 00:17:14,569 --> 00:17:19,650 este în acest director here-- și lasă-mă să merg mai departe și a alerga abecedar. 390 00:17:19,650 --> 00:17:23,470 Deci, doar pentru a fi clar, aceasta este versiunea PHP. 391 00:17:23,470 --> 00:17:25,170 Eu doar arată în partea de sus a acesteia aici. 392 00:17:25,170 --> 00:17:32,020 >> Deci, dacă am face Speller de tilda CS50 PSET 5 texte, King James, introduceți. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 E încă mai rapid decât scris l în C, dar timpul total 395 00:17:43,050 --> 00:17:47,650 este, aviz, 0,93, în timp ce mea Punerea în aplicare a C pe baza de a fost 0,38. 396 00:17:47,650 --> 00:17:49,110 Deci, este o diferență non-trivial. 397 00:17:49,110 --> 00:17:51,100 >> Și acesta este doar pe un singur fișier. 398 00:17:51,100 --> 00:17:53,480 Dacă ar fi să executați cele două Programele față de placa mare 399 00:17:53,480 --> 00:17:56,510 și au o grămadă de factori de producție testat, acest lucru ar adăuga cu siguranță în sus. 400 00:17:56,510 --> 00:18:00,310 Și dacă am avea și mai mari seturi de date, aceasta, de asemenea, s-ar aduna tot mai mult. 401 00:18:00,310 --> 00:18:04,820 Deci da, plătind unele preț de viteză este într-adevăr cazul. 402 00:18:04,820 --> 00:18:05,470 Ce altceva? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Da? 405 00:18:08,860 --> 00:18:10,340 >> STUDENT: Suma de utilizare RAM. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. MALAN: Suma de utilizare RAM. 407 00:18:11,756 --> 00:18:15,380 Așa că nu a dat o secundă crezut că atunci când scris acest PHP 408 00:18:15,380 --> 00:18:17,300 Versiunea cu privire la cât de mult memorie Am fost folosind. 409 00:18:17,300 --> 00:18:22,080 Sunt complet de amânare care să PHP în sine și cine a scris acest program. 410 00:18:22,080 --> 00:18:24,500 Și care ar putea fi OK, dar dacă am de fapt într-adevăr 411 00:18:24,500 --> 00:18:28,420 pasă de stoarcere la fel de mult de performanță din programul meu sau din site-ul meu 412 00:18:28,420 --> 00:18:31,150 sau din orice instrument Sunt clădire, poate 413 00:18:31,150 --> 00:18:33,310 PHP, într-adevăr, nu este limba corect. 414 00:18:33,310 --> 00:18:36,330 >> Și, de fapt, de aceea, pentru exemplu, mulți servers-- web 415 00:18:36,330 --> 00:18:38,980 programele reale care servi content-- web 416 00:18:38,980 --> 00:18:41,810 nu sunt scrise în PHP sau în Python sau Ruby. 417 00:18:41,810 --> 00:18:44,630 Ele sunt scrise, cum ar fi vei face acum cu PSET 6, 418 00:18:44,630 --> 00:18:48,120 în C, astfel încât să puteți stoarce fiecare bit de performanță din ea 419 00:18:48,120 --> 00:18:50,780 și într-adevăr exercita Controlul fin-de cereale peste ceea ce este 420 00:18:50,780 --> 00:18:52,980 merge pe sub capota și nu doar ia- 421 00:18:52,980 --> 00:18:54,890 pentru a acordat unele mai mari structură de date de nivel. 422 00:18:54,890 --> 00:18:58,071 >> Luați în considerare, la urma urmei, oricine în PHP puse în aplicare 423 00:18:58,071 --> 00:19:00,070 că noțiunea de un hash table-- este de fapt mai mult 424 00:19:00,070 --> 00:19:04,260 numit în mod corespunzător o array-- asociativ face el sau ea au nici o idee despre ce fel 425 00:19:04,260 --> 00:19:07,090 de intrări aveți de gând să fi punerea în structura? 426 00:19:07,090 --> 00:19:08,260 Așa că, evident, nu, nu? 427 00:19:08,260 --> 00:19:10,340 Este un instrument generic în setul de instrumente care este 428 00:19:10,340 --> 00:19:13,430 prevăzut pentru oricine care vrea să-l folosească, și așa cu siguranță 429 00:19:13,430 --> 00:19:17,680 nu poate fi optimizat în cele din urmă pentru exact ceea ce vrei sa faci. 430 00:19:17,680 --> 00:19:21,180 >> Deci, timpul de dezvoltare, comerț offs-- s-ar putea diferă, performanta ar putea diferi, 431 00:19:21,180 --> 00:19:23,120 complexitate sau utilizarea memoriei poate diferi. 432 00:19:23,120 --> 00:19:24,820 Și ce veți găsi din ce în ce este că nu există 433 00:19:24,820 --> 00:19:26,570 Va fi diferit Unelte pentru comerțul. 434 00:19:26,570 --> 00:19:31,160 Și, de fapt, de o majoritate super oamenilor de proiecte finale în această clasă, 435 00:19:31,160 --> 00:19:34,360 crezi sau nu, C nu este de gând să fie limba dreptul de a utiliza. 436 00:19:34,360 --> 00:19:37,880 >> Și, de fapt, una dintre cele takeaways în cele din urmă pentru orice clasă de genul asta 437 00:19:37,880 --> 00:19:40,510 este să te gândești, bine, ceea ce ar trebui să te scoate 438 00:19:40,510 --> 00:19:42,710 raft atunci când doriți pentru a rezolva unele probleme. 439 00:19:42,710 --> 00:19:46,720 Și într-adevăr, vom trece acest pod chiar mai mult cu cât ne uităm la mai multe limbi 440 00:19:46,720 --> 00:19:47,920 chiar dincolo de ziua de azi. 441 00:19:47,920 --> 00:19:50,530 >> Deci, haideți să tranziție acum la probabil, un context mult mai familiar 442 00:19:50,530 --> 00:19:52,480 pentru utilizarea unui limbaj cum ar fi PHP. 443 00:19:52,480 --> 00:19:56,720 E ceva obișnuit să folosească la linia de comandă, scrierea de scripturi 444 00:19:56,720 --> 00:19:59,050 cum am făcut-o, dar e mult, mult mai frecvente. 445 00:19:59,050 --> 00:20:02,350 Și a fost destinat a fi utilizat în sub formă de fișiere care se încheie de obicei 446 00:20:02,350 --> 00:20:05,060 în .php-- dar asta e nu o prerequisite-- 447 00:20:05,060 --> 00:20:07,990 care se generează conținut web. 448 00:20:07,990 --> 00:20:11,310 >> Așa că lasă-mă să merg mai departe și deschide o gamă exemple-am pregătit în prealabil. 449 00:20:11,310 --> 00:20:15,100 Și acestea sunt de fapt un fel de adevărate texte în care unul din primele lucruri 450 00:20:15,100 --> 00:20:18,200 Mi-am făcut vreodată după terminarea CS50 și poate, cred, 451 00:20:18,200 --> 00:20:21,350 Ani în urmă CS51 este meu coleg de cameră și cu mine am fost de ajutor 452 00:20:21,350 --> 00:20:24,320 pentru a rula intramural student în anul întâi program sportiv, care, la momentul respectiv, 453 00:20:24,320 --> 00:20:28,610 a student în anul întâi înregistrare pentru diverse sport prin completarea unui bucată de hârtie, 454 00:20:28,610 --> 00:20:31,800 așa cum a fost numit, de mers pe jos prin curte la Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 și o scădere în unele derulează ușa Proctor lui. 456 00:20:34,030 --> 00:20:37,210 Și atunci el sau ea va trece prin ei și apoi de fapt, ne e-mail manual 457 00:20:37,210 --> 00:20:39,140 care ne-au fost înregistrate pentru unele sport. 458 00:20:39,140 --> 00:20:41,166 >> Deci, în mod clar, o oportunitate pentru îmbunătățire. 459 00:20:41,166 --> 00:20:44,040 În aceste zile, s-ar putea întoarce la doar Formulare Google, dar din nou în a doua zi, 460 00:20:44,040 --> 00:20:46,914 am avut de a ajunge de fapt for-- acest nu a fost ajunge chiar atât de mult ago-- 461 00:20:46,914 --> 00:20:49,410 pentru o programare limbă care nu a fost PHP. 462 00:20:49,410 --> 00:20:51,200 La acea vreme, ea a fost ceva numit Perl, 463 00:20:51,200 --> 00:20:52,890 care a ieșit din modă atunci. 464 00:20:52,890 --> 00:20:54,160 Dar ideea este aceeași. 465 00:20:54,160 --> 00:20:58,940 >> Și, în esență, m-am așezat să încerc în port se duce versiuni Perl pentru PHP, 466 00:20:58,940 --> 00:21:03,710 dar în disclaimer complet, nu a dat orice gandit sa estetica încă. 467 00:21:03,710 --> 00:21:04,960 Deci, aici este o pagină web. 468 00:21:04,960 --> 00:21:05,670 Acesta este un fișier. 469 00:21:05,670 --> 00:21:09,470 Dacă aș zoom in, aparent ei numit froshim0.php 470 00:21:09,470 --> 00:21:12,060 doar pentru că este primul nostru exemplu în această serie. 471 00:21:12,060 --> 00:21:15,970 Și observați că are ceea ce pare a fi o formă HTML foarte urât, 472 00:21:15,970 --> 00:21:18,680 dar un formular este interesant deoarece permite 473 00:21:18,680 --> 00:21:21,910 mă să ofere informații de utilizator pentru browser-ul. 474 00:21:21,910 --> 00:21:27,730 >> Acum, ultima dată când am avut o formă, pentru pe care ne-am prezenta parametru noastre de interogare, 475 00:21:27,730 --> 00:21:30,450 parametrul coadă așa cum a fost numit? 476 00:21:30,450 --> 00:21:31,330 Deci, pentru Google, nu? 477 00:21:31,330 --> 00:21:34,090 Ne degajată în totalitate pe ideea de a face ceva cu acea intrare. 478 00:21:34,090 --> 00:21:36,160 >> Dar astăzi, vom începe producerea de ieșire. 479 00:21:36,160 --> 00:21:39,420 Și comportamentul mă duc să văd aici inițial este destul de banal. 480 00:21:39,420 --> 00:21:42,980 David, voi verifica off de gen aici, spune Matthews aici. 481 00:21:42,980 --> 00:21:43,800 Nu voi fi căpitan. 482 00:21:43,800 --> 00:21:45,410 Am de gând să faceți clic pe Înregistrare. 483 00:21:45,410 --> 00:21:50,720 Și observați că adresa URL a schimbat de înregistrare-0.php, 484 00:21:50,720 --> 00:21:52,310 și apoi există din acest text urât aici. 485 00:21:52,310 --> 00:21:54,460 I-am dat nici un gând de formatarea acest lucru. 486 00:21:54,460 --> 00:21:59,900 >> Dar ceea ce este interesant este faptul că trei Valorile au fost aparent a trecut în. 487 00:21:59,900 --> 00:22:02,960 Aceasta este un fel de PHP echivalent cu printf-- 488 00:22:02,960 --> 00:22:06,330 vom vedea ce se numește în realitate într-un bit-- care tocmai imprimă 489 00:22:06,330 --> 00:22:08,300 ceea ce a trecut în el. 490 00:22:08,300 --> 00:22:11,414 Deci, acest lucru sugerează că această formă a avut cel puțin trei domenii de ea, 491 00:22:11,414 --> 00:22:12,580 și ai văzut pe mine să le introduceți în. 492 00:22:12,580 --> 00:22:15,739 Unul era numele meu, unul a fost gen, unul a fost dormitor. 493 00:22:15,739 --> 00:22:18,780 Și căpitanul nu sa trimis chiar la serverul pentru că nu l-am verificat. 494 00:22:18,780 --> 00:22:22,150 >> Deci, acest lucru este de a spune aparent, atunci când prezintă lucrurile pe web, 495 00:22:22,150 --> 00:22:26,830 nu numai că URL-ul, uneori, change-- uneori nu. 496 00:22:26,830 --> 00:22:30,330 De fapt, numele de fișier schimbat, dar ceea ce este absent de la adresa URL 497 00:22:30,330 --> 00:22:32,861 că am văzut ultima dată cu Google. 498 00:22:32,861 --> 00:22:33,360 Da? 499 00:22:33,360 --> 00:22:34,380 >> STUDENT: Nu șir de interogare 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. MALAN: Nu e nici un șir de interogare. 501 00:22:35,220 --> 00:22:37,270 Nu e nici semn de întrebare ceva. 502 00:22:37,270 --> 00:22:40,050 Nu e nici semn de întrebare q este egal cu pisici, așa cum am făcut data trecută. 503 00:22:40,050 --> 00:22:42,170 Și nu există cu siguranță nici o Numele semn de întrebare este egal 504 00:22:42,170 --> 00:22:46,310 David sau camin egal Matthews, astfel în cazul în care se întâmplă ca toate? 505 00:22:46,310 --> 00:22:51,290 >> Ei bine, lasă-mă să mă întorc la gedit aici și deschide prima dintre aceste dosare 506 00:22:51,290 --> 00:22:57,020 în vhost mea, gazda locală, publică Director aici și du-te în froshim0. 507 00:22:57,020 --> 00:23:02,060 Deci, se dovedește că aproape toate acestea pagină este doar HTML. 508 00:23:02,060 --> 00:23:05,410 Și acest lucru ar putea fi necunoscut pentru tine, dar în curând va fi cu atât mai mult cu PSET 6 509 00:23:05,410 --> 00:23:07,370 și PSET 7 și 8 PSET. 510 00:23:07,370 --> 00:23:09,160 Dar aceasta este doar o pagina HTML. 511 00:23:09,160 --> 00:23:12,400 >> Și interesant chestii pare să fie aici. 512 00:23:12,400 --> 00:23:16,290 O etichetă formular a carui actiune atribut are o valoare de registru 0. 513 00:23:16,290 --> 00:23:18,890 De aceea, atunci când am inscrieti aceasta, se duce la acel fișier. 514 00:23:18,890 --> 00:23:20,620 Dar metoda este diferit după today--. 515 00:23:20,620 --> 00:23:23,120 Deci, se dovedește că e cel puțin două metode pe web second hand 516 00:23:23,120 --> 00:23:24,911 pentru a trimite informații de la browser la server. 517 00:23:24,911 --> 00:23:25,980 Ia-l pune în URL-ul. 518 00:23:25,980 --> 00:23:27,950 Arata-l pune în altă parte. 519 00:23:27,950 --> 00:23:30,570 Și când și de ce s-ar putea tine doresc de fapt un site web 520 00:23:30,570 --> 00:23:34,110 de a utiliza posta apoi în schimb de a obține, doar intuitiv? 521 00:23:34,110 --> 00:23:37,080 Orice site web. 522 00:23:37,080 --> 00:23:42,010 Ce fel de date ar trebui să fie trecut puțin prin deducție acum prin poștă, spre deosebire de 523 00:23:42,010 --> 00:23:45,184 pentru a obține, dacă ne-am văzut cele două diferențe? 524 00:23:45,184 --> 00:23:46,350 STUDENT: [neauzit] sigur. 525 00:23:46,350 --> 00:23:47,790 DAVID J. MALAN: Daca vrei ceva pentru a fi sigur. 526 00:23:47,790 --> 00:23:50,360 Deci, s-ar putea introduce o parolă într-un site web, un card de credit 527 00:23:50,360 --> 00:23:53,030 într-un site web ar un fel de acestea suboptimal 528 00:23:53,030 --> 00:23:56,220 în cazul în care browser-ul încearcă că Valoarea interiorul URL-ul. 529 00:23:56,220 --> 00:23:57,680 De ce? 530 00:23:57,680 --> 00:24:00,059 Tu-l vezi, care nu par a fi o astfel de afacere mare, 531 00:24:00,059 --> 00:24:03,350 dar tu cote de pariuri sunt destul de frecvent de mers pe jos departe de calculator sau utilizarea computerului 532 00:24:03,350 --> 00:24:05,310 laboratoare, și așa cineva altceva sau chiar un coleg de cameră 533 00:24:05,310 --> 00:24:08,220 ar putea ajunge cu ușurință în sus și a vedea că informații private. 534 00:24:08,220 --> 00:24:10,220 Atunci când trimiteți un e-mail prin intermediul web, probabil că 535 00:24:10,220 --> 00:24:12,350 Nu vreau asta se încheie de date în URL-ul, de asemenea. 536 00:24:12,350 --> 00:24:15,266 Și deci nu e orice număr de motive de ce ne-am putea dori să-l puneți aici. 537 00:24:15,266 --> 00:24:18,610 Și chiar photos--, eu nu pot chiar foarte imaginați-vă cum v-ar lua un grafic, 538 00:24:18,610 --> 00:24:21,480 ca un JPEG, și pune-l într-o adresă URL. 539 00:24:21,480 --> 00:24:22,330 Ai putea face acest lucru. 540 00:24:22,330 --> 00:24:25,840 E modalități de codificare ea, dar e Pur și simplu nu simplu ca asta. 541 00:24:25,840 --> 00:24:29,030 >> Deci, inscrieti-0 este de fapt foarte underwhelming. 542 00:24:29,030 --> 00:24:31,610 Tot ce spune literalmente este aceasta. 543 00:24:31,610 --> 00:24:35,910 Se imprimă în interiorul unor HTML tags următoarele. 544 00:24:35,910 --> 00:24:38,640 Am o etichetă PHP aici imbricate in interiorul unui tag pre. 545 00:24:38,640 --> 00:24:42,300 "Pre" înseamnă doar un text pre-formatat, mono-spațiate, cum ar fi o mașină de scris. 546 00:24:42,300 --> 00:24:44,836 >> Printr este o funcție recursivă de imprimare. 547 00:24:44,836 --> 00:24:46,710 Și apoi există această lucru interesant aici. 548 00:24:46,710 --> 00:24:48,835 Și vom reveni la acest pentru că există alții, 549 00:24:48,835 --> 00:24:51,140 dar subliniere semn dolar poștă pare a fi 550 00:24:51,140 --> 00:24:56,110 o variabilă în PHP în care nimic voi trimite de la browser la server 551 00:24:56,110 --> 00:24:58,040 este stocat pentru tine. 552 00:24:58,040 --> 00:25:00,930 Și vom vedea cum să obțineți de la aceste informații înainte de mult timp. 553 00:25:00,930 --> 00:25:04,000 >> Dar, mai întâi, să ne întoarcem la un ușor diferită exemplu. 554 00:25:04,000 --> 00:25:09,050 Mergând în register-- sau mai degrabă, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 care arată un pic diferit. 556 00:25:10,470 --> 00:25:12,670 Mi-am luat un pic mai mult efort cu formatare, 557 00:25:12,670 --> 00:25:14,370 chiar dacă este încă destul de urât. 558 00:25:14,370 --> 00:25:16,990 Dar am de gând să merg mai departe și tastați "David" acum. 559 00:25:16,990 --> 00:25:17,850 De sex masculin. 560 00:25:17,850 --> 00:25:19,360 Vom verifica "căpitan" de data asta. 561 00:25:19,360 --> 00:25:20,660 Vom face Matthews. 562 00:25:20,660 --> 00:25:22,430 Și înregistrați. 563 00:25:22,430 --> 00:25:24,110 >> Și de această dată se spune, hm, nu într-adevăr. 564 00:25:24,110 --> 00:25:26,180 Bine, deci ce a înregistra o? 565 00:25:26,180 --> 00:25:30,509 Lasă-mă să merg în registrul deschis 1 hm si--. 566 00:25:30,509 --> 00:25:32,300 În regulă, deci aceasta este interesant, și această 567 00:25:32,300 --> 00:25:34,880 este o piatră de temelie acum spre mai multe programe interesante. 568 00:25:34,880 --> 00:25:38,970 >> Observați în partea de sus a acestui fișier are un Tag PHP, precum și unele comentarii. 569 00:25:38,970 --> 00:25:42,590 Și acestea sunt, de acum, o distragere a atenției Să tocmai a scăpa de aceste observații 570 00:25:42,590 --> 00:25:47,070 la fel ca ei sunt în C. Și am revendicati cu această bucată de cod cu un comentariu 571 00:25:47,070 --> 00:25:49,280 că acest cod este validarea prezentarea. 572 00:25:49,280 --> 00:25:51,690 >> Ei bine, se pare că variabile, cum ar fi semnul dolar 573 00:25:51,690 --> 00:25:53,739 subliniere mesaj sunt numit Super globals. 574 00:25:53,739 --> 00:25:55,530 Sunt ca acestea variabile globale speciale 575 00:25:55,530 --> 00:25:58,840 că sunt doar omni-prezent disponibile în cadrul programului. 576 00:25:58,840 --> 00:26:03,870 Și vă puteți folosi notatia placuta gradină să indice în ele nu utilizează numere 577 00:26:03,870 --> 00:26:07,460 cum ar fi 0, 1, 2, 3, dar cuvintele reale. 578 00:26:07,460 --> 00:26:12,100 >> Deci, vă puteți gândi la semnul dolar subliniere post de un fel de tabel hash 579 00:26:12,100 --> 00:26:15,920 că ați fi putut trece o cheie într-o căutare cuvânt în-între paranteze pătrate, 580 00:26:15,920 --> 00:26:19,370 și o să vă dau spate Valoarea pe care utilizatorul efectiv furnizat. 581 00:26:19,370 --> 00:26:21,210 PHP are o funcție denumit gol pe care tocmai 582 00:26:21,210 --> 00:26:23,720 spune da sau nu, acest variabilă este gol sau nu. 583 00:26:23,720 --> 00:26:27,250 Avem aceste bare duble, ceea ce înseamnă doar sau, ca în C. 584 00:26:27,250 --> 00:26:31,740 >> Deci, în fapt, această linie 4 este doar declarând în cazul în care utilizatorul nu a dat un nume 585 00:26:31,740 --> 00:26:36,540 sau nu a dat un gen sau nu a făcut- da un camin, mergeți mai departe și să-l redirecționeze 586 00:26:36,540 --> 00:26:38,184 sau ei prin intermediul acestei linii de aici. 587 00:26:38,184 --> 00:26:40,600 Deci, acest lucru este un pic criptic, dar acest lucru înseamnă doar literalmente 588 00:26:40,600 --> 00:26:43,330 du-te înapoi la această locație, așa că punts utilizatorului 589 00:26:43,330 --> 00:26:45,420 înapoi la oriunde el sau ea a venit de la. 590 00:26:45,420 --> 00:26:47,880 Dar e un pic putin elegant în care am de greu codificate. 591 00:26:47,880 --> 00:26:52,150 >> Dar ce se întâmplă dacă această condiție în cazul în care nu se evaluează la adevărat? 592 00:26:52,150 --> 00:26:55,790 Ce se întâmplă dacă utilizatorul mi-a dat lui sau numele ei și cămin și de gen? 593 00:26:55,790 --> 00:26:58,540 Că dacă starea nu e O să evalueze la adevărat, 594 00:26:58,540 --> 00:27:00,650 așa că nu a lovit ieșirea din linia 7. 595 00:27:00,650 --> 00:27:01,680 Deci, ce se întâmplă? 596 00:27:01,680 --> 00:27:03,880 Și aceasta este ceea ce este interesant despre PHP. 597 00:27:03,880 --> 00:27:07,470 >> Aveți posibilitatea să picătură în și în afara de modul PHP, ca să spunem așa. 598 00:27:07,470 --> 00:27:10,985 Dacă doriți un cod pentru a executa, puteți deschide și închide o etichetă PHP 599 00:27:10,985 --> 00:27:13,010 și a pus codul acolo ca am facut aici. 600 00:27:13,010 --> 00:27:16,810 De îndată ce vă închideți tag PHP, serverul 601 00:27:16,810 --> 00:27:19,407 este doar de gând să scuipe orice ai pus acolo. 602 00:27:19,407 --> 00:27:21,740 Și într-adevăr, aceasta a fost parte din designul original de PHP, 603 00:27:21,740 --> 00:27:25,280 pentru mai bine pentru rău, a fost aceasta amestecare de cod și marcare 604 00:27:25,280 --> 00:27:25,920 limbă. 605 00:27:25,920 --> 00:27:28,670 Și vom vedea că acest lucru foarte revine rapid într-o mizerie. 606 00:27:28,670 --> 00:27:31,280 Și așa vom face mai bine decât aceasta în cele din urmă, dar doar 607 00:27:31,280 --> 00:27:35,620 observă ușurința cu care eu sunt de fapt, în măsură să execute o anumită logică. 608 00:27:35,620 --> 00:27:37,440 >> Dar, totuși, un pic underwhelming. 609 00:27:37,440 --> 00:27:41,210 Să deschidem versiune două de Frosh AI, care 610 00:27:41,210 --> 00:27:44,270 aparent transmite register2.php. 611 00:27:44,270 --> 00:27:47,600 Deci, acest fișier se intampla de fapt pentru a arata aproape la fel. 612 00:27:47,600 --> 00:27:50,780 Am de gând să merg la Frosh AI 2. 613 00:27:50,780 --> 00:27:53,050 Dar, în Frosh AI 2, Să vedem ce se întâmplă. 614 00:27:53,050 --> 00:27:58,110 >> David, faceți clic pe butonul radio, ca Se numește; Matthews, nu căpitan. 615 00:27:58,110 --> 00:27:59,230 Inregistreaza-te. 616 00:27:59,230 --> 00:28:00,130 Sunteți înregistrat. 617 00:28:00,130 --> 00:28:00,700 Nu chiar. 618 00:28:00,700 --> 00:28:02,574 Oh, așteptați, tocmai am făcut- acest exemplu, nu-i așa? 619 00:28:02,574 --> 00:28:04,520 Bine, așteptați. 620 00:28:04,520 --> 00:28:06,602 Vom face trei. 621 00:28:06,602 --> 00:28:08,560 În mod evident ceva nu e despre să se întâmple cu Gmail. 622 00:28:08,560 --> 00:28:09,600 Vom ajunge acolo. 623 00:28:09,600 --> 00:28:11,900 >> Deci, Frosh AI 3 arata ca acest lucru. 624 00:28:11,900 --> 00:28:13,050 Nu este diferit. 625 00:28:13,050 --> 00:28:19,850 Dar când am făcut David, de sex masculin, Matthews, și înregistrați, această a treia și ultima versiune 626 00:28:19,850 --> 00:28:22,230 creanțe, pur și simplu te, sunt înregistrate într-adevăr. 627 00:28:22,230 --> 00:28:23,560 Asta e un fel de imaterial. 628 00:28:23,560 --> 00:28:25,600 Dar eu susțin cu acest Versiunea a treia și ultima 629 00:28:25,600 --> 00:28:30,610 Am recreat acum exact ceea ce-mi coleg de cameră și am construit pentru AI Frosh 630 00:28:30,610 --> 00:28:31,731 program de ani în urmă. 631 00:28:31,731 --> 00:28:32,480 Și a fost simplu. 632 00:28:32,480 --> 00:28:34,330 Nu a fost nici o bază de date, nici o foaie de calcul Excel. 633 00:28:34,330 --> 00:28:36,450 Dar, mai important, nu a existat nici mai mult hârtie 634 00:28:36,450 --> 00:28:42,520 pentru că ceea ce am făcut cu acest program a fost de a trimite un email de fapt Proctor, care 635 00:28:42,520 --> 00:28:44,530 a fost primit anterior aceste lucruri prin forme. 636 00:28:44,530 --> 00:28:48,890 >> Și se pare că ne-am programat acest lucru în așa fel încât atunci când cineva înregistrează, 637 00:28:48,890 --> 00:28:52,470 Contul e-mailuri John Harvard lui proctor-- sau față în acest caz, 638 00:28:52,470 --> 00:28:55,960 Ioan Harvard-- cu următorul text text-- "Această persoană doar înregistrat." 639 00:28:55,960 --> 00:29:00,560 Nume este David, căpitanul este necompletat; gen, masculin; și cămin, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Deci, ce sa întâmplat acolo? 641 00:29:01,560 --> 00:29:05,360 Ei bine, dosarul în cauză aici este aparent register3.php. 642 00:29:05,360 --> 00:29:09,080 Și dacă am deschis acest lucru, veți vedea atât puterea de cod de genul asta 643 00:29:09,080 --> 00:29:12,380 și, de asemenea, sincer, insecuritatea de un sistem ca e-mail. 644 00:29:12,380 --> 00:29:16,290 Am pretins doar în mod eficient la John Harvard fi în felul următor. 645 00:29:16,290 --> 00:29:20,920 >> Am tag-ul php deschis până sus, care spune doar aici vine un cod PHP. 646 00:29:20,920 --> 00:29:23,155 Aici, se pare că acolo sunt biblioteci din PHP. 647 00:29:23,155 --> 00:29:26,410 Tu chiar nu trebuie să includ fișiere antetul mult. 648 00:29:26,410 --> 00:29:28,900 Veți obține mai mult cu chiuveta de bucatarie, ca să spunem așa. 649 00:29:28,900 --> 00:29:31,820 >> Dar de data aceasta, în linia 4, fac vrei sa bibliotecă special numit 650 00:29:31,820 --> 00:29:36,087 PHP Mailer, care este tu ceva poate instala gratuit în multe sisteme. 651 00:29:36,087 --> 00:29:37,920 Aici am validarea prezentarea doar 652 00:29:37,920 --> 00:29:40,540 prin verificarea a da utilizatorului mi un nume, un gen, și un cămin. 653 00:29:40,540 --> 00:29:44,130 Și dacă este așa, mergeți mai departe și instantiate-o cutie. 654 00:29:44,130 --> 00:29:47,020 >> Vă puteți gândi la acest lucru ca fiind o linie de cod care tocmai alocă. 655 00:29:47,020 --> 00:29:48,950 E ca si cum malloc, dar e un pic mai sexy 656 00:29:48,950 --> 00:29:51,790 în care nu menționa doar malloc și unele număr generic. 657 00:29:51,790 --> 00:29:55,030 Tu spui da-mi unul dintre acestea, da-mi un nou una dintre acestea. 658 00:29:55,030 --> 00:29:57,950 >> Și dacă v-ați programat în Java sau C ++ sau alte limbaje, 659 00:29:57,950 --> 00:29:59,130 s-ar putea fi văzut acest lucru. 660 00:29:59,130 --> 00:30:01,840 Dar scurt de ea, în cazul în care nefamiliar, această linie 661 00:30:01,840 --> 00:30:05,410 pune în e-mail prin semnul dolar o struct special numit 662 00:30:05,410 --> 00:30:08,731 un obiect care a construit-in- funcționalitate de e-mail. 663 00:30:08,731 --> 00:30:10,355 Și, de fapt, observa și sintaxă similară. 664 00:30:10,355 --> 00:30:11,900 >> Acesta nu este un pointer, în sine. 665 00:30:11,900 --> 00:30:13,990 PHP foloseste doar aceeași sintaxă. 666 00:30:13,990 --> 00:30:17,660 Această linie spune utilizare SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protocol, care este doar protocol folosit pentru a trimite e-mail. 668 00:30:20,900 --> 00:30:24,240 Acest lucru este specificarea utilizare Serverul SMTP Harvard, care 669 00:30:24,240 --> 00:30:25,830 este undeva aici, în campus. 670 00:30:25,830 --> 00:30:28,480 >> Acest lucru este de a spune ceea ce TCP Numãr port pentru a vorbi cu, 671 00:30:28,480 --> 00:30:31,650 și M-am gândit că de googling sau de a cere biroul de asistență. 672 00:30:31,650 --> 00:30:34,640 Și apoi pentru că Harvard foloseste unele sistemul de securitate de pe server-- e-mail 673 00:30:34,640 --> 00:30:37,060 cel puțin pentru a cripta trafic între tine și el, 674 00:30:37,060 --> 00:30:41,380 chiar dacă oricine poate trimite la it-- Am de gând să porniți protocolul TLS 675 00:30:41,380 --> 00:30:42,710 pentru păstrarea acestui securizat. 676 00:30:42,710 --> 00:30:44,730 >> Dar acest lucru este în cazul în care lucrurile obține un pic înfricoșător. 677 00:30:44,730 --> 00:30:47,970 Eu pot doar arbitrar spun că sunt jharvard, 678 00:30:47,970 --> 00:30:51,930 și eu pot doar arbitrar eu de e-mail aici. 679 00:30:51,930 --> 00:30:55,650 Și atunci pot specifica un subiect cu această linie aici. 680 00:30:55,650 --> 00:30:58,460 >> Și aceasta doar arată urât, dar e doar o adunatura de concatenare. 681 00:30:58,460 --> 00:31:04,480 Se pare că PHP are un simbol foarte util, cum ar fi unele limbi, operatorul punct, 682 00:31:04,480 --> 00:31:07,340 care doar literalmente concateneaza șir după șir după șir, 683 00:31:07,340 --> 00:31:09,810 și nu trebuie să malloc sau figura din lungimea totală a șirului. 684 00:31:09,810 --> 00:31:10,820 Trebuie doar so fac. 685 00:31:10,820 --> 00:31:15,220 Și într-adevăr, pentru că eu sunt concatenarea în toate aceste lucruri cu aceste puncte, 686 00:31:15,220 --> 00:31:18,330 de aceea e-mail I trimite privit așa cum a făcut. 687 00:31:18,330 --> 00:31:20,610 >> Și apoi în cele din urmă aici, mă trimiterea de e-mail. 688 00:31:20,610 --> 00:31:22,580 Deci, în cazul în care acest lucru este fals, Mă duc să moară, 689 00:31:22,580 --> 00:31:25,680 care este o funcție care doar printuri la ecranul unele mesaj de eroare. 690 00:31:25,680 --> 00:31:29,170 Dar este, de fapt, apelul funcției de trimitere. 691 00:31:29,170 --> 00:31:31,780 În caz contrar, dacă toate acestea eșuează, ma redirecționează înapoi aici. 692 00:31:31,780 --> 00:31:34,050 >> Și de ce am văzut că Am înregistrat într-adevăr? 693 00:31:34,050 --> 00:31:36,110 Ei bine, sa întâmplat chiar aici. 694 00:31:36,110 --> 00:31:38,170 Așa că am aduc asta pentru un cuplu de motive. 695 00:31:38,170 --> 00:31:41,542 >> Unul, acest lucru este exact cum, dacă vă construi unele site-ul pentru un proiect final 696 00:31:41,542 --> 00:31:44,000 sau pentru lumea reală, acest lucru este cum ai trimite memento-uri de e-mail 697 00:31:44,000 --> 00:31:45,924 pentru clientii dvs. sau abonați. 698 00:31:45,924 --> 00:31:47,590 Acesta este modul în care trimite memento-uri de parolă. 699 00:31:47,590 --> 00:31:50,760 Acesta este modul în care trimite mesaje de oameni că ei au un nou Facebook 700 00:31:50,760 --> 00:31:52,990 mesaj în așteptare sau ceva de genul asta. 701 00:31:52,990 --> 00:31:55,010 >> Dar ea vorbește, de asemenea, faptul că acest lucru ar putea 702 00:31:55,010 --> 00:31:58,160 au fost foarte bine de la Davin sau oricine altcineva. 703 00:31:58,160 --> 00:32:00,567 Și spun acest tip de cu un zâmbet pentru că eu sunt 704 00:32:00,567 --> 00:32:03,400 destul de sigur că ceea ce se întâmplă prin mai multe dintre mințile voastre de la acest punct. 705 00:32:03,400 --> 00:32:11,910 Dar aceasta este una dintre cele faceți cum am spun, nu ce fac eu fel de lucruri, 706 00:32:11,910 --> 00:32:14,480 pentru că este trivial să falsifica e-mailuri de acest gen. 707 00:32:14,480 --> 00:32:16,480 Dar cum este posibil să fi văzut sau de a citi în Crimson, 708 00:32:16,480 --> 00:32:18,271 de întârziere este de asemenea destul de banal pentru oameni 709 00:32:18,271 --> 00:32:20,050 pentru a le urmări înapoi la unele origine. 710 00:32:20,050 --> 00:32:23,790 Și-mi ceva timp, probabil, la prânz CS50, cum am mai întâi 711 00:32:23,790 --> 00:32:27,080 a luat cunoștință îndeaproape aproape la bord ed multe ani 712 00:32:27,080 --> 00:32:30,890 Acum, când am descoperit modul în care internetul a lucrat. 713 00:32:30,890 --> 00:32:36,940 Deci, în orice case-- ușor după ce consiliul ed făcut-o. 714 00:32:36,940 --> 00:32:42,300 >> Deci, în orice caz, nu există o grămadă de super globals, 715 00:32:42,300 --> 00:32:45,960 cum se numesc aici, dintre care unul am saw-- post-dolar semn de subliniere. 716 00:32:45,960 --> 00:32:49,530 E o contrapartidă numit GET, care este în cazul în chestii de la o adresă URL 717 00:32:49,530 --> 00:32:50,690 sfârșește merge. 718 00:32:50,690 --> 00:32:54,051 Și există o grămadă de alții, sesiune too-- și de server și cookie. 719 00:32:54,051 --> 00:32:55,800 Ne vom întoarce la de Cookie altă dată, 720 00:32:55,800 --> 00:33:01,340 dar sesiune este un fel de rece deoarece chiar now-- până now-- 721 00:33:01,340 --> 00:33:06,350 tot ceea ce am făcut cu un browser web este un fel de apatrid, ca să spunem așa. 722 00:33:06,350 --> 00:33:10,060 Pot să faceți clic în jurul, acces fișierele de pe server, ceva 723 00:33:10,060 --> 00:33:13,500 se întâmplă pe ecran, dar apoi conexiunea se închide. 724 00:33:13,500 --> 00:33:17,450 Internet Explorer sau Firefox icon oprește filare 725 00:33:17,450 --> 00:33:20,340 și veți vedea doar ceea ce că pagina web conține. 726 00:33:20,340 --> 00:33:23,530 >> Deci, HTTP este apatrid în care după ce face o conexiune, 727 00:33:23,530 --> 00:33:25,050 devine unele date, asta este. 728 00:33:25,050 --> 00:33:29,940 Nu mai mult sens, spre deosebire de Skype, spre deosebire de FaceTime, spre deosebire de Gchat, care 729 00:33:29,940 --> 00:33:32,180 menține o constantă conexiune la server. 730 00:33:32,180 --> 00:33:34,650 Web-ul este fundamental deconectat, deși vom 731 00:33:34,650 --> 00:33:36,630 a se vedea cât de mult timp înainte putem simula lucruri 732 00:33:36,630 --> 00:33:39,300 cum ar fi Facebook chat-ul și Gchat, care menține iluzie 733 00:33:39,300 --> 00:33:41,680 sau de fapt, nu să mențină o legătură permanentă cu ajutorul 734 00:33:41,680 --> 00:33:43,270 mai mult tehnologia modernă. 735 00:33:43,270 --> 00:33:49,000 >> Dar dacă mă duc la, să zicem, counter.php, acesta este un alt exemplu simplu, 736 00:33:49,000 --> 00:33:52,700 așa cum vom vedea, că se gândește în prezent Am vizitat site-ul timp de zero. 737 00:33:52,700 --> 00:33:56,790 Dar dacă pur și simplu am să reîncărcați pagina, stie cumva am fost aici înainte. 738 00:33:56,790 --> 00:33:58,840 Dacă aș reincarca din nou, știe Am fost aici înainte. 739 00:33:58,840 --> 00:34:01,100 Și din nou și din nou și din nou și din nou. 740 00:34:01,100 --> 00:34:03,610 >> Deci, există niște plus, plussing întâmplă, dar aviz 741 00:34:03,610 --> 00:34:07,090 mic lucru pe care se învârte foarte scurt până sus și apoi deconectează, 742 00:34:07,090 --> 00:34:11,179 deci nu e ca și cum am avea o constantă conexiune la aparat mea. 743 00:34:11,179 --> 00:34:16,929 Ei bine, dacă mă duc în counter.php, observați cât de simplu este. 744 00:34:16,929 --> 00:34:19,080 Eu numesc în primul rând această special Funcția pe care o vom curând 745 00:34:19,080 --> 00:34:21,513 a începe să luați de la sine numit de pornire sesiune. 746 00:34:21,513 --> 00:34:22,179 Porniți o sesiune. 747 00:34:22,179 --> 00:34:25,095 >> Și o sesiune de acum înainte este doar Va fi o găleată, ca o lista de cumparaturi 748 00:34:25,095 --> 00:34:28,120 cart în care puteți pune valori și un fel de încredere ca un programator 749 00:34:28,120 --> 00:34:31,590 că ei vor fi aici când care vine utilizator back-- un al doilea 750 00:34:31,590 --> 00:34:35,670 mai târziu, o oră mai târziu, chiar și un an mai târziu, atât timp cât el sau ea nu dispare 751 00:34:35,670 --> 00:34:37,602 cookie-urile lor, așa cum vom vedea în cele din urmă. 752 00:34:37,602 --> 00:34:39,310 Și acum doar am o condiție dacă aici. 753 00:34:39,310 --> 00:34:44,679 Deci, în cazul în care următoarea cheie, numit contra, este stabilită în interiorul 754 00:34:44,679 --> 00:34:49,210 din acest super-global-- acest hash masă, dacă will-- sunat sesiune, 755 00:34:49,210 --> 00:34:53,350 apoi mergeți mai departe și apuca Valoarea de think session-- 756 00:34:53,350 --> 00:34:55,250 de acest lucru ca pe o lista de cumparaturi cart-- și depozitați-l 757 00:34:55,250 --> 00:34:57,680 într-o variabilă temporară numită contra. 758 00:34:57,680 --> 00:35:02,240 >> În caz contrar, în cazul în care contra valoare a fost nu sunt setate în așa-numita cosul de cumparaturi, 759 00:35:02,240 --> 00:35:04,430 doar inițializa la 0. 760 00:35:04,430 --> 00:35:09,830 În cele din urmă, aici, du-te și pune înapoi în cărucioarele de cumpărături sau sesiunii 761 00:35:09,830 --> 00:35:13,000 valoarea contra 1. 762 00:35:13,000 --> 00:35:16,730 Deci, se dovedește că această here-- special container 763 00:35:16,730 --> 00:35:20,355 care, din nou, este una dintre acestea asociate matrice, un tablou pe care le poti index 764 00:35:20,355 --> 00:35:25,010 în cuvinte în loc de Numere persistă chiar și după ce utilizatorul dispare. 765 00:35:25,010 --> 00:35:26,510 Din nou, voi reveni la pagina acum. 766 00:35:26,510 --> 00:35:28,400 A fost un minut sau cam asa ceva. 767 00:35:28,400 --> 00:35:31,300 Dar își amintește că n-am fost aici de 19 de ori înainte. 768 00:35:31,300 --> 00:35:32,740 Aceasta este vizita mea 20. 769 00:35:32,740 --> 00:35:36,560 >> Și astfel aceasta va fi cheia pentru de punere în aplicare orice site care isi aminteste 770 00:35:36,560 --> 00:35:40,640 că sunteți conectat, pe care le pune ceva literal in cosul de cumparaturi 771 00:35:40,640 --> 00:35:43,902 pentru a cumpara sau pe care le au unele Numărul de mesaje în așteptare. 772 00:35:43,902 --> 00:35:45,610 Oricand vrei sa amintiți-vă de informații, 773 00:35:45,610 --> 00:35:48,130 vom vedea că PHP, cum ar fi mai multe alte limbi, 774 00:35:48,130 --> 00:35:53,640 ne oferă această iluzie de stat chiar dacă, așa cum veți vedea în PSET 6, 775 00:35:53,640 --> 00:35:57,642 cum faci cereri HTTP de la client la server, asta este. 776 00:35:57,642 --> 00:35:59,850 Odată ce te-ai întors ca Ca răspuns, nu este nimic mai mult 777 00:35:59,850 --> 00:36:01,790 vine înapoi de la serverul implicit. 778 00:36:01,790 --> 00:36:03,820 Dar vom vedea cum să lucreze în jurul valorii de asta. 779 00:36:03,820 --> 00:36:07,430 >> Ei bine, acum, să încercăm să curăța asta un pic. 780 00:36:07,430 --> 00:36:09,470 Am văzut câteva diferite exemple de acolo. 781 00:36:09,470 --> 00:36:12,250 Oh, și ca o parte, pentru cei familiarizați sau nefamiliare, 782 00:36:12,250 --> 00:36:14,230 motivul că Exemplu Frosh AI dus 783 00:36:14,230 --> 00:36:18,060 de la căutarea într-adevăr urât la slightly-- bine, 784 00:36:18,060 --> 00:36:23,160 încă ugly-- la ușor mai puțin urât, deși încă urât 785 00:36:23,160 --> 00:36:25,230 este că dacă ne uităm la codul sursă aici, 786 00:36:25,230 --> 00:36:28,240 se pare că am această la foarte de sus a fișierului. 787 00:36:28,240 --> 00:36:32,570 >> Se pare că bootstrap este una din multele biblioteci primare acolo 788 00:36:32,570 --> 00:36:37,140 care nu exista in limbaje de programare mereu, dar pentru CSS sau pentru JavaScript 789 00:36:37,140 --> 00:36:39,190 sau HTML sau orice număr de limbi. 790 00:36:39,190 --> 00:36:42,160 >> Si acesti oameni here-- inițial a ieșit 791 00:36:42,160 --> 00:36:44,730 de Twitter-- au doar o grămadă de stiluri. 792 00:36:44,730 --> 00:36:47,360 Este un fișier masiv aici că cineva a scris, 793 00:36:47,360 --> 00:36:51,020 sau scris cuiva, în timp că specifică culori și formatarea 794 00:36:51,020 --> 00:36:53,740 și fleacuri astfel încât să pot fel de a împrumuta sintaxa lor 795 00:36:53,740 --> 00:36:56,157 și nu trebuie să dau seama cum să se stabilească în forma mea. 796 00:36:56,157 --> 00:36:57,990 Acest lucru este, de asemenea, minified astfel încât un calculator poate 797 00:36:57,990 --> 00:37:00,560 înțelege acest lucru, dar nu în mod necesar un om. 798 00:37:00,560 --> 00:37:03,050 Deci, asta e doar de ce stilizare acolo sa schimbat. 799 00:37:03,050 --> 00:37:05,450 >> Dar hai sa facem acum mai bine în termeni de design, 800 00:37:05,450 --> 00:37:07,490 pentru că dacă am sta jos acest drum prea lung, 801 00:37:07,490 --> 00:37:11,290 codul nostru va obține murdar și Messier. 802 00:37:11,290 --> 00:37:13,040 Deci, haideți să se concentreze pe aceste exemple aici. 803 00:37:13,040 --> 00:37:15,090 Ultimul pentru ziua de azi. 804 00:37:15,090 --> 00:37:18,720 >> Deci, aici este un super-simplu Versiunea 1.0 a site-ului CS50 lui. 805 00:37:18,720 --> 00:37:21,250 Ea are doar link-uri către cursuri și programe analitice, 806 00:37:21,250 --> 00:37:25,490 și se folosește ca lista neordonata tag-- eticheta UL pe care am folosit ultima dată. 807 00:37:25,490 --> 00:37:28,800 Și dacă, de fapt, dacă mă deschide View Page Source, 808 00:37:28,800 --> 00:37:31,710 veți vedea că acest lucru este într-adevăr, foarte simplu HTML. 809 00:37:31,710 --> 00:37:35,460 Și, de fapt, chiar dacă acest lucru este un fișier PHP sub capota, 810 00:37:35,460 --> 00:37:38,620 este încă doar scuipa out HTML doar pentru acum. 811 00:37:38,620 --> 00:37:41,312 >> Deci, dacă am faceți clic pe Lectures, vom vedea acest lucru. 812 00:37:41,312 --> 00:37:43,020 Și dacă dau click pe săptămână la zero, vom vedea acest lucru. 813 00:37:43,020 --> 00:37:44,920 Și dacă faceți clic pe Miercuri, vedem aceasta. 814 00:37:44,920 --> 00:37:47,900 Și acest lucru se pare că a fost de PDF lamelelor din acea zi. 815 00:37:47,900 --> 00:37:52,020 Tot ce am făcut este link-ul cu un ancora tag-ul pentru această adresă URL aici. 816 00:37:52,020 --> 00:37:55,400 >> Deci, aceasta este doar să spun acest lucru este o destul de versiune simpla a site-ului CS50 lui. 817 00:37:55,400 --> 00:37:56,790 Să vedem cum se puse în aplicare. 818 00:37:56,790 --> 00:38:01,240 Dacă mă duc în directorul mvc0, vom vedea câteva fișiere. 819 00:38:01,240 --> 00:38:03,250 Una dintre ele este un README, așa că, dacă o parte din acest lucru este prea rapid, 820 00:38:03,250 --> 00:38:05,166 puteți sa faceți doar în jurul valorii de mai pe îndelete mai târziu. 821 00:38:05,166 --> 00:38:07,930 Și aviz aici este un fișier index.php. 822 00:38:07,930 --> 00:38:09,960 Se pare că în cazul în care te, omul, 823 00:38:09,960 --> 00:38:14,460 nu specificați un nume de finală în un URL, serverul de web, de obicei, 824 00:38:14,460 --> 00:38:17,010 deduce unele nume implicit pentru tine. 825 00:38:17,010 --> 00:38:20,060 Un ceva index dot este, în general, implicit. 826 00:38:20,060 --> 00:38:23,010 >> Deci, de aceea o clipă în urmă când am vizitat această adresă URL aici, 827 00:38:23,010 --> 00:38:26,750 nici un nume de fișier, nici un fișier prelungire, nici o perioadă în URL-ul. 828 00:38:26,750 --> 00:38:29,710 Pur și simplu știa într-un fel magic să caute index.php. 829 00:38:29,710 --> 00:38:30,870 E doar o convenție. 830 00:38:30,870 --> 00:38:32,360 Ar putea fi numit nimic. 831 00:38:32,360 --> 00:38:35,110 >> Așa că, dacă acum mă duc în index.php, veți vedea 832 00:38:35,110 --> 00:38:37,100 că, indeed-- să scăpa de comentarii 833 00:38:37,100 --> 00:38:39,500 aici, pentru că nu există cu adevărat nimic interesant la it-- 834 00:38:39,500 --> 00:38:41,579 aceasta este doar greu codificate HTML. 835 00:38:41,579 --> 00:38:43,370 Deci, asta e consistent, deși, cu revendicarea mea 836 00:38:43,370 --> 00:38:45,230 pe care le puteți amesteca HTML și PHP. 837 00:38:45,230 --> 00:38:48,060 Nu e nici real programare logică aici. 838 00:38:48,060 --> 00:38:51,030 >> Și alte fișiere sunt destul de mult la fel de neinteresant. 839 00:38:51,030 --> 00:38:56,240 E doar o saptamana hard-coded aici pentru o saptamana m și o greutate săptămână, 840 00:38:56,240 --> 00:38:57,510 pentru luni și miercuri. 841 00:38:57,510 --> 00:39:01,890 Și apoi, dacă am deschide săptămână la zero, observați că e aproape identic. 842 00:39:01,890 --> 00:39:03,320 >> Și asta e un fel de Takeaway cheie. 843 00:39:03,320 --> 00:39:06,180 Observați cât de redundant acest lucru este. 844 00:39:06,180 --> 00:39:10,710 Aceste fișiere abia se schimbe, și totuși am tras una dintre aceste copy / paste de locuri de muncă 845 00:39:10,710 --> 00:39:13,420 unde am luat o file-- probabil în săptămâna zero-- copiat 846 00:39:13,420 --> 00:39:16,320 când a venit o saptamana în jurul valorii de, și optimizat câteva valori. 847 00:39:16,320 --> 00:39:18,590 Noi ar trebui să fi probabil în măsură pentru a face mai bine decât acest lucru. 848 00:39:18,590 --> 00:39:21,800 >> Așa că hai să mergem înapoi la MVC și du-te într-o versiune. 849 00:39:21,800 --> 00:39:24,810 Și observați Am o câteva fișiere, pentru că ceea ce 850 00:39:24,810 --> 00:39:29,870 a fost comună pentru toate aceste fișiere doar un clipă ago-- dacă mă întorc la versiunea 0, 851 00:39:29,870 --> 00:39:32,600 Să mergem înapoi în index, și doar postulate-- 852 00:39:32,600 --> 00:39:36,090 o dată ce am scăpa de comments-- ce parte a acestei pagini 853 00:39:36,090 --> 00:39:40,072 este probabil în fiecare dintre fisierele mele? 854 00:39:40,072 --> 00:39:40,780 Doar striga. 855 00:39:40,780 --> 00:39:44,620 Care liniile sunt duplicate probabil peste toate aceste pagini? 856 00:39:44,620 --> 00:39:45,120 Da? 857 00:39:45,120 --> 00:39:46,110 >> STUDENT: [inaudibil]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. MALAN: de la 1 la 9. 859 00:39:47,660 --> 00:39:48,720 Da, absolut. 860 00:39:48,720 --> 00:39:52,080 1 la 9, cu excepția, poate, 8 schimbă un pic pentru că CS50 861 00:39:52,080 --> 00:39:54,650 devine prelegeri sau Săptămâna zero sau ceva. 862 00:39:54,650 --> 00:39:55,970 Dar aproape identice. 863 00:39:55,970 --> 00:39:58,657 Deci, toate aceste lucruri este doar fel de copiat și inserat. 864 00:39:58,657 --> 00:40:00,490 Și există un cuplu alte linii pot să cred că 865 00:40:00,490 --> 00:40:05,000 din care sunt probabil identice în toate fișierele. 866 00:40:05,000 --> 00:40:06,315 >> STUDENT: 12 și 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. MALAN: Da. 868 00:40:07,190 --> 00:40:11,220 Sigur, 12, 13, și 14, probabil, doar pentru că interesant chestii 869 00:40:11,220 --> 00:40:15,460 se întâmplă pe liniile 11 și 10, așa s-ar părea. 870 00:40:15,460 --> 00:40:18,350 Deci, să ne uităm la versiunea 1, care încearcă să îmbunătățească în acest sens. 871 00:40:18,350 --> 00:40:24,020 În versiunea 1 a acestui example-- MVC noi vom explica ce înseamnă MVC într-un moment-- 872 00:40:24,020 --> 00:40:27,420 dacă mă duc în index, este un fel de Se pare un pic confuz acum. 873 00:40:27,420 --> 00:40:28,880 Nu e chiar așa de simplu ca înainte. 874 00:40:28,880 --> 00:40:30,906 >> Dar, odată ce începe să citiți-l cu atenție, e 875 00:40:30,906 --> 00:40:32,530 destul de simplu ce face. 876 00:40:32,530 --> 00:40:34,397 Linia aparent 1 și linia 8 au înlocuit 877 00:40:34,397 --> 00:40:37,230 toate lucrurile pe care tocmai ați identified-- deși doar pentru o bună măsură, 878 00:40:37,230 --> 00:40:41,900 Am plecat de la ULS acolo doar în cazul în care unele zile, nu a avut o listă de lucruri. 879 00:40:41,900 --> 00:40:47,860 Și impun acest lucru este un fel de lire să includă în exemplare C. și paste 880 00:40:47,860 --> 00:40:50,470 conținutul efectiv chiar aici, în acest dosar. 881 00:40:50,470 --> 00:40:53,650 >> Deci, în header.php, în timp ce s-ar putea deduce din numele său, 882 00:40:53,650 --> 00:40:55,330 va fi antetul paginii. 883 00:40:55,330 --> 00:40:57,110 E un fel de orfani aici. 884 00:40:57,110 --> 00:41:01,820 Ea are doar partea de sus la ea, dar nu e nici mai mult conținut de mai jos. 885 00:41:01,820 --> 00:41:05,070 >> Și dacă mă uit la subsol între timp, care era celălalt fișier mentioned-- 886 00:41:05,070 --> 00:41:08,830 asta e chiar mai puțin interesant, dar din nou, este comun pentru tot. 887 00:41:08,830 --> 00:41:10,250 Deci, acest lucru este notele de subsol. 888 00:41:10,250 --> 00:41:11,300 Acesta este antetul. 889 00:41:11,300 --> 00:41:13,950 Acesta este fișierul pe care-i schimbare, asa ca de ce nu 890 00:41:13,950 --> 00:41:18,140 încercați să factor în caracterul comun cu aceste două linii de aici? 891 00:41:18,140 --> 00:41:20,090 >> Dar putem curăța acest un pic mai departe. 892 00:41:20,090 --> 00:41:23,260 Am de gând să merg mai departe și deschide Versiune două în cazul în care 893 00:41:23,260 --> 00:41:27,106 vom vedea că nu există un nou dosar, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Vom vedea despre ce este într-o clipă. 895 00:41:28,610 --> 00:41:30,930 Să mergem la index, ca punct de intrare la fel ca înainte. 896 00:41:30,930 --> 00:41:35,230 >> Și acum observați eu care necesită helpers.php, nu antet sau subsol. 897 00:41:35,230 --> 00:41:41,720 Dar ajutoare este un fel de helpers.c și helpers.h de la PSET 2 898 00:41:41,720 --> 00:41:46,150 sau PSET 3 mult timp în urmă, atunci când de fapt a căuta și găsi pentru că PSET, 899 00:41:46,150 --> 00:41:50,950 si tu ai avut tot de codul de sortare și căutarea într-un fișier separat. 900 00:41:50,950 --> 00:41:52,510 Asta e ceea ce se întâmplă aici. 901 00:41:52,510 --> 00:41:54,390 >> Și acum linia 3 arată un pic diferit. 902 00:41:54,390 --> 00:41:55,920 Și e doar un singur rând. 903 00:41:55,920 --> 00:41:57,950 Pentru a face acest lucru chiar mai mult clar, aș putea doar 904 00:41:57,950 --> 00:42:01,820 face acest lucru pentru a fi consecvent stilistic cu tot ceea ce am făcut. 905 00:42:01,820 --> 00:42:04,130 Dar asta nu e adevărat schimbarea funcționalitatea. 906 00:42:04,130 --> 00:42:05,880 E doar o linie de cod reale. 907 00:42:05,880 --> 00:42:09,010 >> Aparent, există o funcție undeva numit face în afara, 908 00:42:09,010 --> 00:42:11,420 și acest lucru este în cazul în care lucrurile a obține destul de puternic. 909 00:42:11,420 --> 00:42:17,040 Observați că în interiorul paranteze sale este ceea ce altă piesă de sintaxă? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Este, probabil, un pic cam greu de spus, dar observați there's-- Voi pune niște alb 912 00:42:23,350 --> 00:42:24,300 spațiu. 913 00:42:24,300 --> 00:42:25,530 Nu e paranteze pătrate. 914 00:42:25,530 --> 00:42:29,700 >> Și paranteze drepte am văzut un pic în urmă în contextul tablouri asociative, 915 00:42:29,700 --> 00:42:31,580 care sunt, din nou, la fel ca tabele de dispersie. 916 00:42:31,580 --> 00:42:36,230 Și dacă credeți acum la C, Pentru a argumentelor într-o funcție 917 00:42:36,230 --> 00:42:37,570 trebuie să fie mereu la fel. 918 00:42:37,570 --> 00:42:41,146 Trebuie să ne amintim ceea ce comanda x este--, y, z sau z, y, X- 919 00:42:41,146 --> 00:42:44,020 și va trebui să le ofere mereu în aceeași ordine sau uite-le în sus 920 00:42:44,020 --> 00:42:45,100 dacă ați uitat. 921 00:42:45,100 --> 00:42:51,140 >> Dar acest lucru pare a fi un mod inteligent a trece o valoare cheie arbitrară 922 00:42:51,140 --> 00:42:55,840 perechi în care titlul este numele de un argument în acest caz 923 00:42:55,840 --> 00:42:58,334 și CS50 este valoarea sa. 924 00:42:58,334 --> 00:43:00,250 Și faptul că am aceste paranteze pătrate 925 00:43:00,250 --> 00:43:02,560 înseamnă aici că am putut De asemenea, trece în ceva 926 00:43:02,560 --> 00:43:07,550 ca o săptămână este 1 sau 0 sau 2 sau 3. 927 00:43:07,550 --> 00:43:10,550 Așa că ne-am parametrizate această funcție în așa fel 928 00:43:10,550 --> 00:43:15,180 care poate dura mai multe intrări, dar de acum e doar unul. 929 00:43:15,180 --> 00:43:20,060 >> Dacă acum mă duc în helpers.php, observați ce face. 930 00:43:20,060 --> 00:43:22,030 Acesta este un pic de noi funcționalități, 931 00:43:22,030 --> 00:43:24,190 dar de acum ia doar pe credința că acest lucru este 932 00:43:24,190 --> 00:43:26,570 sintaxa cu care defini o funcție în PHP. 933 00:43:26,570 --> 00:43:27,840 Tu spui literalmente funcție. 934 00:43:27,840 --> 00:43:30,090 Tu nu specificați o întoarcere tip, și asta e consecvent 935 00:43:30,090 --> 00:43:33,880 cu Detalii variabila anterioară în cazul în care nu prea puternic tastați. 936 00:43:33,880 --> 00:43:35,650 >> Acesta indică doar că, în mod implicit, această 937 00:43:35,650 --> 00:43:37,460 are o asociativ matrice ca argument. 938 00:43:37,460 --> 00:43:38,210 Și știi ce? 939 00:43:38,210 --> 00:43:41,450 În cazul în care utilizatorul nu trece o in, presupune o valoare implicită. 940 00:43:41,450 --> 00:43:44,680 >> Aceasta este o caracteristică care C nu are pentru noi, ceea ce este frumos, pentru că acum 941 00:43:44,680 --> 00:43:46,430 date, chiar dacă nu dau nimic, 942 00:43:46,430 --> 00:43:49,300 va fi o matrice ci unul gol. 943 00:43:49,300 --> 00:43:51,860 Și, ca o paranteza, extract doar face ceva funky, 944 00:43:51,860 --> 00:43:56,380 în cazul în care este nevoie de toate cheile de la această tablou asociativ, toate lucrurile 945 00:43:56,380 --> 00:43:59,950 ai putea pune între paranteze drepte, și creează variabile din ele 946 00:43:59,950 --> 00:44:06,270 astfel încât să putem avea în cele din urmă acces la acestea în footet.php și header.php. 947 00:44:06,270 --> 00:44:08,950 Asta e un pic abstract, Să-mi să subliniez acest lucru. 948 00:44:08,950 --> 00:44:12,990 >> În index.php, observați că eu sunt care trece într-o pereche valoare-cheie din titlu 949 00:44:12,990 --> 00:44:14,850 cu o valoare de CS50. 950 00:44:14,850 --> 00:44:18,660 Dacă acum mă uit la helpers.php, observați că RenderHeader 951 00:44:18,660 --> 00:44:23,870 Se extragere că datele pe care am trece în, și apoi necesită header.php. 952 00:44:23,870 --> 00:44:27,970 Ceea ce am făcut este un fel de om sărac punerea în aplicare acum de mai jos. 953 00:44:27,970 --> 00:44:31,720 >> Dacă aș deschide header.php, Notă că eu nu mai am greu 954 00:44:31,720 --> 00:44:34,890 codificate CS50 cuvânt în acest fișier antet. 955 00:44:34,890 --> 00:44:39,310 Am pus acest adevăr atroce funcție numită, caractere speciale HTML, 956 00:44:39,310 --> 00:44:40,170 acolo. 957 00:44:40,170 --> 00:44:41,640 Dar observați ce am făcut. 958 00:44:41,640 --> 00:44:44,240 Am deschis HTML. 959 00:44:44,240 --> 00:44:47,420 Atunci am cap deschis și titlul deschis. 960 00:44:47,420 --> 00:44:52,380 >> Și apoi în interiorul a titlului de deschis și Tag-uri apropiate, am un pic de cod PHP. 961 00:44:52,380 --> 00:44:56,670 Iar acest lucru este un frumos dar de sintaxă, ceea ce înseamnă doar ecou afară. 962 00:44:56,670 --> 00:44:59,840 Aceasta înseamnă literalmente asta: ecou following-- 963 00:44:59,840 --> 00:45:01,910 dar acest lucru este mai sexy de a scrie. 964 00:45:01,910 --> 00:45:05,000 Ecou din titlu care a fost adoptată în. 965 00:45:05,000 --> 00:45:07,560 >> Dar ce crezi HTML char special este vorba, 966 00:45:07,560 --> 00:45:10,590 mai ales dacă aveți ceva experiență în HTML? 967 00:45:10,590 --> 00:45:14,050 Ce caractere pot fi periculos pentru a trece într-o pagină 968 00:45:14,050 --> 00:45:17,980 în cazul în care sunteți generatoare de dinamic pagina de web cu cod ca aceasta? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Lasă-mă să merg la acest dosar, versiunea doi, și a vedea dacă nu pot induce acest lucru. 971 00:45:24,650 --> 00:45:26,210 >> Versiunea doi este aceasta. 972 00:45:26,210 --> 00:45:28,510 Și observați tot este bine, funcționează bine. 973 00:45:28,510 --> 00:45:35,280 Dar să presupunem că mă duc în index.php și Am precizat că titlul de pagina mea 974 00:45:35,280 --> 00:45:36,630 nu este CS50. 975 00:45:36,630 --> 00:45:44,930 Este placuta deschis alerte de script salut lume, aproape citat singur, 976 00:45:44,930 --> 00:45:49,740 închidere paranteză, punct și virgulă, Suport deschis, script-ul slash. 977 00:45:49,740 --> 00:45:51,897 >> Script-ul, cum vom a se vedea în cele din urmă, este o etichetă 978 00:45:51,897 --> 00:45:54,480 pe care le puteți utiliza pentru a utiliza de un alt limbaj de programare numit 979 00:45:54,480 --> 00:45:56,330 JavaScript in interiorul unei pagini web. 980 00:45:56,330 --> 00:45:57,960 Și acum observați logica aici. 981 00:45:57,960 --> 00:45:59,840 Aici este o cheie numit titlu. 982 00:45:59,840 --> 00:46:02,690 Iată că e valoare în adâncime nebun acum. 983 00:46:02,690 --> 00:46:07,840 >> Dar dacă mă duc la ajutoarele de pagină sau, mai degrabă, pagina antet, 984 00:46:07,840 --> 00:46:11,310 Sun această funcție pe acest titlu în primul rând. 985 00:46:11,310 --> 00:46:15,250 Deci, dacă am reincarca acum această pagină, am a se vedea acest lucru, ceea ce pare ridicol, 986 00:46:15,250 --> 00:46:16,110 dar e sigur. 987 00:46:16,110 --> 00:46:17,310 Pur și simplu pare stupid. 988 00:46:17,310 --> 00:46:20,320 >> Dar să presupunem în schimb Am uitat acest lucru. 989 00:46:20,320 --> 00:46:24,660 Și marca cuvintele mele, un număr diferit de zero de va uita să facă acest lucru 990 00:46:24,660 --> 00:46:27,790 și veți obține niște harnic elev sau un prieten vine 991 00:46:27,790 --> 00:46:31,540 la tine, la târg CS50 sau anonim pe timp de noapte poking în jurul valorii de pe site-ul tau 992 00:46:31,540 --> 00:46:35,300 și, în esență, injectarea de cod fără știrea voastră în site-ul dvs. 993 00:46:35,300 --> 00:46:35,800 într-un fel. 994 00:46:35,800 --> 00:46:39,000 >> Pentru că dacă pur și simplu am scuipat din titlu aici și titlul 995 00:46:39,000 --> 00:46:44,330 there-- bine, în cazul în care titlul propriu Se pare ca acest lucru și PHP 996 00:46:44,330 --> 00:46:47,660 ca o limbă care poate scuipa din alt text limbi, 997 00:46:47,660 --> 00:46:50,650 acest lucru se întâmplă literalmente pentru a înlocui această etichetă cu, 998 00:46:50,650 --> 00:46:53,010 desigur, ceea ce mi-am pus în altă parte. 999 00:46:53,010 --> 00:46:57,640 >> Așa că, dacă acum, intră aici și reîncărcați după desfacerea acestor mecanisme de siguranță, 1000 00:46:57,640 --> 00:46:59,982 acum am salut lume aici. 1001 00:46:59,982 --> 00:47:02,690 Acum, asta nu e tot atât de mare de o a face, dar ai putea face ceva 1002 00:47:02,690 --> 00:47:05,119 un pic mai mult rău intenționat aici, ca și cum nu există 1003 00:47:05,119 --> 00:47:08,410 alte tags-- așa cum vom vedea când vom cheltui mai mult timp în JavaScript-- ca locație 1004 00:47:08,410 --> 00:47:14,910 dot href devine, citat, citatul, HTTP business.com, dar opusul care 1005 00:47:14,910 --> 00:47:15,950 de ieri. 1006 00:47:15,950 --> 00:47:20,120 Și acum vă poate induce un web Pagina a merge de fapt, imediat 1007 00:47:20,120 --> 00:47:21,190 la aceasta pagina web aici. 1008 00:47:21,190 --> 00:47:23,000 >> Și, de fapt, nu vreau pentru a merge chiar la business.com 1009 00:47:23,000 --> 00:47:24,749 pentru că nu vreau să știe ce este asta. 1010 00:47:24,749 --> 00:47:28,710 Dar aceasta, de asemenea, se va declanșa cod care urmează să fie injectat în această pagină. 1011 00:47:28,710 --> 00:47:32,680 Deci, aceasta este doar să spun că, chiar dacă suntem introducerea super-devreme pe unele 1012 00:47:32,680 --> 00:47:36,800 dintre aceste structuri mai complexe, totul este spre un scop de a face sigur 1013 00:47:36,800 --> 00:47:39,320 acest cod nu este exploatat. 1014 00:47:39,320 --> 00:47:40,960 >> Deci, acum un al treilea versiune aici. 1015 00:47:40,960 --> 00:47:42,470 Se face un pic crescator. 1016 00:47:42,470 --> 00:47:44,875 Nu am într-adevăr like-- partea anal de mine 1017 00:47:44,875 --> 00:47:47,750 a fost obtinerea un pic deranjat de fapt că am o funcție numită 1018 00:47:47,750 --> 00:47:51,940 RenderHeader și RenderFooter care au fost aproape identice. 1019 00:47:51,940 --> 00:47:55,400 Deci, m-am gândit, de ce nu face Am parameterize aceste funcții 1020 00:47:55,400 --> 00:47:59,180 în doar unul numit face, l-au să ia un al doilea argument 1021 00:47:59,180 --> 00:48:04,420 cum ar fi numele șablonului, în finală a render-- fie antet sau subsol? 1022 00:48:04,420 --> 00:48:07,160 Și apoi, eventual, dacă vreau pentru a trece în niște perechi de valori-cheie 1023 00:48:07,160 --> 00:48:10,580 ca și cum aș face pentru titlu header dar nu pentru subsol, 1024 00:48:10,580 --> 00:48:11,800 Am putea face asta. 1025 00:48:11,800 --> 00:48:16,510 >> Și așa că acum, dacă mă duc în helpers.php, e un pic mai complex. 1026 00:48:16,510 --> 00:48:19,670 Și voi val mâinile mele de la detalii, dar e doar o singură funcție. 1027 00:48:19,670 --> 00:48:21,890 Așa că e un pas spre un design mai bun. 1028 00:48:21,890 --> 00:48:23,360 >> Putem lua acest un pas mai departe. 1029 00:48:23,360 --> 00:48:28,890 Dacă mă duc în al patrulea mea Versiunea de acest lucru, observați acum 1030 00:48:28,890 --> 00:48:31,320 care fac ceva chiar mai mult un fel de criptice. 1031 00:48:31,320 --> 00:48:33,230 Și știu că acest lucru este o lot pentru a absorbi dintr-o dată, 1032 00:48:33,230 --> 00:48:35,080 dar suntem doar un fel de curățare lucrurile. 1033 00:48:35,080 --> 00:48:38,550 Acum am pune tovarășii mei fișier într-un folder numit 1034 00:48:38,550 --> 00:48:41,190 includes-- doar o arbitrar utilizatorului în cazul în care vreau să pun lucrurile 1035 00:48:41,190 --> 00:48:44,300 că vreau să include-- și apoi restul este aceeași. 1036 00:48:44,300 --> 00:48:47,140 >> Dar dacă mă uit acum la gedit, Notă că am scăpat 1037 00:48:47,140 --> 00:48:51,940 de toate aceste alte fișiere și n-am le-a mutat, de exemplu, în aici. 1038 00:48:51,940 --> 00:48:55,110 Și apoi în șabloane, Am acest aici, de asemenea. 1039 00:48:55,110 --> 00:48:59,292 Și astfel aceasta este tot acum spre un pas a folosit un model de design mult mai bine. 1040 00:48:59,292 --> 00:49:01,000 Și noi suntem foarte repede de gând să se mute departe 1041 00:49:01,000 --> 00:49:03,870 de la funcționalitatea implicit PHP, care am început aici cu, 1042 00:49:03,870 --> 00:49:07,655 în cazul în care tocmai ați amesteca PHP, și HTML, CSS și dumneavoastră, 1043 00:49:07,655 --> 00:49:09,780 și pe care tocmai ați scuipat afară și tu du-te despre drumul tau. 1044 00:49:09,780 --> 00:49:11,404 Aceasta nu va fi foarte ușor de întreținut. 1045 00:49:11,404 --> 00:49:14,481 La fel ca în C, am inceput sa folosesc mai multe fișiere și funcții multiple 1046 00:49:14,481 --> 00:49:15,730 și factoring lucrurile asta. 1047 00:49:15,730 --> 00:49:16,688 Vom face același lucru aici. 1048 00:49:16,688 --> 00:49:19,970 Și, de fapt, în a cincea și ultima Versiunea aici, am făcut un alt lucru. 1049 00:49:19,970 --> 00:49:23,710 Puteți utiliza chiar punct punct, care, din nou, este doar directorul părinte. 1050 00:49:23,710 --> 00:49:28,260 Pentru a fi și mai conștient de securitate, pentru că dacă mă uit la ascultare 1051 00:49:28,260 --> 00:49:32,450 aici pentru al cincilea și versiunea finală, aviz că am un director numit aici 1052 00:49:32,450 --> 00:49:35,180 publică, iar apoi pe același nivel, ca să spunem așa, 1053 00:49:35,180 --> 00:49:38,490 Am include și șabloane și apoi că fișier text readme. 1054 00:49:38,490 --> 00:49:41,130 >> Și motivul pentru care l-am structurat mi place asta: și atât de multe web 1055 00:49:41,130 --> 00:49:44,330 gazde, în special a celor 5 dolari o cei luni sau cele 10 dolari pe lună, 1056 00:49:44,330 --> 00:49:47,170 dacă ați avut vreodată una dintre acestea services-- ce atât de mulți dintre ei fac 1057 00:49:47,170 --> 00:49:50,690 este că se așteaptă doar să arunce toate fișierele într-un singur director, 1058 00:49:50,690 --> 00:49:53,640 așa cum am făcut-o deja cu acest lucru foarte prim exemplu. 1059 00:49:53,640 --> 00:49:56,740 >> Dar, de îndată ce începe construirea mai mult site-uri sofisticate care stochează doar 1060 00:49:56,740 --> 00:50:00,480 Date îți pasă și la fișierele pasă, organizarea de fapt lucrurile 1061 00:50:00,480 --> 00:50:05,060 corect și cu mai multă securitate conștiință în minte poate 1062 00:50:05,060 --> 00:50:07,927 vom începe să-și apere împotriva tuturor prietenilor 1063 00:50:07,927 --> 00:50:10,135 pe care le au în cadrul sau în afara de această clasă care, 1064 00:50:10,135 --> 00:50:12,510 de îndată ce începe a face programe de tine pe web, 1065 00:50:12,510 --> 00:50:15,140 sunt de gând să înceapă cules pe tine și pe ele. 1066 00:50:15,140 --> 00:50:17,420 >> Și așa ne vom uita în cele din urmă la acest design. 1067 00:50:17,420 --> 00:50:20,010 Aceasta este doar o imagine care descrie următoarele. 1068 00:50:20,010 --> 00:50:22,897 Ne vom pune toate noastre programare logică în unul sau mai multe fișiere, 1069 00:50:22,897 --> 00:50:25,230 și vom începe doar de asteptare aceste controlere. 1070 00:50:25,230 --> 00:50:28,022 E în cazul în care creierul site-urile noastre sunt de fapt. 1071 00:50:28,022 --> 00:50:29,730 Apoi, vom au vederi și opinii 1072 00:50:29,730 --> 00:50:32,480 sunt la fel de simplu ca doar separat files-- numit template-uri, de multe ori. 1073 00:50:32,480 --> 00:50:34,410 Ei au doar estetica pe pagina mea, 1074 00:50:34,410 --> 00:50:37,020 ceea ce vreau paginii pentru a privi like-- culorile și aspectul 1075 00:50:37,020 --> 00:50:38,870 și pozițiile toate variabilele. 1076 00:50:38,870 --> 00:50:41,120 >> Și apoi mai interesant că vom ajunge în cele din urmă la 1077 00:50:41,120 --> 00:50:45,420 este modelul, care va fi doar Cuvântul ne palmă pe alte tehnologii 1078 00:50:45,420 --> 00:50:47,771 pe care le aduce în imagine, cum ar fi baze de date reale, 1079 00:50:47,771 --> 00:50:49,520 astfel încât atunci când doriți pentru a salva informații, 1080 00:50:49,520 --> 00:50:52,140 nu doar trimite un e-mail pentru Proctor sau la tine, 1081 00:50:52,140 --> 00:50:57,350 de fapt se păstrează într-o bază de date folosind un alt limbaj cunoscut sub numele de SQL. 1082 00:50:57,350 --> 00:51:00,450 Și așa vom pleca astăzi aici și ridica cu acest miercuri 1083 00:51:00,450 --> 00:51:02,990 și să introducă baze de date atunci. 1084 00:51:02,990 --> 00:51:06,940 >> [MUSIC JOC] 1085 00:51:06,940 --> 00:54:24,555