1 00:00:00,000 --> 00:00:03,920 >> [REPRODUCCIÓ DE MÚSICA] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. Malan: D'acord. 4 00:00:13,800 --> 00:00:15,640 Això és CS50. 5 00:00:15,640 --> 00:00:17,620 Aquest és el començament de la setmana 8. 6 00:00:17,620 --> 00:00:22,440 I cal recordar que el deixem l'última vegada que mira un nou idioma 7 00:00:22,440 --> 00:00:23,240 completament. 8 00:00:23,240 --> 00:00:25,905 De fet, un que és bastant lleuger i ni tan sols és 9 00:00:25,905 --> 00:00:26,940 un llenguatge de programació. 10 00:00:26,940 --> 00:00:31,100 És un llenguatge de marcat que ens permet realment estructurar i fer que les pàgines web. 11 00:00:31,100 --> 00:00:33,350 I quan alguna cosa més en conjunció amb esto-- 12 00:00:33,350 --> 00:00:35,670 o aviat ho sabrà, si no ho ha fet. 13 00:00:35,670 --> 00:00:38,530 Utilitzarem en cascada Fulls d'estil o CSS, que 14 00:00:38,530 --> 00:00:40,971 és un altre tipus de llenguatge amb propietats i valors 15 00:00:40,971 --> 00:00:43,220 això va a deixar-nos fer coses com canviar el color 16 00:00:43,220 --> 00:00:46,010 i canviar la posició i aquest tipus d'ajustos. 17 00:00:46,010 --> 00:00:49,940 Però avui en dia i en endavant, vam començar a centrar-se en les llengües més poderoses, 18 00:00:49,940 --> 00:00:52,810 llenguatges de programació com PHP reals. 19 00:00:52,810 --> 00:00:54,880 >> Així que PHP ha estat al voltant per algun temps. 20 00:00:54,880 --> 00:00:56,810 I com es veurà, es va ser dissenyat principalment 21 00:00:56,810 --> 00:01:00,280 des del principi per a real utilitzar en el desenvolupament web 22 00:01:00,280 --> 00:01:02,360 i en realitat la generació de pàgines web. 23 00:01:02,360 --> 00:01:04,849 Llavors, quin tipus de característiques fa un idioma 24 00:01:04,849 --> 00:01:10,040 necessari per tal de fer web pàgines de forma dinàmica amb ell? 25 00:01:10,040 --> 00:01:14,760 >> En altres paraules, si vol generar contingut dynamically-- com Facebook de 26 00:01:14,760 --> 00:01:19,480 Subministrament de notícies, que canvia constantment, o missatges instantanis que apareixen de tant 27 00:01:19,480 --> 00:01:21,872 a temps-- com el que és el peça clau de la funcionalitat 28 00:01:21,872 --> 00:01:24,580 el que necessites en un llenguatge de programació que li permeten de forma dinàmica 29 00:01:24,580 --> 00:01:28,070 imprimir nova informació a la pantalla? 30 00:01:28,070 --> 00:01:28,685 >> ESTUDIANT: Codi. 31 00:01:28,685 --> 00:01:29,560 DAVID J. Malan: Codi. 32 00:01:29,560 --> 00:01:30,440 Okay. 33 00:01:30,440 --> 00:01:31,995 Prendrem això. 34 00:01:31,995 --> 00:01:35,310 Una mica més precís. 35 00:01:35,310 --> 00:01:37,639 Vull dir, podríem fer això amb C, francament. 36 00:01:37,639 --> 00:01:38,930 Seria un dolor al coll. 37 00:01:38,930 --> 00:01:41,045 Però- és aquest compromís? 38 00:01:41,045 --> 00:01:41,895 >> ESTUDIANT: Sí. 39 00:01:41,895 --> 00:01:42,677 Les variables, potser? 40 00:01:42,677 --> 00:01:43,760 DAVID J. Malan: Variables. 41 00:01:43,760 --> 00:01:44,160 Bé, segur. 42 00:01:44,160 --> 00:01:45,740 Les variables sens dubte ens poden ajudar. 43 00:01:45,740 --> 00:01:47,020 I fins i tot una mica més simple. 44 00:01:47,020 --> 00:01:50,640 El fem servir en la primera programa del primer dia 45 00:01:50,640 --> 00:01:55,686 quan en realitat ens va dir "hola món". 46 00:01:55,686 --> 00:01:56,570 >> ESTUDIANT: Imprimir. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. Malan: Imprimir, oi? 48 00:01:57,778 --> 00:02:01,050 Imprimir o printf al món de C. Així que tot aquest temps, 49 00:02:01,050 --> 00:02:03,362 que hem tingut en la nostra disposició un language-- C, 50 00:02:03,362 --> 00:02:05,570 en particular: i fins i tot Esgarrinxada per al cas que 51 00:02:05,570 --> 00:02:07,400 pot generar cadenes de text. 52 00:02:07,400 --> 00:02:11,090 >> Bé, si l'HTML, com vam veure la setmana passada, és només un munt de cadenes de text 53 00:02:11,090 --> 00:02:14,692 encara que amb suports oberts i tancats suports i algun tipus de rima 54 00:02:14,692 --> 00:02:16,650 i la raó darrere d'ella, així llavors podríem realment 55 00:02:16,650 --> 00:02:20,440 començar a generar pàgines web manualment escrivint a terme en gedit 56 00:02:20,440 --> 00:02:23,870 o en Microsoft Word, perquè matter-- només necessitem un editor de text. 57 00:02:23,870 --> 00:02:26,830 >> O podríem escriure codi, al seu suggeriment 58 00:02:26,830 --> 00:02:30,435 abans, això ens deixa generar dinàmicament HTML, 59 00:02:30,435 --> 00:02:32,560 i això és el que anem per començar a fer amb PHP 60 00:02:32,560 --> 00:02:34,900 i, finalment, fins i tot amb una llenguatge anomenat JavaScript 61 00:02:34,900 --> 00:02:37,910 és utilitzar una llengua a generar un altre. 62 00:02:37,910 --> 00:02:40,720 I, de fet, això és el que Facebook i molts, molts altres llocs 63 00:02:40,720 --> 00:02:44,530 fer per realment dinàmicament mostrar nova informació a vostè. 64 00:02:44,530 --> 00:02:47,117 >> Així que anem a començar amb un esto-- línia de mira críptic, però un 65 00:02:47,117 --> 00:02:48,450 això és realment molt poderós. 66 00:02:48,450 --> 00:02:51,210 Fins ara, hem estat utilitzant C, que és un llenguatge compilat. 67 00:02:51,210 --> 00:02:55,050 I només un recap-- ràpida un compilat llenguatge té quines característiques? 68 00:02:55,050 --> 00:02:59,050 Òbviament, es necessita per compilar , Però què vol dir això? 69 00:02:59,050 --> 00:03:00,505 Sí? 70 00:03:00,505 --> 00:03:02,940 >> ESTUDIANT: Ha de ser acoblat en codi màquina. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. Malan: OK. 72 00:03:03,060 --> 00:03:04,530 Necessita ser ensamblat en codi màquina. 73 00:03:04,530 --> 00:03:07,340 Així que vostè pren el seu codi font, que és una espècie d'Anglès-com. 74 00:03:07,340 --> 00:03:09,270 Converteix això a nivell més baix alguna cosa, 75 00:03:09,270 --> 00:03:11,590 que es diu en última instància objecte code-- de 0 i 1 de. 76 00:03:11,590 --> 00:03:14,830 I són aquests de 0 i 1 d'aquest una CPU, com els realitzats per Intel, 77 00:03:14,830 --> 00:03:16,110 realment entendre. 78 00:03:16,110 --> 00:03:19,690 >> Ara, PHP i Python i Ruby i JavaScript i raïms d'un altre 79 00:03:19,690 --> 00:03:23,190 llengües no es compilen idiomes, però interpretat llengües, 80 00:03:23,190 --> 00:03:26,630 el que significa que acaba d'escriure i després no convertir-los en 0 i 1 de la. 81 00:03:26,630 --> 00:03:30,790 En el seu lloc, només proporciona a continuació com entrada al programa d'una altra persona, 82 00:03:30,790 --> 00:03:32,080 anomenat un intèrpret. 83 00:03:32,080 --> 00:03:34,460 I d'aquesta persona programa ha estat dissenyat 84 00:03:34,460 --> 00:03:38,280 per entendre el que cada un i cada símbol en Python o PHP 85 00:03:38,280 --> 00:03:42,650 o Ruby o qualsevol nombre de altres idiomes significa. 86 00:03:42,650 --> 00:03:44,760 >> I pel que tot el que necessitem és alguna cosa com això. 87 00:03:44,760 --> 00:03:46,350 Així que, de fet, vaig a anar cap a l'aparell 88 00:03:46,350 --> 00:03:48,100 aquí, només a qualsevol finestra d'edat, i estem 89 00:03:48,100 --> 00:03:52,580 seguirà endavant i obert un arxiu anomenat, per exemple, hola. 90 00:03:52,580 --> 00:03:55,780 Ara anteriorment, podria haver salvat això fins i tot amb una extensió d'arxiu, 91 00:03:55,780 --> 00:03:57,910 però jo faré una cosa encara més simple aquí. 92 00:03:57,910 --> 00:04:02,450 Vaig a seguir endavant i començar aquesta imatge amb aquesta sintaxi críptica. 93 00:04:02,450 --> 00:04:06,310 Així que "l'usuari, bin, env, per al medi ambient, php. " 94 00:04:06,310 --> 00:04:10,670 >> Això és simplement una línia de codi que és vaig a dir el meu sistema operatiu, 95 00:04:10,670 --> 00:04:13,730 anar a buscar al seu local, medi ambient sigui el que sigui, 96 00:04:13,730 --> 00:04:18,149 on PHP és-- la interpreter-- i seguir endavant i utilitzar aquest intèrpret 97 00:04:18,149 --> 00:04:20,589 per interpretar el codi següent. 98 00:04:20,589 --> 00:04:22,760 Ara, això és una espècie de una característica lletja de PHP. 99 00:04:22,760 --> 00:04:24,980 Però en aquest idioma, qualsevol Quan s'escriu codi PHP, 100 00:04:24,980 --> 00:04:29,200 cal tenir un d'aquests lletjos Etiquetes PHP que delimiten l'inici 101 00:04:29,200 --> 00:04:32,220 de la seva code-- 00:04:37,430 >> Però per sota d'aquí, ara puc fer alguna cosa molt simple, igual que printf hola comes 103 00:04:37,430 --> 00:04:40,922 món barra invertida n prop cita, parèntesi de tancament. 104 00:04:40,922 --> 00:04:42,630 I a continuació, només per si de cas mesura, vaig 105 00:04:42,630 --> 00:04:45,380 seguir endavant i prop la meva etiqueta php aquí 106 00:04:45,380 --> 00:04:47,390 pel que es veu tot molt bé bastant impresa. 107 00:04:47,390 --> 00:04:50,780 >> I tan aviat com faci clic a Desa, gedit és suficient realment intel·ligent 108 00:04:50,780 --> 00:04:54,620 mirar a aquesta primera línia i t'adones, oh, estàs escrivint codi PHP. 109 00:04:54,620 --> 00:04:56,710 Déjame ressaltat de sintaxi amb els colors 110 00:04:56,710 --> 00:04:58,690 aquí perquè es destaca una mica més. 111 00:04:58,690 --> 00:05:01,300 Però ara em vaig a anar fins a la meva finestra de terminal. 112 00:05:01,300 --> 00:05:02,340 Vaig a apropar. 113 00:05:02,340 --> 00:05:06,860 >> Aquest programa es diu "hola" així que vaig a fer barra de punts hola, 114 00:05:06,860 --> 00:05:07,990 però va negar el permís. 115 00:05:07,990 --> 00:05:08,490 I bash. 116 00:05:08,490 --> 00:05:10,610 En realitat ens assabentem que Fa cosa d'un parell de setmanes 117 00:05:10,610 --> 00:05:13,140 en el context de Shellshock, un d'aquests bestioles. 118 00:05:13,140 --> 00:05:16,240 >> Però Permís denegat hem vist abans, potser en un context diferent. 119 00:05:16,240 --> 00:05:19,060 Algú recorda com vostè pot arreglar alguna cosa 120 00:05:19,060 --> 00:05:22,100 on el permís és negat d'aquesta manera? 121 00:05:22,100 --> 00:05:23,490 Quin és l'ordre, si més no? 122 00:05:23,490 --> 00:05:24,159 >> ESTUDIANT: Chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. Malan: Sí, chmod, per canviar la manera d'un arxiu. 124 00:05:26,700 --> 00:05:30,171 I obtindrà encara més acostumat a aquesta setmana que ve amb un problema posterior 125 00:05:30,171 --> 00:05:30,670 establir. 126 00:05:30,670 --> 00:05:33,211 Però per ara, em canviaré la manera de no ser llegible, 127 00:05:33,211 --> 00:05:36,650 sinó per donar a cadascú executeability privilegis, la capacitat 128 00:05:36,650 --> 00:05:37,710 per executar aquest fitxer. 129 00:05:37,710 --> 00:05:40,360 I jo vaig a assignar que en el fitxer de hola. 130 00:05:40,360 --> 00:05:45,150 >> Si ara faig slash dot hola entrar, vostè veure, de fet, el meu programa, hola món. 131 00:05:45,150 --> 00:05:48,760 I què va passar em van fer saltar clarament en total? 132 00:05:48,760 --> 00:05:49,520 Compilació. 133 00:05:49,520 --> 00:05:51,680 Així que em vaig trobar amb aquest programa, senzillament. 134 00:05:51,680 --> 00:05:55,690 >> I resulta que vostè pot fer això amb una gran quantitat de sintaxi que recorda a C. 135 00:05:55,690 --> 00:06:03,400 Deixeu-me anar en el codi d'avui, que he posat en el meu directori vhost 136 00:06:03,400 --> 00:06:05,250 aquí, per raons reals tornarem a. 137 00:06:05,250 --> 00:06:09,350 I jo vaig a entrar, diguem, les condicions 1. 138 00:06:09,350 --> 00:06:12,450 >> I veuràs aquí, en primer lloc i abans que res, un munt de comentaris. 139 00:06:12,450 --> 00:06:15,240 Però això és en realitat una recreació en PHP 140 00:06:15,240 --> 00:06:18,960 d'un programa que vam fer a la setmana un anomenat condicions 1.c 141 00:06:18,960 --> 00:06:20,690 on el propòsit en la vida d'aquest programa 142 00:06:20,690 --> 00:06:22,950 és pel que sembla per demanar l'usuari d'un sencer 143 00:06:22,950 --> 00:06:25,270 i després fer una mica esponjós anàlisi en ell mitjançant el qual 144 00:06:25,270 --> 00:06:29,510 vostè diu si és positiu o negatiu o igual a zero. 145 00:06:29,510 --> 00:06:34,220 I Porto això a col·lació només perquè, excepte potser un petit detall, 146 00:06:34,220 --> 00:06:37,150 és indistingible tan lluny de C. 147 00:06:37,150 --> 00:06:39,930 >> Quina és la una de les característiques aquí que potser salta 148 00:06:39,930 --> 00:06:41,410 a vostè com una mica diferent? 149 00:06:41,410 --> 00:06:42,160 Potser dues coses. 150 00:06:42,160 --> 00:06:42,660 Sí? 151 00:06:42,660 --> 00:06:44,070 >> ESTUDIANT: Mostra de dòlar n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. Malan: Sí. 153 00:06:44,944 --> 00:06:46,210 Així signe de dòlar n és present. 154 00:06:46,210 --> 00:06:48,120 I, com a signes de dòlar anem a veure, es van 155 00:06:48,120 --> 00:06:51,460 ser una solució al principi de qualsevol variable en PHP. 156 00:06:51,460 --> 00:06:54,250 És alhora bona i bona bad-- en que és una espècie del que és obvi 157 00:06:54,250 --> 00:06:56,797 una variable, el mal que es tracta de una altra cosa per escriure. 158 00:06:56,797 --> 00:06:58,630 I hi ha una altra cosa que no tenim prou 159 00:06:58,630 --> 00:07:00,876 vist, almenys per aquesta ortografia. sí? 160 00:07:00,876 --> 00:07:01,630 >> ESTUDIANT: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. Malan: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline no vam veure, de per si, en C, tot i que hi ha alguna cosa 163 00:07:06,550 --> 00:07:09,530 similar, però hem utilitzat getString, i això és la seva contrapart. 164 00:07:09,530 --> 00:07:12,950 Així que si em vaig en aquest directori, que passa a ser, 165 00:07:12,950 --> 00:07:18,030 com vaig a explicar una mica en el meu amfitrió virtual directori i la meva font d'un directori, 166 00:07:18,030 --> 00:07:22,730 i jo seguir endavant i fer slash dot conditions-- slash dot whoops-- 167 00:07:22,730 --> 00:07:26,710 les condicions 1, veuràs, un cop més, el mateix permís Issue-- va negar. 168 00:07:26,710 --> 00:07:33,610 >> Així que permetin-me el zoom i faig chmod un plus x en les condicions, les condicions de la ratlla vertical de punts. 169 00:07:33,610 --> 00:07:35,222 M'agradaria un nombre enter, si us plau, 50. 170 00:07:35,222 --> 00:07:36,930 I podríem jugar aquest joc durant tot el dia. 171 00:07:36,930 --> 00:07:39,140 Es va a comportar-se exactament com ho va fer en la setmana un. 172 00:07:39,140 --> 00:07:42,860 >> Acceptar el que no tan diferent, excepte no només que poc lleugera de sintaxi, 173 00:07:42,860 --> 00:07:45,490 però en la part superior, que de nou tingut aquesta línia que 174 00:07:45,490 --> 00:07:49,760 em va permetre crear alguna cosa que sembla un programa C anomenat hola, 175 00:07:49,760 --> 00:07:51,150 anomenades condicions 1. 176 00:07:51,150 --> 00:07:54,520 Però no és dels 0 i Estic executant directament. 177 00:07:54,520 --> 00:07:57,620 Està en lloc d'executar aquest intèrpret el nom 178 00:07:57,620 --> 00:07:59,440 passa a ser idèntica a la llengua. 179 00:07:59,440 --> 00:08:04,970 El programa es diu PHP, i el meu codi per sota de la línia un es passa. 180 00:08:04,970 --> 00:08:07,740 >> Podem fer una altra bastant simple exemple una reminiscència d'alguna cosa 181 00:08:07,740 --> 00:08:09,240 ho vam fer fa setmanes. 182 00:08:09,240 --> 00:08:12,020 De nou, això és una espècie de porció arbitrària de codi 183 00:08:12,020 --> 00:08:14,000 que aparentment fa la qual cosa quan l'executa? 184 00:08:14,000 --> 00:08:15,625 Què és això voleu imprimir, és de suposar? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Així inicialment en la línia 16, que és dirà x és ara 2, probablement. 187 00:08:28,250 --> 00:08:30,920 % D és el mateix que $ i per printf. 188 00:08:30,920 --> 00:08:33,460 Així que a continuació es cubicar, punt, dot, dot, en la línia 17. 189 00:08:33,460 --> 00:08:36,299 I llavors apareix la línia 18 per cridar a una funció Cubed. 190 00:08:36,299 --> 00:08:37,600 I on es defineix Cubed? 191 00:08:37,600 --> 00:08:40,319 >> Bé, sembla que en la línia 25, així que no és tan diferent. 192 00:08:40,319 --> 00:08:42,610 Tinc alguns comentaris anteriors , Però en la seva major part, 193 00:08:42,610 --> 00:08:45,370 que és un bastant senzill portar o conversió 194 00:08:45,370 --> 00:08:48,470 des del programa de C per a la versió PHP. 195 00:08:48,470 --> 00:08:52,670 Però ara hi ha un parell de diferències que potser hauria de saltar fora. 196 00:08:52,670 --> 00:08:56,100 Quina altra cosa és diferent sobre com es podria escriure aquest mateix programa en C? 197 00:08:56,100 --> 00:08:57,900 >> ESTUDIANT: [inaudible]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. Malan: No cap prototip fins a la part superior. 199 00:09:00,070 --> 00:09:03,210 Així PHP-- i, francament, 1 munt de les Llengües moderna 200 00:09:03,210 --> 00:09:06,920 són molt més intel·ligent i més útil que els compiladors de C en què 201 00:09:06,920 --> 00:09:09,740 pot posar la funció fins aquí, vostè pot posar una funció aquí baix, 202 00:09:09,740 --> 00:09:12,740 i l'intèrpret es va fer el favor de la lectura 203 00:09:12,740 --> 00:09:16,010 tot l'arxiu abans que decideixi que no hi ha alguna funció. 204 00:09:16,010 --> 00:09:17,970 Tan agradable millores anys posteriors. 205 00:09:17,970 --> 00:09:22,126 Però també hi ha alguna cosa una altra cosa diferent o absent aquí. 206 00:09:22,126 --> 00:09:22,626 Sí? 207 00:09:22,626 --> 00:09:25,084 >> ESTUDIANT: [inaudible]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. Malan: Nosaltres no hem de declarar els tipus de variables, 209 00:09:27,750 --> 00:09:31,780 així que ja veurem en poc temps que hi ha diferents tipus en PHP, 210 00:09:31,780 --> 00:09:34,970 però no cal especificar-los, que també és alhora bo i dolent. 211 00:09:34,970 --> 00:09:36,623 I hi ha una altra cosa que falta. 212 00:09:36,623 --> 00:09:37,430 >> ESTUDIANT: No hi ha biblioteques. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. Malan: No hi ha biblioteques. 214 00:09:38,630 --> 00:09:39,350 OK, així que això és bo. 215 00:09:39,350 --> 00:09:40,540 Tenim un munt treure'l de la caixa. 216 00:09:40,540 --> 00:09:43,373 Així que no hi ha en realitat molt més les coses que vaig pensar eren diferents. 217 00:09:43,373 --> 00:09:44,350 Què tal manera a l'esquena? 218 00:09:44,350 --> 00:09:46,032 Què és això? 219 00:09:46,032 --> 00:09:46,740 Diuen que una vegada més? 220 00:09:46,740 --> 00:09:47,960 >> ESTUDIANT: Punter. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. Malan: No hi ha punters. 222 00:09:49,270 --> 00:09:51,280 Acceptar, si més no en aquest exemple, no. 223 00:09:51,280 --> 00:09:52,070 Això és just. 224 00:09:52,070 --> 00:09:55,090 Així que no són punters en PHP realment en general. 225 00:09:55,090 --> 00:09:58,730 Hi ha alguna cosa que es diu referències, però no anem a passar molt temps allà. 226 00:09:58,730 --> 00:09:59,520 ¿I què més? 227 00:09:59,520 --> 00:10:00,185 >> ESTUDIANT: Principal. 228 00:10:00,185 --> 00:10:01,060 DAVID J. Malan: Principal. 229 00:10:01,060 --> 00:10:02,768 Així que aquesta era la gran cosa Jo estava pensant. 230 00:10:02,768 --> 00:10:04,660 Cal notar que no hi ha punt d'entrada principal. 231 00:10:04,660 --> 00:10:06,525 Només ha de començar a escriure el seu codi. 232 00:10:06,525 --> 00:10:08,400 I això és en realitat serà avantatjós 233 00:10:08,400 --> 00:10:10,560 quan fem la transició momentàniament per utilitzar realment 234 00:10:10,560 --> 00:10:13,980 aquest mateix llenguatge per a la web basado- programació, per a això 235 00:10:13,980 --> 00:10:16,580 no volen tenir un sol punt d'entrada. 236 00:10:16,580 --> 00:10:19,980 Podríem voler tenir un munt de URL, un munt de diferents arxius 237 00:10:19,980 --> 00:10:22,930 tot tenint a l'entrada d'usuari i la producció de sortida. 238 00:10:22,930 --> 00:10:27,130 >> Però aquí hi ha el molt descoratjador exemple que li vaig prometre l'última vegada, 239 00:10:27,130 --> 00:10:30,130 és a dir, en aquesta carpeta aquí, les faltes d'ortografia. 240 00:10:30,130 --> 00:10:33,680 Així que en aquest arxiu corrector ortogràfic, que ens no passar massa temps des d'ara, no és 241 00:10:33,680 --> 00:10:37,870 essencialment un porting-- P-O-R-T. És només la paraula donada quan, per exemple, 242 00:10:37,870 --> 00:10:40,800 a convertir d'un idioma a un altre manualment en general. 243 00:10:40,800 --> 00:10:45,680 >> Aquesta és una de portabilitat de PC versió del corrector ortogràfic de PSET maig. 244 00:10:45,680 --> 00:10:48,856 I essencialment vaig tractar de convertir línia per línia el més a prop que pugui. 245 00:10:48,856 --> 00:10:51,730 Així que si t'agrada aquest tipus de coses, el que realment val la pena en algun moment 246 00:10:51,730 --> 00:10:54,229 tirant dels dos un al costat de costat i veure el que és el mateix 247 00:10:54,229 --> 00:10:55,230 i el que és diferent. 248 00:10:55,230 --> 00:10:57,510 Però són bastant maleït similar. 249 00:10:57,510 --> 00:11:00,110 Si et recordes del que corrector ortogràfic fins i tot semblava, 250 00:11:00,110 --> 00:11:02,110 tot i que no ho va fer haurà de canviar aquest arxiu, 251 00:11:02,110 --> 00:11:04,860 que és bastant semblant estructuralment amb només un parell 252 00:11:04,860 --> 00:11:06,200 dels canvis aquí i allà. 253 00:11:06,200 --> 00:11:10,140 >> Així que això és només per dir que és bastant senzill per convertir Speller 254 00:11:10,140 --> 00:11:12,000 de C a PHP. 255 00:11:12,000 --> 00:11:15,390 Però en el diccionari, no hi ha alguna cosa encara més convincent. 256 00:11:15,390 --> 00:11:19,270 Deixin-me seguir endavant i crear el meu propi arxiu dictionary.php. 257 00:11:19,270 --> 00:11:24,010 Així lleugerament diferent en què l'anomenarem .php en comptes de .c. 258 00:11:24,010 --> 00:11:26,980 Com que aquest és un fitxer PHP, jo fer-- lleugerament annoyingly-- té 259 00:11:26,980 --> 00:11:30,132 per iniciar l'arxiu amb una etiqueta php així. 260 00:11:30,132 --> 00:11:32,340 I jo seguiré endavant i definir algunes funcions. 261 00:11:32,340 --> 00:11:35,770 Funció trucada de verificació, que és va a prendre en una paraula com abans. 262 00:11:35,770 --> 00:11:37,520 Però aquest argument tindrà $ 1 263 00:11:37,520 --> 00:11:39,840 signar perquè estem, de nou, usant PHP. 264 00:11:39,840 --> 00:11:42,350 Una altra funció de dictionary.c era càrrega 265 00:11:42,350 --> 00:11:47,120 i es va prendre en el nom d'un diccionari, així que vaig a aconseguir que la funció llista per anar. 266 00:11:47,120 --> 00:11:50,920 >> Un altre en dictionary.c va ser què? 267 00:11:50,920 --> 00:11:54,580 Grandària va ser un dels més bonics, en menys si es mantenia al voltant d'alguna variable. 268 00:11:54,580 --> 00:11:57,830 tan sols la mida ha de retornar una variable. 269 00:11:57,830 --> 00:11:59,090 I després hi havia descàrrega. 270 00:11:59,090 --> 00:12:02,830 >> Així que hi va haver aquests quatre funcions en problemes 5 271 00:12:02,830 --> 00:12:06,770 que vostè necessita per posar en pràctica amb una estructura de dades o estructures. 272 00:12:06,770 --> 00:12:10,170 Així que em vaig prometre que en PHP, podem declarar 273 00:12:10,170 --> 00:12:14,490 una taula hash, per exemple, tot el que més fàcilment. 274 00:12:14,490 --> 00:12:17,377 De fet, si vull una taula hash, Jo només vaig a anar d'aquesta manera 275 00:12:17,377 --> 00:12:18,460 i aquí està el meu taula hash. 276 00:12:18,460 --> 00:12:21,555 I aquesta és la nota, descoratjador, que el deixem en l'últim temps. 277 00:12:21,555 --> 00:12:23,930 I saps què, si volia una variable de grandària, així, 278 00:12:23,930 --> 00:12:25,867 aquest no és tot tan diferent de C, 279 00:12:25,867 --> 00:12:27,450 però jo vaig a seguir endavant i fer això. 280 00:12:27,450 --> 00:12:28,630 I noti cap tipus de dades. 281 00:12:28,630 --> 00:12:31,180 I vaig a tornar més tard i en realitat afegir alguns comentaris aquí. 282 00:12:31,180 --> 00:12:32,480 Però què passa amb la càrrega? 283 00:12:32,480 --> 00:12:35,780 >> Si diccionari signe de dòlar és el nom del meu arxiu 284 00:12:35,780 --> 00:12:39,600 i jo en realitat vull carregar paraules en aquesta taula ara, 285 00:12:39,600 --> 00:12:42,360 De fet, em puc fer una cosa bastant simple. 286 00:12:42,360 --> 00:12:44,880 Un-- i això és minorly annoying-- en PHP, 287 00:12:44,880 --> 00:12:47,710 s'ha d'especificar a l'interior d'una funció si 288 00:12:47,710 --> 00:12:51,060 volen accedir a alguns mundial variable que està definida fora. 289 00:12:51,060 --> 00:12:53,530 >> Però això no és tot interessant en aquest moment. 290 00:12:53,530 --> 00:12:57,920 El que és més interessant és això per a cada construir que he esmentat l'última vegada. 291 00:12:57,920 --> 00:13:01,880 I resulta que PHP té una funció anomenat arxiu el propòsit en la vida 292 00:13:01,880 --> 00:13:05,550 és obrir un arxiu i llegir en totes les seves línies en una matriu 293 00:13:05,550 --> 00:13:06,840 i la mà cap enrere per. 294 00:13:06,840 --> 00:13:12,170 >> El que vol dir que puc fer tan diccionari que ara efectivament quan dic arxiu, 295 00:13:12,170 --> 00:13:15,472 això em va a tornar una sèrie de paraules de l'arxiu. 296 00:13:15,472 --> 00:13:16,430 No tot és tan bo. 297 00:13:16,430 --> 00:13:20,130 Encara serà una línia de paraules, alguna cosa lineal. 298 00:13:20,130 --> 00:13:23,880 Però puc seguir endavant i repetir sobre cadascuna d'aquestes paraules utilitzant 299 00:13:23,880 --> 00:13:25,710 que la sintaxi vam veure breument l'última vegada. 300 00:13:25,710 --> 00:13:27,940 I el veuràs més en la propera PSET. 301 00:13:27,940 --> 00:13:32,070 >> Però ara tinc una iteració de bucle sobre cada paraula en el diccionari. 302 00:13:32,070 --> 00:13:36,100 I en cada iteració, recordo que sóc trucant a la paraula actual "paraula." 303 00:13:36,100 --> 00:13:39,790 I tot el que es va a dur a posar una paraula en el diccionari és 304 00:13:39,790 --> 00:13:43,530 serà endevinar la paraula "veritat". 305 00:13:43,530 --> 00:13:44,740 Aquesta és la meva funció d'inserció. 306 00:13:44,740 --> 00:13:46,661 Aquesta és la meva funció de càrrega per a mi diccionari. 307 00:13:46,661 --> 00:13:49,410 Ara és una mica d'un parany, ja que, saps què, no hi ha en realitat 308 00:13:49,410 --> 00:13:52,920 n de barra invertida al final de les paraules que probablement hauria desfer-me de, 309 00:13:52,920 --> 00:13:56,380 però això no és un problema, ja que PHP té una xuleta que funció anomenada literalment 310 00:13:56,380 --> 00:13:58,480 costelles fos un personatge en el final. 311 00:13:58,480 --> 00:13:59,400 Així que no hi ha problema. 312 00:13:59,400 --> 00:14:02,199 Hem anat per davant i, de fet abreujada que només això. 313 00:14:02,199 --> 00:14:05,240 I ara probablement hauria de portar un registre de mida, de manera que farem com a mínim esto-- 314 00:14:05,240 --> 00:14:05,835 mida ++. 315 00:14:05,835 --> 00:14:07,339 Jo puc fer això com abans. 316 00:14:07,339 --> 00:14:10,380 I llavors això va probablement a funcionar bé, pel que tornem cert. 317 00:14:10,380 --> 00:14:10,930 Fet. 318 00:14:10,930 --> 00:14:11,797 PSET maig. 319 00:14:11,797 --> 00:14:13,545 >> [El] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. Malan: OK. 321 00:14:14,420 --> 00:14:16,628 Anem a fer-ho de nou amb el següent PSET, també. 322 00:14:16,628 --> 00:14:18,730 Així que què passa amb la mida? 323 00:14:18,730 --> 00:14:22,080 Bé, aquest és d'esperar es tracta com era d'esperar l'última vegada, 324 00:14:22,080 --> 00:14:24,460 encara que he de fer aquesta cosa estúpida mundial. 325 00:14:24,460 --> 00:14:26,610 És només un artefacte de el disseny de la llengua. 326 00:14:26,610 --> 00:14:28,450 >> Però xec és una mica més interessant. 327 00:14:28,450 --> 00:14:31,420 Així que si passava en dòlars signe denominatiu, en primer lloc 328 00:14:31,420 --> 00:14:34,060 volen tenir accés a aquesta taula variable global. 329 00:14:34,060 --> 00:14:36,700 I ara si vull comprovar si una paraula hi és, 330 00:14:36,700 --> 00:14:44,350 Simplement puc dir si és cert que la següent es troba a la taula, 331 00:14:44,350 --> 00:14:49,957 a continuació, seguir endavant i de retorn veritable; si no, torni fals. 332 00:14:49,957 --> 00:14:51,180 Fet. 333 00:14:51,180 --> 00:14:52,440 L'altra meitat de PSET maig. 334 00:14:52,440 --> 00:14:54,540 >> Molt bé, així que de nou, estic tallar algunes cantonades. 335 00:14:54,540 --> 00:14:56,831 Per ser justos, probablement hauria passar uns segons més 336 00:14:56,831 --> 00:14:58,300 en aquesta aplicació. 337 00:14:58,300 --> 00:15:01,860 I jo probablement no hauria burlar-se de tot el hores et posen al PSET tant. 338 00:15:01,860 --> 00:15:04,045 Així strtolower és una funció. 339 00:15:04,045 --> 00:15:06,670 Una cosa semblant existencialista en C, almenys per caràcters, 340 00:15:06,670 --> 00:15:08,560 però PHP món té una versió cadena sencera. 341 00:15:08,560 --> 00:15:11,226 >> Això obligarà a tot en minúscules, que alguns de vostès 342 00:15:11,226 --> 00:15:14,944 podria haver fet al canonicalize que estava posant en el seu diccionari. 343 00:15:14,944 --> 00:15:16,360 I ara vostè pot fer això en C, també. 344 00:15:16,360 --> 00:15:17,780 Això no té res a veure amb PHP. 345 00:15:17,780 --> 00:15:20,260 >> Però cada vegada que té una condició booleana, 346 00:15:20,260 --> 00:15:22,680 com alguna cosa en línia 10 allà, que és només 347 00:15:22,680 --> 00:15:27,145 va a avaluar veritable o fals, i si el teu la resta clarament 348 00:15:27,145 --> 00:15:33,620 torna vertader o fals, el que vaig poder simplement realment fer això més sexy 349 00:15:33,620 --> 00:15:38,360 i acaba de fer alguna cosa com això. 350 00:15:38,360 --> 00:15:40,500 Així que no és la meva funció de comprovació. 351 00:15:40,500 --> 00:15:42,560 Dret, si el booleà retorna un veritable o un fals, 352 00:15:42,560 --> 00:15:44,630 anem a tornar immediatament. 353 00:15:44,630 --> 00:15:47,340 >> I hi ha alguns altres ajustos Jo podria fer aquí i allà. 354 00:15:47,340 --> 00:15:51,380 Descarrega Load--, per cert, que està fet. 355 00:15:51,380 --> 00:15:52,850 No hi ha res a fer allà. 356 00:15:52,850 --> 00:15:55,840 Atès que tota la memòria en PHP i molts altres idiomes 357 00:15:55,840 --> 00:15:57,570 es gestiona en realitat per a vostè. 358 00:15:57,570 --> 00:16:00,330 Així que mentre que en C, com que ha après dolorosament, 359 00:16:00,330 --> 00:16:04,700 qualsevol cosa que malloc o calloc o realloc, has de alliberar-te. 360 00:16:04,700 --> 00:16:08,770 Qualsevol cosa que vostè fopen, has de fclose, de manera que els recursos s'alliberen en última instància 361 00:16:08,770 --> 00:16:11,690 i eines com Valgrind no ho fan adonar-se i no es queixen, 362 00:16:11,690 --> 00:16:13,570 la qual cosa és una bona cosa per córrer-hi. 363 00:16:13,570 --> 00:16:16,190 >> Però, sens dubte, ha d'haver haver alguna captura, oi? 364 00:16:16,190 --> 00:16:19,400 En cas contrari, quin tipus de malbaratem un munt de setmanes. 365 00:16:19,400 --> 00:16:23,270 Així que hi ha una sèrie de raons raó per la qual prenem aquest tipus de trajectòria, 366 00:16:23,270 --> 00:16:24,440 però hi ha un trade-off. 367 00:16:24,440 --> 00:16:25,820 És cert, això ha estat temàtica. 368 00:16:25,820 --> 00:16:29,690 >> Llavors, ¿què podria un trade-off aquí en moviment, de C a PHP? 369 00:16:29,690 --> 00:16:33,250 Se sent com tot a guanyar fins al moment que no sigui una mica de la lletjor aquí o allà. 370 00:16:33,250 --> 00:16:34,040 Sí. 371 00:16:34,040 --> 00:16:34,700 Què és això? 372 00:16:34,700 --> 00:16:36,064 >> ESTUDIANT: [inaudible] de memòria. 373 00:16:36,064 --> 00:16:36,980 DAVID J. Malan: velocitat. 374 00:16:36,980 --> 00:16:37,479 Okay. 375 00:16:37,479 --> 00:16:40,720 Bé, la meva velocitat era bastant ràpid. 376 00:16:40,720 --> 00:16:42,020 Dreta? 377 00:16:42,020 --> 00:16:44,320 Però la velocitat d'execució del programa? 378 00:16:44,320 --> 00:16:45,580 OK, així que això és un punt just. 379 00:16:45,580 --> 00:16:50,930 >> Així que ja que anava a passar, jo per endavant amb claus de fins a tant el meu solució intent, l'un 380 00:16:50,930 --> 00:16:53,510 Jo tenia en el gran tauler era una solució a base d'intent, 381 00:16:53,510 --> 00:16:55,510 i jo tinc que en aquest directori aquí. 382 00:16:55,510 --> 00:16:58,510 Així que en un moment, puc seguir endavant i executar això a la Bíblia King James, 383 00:16:58,510 --> 00:16:59,657 colpejar Intro. 384 00:16:59,657 --> 00:17:01,990 I això és d'esperar correcta aplicació al final, 385 00:17:01,990 --> 00:17:05,109 tinc temps en total de 0,38 segons perquè 386 00:17:05,109 --> 00:17:07,270 un exemple una mica arbitrària. 387 00:17:07,270 --> 00:17:09,270 >> I si ara entro en aquesta segona finestra de terminal 388 00:17:09,270 --> 00:17:14,569 aquí on per primera vegada vaig obrir el gedit, i molt em vaig a code-- d'avui que, de nou, 389 00:17:14,569 --> 00:17:19,650 és en aquest directori aquí-- i m'ho dius a mi anar endavant i corro ortografia. 390 00:17:19,650 --> 00:17:23,470 Així que per ser clars, aquesta és la versió de PHP. 391 00:17:23,470 --> 00:17:25,170 Només estic mostrant la part superior d'aquí. 392 00:17:25,170 --> 00:17:32,020 >> Així que si ho faig corrector ortogràfic de titlla CS50 PSET maig textos, King James, entren. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 És encara més ràpid que l'escriptura en C, però el temps total 395 00:17:43,050 --> 00:17:47,650 és, avís, 0,93, mentre que el meu Aplicació basada en C va ser 0,38. 396 00:17:47,650 --> 00:17:49,110 Així que és una diferència no trivial. 397 00:17:49,110 --> 00:17:51,100 >> I això és només en un sol arxiu. 398 00:17:51,100 --> 00:17:53,480 Si es va a executar els dos programes contra el gran tauler 399 00:17:53,480 --> 00:17:56,510 i tenen un munt d'entrades provat, aquest seria sens dubte sumar. 400 00:17:56,510 --> 00:18:00,310 I si tinguéssim conjunts de dades encara més grans, això, també, podria sumar encara més. 401 00:18:00,310 --> 00:18:04,820 Així que sí, el pagament d'algun preu de velocitat és de fet el cas. 402 00:18:04,820 --> 00:18:05,470 Quina altra cosa? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Sí? 405 00:18:08,860 --> 00:18:10,340 >> ESTUDIANT: Quantitat d'ús de memòria RAM. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. Malan: Quantitat d'ús de memòria RAM. 407 00:18:11,756 --> 00:18:15,380 Així que no li vaig donar un segon pensat en escriure aquest PHP 408 00:18:15,380 --> 00:18:17,300 versió pel que fa a quant la memòria que estava fent servir. 409 00:18:17,300 --> 00:18:22,080 Estic completament ajornant que per PHP en si i el que va escriure aquest programa. 410 00:18:22,080 --> 00:18:24,500 I això podria estar bé, però si jo realment realment 411 00:18:24,500 --> 00:18:28,420 preocupar-se per estrènyer tant el rendiment fora del meu programa o fora del meu lloc web 412 00:18:28,420 --> 00:18:31,150 o fora de qualsevol eina Estic construint, potser 413 00:18:31,150 --> 00:18:33,310 PHP, de fet, no és el llenguatge correcte. 414 00:18:33,310 --> 00:18:36,330 >> I, de fet, és per això que, per exemple, molts servers-- web 415 00:18:36,330 --> 00:18:38,980 els programes reals que servir fins content-- web 416 00:18:38,980 --> 00:18:41,810 no estan escrits en PHP o en Python o Ruby. 417 00:18:41,810 --> 00:18:44,630 Estan escrits, de la mateixa manera que vostè ara ho fa amb joc de paràmetres 6, 418 00:18:44,630 --> 00:18:48,120 en C perquè pugui esprémer cada bit de rendiment fora d'ell 419 00:18:48,120 --> 00:18:50,780 i realment exercir el control de gra fi sobre el que és 420 00:18:50,780 --> 00:18:52,980 passant per sota de la campana i no només ho prenen 421 00:18:52,980 --> 00:18:54,890 per fet alguns més alta estructura de dades de nivell. 422 00:18:54,890 --> 00:18:58,071 >> Penseu en la possibilitat de, després de tot, qui en PHP implementat 423 00:18:58,071 --> 00:19:00,070 aquesta noció d'un hash table-- en realitat és més 424 00:19:00,070 --> 00:19:04,260 apropiadament anomenat array-- associatiu ¿Ell o ella té alguna idea de quin tipus 425 00:19:04,260 --> 00:19:07,090 de les entrades que seran posada en l'estructura? 426 00:19:07,090 --> 00:19:08,260 Així que, òbviament, no és així, oi? 427 00:19:08,260 --> 00:19:10,340 És una eina genèrica en el conjunt d'eines que està 428 00:19:10,340 --> 00:19:13,430 proporcionada a qualsevol persona que vulgui per usar-lo, i pel que segurament es 429 00:19:13,430 --> 00:19:17,680 no pot ser optimitzat en última instància per exactament el que vols fer. 430 00:19:17,680 --> 00:19:21,180 >> Així que el temps de desenvolupament del comerç podria offs-- difereixen, el rendiment pot ser diferent, 431 00:19:21,180 --> 00:19:23,120 complexitat o l'ús de memòria poden diferir. 432 00:19:23,120 --> 00:19:24,820 I així el que trobarà cada vegada més és que hi ha 433 00:19:24,820 --> 00:19:26,570 serà diferent eines per al comerç. 434 00:19:26,570 --> 00:19:31,160 I, de fet, per a una súper majoria de projectes finals de les persones d'aquesta classe, 435 00:19:31,160 --> 00:19:34,360 ho creguis o no, C no es va sent la llengua dret d'usar. 436 00:19:34,360 --> 00:19:37,880 >> I de fet, un dels menjar per emportar en última instància, per a qualsevol classe com aquesta 437 00:19:37,880 --> 00:19:40,510 és aconseguir que penses, bé, ¿què ha d'aconseguir 438 00:19:40,510 --> 00:19:42,710 quan la plataforma que desitgi per resoldre algun problema. 439 00:19:42,710 --> 00:19:46,720 I, de fet, anem a creuar aquest pont encara més si ens fixem en més idiomes 440 00:19:46,720 --> 00:19:47,920 fins i tot més enllà d'avui. 441 00:19:47,920 --> 00:19:50,530 >> Així que la transició de deixar ara a potser un context més familiar 442 00:19:50,530 --> 00:19:52,480 per l'ús d'un llenguatge com PHP. 443 00:19:52,480 --> 00:19:56,720 És una cosa comú a utilitzar pel la línia d'ordres, escriure guions 444 00:19:56,720 --> 00:19:59,050 com jo ho vaig fer, però és molt, molt més comú. 445 00:19:59,050 --> 00:20:02,350 I que estava destinat a ser utilitzat en la forma d'arxius que normalment acaba 446 00:20:02,350 --> 00:20:05,060 en .php-- però això és no un prerequisite-- 447 00:20:05,060 --> 00:20:07,990 que ells mateixos generen contingut web. 448 00:20:07,990 --> 00:20:11,310 >> Així que me n'aniré endavant i obrir uns pocs exemples I preparats per endavant. 449 00:20:11,310 --> 00:20:15,100 I aquests són en realitat una espècie de veritat històries en que una de les primeres coses 450 00:20:15,100 --> 00:20:18,200 El que he fet a mi mateix després d'acabar CS50 i potser, crec, 451 00:20:18,200 --> 00:20:21,350 Fa anys CS51 és la meva company i jo estàvem ajudant 452 00:20:21,350 --> 00:20:24,320 per executar el intramural de primer any programa d'esports, que, en el moment, 453 00:20:24,320 --> 00:20:28,610 havia estudiant de primer any de registrar-se per diversos esports omplint un full de paper, 454 00:20:28,610 --> 00:20:31,800 com se li cridava, caminant a través del pati a Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 i deixant-lo anar en alguns caiguda de la porta del procurador. 456 00:20:34,030 --> 00:20:37,210 I llavors ell o ella aniria a través de i després en realitat envieu-nos un correu electrònic de forma manual 457 00:20:37,210 --> 00:20:39,140 que ens registrem per una mica d'esport. 458 00:20:39,140 --> 00:20:41,166 >> Així que, clarament, una oportunitat per a la millora. 459 00:20:41,166 --> 00:20:44,040 En aquests dies, és possible recórrer a només Google Forms, però de tornada al dia, 460 00:20:44,040 --> 00:20:46,914 vam haver arribar a aquesta realitat, per tal de: No va ser fins a arribar a aquest llarg ago-- 461 00:20:46,914 --> 00:20:49,410 per a una programació idioma que no va ser PHP. 462 00:20:49,410 --> 00:20:51,200 En aquest moment, que era una cosa anomenada Perl, 463 00:20:51,200 --> 00:20:52,890 que ha passat de moda des de llavors. 464 00:20:52,890 --> 00:20:54,160 Però la idea és la mateixa. 465 00:20:54,160 --> 00:20:58,940 >> I essencialment vaig asseure a tractar al port va versions de Perl a PHP, 466 00:20:58,940 --> 00:21:03,710 però en ple descàrrec de responsabilitat, no va donar qualsevol pensament a l'estètica de moment. 467 00:21:03,710 --> 00:21:04,960 Així que aquí hi ha una pàgina web. 468 00:21:04,960 --> 00:21:05,670 Aquest fitxer. 469 00:21:05,670 --> 00:21:09,470 Si Zoom cap a dins, el seu parer anomenat froshim0.php 470 00:21:09,470 --> 00:21:12,060 només perquè és el nostre primer exemple d'aquesta sèrie. 471 00:21:12,060 --> 00:21:15,970 I adonar-se que té el que sembla ser un formulari HTML molt lleig, 472 00:21:15,970 --> 00:21:18,680 però és una forma interessant perquè permet 473 00:21:18,680 --> 00:21:21,910 em va proporcionar l'entrada de l'usuari en el navegador. 474 00:21:21,910 --> 00:21:27,730 >> Ara l'última vegada quan vam tenir un formulari, a qui ens sotmetem el nostre paràmetre de consulta, 475 00:21:27,730 --> 00:21:30,450 el paràmetre de cua com es deia? 476 00:21:30,450 --> 00:21:31,330 Així que per a Google, no? 477 00:21:31,330 --> 00:21:34,090 Estem totalment aclarir en la idea fer res amb aquesta entrada. 478 00:21:34,090 --> 00:21:36,160 >> Però avui, comencem la producció de sortida. 479 00:21:36,160 --> 00:21:39,420 I el comportament vaig a veure aquí inicialment és bastant trivial. 480 00:21:39,420 --> 00:21:42,980 David, vaig a comprovar fora de gènere aquí, dir Matthews aquí. 481 00:21:42,980 --> 00:21:43,800 No vaig a ser capità. 482 00:21:43,800 --> 00:21:45,410 Vaig a feu clic a Registrar. 483 00:21:45,410 --> 00:21:50,720 I adonar-se que l'adreça URL té canviat per registrar-0.php, 484 00:21:50,720 --> 00:21:52,310 i després hi ha aquest text lleig aquí. 485 00:21:52,310 --> 00:21:54,460 Em va donar cap pensament a el format d'aquest. 486 00:21:54,460 --> 00:21:59,900 >> Però el que és interessant és que tres valors aparentment es van passar a. 487 00:21:59,900 --> 00:22:02,960 Aquesta és una espècie de de PHP equivalent a printf-- 488 00:22:02,960 --> 00:22:06,330 anem a veure el que realment crida en un bit-- que només imprimeix 489 00:22:06,330 --> 00:22:08,300 el que ha passat en ella. 490 00:22:08,300 --> 00:22:11,414 Així que això suggereix que aquesta forma tingut almenys tres camps a la mateixa, 491 00:22:11,414 --> 00:22:12,580 i em vas veure els escriu en. 492 00:22:12,580 --> 00:22:15,739 Un d'ells era el meu nom, una era gènere, un era el dormitori. 493 00:22:15,739 --> 00:22:18,780 I el capità ni tan sols són enviades a el servidor a causa que no comprovar-ho. 494 00:22:18,780 --> 00:22:22,150 >> Així que això és per dir pel que sembla, al moment d'enviar les coses a la web, 495 00:22:22,150 --> 00:22:26,830 No només la URL vegades change-- de vegades no és així. 496 00:22:26,830 --> 00:22:30,330 De fet, el nom del fitxer ha canviat, però el que està absent de la URL 497 00:22:30,330 --> 00:22:32,861 que vam veure l'última vegada amb Google. 498 00:22:32,861 --> 00:22:33,360 Sí? 499 00:22:33,360 --> 00:22:34,380 >> ESTUDIANT: Sense cadena de consulta 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. Malan: No hi ha cadena de consulta. 501 00:22:35,220 --> 00:22:37,270 No hi ha signe d'interrogació alguna cosa. 502 00:22:37,270 --> 00:22:40,050 No hi ha signe d'interrogació q és igual als gats, com ho vam fer l'última vegada. 503 00:22:40,050 --> 00:22:42,170 I certament no hi ha nom de signe d'interrogació és igual a 504 00:22:42,170 --> 00:22:46,310 David o dormitori és igual a Matthews, Llavors, on és que tots anem? 505 00:22:46,310 --> 00:22:51,290 >> Bé, deixa tornar a gedit aquí i obrir el primer d'aquests arxius 506 00:22:51,290 --> 00:22:57,020 en el meu amfitrió virtual, host local, públic directori d'aquí i ves a froshim0. 507 00:22:57,020 --> 00:23:02,060 Així que resulta que gairebé tots d'aquesta pàgina és només HTML. 508 00:23:02,060 --> 00:23:05,410 I això podria ser desconeguda per a vostè, però aviat ho serà més encara amb PSET juny 509 00:23:05,410 --> 00:23:07,370 i PSET 7 i 8 PSET. 510 00:23:07,370 --> 00:23:09,160 Però això és només una pàgina HTML. 511 00:23:09,160 --> 00:23:12,400 >> I les coses interessants sembla ser aquí. 512 00:23:12,400 --> 00:23:16,290 Una etiqueta de formulari l'atribut acció té un valor de registre 0. 513 00:23:16,290 --> 00:23:18,890 És per això que quan em sotmeto això, que va a aquest arxiu. 514 00:23:18,890 --> 00:23:20,620 Però el mètode és diferent lloc de avui--. 515 00:23:20,620 --> 00:23:23,120 Així que resulta que hi ha almenys dos mètodes utilitzats en la web 516 00:23:23,120 --> 00:23:24,911 per enviar informació des del navegador al servidor. 517 00:23:24,911 --> 00:23:25,980 Get posa a la URL. 518 00:23:25,980 --> 00:23:27,950 Publicar la posa en un altre lloc. 519 00:23:27,950 --> 00:23:30,570 I quan i per què podria vostè realment vol un lloc web 520 00:23:30,570 --> 00:23:34,110 utilitzar ja llavors en comptes d'obtenir, només intuïtivament? 521 00:23:34,110 --> 00:23:37,080 Qualsevol lloc web. 522 00:23:37,080 --> 00:23:42,010 Quin tipus de dades ha de ser transmesa només per inferència ara per correu en lloc 523 00:23:42,010 --> 00:23:45,184 per aconseguir, si hem vist les dues diferències? 524 00:23:45,184 --> 00:23:46,350 ESTUDIANT: [inaudible] assegurar. 525 00:23:46,350 --> 00:23:47,790 DAVID J. Malan: Si vols alguna cosa que sigui segur. 526 00:23:47,790 --> 00:23:50,360 Així que pot ser que escrigui la contrasenya en un lloc web, una targeta de crèdit 527 00:23:50,360 --> 00:23:53,030 en un lloc web ho faria tipus d'aquests subòptima 528 00:23:53,030 --> 00:23:56,220 si el navegador ja que valor dins de la URL. 529 00:23:56,220 --> 00:23:57,680 Per què? 530 00:23:57,680 --> 00:24:00,059 Ho veus, el que no fa semblen ser una cosa molt important, 531 00:24:00,059 --> 00:24:03,350 però les probabilitats són que bastant freqüència camina lluny del seu equip informàtic o ús 532 00:24:03,350 --> 00:24:05,310 laboratoris, i pel que algú una altra cosa o fins i tot un company de pis 533 00:24:05,310 --> 00:24:08,220 podria fàcilment pujar i veure que la informació privada. 534 00:24:08,220 --> 00:24:10,220 Quan s'envia un correu electrònic a través del web, és probable que 535 00:24:10,220 --> 00:24:12,350 no vull aquest final de dades a la URL també. 536 00:24:12,350 --> 00:24:15,266 I pel que hi ha una sèrie de raons per què podríem voler posar-ho aquí. 537 00:24:15,266 --> 00:24:18,610 I just photos--, no puc fins i tot bastant imaginar el que prendria un gràfic, 538 00:24:18,610 --> 00:24:21,480 com un arxiu JPEG, i el va posar en una direcció URL. 539 00:24:21,480 --> 00:24:22,330 Vostè podria fer-ho. 540 00:24:22,330 --> 00:24:25,840 Hi ha maneres de que el codifica, però és no senzill com això. 541 00:24:25,840 --> 00:24:29,030 >> Així que el registre 0 és en realitat molt decebedor. 542 00:24:29,030 --> 00:24:31,610 Tot el que diu literalment és això. 543 00:24:31,610 --> 00:24:35,910 S'imprimeix a l'interior d'alguns HTML etiquetes el següent. 544 00:24:35,910 --> 00:24:38,640 Tinc una etiqueta PHP aquí imbricada dins d'una etiqueta pre. 545 00:24:38,640 --> 00:24:42,300 "Pre" només significa que el text pre-formatat, mono-espaiades, com una màquina d'escriure. 546 00:24:42,300 --> 00:24:44,836 >> Printr és una funció recursiva d'impressió. 547 00:24:44,836 --> 00:24:46,710 I després hi ha això L'interessant aquí. 548 00:24:46,710 --> 00:24:48,835 I anem a tornar a aquest perquè hi ha altres, 549 00:24:48,835 --> 00:24:51,140 però el signe de dòlar de subratllat ja que sembla ser 550 00:24:51,140 --> 00:24:56,110 una variable en PHP en el que qualsevol cosa que enviï des del navegador al servidor 551 00:24:56,110 --> 00:24:58,040 s'emmagatzema per a vostè. 552 00:24:58,040 --> 00:25:00,930 I anem a veure com aconseguir a que la informació en poc temps. 553 00:25:00,930 --> 00:25:04,000 >> Però primer, anem a tornar a Un exemple lleugerament diferent. 554 00:25:04,000 --> 00:25:09,050 A l'entrar a register-- o més aviat, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 que es veu una mica diferent. 556 00:25:10,470 --> 00:25:12,670 Vaig prendre una mica més esforç amb el format, 557 00:25:12,670 --> 00:25:14,370 tot i que tot i així és bastant lleig. 558 00:25:14,370 --> 00:25:16,990 Però jo vaig a seguir endavant i el tipus de "David" ara. 559 00:25:16,990 --> 00:25:17,850 Home. 560 00:25:17,850 --> 00:25:19,360 Comprovarem "capità" aquesta vegada. 561 00:25:19,360 --> 00:25:20,660 Farem Matthews. 562 00:25:20,660 --> 00:25:22,430 I registrar. 563 00:25:22,430 --> 00:25:24,110 >> I aquesta vegada, diu, hm, no realment. 564 00:25:24,110 --> 00:25:26,180 Molt bé, així que això del registre 1? 565 00:25:26,180 --> 00:25:30,509 Deixeu-me anar al registre obert 1 hm i-. 566 00:25:30,509 --> 00:25:32,300 Molt bé, així que això és interessant, i aquest 567 00:25:32,300 --> 00:25:34,880 és un pas cap a l'ara els programes més interessants. 568 00:25:34,880 --> 00:25:38,970 >> Observi la part superior d'aquest arxiu té un Etiqueta PHP, així com alguns comentaris. 569 00:25:38,970 --> 00:25:42,590 I aquests són, per ara, un distracció així que anem a desfer-se d'aquests comentaris 570 00:25:42,590 --> 00:25:47,070 just com si estiguessin en C. I afirmen amb aquest tros de codi amb un comentari 571 00:25:47,070 --> 00:25:49,280 que aquest codi és la validació de la presentació. 572 00:25:49,280 --> 00:25:51,690 >> Bé, resulta que variables com el signe de dòlar 573 00:25:51,690 --> 00:25:53,739 posat de relleu són anomenat súper globals. 574 00:25:53,739 --> 00:25:55,530 Són com aquests variables globals especials 575 00:25:55,530 --> 00:25:58,840 que són només omni-actualment disponible dins del seu programa. 576 00:25:58,840 --> 00:26:03,870 I vostè pot utilitzar la notació de claudàtors l'índex en ells no usant nombres 577 00:26:03,870 --> 00:26:07,460 com a 0, 1, 2, 3, però les paraules reals. 578 00:26:07,460 --> 00:26:12,100 >> Així que vostè pot pensar en el signe de dòlar subratllar posat com a tipus d'una taula hash 579 00:26:12,100 --> 00:26:15,920 que vostè podria passar una clau en, una recerca paraula en el medi dels claudàtors, 580 00:26:15,920 --> 00:26:19,370 i que va a donar-li l'esquena al valor que proporciona realment l'usuari. 581 00:26:19,370 --> 00:26:21,210 PHP té una funció anomenat buit que només 582 00:26:21,210 --> 00:26:23,720 diu sí o no, aquesta variable és buida o no. 583 00:26:23,720 --> 00:26:27,250 Tenim aquestes dobles barres, que només significa o, com en C. 584 00:26:27,250 --> 00:26:31,740 >> Així doncs, en efecte, aquesta línia 4 és només dient que si l'usuari no ha donat un nom 585 00:26:31,740 --> 00:26:36,540 o no donar un gènere o no ho va fer donar un dormitori, seguir endavant i li redirigirà 586 00:26:36,540 --> 00:26:38,184 o ella a través d'aquesta línia aquí. 587 00:26:38,184 --> 00:26:40,600 Així que això és una mica críptic, però això només significa literalment 588 00:26:40,600 --> 00:26:43,330 tornar a aquest lloc, de manera que l'usuari punts 589 00:26:43,330 --> 00:26:45,420 de nou a on ell o ella venia. 590 00:26:45,420 --> 00:26:47,880 Però és una mica poc elegant que jo no modificable ella. 591 00:26:47,880 --> 00:26:52,150 >> Però el que si aquesta condició si no avalua a cert? 592 00:26:52,150 --> 00:26:55,790 Què passa si l'usuari em va donar el seu o el seu nom i residència i el sexe? 593 00:26:55,790 --> 00:26:58,540 Que si la condició no és va a avaluar com a true, 594 00:26:58,540 --> 00:27:00,650 així que no em vaig colpejar la sortida en la línia 7. 595 00:27:00,650 --> 00:27:01,680 Llavors, què passa? 596 00:27:01,680 --> 00:27:03,880 I això és el que hi ha interessant sobre PHP. 597 00:27:03,880 --> 00:27:07,470 >> Vostè pot caure dins i fora de manera PHP, per així dir-ho. 598 00:27:07,470 --> 00:27:10,985 Si vols alguna cosa de codi a executar, pot obrir i tancar una etiqueta PHP 599 00:27:10,985 --> 00:27:13,010 i posar el codi allà com he fet aquí. 600 00:27:13,010 --> 00:27:16,810 Tan aviat com es tanca l'etiqueta PHP, el servidor 601 00:27:16,810 --> 00:27:19,407 només va a escopir el que va posar al seu lloc. 602 00:27:19,407 --> 00:27:21,740 I, de fet, això era part de el disseny original de PHP, 603 00:27:21,740 --> 00:27:25,280 per bé o per mal, era això commingling de codi i marcat 604 00:27:25,280 --> 00:27:25,920 idioma. 605 00:27:25,920 --> 00:27:28,670 I veurem que està molt recau ràpidament en un embolic. 606 00:27:28,670 --> 00:27:31,280 I així ho farem millor que aquesta última instància, però només 607 00:27:31,280 --> 00:27:35,620 compte de la facilitat amb la qual estic en realitat capaç d'executar alguna lògica. 608 00:27:35,620 --> 00:27:37,440 >> Però segueix sent una mica decebedor. 609 00:27:37,440 --> 00:27:41,210 Anem a obrir la versió dos Frosh missatges instantanis, que 610 00:27:41,210 --> 00:27:44,270 pel que sembla, se sotmet a register2.php. 611 00:27:44,270 --> 00:27:47,600 Així que aquest arxiu en realitat va per mirar gairebé el mateix. 612 00:27:47,600 --> 00:27:50,780 Vaig a anar a Frosh missatges instantanis 2. 613 00:27:50,780 --> 00:27:53,050 Però en Frosh IMs 2, anem a veure què passa. 614 00:27:53,050 --> 00:27:58,110 >> David, feu clic al botó de ràdio, com que es diu; Matthews, cap capità. 615 00:27:58,110 --> 00:27:59,230 Registrar. 616 00:27:59,230 --> 00:28:00,130 Vostè està registrat. 617 00:28:00,130 --> 00:28:00,700 En realitat no. 618 00:28:00,700 --> 00:28:02,574 Oh, espera, que acabem de fer aquest exemple, no ho vam fer nosaltres? 619 00:28:02,574 --> 00:28:04,520 Molt bé, es destaquen per. 620 00:28:04,520 --> 00:28:06,602 Anem a fer els tres. 621 00:28:06,602 --> 00:28:08,560 És evident que alguna cosa està a punt a passar amb Gmail. 622 00:28:08,560 --> 00:28:09,600 Anem a arribar-hi. 623 00:28:09,600 --> 00:28:11,900 >> Així Frosh missatges instantanis 3 són aquestes. 624 00:28:11,900 --> 00:28:13,050 No és diferent. 625 00:28:13,050 --> 00:28:19,850 Però quan ho faig David, home, Matthews, i inscriure, aquesta tercera i última versió 626 00:28:19,850 --> 00:28:22,230 reclamacions, simplement, que estan registrats realment. 627 00:28:22,230 --> 00:28:23,560 En certa manera és irrellevant. 628 00:28:23,560 --> 00:28:25,600 Però jo pretenc amb aquest tercera i última versió 629 00:28:25,600 --> 00:28:30,610 Ara he recreat exactament el que el meu company i jo construït per als missatges instantanis Frosh 630 00:28:30,610 --> 00:28:31,731 Fa anys del programa. 631 00:28:31,731 --> 00:28:32,480 I va ser simple. 632 00:28:32,480 --> 00:28:34,330 No hi havia cap base de dades, cap full de càlcul Excel. 633 00:28:34,330 --> 00:28:36,450 Però el més important, no hi havia més paper 634 00:28:36,450 --> 00:28:42,520 perquè el que vam fer amb aquest programa va anar a un correu electrònic en realitat el supervisor, qui 635 00:28:42,520 --> 00:28:44,530 rebia prèviament aquestes coses a través de les formes. 636 00:28:44,530 --> 00:28:48,890 >> I pel que sembla hem programat aquesta en de tal manera que quan una persona es registra, 637 00:28:48,890 --> 00:28:52,470 Missatges de correu electrònic del compte de John Harvard el proctor-- o a si mateix en aquest cas, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- amb la text-- "Aquesta persona acaba de registrar." 639 00:28:55,960 --> 00:29:00,560 Nom és David, el capità està en blanc; gènere, masculí; i dormitori, de Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Llavors, ¿què va passar allà? 641 00:29:01,560 --> 00:29:05,360 Bé, l'arxiu en qüestió aquí és aparentment register3.php. 642 00:29:05,360 --> 00:29:09,080 I si obro aquesta, veuràs tant el poder del codi com aquest 643 00:29:09,080 --> 00:29:12,380 i també, francament, la inseguretat d'un sistema com el correu electrònic. 644 00:29:12,380 --> 00:29:16,290 He pretès simplement eficaçment a sigui John Harvard de la següent manera. 645 00:29:16,290 --> 00:29:20,920 >> Tinc l'etiqueta php obert sobre de la tapa, que només diu aquí ve una mica de codi PHP. 646 00:29:20,920 --> 00:29:23,155 Aquí sota, resulta que hi ha són les biblioteques de PHP. 647 00:29:23,155 --> 00:29:26,410 Un no necessita incloure arxius de capçalera com a molt. 648 00:29:26,410 --> 00:29:28,900 Vostè obté més amb el pica de la cuina, per així dir-ho. 649 00:29:28,900 --> 00:29:31,820 >> Però aquesta vegada a la línia 4, que faig voler biblioteca especial anomenat 650 00:29:31,820 --> 00:29:36,087 Mailer PHP, que és una cosa que pot instal·lar de forma gratuïta en molts sistemes. 651 00:29:36,087 --> 00:29:37,920 Aquí sota estic validant la presentació només 652 00:29:37,920 --> 00:29:40,540 comprovant va donar l'usuari a mi un nom, un gènere i un dormitori. 653 00:29:40,540 --> 00:29:44,130 I si és així, endavant, una instància d'un anunci publicitari. 654 00:29:44,130 --> 00:29:47,020 >> Vostè pot pensar en això com un línia de codi que només assigna. 655 00:29:47,020 --> 00:29:48,950 És com malloc, però que és una mica més sexy 656 00:29:48,950 --> 00:29:51,790 en què no s'esmenta només malloc i alguns nombre genèric. 657 00:29:51,790 --> 00:29:55,030 Vostè diu que em doni un d'aquests, dóna'm un nou un d'aquests. 658 00:29:55,030 --> 00:29:57,950 >> I si vostè ha programat en Java o C ++ o altres llenguatges, 659 00:29:57,950 --> 00:29:59,130 que podria haver vist això. 660 00:29:59,130 --> 00:30:01,840 No obstant això, el curt d'ell, si desconegut, aquesta línia 661 00:30:01,840 --> 00:30:05,410 posa en el correu signe de dòlar una estructura especial anomenada 662 00:30:05,410 --> 00:30:08,731 un objecte que s'ha incorporat a funcionalitat de correu electrònic. 663 00:30:08,731 --> 00:30:10,355 I, de fet, compte i sintaxi similar. 664 00:30:10,355 --> 00:30:11,900 >> Això no és un punter, per se. 665 00:30:11,900 --> 00:30:13,990 PHP només utilitza la mateixa sintaxi. 666 00:30:13,990 --> 00:30:17,660 Aquesta línia està dient ús SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protocol, que és només el protocol utilitzat per enviar correu. 668 00:30:20,900 --> 00:30:24,240 Aquesta és l'especificació d'ús El servidor SMTP de Harvard, que 669 00:30:24,240 --> 00:30:25,830 és en algun lloc aquí al campus. 670 00:30:25,830 --> 00:30:28,480 >> Això està dient el que TCP el número de port amb qui parlar, 671 00:30:28,480 --> 00:30:31,650 i em vaig imaginar que fos per googlejar o demanant la taula d'ajuda. 672 00:30:31,650 --> 00:30:34,640 I després perquè Harvard utilitza alguns la seguretat del sistema en el server-- electrònic 673 00:30:34,640 --> 00:30:37,060 almenys per xifrar el trànsit entre vostè i ell, 674 00:30:37,060 --> 00:30:41,380 tot i que qualsevol persona pot enviar a it-- Vaig a encendre el protocol TLS 675 00:30:41,380 --> 00:30:42,710 per mantenir aquesta assegurança. 676 00:30:42,710 --> 00:30:44,730 >> Però aquí és on les coses aconseguir una mica de por. 677 00:30:44,730 --> 00:30:47,970 Puc només arbitràriament dir que sóc jharvard, 678 00:30:47,970 --> 00:30:51,930 i puc només arbitràriament un correu electrònic a mi mateix aquí. 679 00:30:51,930 --> 00:30:55,650 I llavors puc especificar un subjecte amb aquesta línia aquí. 680 00:30:55,650 --> 00:30:58,460 >> I això només es veu lleig, però és només un munt de concatenació. 681 00:30:58,460 --> 00:31:04,480 Resulta que PHP té un símbol molt útil, de la mateixa manera que alguns idiomes, l'operador punt, 682 00:31:04,480 --> 00:31:07,340 que concatena només, literalment, cadena després cadena després cadena, 683 00:31:07,340 --> 00:31:09,810 i vostè no ha de malloc o figura la longitud total de la cadena. 684 00:31:09,810 --> 00:31:10,820 Vostè acaba de fer-ho. 685 00:31:10,820 --> 00:31:15,220 I, de fet, perquè estic concatenant en totes aquestes coses amb aquests punts, 686 00:31:15,220 --> 00:31:18,330 és per això que el correu electrònic que enviat miraven com ho va fer. 687 00:31:18,330 --> 00:31:20,610 >> I després, finalment aquí, jo estic enviant correu. 688 00:31:20,610 --> 00:31:22,580 Així que si això és fals, Jo només vaig a morir, 689 00:31:22,580 --> 00:31:25,680 que és una funció que només impressions a la pantalla d'un missatge d'error. 690 00:31:25,680 --> 00:31:29,170 Però és, de fet, cridant a la funció d'enviament. 691 00:31:29,170 --> 00:31:31,780 En cas contrari, si tot això falla, em torna a dirigir aquí. 692 00:31:31,780 --> 00:31:34,050 >> I per què veig que Jo realment estic registrat? 693 00:31:34,050 --> 00:31:36,110 Bé, va succeir aquí. 694 00:31:36,110 --> 00:31:38,170 Així que els porto això per un parell de raons. 695 00:31:38,170 --> 00:31:41,542 >> Un, aquest és exactament com si construeixes un lloc web per a un projecte final 696 00:31:41,542 --> 00:31:44,000 o per al món real, és a dir la forma d'enviar recordatoris per correu electrònic 697 00:31:44,000 --> 00:31:45,924 als seus clients o els seus subscriptors. 698 00:31:45,924 --> 00:31:47,590 Aquesta és la forma d'enviar els recordatoris de contrasenya. 699 00:31:47,590 --> 00:31:50,760 Aquesta és la forma d'enviar missatges de persones que tenen un nou Facebook 700 00:31:50,760 --> 00:31:52,990 missatge pendent o alguna cosa per l'estil. 701 00:31:52,990 --> 00:31:55,010 >> Però també parla el fet que això podria 702 00:31:55,010 --> 00:31:58,160 han estat molt bé des Davin o qualsevol altra persona. 703 00:31:58,160 --> 00:32:00,567 I dic aquest tipus de amb un somriure perquè sóc 704 00:32:00,567 --> 00:32:03,400 molt segur del que està passant a través de diversos de les seves ments en aquest moment. 705 00:32:03,400 --> 00:32:11,910 Però aquest és un dels que ho fan com jo dic, no el que faig tipus de coses, 706 00:32:11,910 --> 00:32:14,480 perquè és trivial forjar correus electrònics com aquest. 707 00:32:14,480 --> 00:32:16,480 Però com vostè va poder haver vist o llegir en el carmesí, 708 00:32:16,480 --> 00:32:18,271 en els últims temps és també bastant trivial per a la gent 709 00:32:18,271 --> 00:32:20,050 per rastrejar de nou a algun origen. 710 00:32:20,050 --> 00:32:23,790 I em pregunti algun temps, potser en el dinar CS50, com jo primer 711 00:32:23,790 --> 00:32:27,080 es van familiaritzar molt de prop gairebé a la Junta ed molts anys 712 00:32:27,080 --> 00:32:30,890 fa quan vaig descobrir com funcionava l'internet. 713 00:32:30,890 --> 00:32:36,940 Així que en qualsevol cas-- lleugerament després que el consell va fer ed. 714 00:32:36,940 --> 00:32:42,300 >> Així, en qualsevol cas, hi ha una tot grup de súper globals, 715 00:32:42,300 --> 00:32:45,960 com se'ls anomena aquí, un dels quals ens saw-- posat dòlar signe de subratllat. 716 00:32:45,960 --> 00:32:49,530 Hi ha una contrapart anomenada get, que és on les coses des d'una URL 717 00:32:49,530 --> 00:32:50,690 acaba anant. 718 00:32:50,690 --> 00:32:54,051 I hi ha un munt d'altres, també- sessió i el servidor i la galeta. 719 00:32:54,051 --> 00:32:55,800 Tornarem a la galeta en un altre moment, 720 00:32:55,800 --> 00:33:01,340 però la sessió és una mena de fresc perquè just ara-- fins ara-- 721 00:33:01,340 --> 00:33:06,350 tot el que he fet amb un navegador web és una espècie d'apàtrida, per així dir-ho. 722 00:33:06,350 --> 00:33:10,060 Puc fer clic al voltant, l'accés arxius al servidor, cosa 723 00:33:10,060 --> 00:33:13,500 que succeeix a la pantalla, però a continuació, la connexió es tanca. 724 00:33:13,500 --> 00:33:17,450 L'Internet Explorer o el Firefox icona deixa de girar 725 00:33:17,450 --> 00:33:20,340 i que acaba de veure el que que la pàgina web conté. 726 00:33:20,340 --> 00:33:23,530 >> Així que HTTP no té estat en què una vegada que es fa una connexió, 727 00:33:23,530 --> 00:33:25,050 obté algunes dades, això és tot. 728 00:33:25,050 --> 00:33:29,940 No hi ha més connexions, a diferència de Skype, a diferència de Facetime, Gchat diferència, que 729 00:33:29,940 --> 00:33:32,180 manté una constant connexió amb el servidor. 730 00:33:32,180 --> 00:33:34,650 El web és fonamentalment desconnectat, tot i que va a 731 00:33:34,650 --> 00:33:36,630 veure en poc temps com podem simular coses 732 00:33:36,630 --> 00:33:39,300 com el xat de Facebook i Gchat, que mantenen la illusion-- 733 00:33:39,300 --> 00:33:41,680 o en realitat fer mantenir un constant connexió utilitzant 734 00:33:41,680 --> 00:33:43,270 la tecnologia més moderna. 735 00:33:43,270 --> 00:33:49,000 >> Però si vaig a, diguem-ne, counter.php, aquest és un altre exemple senzill, 736 00:33:49,000 --> 00:33:52,700 com veurem, que pensa en l'actualitat Vaig visitar el lloc el temps zero. 737 00:33:52,700 --> 00:33:56,790 Però si simplement recarregar la pàgina, d'alguna manera sap que vaig estar aquí abans. 738 00:33:56,790 --> 00:33:58,840 Si torno a carregar de nou, sap que vaig estar aquí abans. 739 00:33:58,840 --> 00:34:01,100 I una vegada i una altra i una altra i una altra. 740 00:34:01,100 --> 00:34:03,610 >> Així que hi ha una mica més-plussing passant, però avís 741 00:34:03,610 --> 00:34:07,090 la coseta gira sempre tan breument fins a la part superior i després es desconnecta, 742 00:34:07,090 --> 00:34:11,179 pel que no és com si tingués una constant connexió al meu aparell. 743 00:34:11,179 --> 00:34:16,929 Bé, si vaig a counter.php, compte el fàcil que és. 744 00:34:16,929 --> 00:34:19,080 Jo dic a aquesta primera especial funció que anem aviat 745 00:34:19,080 --> 00:34:21,513 començar a prendre per fet anomenat inici de la sessió. 746 00:34:21,513 --> 00:34:22,179 Inicia una sessió. 747 00:34:22,179 --> 00:34:25,095 >> I una sessió d'ara endavant és només serà un cub, com un carret 748 00:34:25,095 --> 00:34:28,120 cistella en el qual vostè pot posar els valors i el tipus de confiança com a programador 749 00:34:28,120 --> 00:34:31,590 que ells van a ser aquí quan aquest usuari ve una segona part posterior-- 750 00:34:31,590 --> 00:34:35,670 més tard, una hora més tard, fins i tot un any més tard, sempre que ell o ella no s'esborra 751 00:34:35,670 --> 00:34:37,602 les seves galetes, com veurem amb el temps veiem. 752 00:34:37,602 --> 00:34:39,310 I ara només tinc si una condició aquí. 753 00:34:39,310 --> 00:34:44,679 Així que si la clau següent, anomenat comptador, està situada a l'interior 754 00:34:44,679 --> 00:34:49,210 d'aquest super global-- aquest hash taula, si voluntat-- anomenat període de sessions, 755 00:34:49,210 --> 00:34:53,350 a continuació, seguir endavant i prendre la valor de la reflexió session-- 756 00:34:53,350 --> 00:34:55,250 en això com un carret cart-- i emmagatzemar- 757 00:34:55,250 --> 00:34:57,680 en una variable temporal anomenada comptador. 758 00:34:57,680 --> 00:35:02,240 >> En cas contrari, si aquest valor era comptador no s'estableix en l'anomenada cistella de la compra, 759 00:35:02,240 --> 00:35:04,430 només inicialitzar a 0. 760 00:35:04,430 --> 00:35:09,830 Finalment, aquí baix, anar i tornar a posar en els carros de la compra o de la sessió 761 00:35:09,830 --> 00:35:13,000 el valor del comptador gener. 762 00:35:13,000 --> 00:35:16,730 Així que resulta que aquesta aquí-- especial contenidor 763 00:35:16,730 --> 00:35:20,355 que, de nou, és un d'ells associat matrius, una matriu que vostè pot indexar 764 00:35:20,355 --> 00:35:25,010 en paraules en lloc de numbers-- persisteix fins i tot després que l'usuari es va. 765 00:35:25,010 --> 00:35:26,510 Una vegada més, vaig a anar de nou a la pàgina ara. 766 00:35:26,510 --> 00:35:28,400 Ha estat un minut més o menys. 767 00:35:28,400 --> 00:35:31,300 Però recorda que jo tinc estat aquí 19 vegades abans. 768 00:35:31,300 --> 00:35:32,740 Aquest és el meu 20 visita. 769 00:35:32,740 --> 00:35:36,560 >> I pel que aquest serà clau per la implementació de qualsevol lloc web que recorda 770 00:35:36,560 --> 00:35:40,640 que està connectat, que es posa alguna cosa literal en la seva cistella de la compra 771 00:35:40,640 --> 00:35:43,902 per comprar o que té alguna nombre de missatges en espera. 772 00:35:43,902 --> 00:35:45,610 Cada vegada que vulgui recordar la informació, 773 00:35:45,610 --> 00:35:48,130 veurem que PHP, com diversos altres idiomes, 774 00:35:48,130 --> 00:35:53,640 ens proveeix d'aquesta il·lusió d'estat tot i que, com es veurà en PSET 6, 775 00:35:53,640 --> 00:35:57,642 com vostè està fent peticions HTTP des del client al servidor, això és tot. 776 00:35:57,642 --> 00:35:59,850 Quan arribi de nou que resposta, no hi ha res més 777 00:35:59,850 --> 00:36:01,790 tornant des del servidor per defecte. 778 00:36:01,790 --> 00:36:03,820 Però anem a veure com treballar al voltant d'això. 779 00:36:03,820 --> 00:36:07,430 >> Bé, ara, anem a tractar de netejar això una mica. 780 00:36:07,430 --> 00:36:09,470 Hem vist uns quants diferents exemples allà. 781 00:36:09,470 --> 00:36:12,250 Ah, i com un a part, per els que estan familiaritzats o no familiar, 782 00:36:12,250 --> 00:36:14,230 la raó que la Exemple Frosh missatges instantanis es va anar 783 00:36:14,230 --> 00:36:18,060 de mirar realment lleig per slightly-- bé, 784 00:36:18,060 --> 00:36:23,160 encara ugly-- a lleugerament menys lleig tot i que encara lleig 785 00:36:23,160 --> 00:36:25,230 és perquè si mirem en el codi font aquí, 786 00:36:25,230 --> 00:36:28,240 resulta que tinc aquest a la part superior de l'arxiu. 787 00:36:28,240 --> 00:36:32,570 >> Resulta que d'arrencada és un dels molts biblioteques lliurement disponibles per aquí 788 00:36:32,570 --> 00:36:37,140 que no existeix per als llenguatges de programació sempre, però per CSS o JavaScript 789 00:36:37,140 --> 00:36:39,190 o HTML o qualsevol nombre d'idiomes. 790 00:36:39,190 --> 00:36:42,160 >> I aquestes persones aquí-- originalment va sortir 791 00:36:42,160 --> 00:36:44,730 de Twitter-- només tenen un munt d'estils. 792 00:36:44,730 --> 00:36:47,360 És un arxiu massiu aquí que algú va escriure, 793 00:36:47,360 --> 00:36:51,020 o d'algú va escriure, amb el temps que especifica els colors i el format 794 00:36:51,020 --> 00:36:53,740 i altres coses perquè jo pugui tipus de demanar prestat la seva sintaxi 795 00:36:53,740 --> 00:36:56,157 i no haver de esbrinar com dissenyar la meva forma. 796 00:36:56,157 --> 00:36:57,990 Això també es minified de manera que un ordinador pot 797 00:36:57,990 --> 00:37:00,560 entendre però no necessàriament un ésser humà. 798 00:37:00,560 --> 00:37:03,050 Així que això és només per això que el estilització no va canviar. 799 00:37:03,050 --> 00:37:05,450 >> Però ara farem millor en termes de disseny, 800 00:37:05,450 --> 00:37:07,490 perquè si ens quedem a baix aquest camí massa llarg, 801 00:37:07,490 --> 00:37:11,290 nostre codi va a aconseguir brut i desordenat. 802 00:37:11,290 --> 00:37:13,040 Així que anem a centrar-nos en aquests exemples aquí. 803 00:37:13,040 --> 00:37:15,090 L'última per avui. 804 00:37:15,090 --> 00:37:18,720 >> Així que aquí és un super senzill la versió 1.0 de la pàgina web de l'CS50. 805 00:37:18,720 --> 00:37:21,250 Només té enllaços a conferències i programa d'estudis, 806 00:37:21,250 --> 00:37:25,490 i s'està utilitzant aquesta llista desordenada tag-- l'etiqueta de UL que es va utilitzar l'última vegada. 807 00:37:25,490 --> 00:37:28,800 I si de fet, si obrir View Page Source, 808 00:37:28,800 --> 00:37:31,710 veuràs que això és molt, molt senzill d'HTML. 809 00:37:31,710 --> 00:37:35,460 I de fet, tot i que això és un arxiu PHP sota de la capella, 810 00:37:35,460 --> 00:37:38,620 Encara és només escopir només HTML, per ara. 811 00:37:38,620 --> 00:37:41,312 >> Així que si faig clic en conferències, veiem que això passi. 812 00:37:41,312 --> 00:37:43,020 I si faig clic a la setmana zero, veiem això. 813 00:37:43,020 --> 00:37:44,920 I si faig clic a Dimecres, veiem això. 814 00:37:44,920 --> 00:37:47,900 I això que sembla va ser el PDF de les diapositives d'aquest dia. 815 00:37:47,900 --> 00:37:52,020 L'únic que he fet és enllaç amb un etiqueta d'ancoratge a aquesta URL aquí. 816 00:37:52,020 --> 00:37:55,400 >> Així que això és només per dir que aquest és un bonic versió simple de la pàgina web de l'CS50. 817 00:37:55,400 --> 00:37:56,790 Anem a veure com s'implementa. 818 00:37:56,790 --> 00:38:01,240 Si entro al directori mvc0, anem a veure un parell d'arxius. 819 00:38:01,240 --> 00:38:03,250 Un d'ells és un README, així que si una mica d'això és massa ràpid, 820 00:38:03,250 --> 00:38:05,166 que només pot furgar més relaxat després. 821 00:38:05,166 --> 00:38:07,930 I fixeu-vos en aquí és un arxiu index.php. 822 00:38:07,930 --> 00:38:09,960 Resulta que si tu mateix, l'ésser humà, 823 00:38:09,960 --> 00:38:14,460 no especifiqui el nom definitiu a una adreça URL, el servidor web en general 824 00:38:14,460 --> 00:38:17,010 s'infereix algun nom per defecte per a vostè. 825 00:38:17,010 --> 00:38:20,060 Un punt índex alguna cosa generalment és el valor predeterminat. 826 00:38:20,060 --> 00:38:23,010 >> Així que per això fa un moment quan vaig visitar aquest URL aquí, 827 00:38:23,010 --> 00:38:26,750 cap nom de fitxer, no hi ha cap arxiu extensió, cap període en l'adreça URL. 828 00:38:26,750 --> 00:38:29,710 Només sabia d'alguna manera màgica buscar index.php. 829 00:38:29,710 --> 00:38:30,870 És només una convenció. 830 00:38:30,870 --> 00:38:32,360 Podria ser cridat qualsevol cosa. 831 00:38:32,360 --> 00:38:35,110 >> Així que si ara em vaig a index.php, veuràs 832 00:38:35,110 --> 00:38:37,100 que, indeed-- anem desfer-se dels comentaris 833 00:38:37,100 --> 00:38:39,500 aquí perquè no hi ha realment res interessant que it-- 834 00:38:39,500 --> 00:38:41,579 això és només modificable HTML. 835 00:38:41,579 --> 00:38:43,370 Així que això és consistent, però, amb la meva reclamació 836 00:38:43,370 --> 00:38:45,230 que es poden barrejar HTML i PHP. 837 00:38:45,230 --> 00:38:48,060 No hi ha real programació lògica aquí. 838 00:38:48,060 --> 00:38:51,030 >> I els altres arxius són bastant molt tan poc interessant. 839 00:38:51,030 --> 00:38:56,240 És només una setmana-codificat aquí per una setmana m i una setmana w, 840 00:38:56,240 --> 00:38:57,510 per al dilluns i dimecres. 841 00:38:57,510 --> 00:39:01,890 I després, si obro la setmana zero, compte que és gairebé idèntica. 842 00:39:01,890 --> 00:39:03,320 >> I això és una espècie de conclusió clau. 843 00:39:03,320 --> 00:39:06,180 Observi com això és redundant. 844 00:39:06,180 --> 00:39:10,710 Aquests arxius amb prou feines canvien, i no obstant això jo tirat un d'aquests llocs de treball de còpia / pasta 845 00:39:10,710 --> 00:39:13,420 on vaig prendre una file-- presumiblement en la setmana que zero-- copiat 846 00:39:13,420 --> 00:39:16,320 quan una setmana va arribar, i ajustat alguns valors. 847 00:39:16,320 --> 00:39:18,590 Probablement hauríem de ser capaços de fer millor que això. 848 00:39:18,590 --> 00:39:21,800 >> Així que anem a tornar fins mvc i entrar en una versió. 849 00:39:21,800 --> 00:39:24,810 I noto que tinc una alguns arxius, ja que el que 850 00:39:24,810 --> 00:39:29,870 era comú a tots aquests arxius només una moment ago-- si torno a la versió 0, 851 00:39:29,870 --> 00:39:32,600 anem a anar de nou a l'índex, i només postulate-- 852 00:39:32,600 --> 00:39:36,090 una vegada que em desfaig de la comments-- quina part d'aquesta pàgina 853 00:39:36,090 --> 00:39:40,072 és de suposar en cadascun dels meus arxius? 854 00:39:40,072 --> 00:39:40,780 Només ha de trucar a terme. 855 00:39:40,780 --> 00:39:44,620 Què es dupliquen línies probablement a través de totes aquestes pàgines? 856 00:39:44,620 --> 00:39:45,120 Sí? 857 00:39:45,120 --> 00:39:46,110 >> ESTUDIANT: [inaudible]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. Malan: de l'1 al 9. 859 00:39:47,660 --> 00:39:48,720 Sí, absolutament. 860 00:39:48,720 --> 00:39:52,080 1 a 9, excepte potser 8 canvia una mica perquè CS50 861 00:39:52,080 --> 00:39:54,650 es converteix en conferències o setmana zero o alguna cosa així. 862 00:39:54,650 --> 00:39:55,970 Però gairebé idèntic. 863 00:39:55,970 --> 00:39:58,657 Així que tot això és només tipus de copiat i enganxat. 864 00:39:58,657 --> 00:40:00,490 I hi ha un parell altres línies se m'acut 865 00:40:00,490 --> 00:40:05,000 que són probablement idèntica a través de tots els arxius. 866 00:40:05,000 --> 00:40:06,315 >> ESTUDIANT: 12 i 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. Malan: Sí. 868 00:40:07,190 --> 00:40:11,220 És clar, 12, 13, i 14, probablement, només perquè les coses interessants 869 00:40:11,220 --> 00:40:15,460 que està succeint en les línies 11 i 10, pel que sembla. 870 00:40:15,460 --> 00:40:18,350 Així que donem una ullada a la versió 1, que tracta de millorar això. 871 00:40:18,350 --> 00:40:24,020 En la versió 1 d'aquest exemple-- mvc anem a explicar el mvc mitjans en un moment-- 872 00:40:24,020 --> 00:40:27,420 si entro en índex, tipus de sembla una mica confús ara. 873 00:40:27,420 --> 00:40:28,880 No és tan simple com abans. 874 00:40:28,880 --> 00:40:30,906 >> Però una vegada que comenci a llegir amb cura, és 875 00:40:30,906 --> 00:40:32,530 bastant senzill el que està fent. 876 00:40:32,530 --> 00:40:34,397 Pel que sembla, la línia 1 i línia 8 han substituït 877 00:40:34,397 --> 00:40:37,230 totes les coses que simplement identified-- encara que només per si de cas, 878 00:40:37,230 --> 00:40:41,900 Vaig deixar les ULS allà per si de cas alguna dies no tenien una llista de les coses. 879 00:40:41,900 --> 00:40:47,860 I així ho requereixin és una cosa així com la lliura incloure en C. Còpia i pastes 880 00:40:47,860 --> 00:40:50,470 el contingut efectivament aquí en aquest arxiu. 881 00:40:50,470 --> 00:40:53,650 >> Així que en header.php, com vostè podria inferir del seu nom, 882 00:40:53,650 --> 00:40:55,330 serà la capçalera de la pàgina. 883 00:40:55,330 --> 00:40:57,110 És una espècie d'orfe aquí. 884 00:40:57,110 --> 00:41:01,820 Només té la part superior a la mateixa, però no hi ha més contingut a continuació. 885 00:41:01,820 --> 00:41:05,070 >> I si miro a peu de pàgina per la seva banda, que era l'altre arxiu mentioned-- 886 00:41:05,070 --> 00:41:08,830 aquest és molt menys interessant, però de nou, és comú a tot. 887 00:41:08,830 --> 00:41:10,250 Així que aquest és el peu de pàgina. 888 00:41:10,250 --> 00:41:11,300 Aquest és l'encapçalament. 889 00:41:11,300 --> 00:41:13,950 Aquest és l'arxiu que és canviar, així que per què no 890 00:41:13,950 --> 00:41:18,140 tractar de factoritzar la comunalitat amb aquestes dues línies aquí? 891 00:41:18,140 --> 00:41:20,090 >> Però podem netejar aquesta una mica més lluny. 892 00:41:20,090 --> 00:41:23,260 Vaig a seguir endavant i obrir la versió 2, on 893 00:41:23,260 --> 00:41:27,106 ja veurem que no hi ha un nou arxiu, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Anem a veure el que és això en un moment. 895 00:41:28,610 --> 00:41:30,930 Anem a l'índex, com el punt d'entrada com abans. 896 00:41:30,930 --> 00:41:35,230 >> I ara noto que estic requerint helpers.php, no la capçalera o peu de pàgina. 897 00:41:35,230 --> 00:41:41,720 Però els ajudants és una cosa així com helpers.c i helpers.h de PSET 2 898 00:41:41,720 --> 00:41:46,150 o PSET 3 Fa molt de temps, quan en realitat es va fer buscar i trobar perquè PSET, 899 00:41:46,150 --> 00:41:50,950 i que tenia tot el codi per a la classificació i la recerca en un arxiu separat. 900 00:41:50,950 --> 00:41:52,510 Això és el que està passant aquí. 901 00:41:52,510 --> 00:41:54,390 >> I ara la línia 3 es veu una mica diferent. 902 00:41:54,390 --> 00:41:55,920 I és només una línia. 903 00:41:55,920 --> 00:41:57,950 Per fer això encara més clar, aquí podria simplement 904 00:41:57,950 --> 00:42:01,820 Què això sigui estilísticament coherent amb tota la resta que hem fet. 905 00:42:01,820 --> 00:42:04,130 Però això no és realment canviar la funcionalitat. 906 00:42:04,130 --> 00:42:05,880 És només una línia de codi real. 907 00:42:05,880 --> 00:42:09,010 >> Pel que sembla, hi ha una funció en algun lloc anomenat render de capçalera, 908 00:42:09,010 --> 00:42:11,420 I aquí és on les coses ser bastant potent. 909 00:42:11,420 --> 00:42:17,040 Tingueu en compte que a l'interior de les seves parèntesi és el que una altra peça de sintaxi? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 És probable que sigui una mica difícil de dir, però notar there's-- vaig a posar una mica de blanc 912 00:42:23,350 --> 00:42:24,300 espai. 913 00:42:24,300 --> 00:42:25,530 Hi ha claudàtors. 914 00:42:25,530 --> 00:42:29,700 >> I entre claudàtors que vam veure fa una mica en el context de matrius associatives, 915 00:42:29,700 --> 00:42:31,580 que són, de nou, igual que les taules hash. 916 00:42:31,580 --> 00:42:36,230 I si vostè pensa ara a C, la ordre d'arguments en una funció 917 00:42:36,230 --> 00:42:37,570 ha de ser sempre el mateix. 918 00:42:37,570 --> 00:42:41,146 Cal recordar el que el ordenar x és--, i, z z, i, x-- 919 00:42:41,146 --> 00:42:44,020 i vostè ha de proporcionar sempre els en el mateix ordre o mirar cap amunt 920 00:42:44,020 --> 00:42:45,100 si se li ha oblidat. 921 00:42:45,100 --> 00:42:51,140 >> Però això sembla ser una forma intel·ligent passant d'un valor clau arbitrària 922 00:42:51,140 --> 00:42:55,840 parells pel que el títol és el nom d'un argument en aquest cas 923 00:42:55,840 --> 00:42:58,334 i CS50 és el seu valor. 924 00:42:58,334 --> 00:43:00,250 I el fet que tinc aquests claudàtors 925 00:43:00,250 --> 00:43:02,560 aquí voldrà dir que vaig poder també passar en alguna cosa 926 00:43:02,560 --> 00:43:07,550 com una setmana és 1 o 0 o 2 o 3. 927 00:43:07,550 --> 00:43:10,550 Per a això hem parametritzem aquesta funció d'una manera tal 928 00:43:10,550 --> 00:43:15,180 que pot prendre múltiples entrades, però per ara és només l'un. 929 00:43:15,180 --> 00:43:20,060 >> Si ara vaig a helpers.php, observi el que està fent. 930 00:43:20,060 --> 00:43:22,030 Això és una mica de nova funcionalitat, 931 00:43:22,030 --> 00:43:24,190 però per ara només prendre en la fe que això és 932 00:43:24,190 --> 00:43:26,570 la sintaxi amb la qual definir una funció en PHP. 933 00:43:26,570 --> 00:43:27,840 Vostè, literalment, diu la funció. 934 00:43:27,840 --> 00:43:30,090 No s'especifica un retorn escrigui, i això és consistent 935 00:43:30,090 --> 00:43:33,880 amb el detall de la variable anterior on vostè realment no escriu fortament. 936 00:43:33,880 --> 00:43:35,650 >> Això només especifica que, per defecte, aquesta 937 00:43:35,650 --> 00:43:37,460 pren un associativa matriu com un argument. 938 00:43:37,460 --> 00:43:38,210 I saps què? 939 00:43:38,210 --> 00:43:41,450 Si l'usuari no en passa un en, assumirà un valor per defecte. 940 00:43:41,450 --> 00:43:44,680 >> Aquesta és una característica que C no té per a nosaltres, la qual cosa és bo, perquè ara 941 00:43:44,680 --> 00:43:46,430 dades, fins i tot si no li donen res, 942 00:43:46,430 --> 00:43:49,300 serà un matriu, però un buit. 943 00:43:49,300 --> 00:43:51,860 I com un part, extracte tot just fa una mica covard 944 00:43:51,860 --> 00:43:56,380 on pren totes les claus d'aquest matriu associativa, totes les coses 945 00:43:56,380 --> 00:43:59,950 es pot posar entre claudàtors, i crea les variables d'ells 946 00:43:59,950 --> 00:44:06,270 pel que en última instància, podem tenir accés a ells en footet.php i header.php. 947 00:44:06,270 --> 00:44:08,950 Això és una mica abstracte, així que permetin-me explicar-ho. 948 00:44:08,950 --> 00:44:12,990 >> En index.php, noto que estic que passa en un parell de valors clau del títol 949 00:44:12,990 --> 00:44:14,850 amb un valor de CS50. 950 00:44:14,850 --> 00:44:18,660 Si ara miro helpers.php, notar que RenderHeader 951 00:44:18,660 --> 00:44:23,870 s'extreu que les dades que estic passant en, i després requerir header.php. 952 00:44:23,870 --> 00:44:27,970 El que he fet és una espècie d'un pobre home de aplicació ara de la següent. 953 00:44:27,970 --> 00:44:31,720 >> Si obro header.php, Tingueu en compte que jo ja no tinc dur 954 00:44:31,720 --> 00:44:34,890 codificada la paraula CS50 en aquest arxiu de capçalera. 955 00:44:34,890 --> 00:44:39,310 He posat aquest reconegudament atroçment funció amb nom, HTML caràcters especials, 956 00:44:39,310 --> 00:44:40,170 en aquest país. 957 00:44:40,170 --> 00:44:41,640 Però noto el que he fet. 958 00:44:41,640 --> 00:44:44,240 Tinc HTML obert. 959 00:44:44,240 --> 00:44:47,420 Llavors tinc el cap obert i el títol obert. 960 00:44:47,420 --> 00:44:52,380 >> I després a l'interior de l'títol obert i tancar etiquetes, tinc una mica de codi PHP. 961 00:44:52,380 --> 00:44:56,670 I aquest és un bonic però de sintaxi, que només significa trec. 962 00:44:56,670 --> 00:44:59,840 Significa literalment esto-- ressò de la following-- 963 00:44:59,840 --> 00:45:01,910 però això és més atractiu per escriure. 964 00:45:01,910 --> 00:45:05,000 Trobo a terme el títol que ha estat aprovada en. 965 00:45:05,000 --> 00:45:07,560 >> Però què et sembla HTML Char especial es tracta, 966 00:45:07,560 --> 00:45:10,590 especialment si vostè té alguna experiència prèvia en HTML? 967 00:45:10,590 --> 00:45:14,050 Quin podria ser caràcters perillós per passar a una pàgina 968 00:45:14,050 --> 00:45:17,980 on s'està generant dinàmicament la pàgina web amb un codi com aquest? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Déjame anar a aquesta imatge, versió 2, i veure si no puc induir això. 971 00:45:24,650 --> 00:45:26,210 >> Versió 2 és això. 972 00:45:26,210 --> 00:45:28,510 I compte tot està molt bé, treballant bé. 973 00:45:28,510 --> 00:45:35,280 Però suposo que vaig a index.php i He especificat que el títol de la meva pàgina 974 00:45:35,280 --> 00:45:36,630 no és CS50. 975 00:45:36,630 --> 00:45:44,930 És alerta guió suport obert hola món, cometa simple tancament, 976 00:45:44,930 --> 00:45:49,740 parèntesi de tancament, punt i coma, suport obert, guió barra. 977 00:45:49,740 --> 00:45:51,897 >> Guió, com veurem finalment veure, és una etiqueta 978 00:45:51,897 --> 00:45:54,480 que es pot utilitzar amb l'ús d'un altre llenguatge de programació anomenat 979 00:45:54,480 --> 00:45:56,330 JavaScript dins d'una pàgina web. 980 00:45:56,330 --> 00:45:57,960 I ara compte de la lògica aquí. 981 00:45:57,960 --> 00:45:59,840 Heus aquí una clau anomenada títol. 982 00:45:59,840 --> 00:46:02,690 Aquí és el seu valor a llarg boig ara. 983 00:46:02,690 --> 00:46:07,840 >> Però si vaig als ajudants pàgina- o més aviat, la pàgina de capçalera, 984 00:46:07,840 --> 00:46:11,310 Vaig a trucar a aquesta funció en aquest títol per primera vegada. 985 00:46:11,310 --> 00:46:15,250 Així que si ara torno a carregar aquesta pàgina, veure això, que sembla ridícul, 986 00:46:15,250 --> 00:46:16,110 però és segur. 987 00:46:16,110 --> 00:46:17,310 Només es veu estúpid. 988 00:46:17,310 --> 00:46:20,320 >> Però suposem que en lloc M'havia oblidat d'això. 989 00:46:20,320 --> 00:46:24,660 I recorda les meves paraules, un nombre diferent de zero que vostè s'oblidi de fer això 990 00:46:24,660 --> 00:46:27,790 i obtindrà alguns industriosos estudiant o amic que puja 991 00:46:27,790 --> 00:46:31,540 perquè a la fira CS50 o anònimament en la nit furgant a la seva pàgina web 992 00:46:31,540 --> 00:46:35,300 i, essencialment, la injecció de codi sense el coneixement que al seu lloc 993 00:46:35,300 --> 00:46:35,800 d'alguna manera. 994 00:46:35,800 --> 00:46:39,000 >> Perquè si jo simplement escopir a títol aquí i títol 995 00:46:39,000 --> 00:46:44,330 allà-- bé, si el títol literalment són aquestes i PHP 996 00:46:44,330 --> 00:46:47,660 com un llenguatge que pot escopir a terme un altre text llengües, 997 00:46:47,660 --> 00:46:50,650 és a dir, literalment, va per reemplaçar aquesta etiqueta amb, 998 00:46:50,650 --> 00:46:53,010 per descomptat, el que he posat en un altre lloc. 999 00:46:53,010 --> 00:46:57,640 >> Així que si jo ara vaig aquí i tornar a carregar després desfer els mecanismes de seguretat, 1000 00:46:57,640 --> 00:46:59,982 Ara tinc hola món aquí. 1001 00:46:59,982 --> 00:47:02,690 Ara això no és tot tan gran d'un acord, però es podria fer alguna cosa 1002 00:47:02,690 --> 00:47:05,119 una mica més maliciós aquí, com si hagués 1003 00:47:05,119 --> 00:47:08,410 una altra tags-- com veurem, una vegada que passem més temps en JavaScript-- com a ubicació 1004 00:47:08,410 --> 00:47:14,910 punt href aconsegueix, cita, fi de la cita, HTTP business.com, però el contrari que 1005 00:47:14,910 --> 00:47:15,950 des de l'altre dia. 1006 00:47:15,950 --> 00:47:20,120 I ara vostè pot induir un web pàgina per anar en realitat immediatament 1007 00:47:20,120 --> 00:47:21,190 a aquesta pàgina web aquí. 1008 00:47:21,190 --> 00:47:23,000 >> I en realitat, no vull per fins i tot anar a business.com 1009 00:47:23,000 --> 00:47:24,749 perquè jo no vull saber el que és això. 1010 00:47:24,749 --> 00:47:28,710 Però això, també, es dispararà codi per a ser injectada en aquesta pàgina. 1011 00:47:28,710 --> 00:47:32,680 Així que això és només per dir que tot i que estem introduint súper d'hora en alguns 1012 00:47:32,680 --> 00:47:36,800 d'aquestes estructures més complexes, és tot cap a un fi d'assegurar- 1013 00:47:36,800 --> 00:47:39,320 que el codi no és explotable. 1014 00:47:39,320 --> 00:47:40,960 >> Així que ara una tercera versió aquí. 1015 00:47:40,960 --> 00:47:42,470 S'està fent una mica més de luxe. 1016 00:47:42,470 --> 00:47:44,875 Realment no em com-- la part anal de mi 1017 00:47:44,875 --> 00:47:47,750 estava una mica molest per la fet que una funció que havia cridat 1018 00:47:47,750 --> 00:47:51,940 RenderHeader i RenderFooter que eren gairebé idèntics. 1019 00:47:51,940 --> 00:47:55,400 Així que es va acudir, per què no ho fan Jo parametritzar aquestes funcions 1020 00:47:55,400 --> 00:47:59,180 en una sola trucada render, faci que prendre un segon argument 1021 00:47:59,180 --> 00:48:04,420 com el nom de la plantilla, a la final a render-- ja sigui encapçalat o peu de pàgina? 1022 00:48:04,420 --> 00:48:07,160 I a continuació, opcionalment, si vull per passar en alguns parells de valors clau 1023 00:48:07,160 --> 00:48:10,580 com ho faig pel títol de la capçalera, però no per al peu de pàgina, 1024 00:48:10,580 --> 00:48:11,800 Jo podria fer això. 1025 00:48:11,800 --> 00:48:16,510 >> I ara si em vaig a helpers.php, que és una mica més complex. 1026 00:48:16,510 --> 00:48:19,670 I vaig a sacsejo les mans al detalls, però és només una funció. 1027 00:48:19,670 --> 00:48:21,890 Així que això és un pas cap a un millor disseny. 1028 00:48:21,890 --> 00:48:23,360 >> Podem prendre un pas més enllà. 1029 00:48:23,360 --> 00:48:28,890 Si me'n vaig a la meva habitació versió d'aquest, compte ara 1030 00:48:28,890 --> 00:48:31,320 que estic fent alguna cosa encara més tipus de críptic. 1031 00:48:31,320 --> 00:48:33,230 I sé que això és un molt per absorbir al mateix temps, 1032 00:48:33,230 --> 00:48:35,080 però estem només una mica de la neteja de les coses. 1033 00:48:35,080 --> 00:48:38,550 Ara m'estic posant els meus ajudants presentar en una carpeta anomenada 1034 00:48:38,550 --> 00:48:41,190 includes-- només una arbitrària nomenar on vull posar coses 1035 00:48:41,190 --> 00:48:44,300 que vull figurar i després la resta d'aquest és el mateix. 1036 00:48:44,300 --> 00:48:47,140 >> Però si miro ara a gedit, avís que m'he lliurat 1037 00:48:47,140 --> 00:48:51,940 de tots els altres arxius i tinc ells mogut, per exemple, en aquí. 1038 00:48:51,940 --> 00:48:55,110 I després a les plantilles, Tinc això, també. 1039 00:48:55,110 --> 00:48:59,292 I així, tot això és ara cap a un pas d'utilitzar un patró de disseny molt millor. 1040 00:48:59,292 --> 00:49:01,000 I estem molt ràpidament va a allunyar- 1041 00:49:01,000 --> 00:49:03,870 de funcionalitat per defecte de PHP, que vam començar aquí amb, 1042 00:49:03,870 --> 00:49:07,655 on s'acaba de barregeu PHP, i el codi HTML, CSS i la seva, 1043 00:49:07,655 --> 00:49:09,780 i que acaba d'escopir cap a fora i vostè va sobre el seu camí. 1044 00:49:09,780 --> 00:49:11,404 No serà molt fàcil de mantenir. 1045 00:49:11,404 --> 00:49:14,481 Igual que en C, que vam començar a utilitzar diversos arxius i múltiples funcions 1046 00:49:14,481 --> 00:49:15,730 i coses de facturatge això. 1047 00:49:15,730 --> 00:49:16,688 Anem a fer el mateix aquí. 1048 00:49:16,688 --> 00:49:19,970 I de fet, en la cinquena i última versió aquí, ho vaig fer una altra cosa. 1049 00:49:19,970 --> 00:49:23,710 Vostè pot fins i tot utilitzar punt punt, que, de nou, és només el directori pare. 1050 00:49:23,710 --> 00:49:28,260 Per ser encara més conscients de la seguretat, perquè si miro l'escolta 1051 00:49:28,260 --> 00:49:32,450 aquí per cinquena i última versió, previ avís que tinc un directori anomenat aquí 1052 00:49:32,450 --> 00:49:35,180 públic, i després en el mateix nivell, per dir-ho, 1053 00:49:35,180 --> 00:49:38,490 Tinc inclou i plantilles i després aquest arxiu de text Llegiu-me. 1054 00:49:38,490 --> 00:49:41,130 >> I la raó per la qual he estructurat Com és esto-- i tants web 1055 00:49:41,130 --> 00:49:44,330 amfitrions, especialment els 5 $ els mesos o els 10 dòlars al mes, 1056 00:49:44,330 --> 00:49:47,170 si alguna vegada has tingut un d'aquests services-- el que molts d'ells ho fan 1057 00:49:47,170 --> 00:49:50,690 és que només esperen que bolcar tot dels teus arxius en un directori, 1058 00:49:50,690 --> 00:49:53,640 com ja vam fer amb aquest primer exemple. 1059 00:49:53,640 --> 00:49:56,740 >> Però tan aviat com s'inicia la construcció més llocs sofisticats que només emmagatzemen 1060 00:49:56,740 --> 00:50:00,480 dades que es preocupen per vostè i arxius preocupar-se, en realitat l'organització de les coses 1061 00:50:00,480 --> 00:50:05,060 correctament i amb més seguretat consciència en la ment pot 1062 00:50:05,060 --> 00:50:07,927 comencem a defensar contra tots els amics 1063 00:50:07,927 --> 00:50:10,135 que vostè té ja sigui en o fora d'aquesta classe que, 1064 00:50:10,135 --> 00:50:12,510 tan aviat com vostè comença a fer programes vostè mateix al web, 1065 00:50:12,510 --> 00:50:15,140 començaran a recollir sobre vostè i sobre ells. 1066 00:50:15,140 --> 00:50:17,420 >> I així anem a veure en última instància, en aquest disseny. 1067 00:50:17,420 --> 00:50:20,010 Això és només una imatge que representa el següent. 1068 00:50:20,010 --> 00:50:22,897 Anem a posar tot de la nostra lògica de programació en un o més arxius, 1069 00:50:22,897 --> 00:50:25,230 i anem a començar just trucant als controladors. 1070 00:50:25,230 --> 00:50:28,022 És on els cervells de els nostres llocs web són en realitat. 1071 00:50:28,022 --> 00:50:29,730 A continuació, anem a tenen punts de vista i opinions 1072 00:50:29,730 --> 00:50:32,480 són tan simple com independent files-- anomenats plantilles, sovint. 1073 00:50:32,480 --> 00:50:34,410 Només tenen la estètica de la meva pàgina, 1074 00:50:34,410 --> 00:50:37,020 el que vull de la pàgina per buscar com-- els colors i el disseny 1075 00:50:37,020 --> 00:50:38,870 i les posicions de totes les variables. 1076 00:50:38,870 --> 00:50:41,120 >> I després més interessant que amb el temps anem a arribar a 1077 00:50:41,120 --> 00:50:45,420 és el model, que serà just la paraula ens copet a altres tecnologies 1078 00:50:45,420 --> 00:50:47,771 que portem en el imatge, de la mateixa manera que les bases de dades reals, 1079 00:50:47,771 --> 00:50:49,520 pel que quan es vol per guardar la informació, 1080 00:50:49,520 --> 00:50:52,140 no acaba d'enviar un correu electrònic al seu supervisor oa vostè mateix, 1081 00:50:52,140 --> 00:50:57,350 en realitat s'emmagatzema en una base de dades utilitzant un altre llenguatge conegut com SQL. 1082 00:50:57,350 --> 00:51:00,450 I així anem a deixar aquí avui i recollir amb aquest dimecres 1083 00:51:00,450 --> 00:51:02,990 bases de dades i introduir a continuació. 1084 00:51:02,990 --> 00:51:06,940 >> [REPRODUCCIÓ DE MÚSICA] 1085 00:51:06,940 --> 00:54:24,555