1 00:00:00,000 --> 00:00:03,920 >> [Música tocando] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. Malan: Todo ben. 4 00:00:13,800 --> 00:00:15,640 Este é CS50. 5 00:00:15,640 --> 00:00:17,620 Este é o inicio da semana oito. 6 00:00:17,620 --> 00:00:22,440 E ten que lembrar que paramos última vez mirando para unha nova linguaxe 7 00:00:22,440 --> 00:00:23,240 completamente. 8 00:00:23,240 --> 00:00:25,905 De feito, un que é moi lixeiro e non o é 9 00:00:25,905 --> 00:00:26,940 unha linguaxe de programación. 10 00:00:26,940 --> 00:00:31,100 É unha linguaxe de reserva que nos permite realmente estruturar e facer as páxinas web. 11 00:00:31,100 --> 00:00:33,350 E cando algo máis en conxunto con isto-- 12 00:00:33,350 --> 00:00:35,670 ou vostede en breve, se non ten xa. 13 00:00:35,670 --> 00:00:38,530 Estamos indo para usar en cascada Style Sheets, ou CSS, que 14 00:00:38,530 --> 00:00:40,971 é outro tipo de linguaxe con propiedades e valores 15 00:00:40,971 --> 00:00:43,220 que vai deixarnos facer cousas como cambiar a cor 16 00:00:43,220 --> 00:00:46,010 e cambiar a posición e estes tipos de axustes. 17 00:00:46,010 --> 00:00:49,940 Pero hoxe en diante, comezamos a concentrarse en linguaxes máis poderosas, 18 00:00:49,940 --> 00:00:52,810 linguaxes de programación como PHP reais. 19 00:00:52,810 --> 00:00:54,880 >> Entón PHP foi en torno de moito tempo. 20 00:00:54,880 --> 00:00:56,810 E como vai ver, foi deseñado principalmente 21 00:00:56,810 --> 00:01:00,280 pronto para real utilizar no desenvolvemento web 22 00:01:00,280 --> 00:01:02,360 e, de feito, xerar páxinas web. 23 00:01:02,360 --> 00:01:04,849 Entón, que tipo de recursos fai unha linguaxe 24 00:01:04,849 --> 00:01:10,040 precisa, a fin de facer web páxinas dinámicamente con el? 25 00:01:10,040 --> 00:01:14,760 >> Noutras palabras, se quere xerar contido dynamically-- como Facebook de 26 00:01:14,760 --> 00:01:19,480 Newsfeed, que cambia constantemente, ou mensaxería instantánea que xorden de cando 27 00:01:19,480 --> 00:01:21,872 para tempo-- como o que é a peza clave da función 28 00:01:21,872 --> 00:01:24,580 que precisa nunha linguaxe de programación que ía deixalo dinamicamente 29 00:01:24,580 --> 00:01:28,070 imprimir novas informacións para a pantalla? 30 00:01:28,070 --> 00:01:28,685 >> ALUMNO: Code. 31 00:01:28,685 --> 00:01:29,560 DAVID J. Malan: Code. 32 00:01:29,560 --> 00:01:30,440 Está ben. 33 00:01:30,440 --> 00:01:31,995 Imos levar iso. 34 00:01:31,995 --> 00:01:35,310 Un pouco máis preciso. 35 00:01:35,310 --> 00:01:37,639 Quero dicir, poderíamos facer iso con C, francamente. 36 00:01:37,639 --> 00:01:38,930 Sería unha dor no pescozo. 37 00:01:38,930 --> 00:01:41,045 Mas-- é ese compromiso? 38 00:01:41,045 --> 00:01:41,895 >> Estudante: Si. 39 00:01:41,895 --> 00:01:42,677 Variables, quizais? 40 00:01:42,677 --> 00:01:43,760 DAVID J. Malan: Variables. 41 00:01:43,760 --> 00:01:44,160 OK, con certeza. 42 00:01:44,160 --> 00:01:45,740 As variables poden certamente axudar-nos. 43 00:01:45,740 --> 00:01:47,020 E incluso algo máis simple. 44 00:01:47,020 --> 00:01:50,640 Usamos iso na primeira programa do primeiro día 45 00:01:50,640 --> 00:01:55,686 cando nós realmente dixo "Ola mundo". 46 00:01:55,686 --> 00:01:56,570 >> ESTUDANTE: Imprimir. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. Malan: Imprimir, non? 48 00:01:57,778 --> 00:02:01,050 Imprimir ou printf en mundo de C. Entón todo este tempo, 49 00:02:01,050 --> 00:02:03,362 que tivemos na nosa disposición un language-- C, 50 00:02:03,362 --> 00:02:05,570 en particular-- e mesmo Cero para que o asunto que 51 00:02:05,570 --> 00:02:07,400 pode xerar fragmentos de texto. 52 00:02:07,400 --> 00:02:11,090 >> Ben, se HTML, como vimos a semana pasada, é só unha morea de secuencias de texto 53 00:02:11,090 --> 00:02:14,692 aínda que con corchetes abertos e pechados soportes e algún tipo de rima 54 00:02:14,692 --> 00:02:16,650 ea razón detrás diso, ben, entón poderíamos realmente 55 00:02:16,650 --> 00:02:20,440 comezar a xerar páxinas web ou manualmente, escribindo-los gedit 56 00:02:20,440 --> 00:02:23,870 ou en Microsoft Word, para que matter-- que só precisa un editor de texto. 57 00:02:23,870 --> 00:02:26,830 >> Ou poderiamos escribir o código, a súa suxestión 58 00:02:26,830 --> 00:02:30,435 anteriormente, que nos deixou xerar dinamicamente HTML, 59 00:02:30,435 --> 00:02:32,560 e iso é o que nós estamos indo para comezar a facer con PHP 60 00:02:32,560 --> 00:02:34,900 e, finalmente, mesmo cun linguaxe chamada JavaScript, 61 00:02:34,900 --> 00:02:37,910 é por unha linguaxe para xerar outra. 62 00:02:37,910 --> 00:02:40,720 E, de feito, é iso que Facebook e moitos, moitos outros sitios 63 00:02:40,720 --> 00:02:44,530 facer para realmente dinamicamente presentar novas informacións para ti. 64 00:02:44,530 --> 00:02:47,117 >> Entón, imos comezar cun isto-- liña de ollar enigmático, pero un 65 00:02:47,117 --> 00:02:48,450 que é realmente moi poderoso. 66 00:02:48,450 --> 00:02:51,210 Ata agora, estamos usando C, que é unha linguaxe compilada. 67 00:02:51,210 --> 00:02:55,050 E só unha rápida recap-- un compilado linguaxe ten que característica? 68 00:02:55,050 --> 00:02:59,050 Vostede, obviamente, ten compilar iso, pero o que significa isto? 69 00:02:59,050 --> 00:03:00,505 Si? 70 00:03:00,505 --> 00:03:02,940 >> ALUMNO: El que ser montado código de máquina. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. Malan: Aceptar. 72 00:03:03,060 --> 00:03:04,530 El ten que ser montada en código de máquina. 73 00:03:04,530 --> 00:03:07,340 Entón colle o seu código fonte, que é unha especie de inglés-like. 74 00:03:07,340 --> 00:03:09,270 Vostede convertelo en algo nivel máis baixo, 75 00:03:09,270 --> 00:03:11,590 que é, en última instancia chamada obxecto code-- 0 e 1s. 76 00:03:11,590 --> 00:03:14,830 E é neses 0 e 1s que unha CPU, como aqueles feitos por Intel, 77 00:03:14,830 --> 00:03:16,110 realmente entender. 78 00:03:16,110 --> 00:03:19,690 >> Agora, PHP e Python e Ruby e JavaScript e acios de outro 79 00:03:19,690 --> 00:03:23,190 linguas non son compilados linguas, pero linguaxes interpretadas, 80 00:03:23,190 --> 00:03:26,630 o que significa que acaba de gravala-los e, a continuación, non transformalos en 0 e 1 .. 81 00:03:26,630 --> 00:03:30,790 Ti en vez de só proporcionar entón como entrada ao programa de outra persoa, 82 00:03:30,790 --> 00:03:32,080 chamado un intérprete. 83 00:03:32,080 --> 00:03:34,460 E desa persoa programa foi deseñado 84 00:03:34,460 --> 00:03:38,280 para entender o que cada un e cada símbolo en Python ou PHP 85 00:03:38,280 --> 00:03:42,650 ou Ruby ou calquera número de outras linguas significa. 86 00:03:42,650 --> 00:03:44,760 >> E así, todo o que necesitamos é algo así. 87 00:03:44,760 --> 00:03:46,350 Entón, en realidade, eu vou ir ao aparello 88 00:03:46,350 --> 00:03:48,100 aquí, só en calquera fiestra antiga, e estamos 89 00:03:48,100 --> 00:03:52,580 indo a ir adiante e aberto un arquivo chamado, por exemplo, Ola. 90 00:03:52,580 --> 00:03:55,780 Agora anteriormente, eu podería ter salvado iso mesmo cunha extensión de arquivo, 91 00:03:55,780 --> 00:03:57,910 pero eu vou facer algo aínda máis simple aquí. 92 00:03:57,910 --> 00:04:02,450 Eu estou indo a ir adiante e comezar este ficheiro con esta sintaxe enigmática. 93 00:04:02,450 --> 00:04:06,310 Así, "usuario, bin, Estructural, para o medio ambiente, php. " 94 00:04:06,310 --> 00:04:10,670 >> Isto é simplemente unha liña de código que é vai dicir o meu sistema operativo, 95 00:04:10,670 --> 00:04:13,730 ir atopar o seu lugar de ambiente sexa o que sexa, 96 00:04:13,730 --> 00:04:18,149 onde queira que o PHP é-- interpreter-- e dalle usar este intérprete 97 00:04:18,149 --> 00:04:20,589 para interpretar o código a continuación. 98 00:04:20,589 --> 00:04:22,760 Agora, iso é unha especie de unha característica fea de PHP. 99 00:04:22,760 --> 00:04:24,980 Pero nesta lingua, calquera vez que escribir código PHP, 100 00:04:24,980 --> 00:04:29,200 ten que ter un destes feo Tags PHP demarcando o inicio 101 00:04:29,200 --> 00:04:32,220 da súa code-- 00:04:37,430 >> Pero a continuación aquí, agora podo facer algo moi sinxelo, como printf Ola comas 103 00:04:37,430 --> 00:04:40,922 mundo barra invertida n preto cita, preto parénteses. 104 00:04:40,922 --> 00:04:42,630 E despois é só para o ben medida, eu vou 105 00:04:42,630 --> 00:04:45,380 para ir adiante e preto miña tag php aquí 106 00:04:45,380 --> 00:04:47,390 Para que todo parece ben bonito impreso. 107 00:04:47,390 --> 00:04:50,780 >> E así que eu premer en Gardar, gedit é realmente intelixente dabondo 108 00:04:50,780 --> 00:04:54,620 a ollar para aquela primeira liña e entender, oh, está escribindo código PHP. 109 00:04:54,620 --> 00:04:56,710 Permítanme destacar sintaxe Lo coas cores 110 00:04:56,710 --> 00:04:58,690 aquí de xeito que estea un pouco máis. 111 00:04:58,690 --> 00:05:01,300 Pero agora eu estou indo a ir ata a miña ventá de terminal. 112 00:05:01,300 --> 00:05:02,340 Vou ampliar. 113 00:05:02,340 --> 00:05:06,860 >> Este programa foi chamado "Ola", entón eu vou facer barra dot Ola, 114 00:05:06,860 --> 00:05:07,990 pero o permiso rexeitada. 115 00:05:07,990 --> 00:05:08,490 E bash. 116 00:05:08,490 --> 00:05:10,610 Nós, en realidade, oín falar diso cousa que un par de semanas 117 00:05:10,610 --> 00:05:13,140 no contexto Shellshock, un deses erros. 118 00:05:13,140 --> 00:05:16,240 >> Pero permiso rexeitada vimos antes, quizais nun contexto diferente. 119 00:05:16,240 --> 00:05:19,060 Alguén recorda de como pode resolver algo 120 00:05:19,060 --> 00:05:22,100 onde permiso é negada como este? 121 00:05:22,100 --> 00:05:23,490 Cal é a orde, polo menos? 122 00:05:23,490 --> 00:05:24,159 >> ESTUDANTE: chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. Malan: Si, chmod, para cambiar o modo de un arquivo. 124 00:05:26,700 --> 00:05:30,171 E vai ter todo máis utilizados para esta semana cun problema posterior 125 00:05:30,171 --> 00:05:30,670 definido. 126 00:05:30,670 --> 00:05:33,211 Pero, por agora, eu vou cambiar o modo para non ser lexible, 127 00:05:33,211 --> 00:05:36,650 pero para dar a todos executeability privilexios, a capacidade 128 00:05:36,650 --> 00:05:37,710 para realizar este ficheiro. 129 00:05:37,710 --> 00:05:40,360 E eu vou asignar que para o arquivo Ola. 130 00:05:40,360 --> 00:05:45,150 >> Se eu agora facer barra dot Ola entra, ten ver, de feito, o meu programa, Ola mundo. 131 00:05:45,150 --> 00:05:48,760 E o paso que eu fixen claramente ignorar por completo? 132 00:05:48,760 --> 00:05:49,520 Compilar. 133 00:05:49,520 --> 00:05:51,680 Entón, eu só corrín este programa moi sinxelo. 134 00:05:51,680 --> 00:05:55,690 >> E verifícase que pode facelo con un lote de sintaxe reminiscente de C. 135 00:05:55,690 --> 00:06:03,400 Déixeme ir ao código de hoxe, que engada no meu directorio vHost 136 00:06:03,400 --> 00:06:05,250 aquí, por razóns reais nós imos volver. 137 00:06:05,250 --> 00:06:09,350 E eu estou indo a ir en, digamos, as condicións dun. 138 00:06:09,350 --> 00:06:12,450 >> E vai ver aquí, en primeiro lugar e por riba de todo, unha morea de comentarios. 139 00:06:12,450 --> 00:06:15,240 Pero esta é realmente unha recreación en PHP 140 00:06:15,240 --> 00:06:18,960 dun programa que fixemos a semana un chamado condicións 1.c 141 00:06:18,960 --> 00:06:20,690 onde propósito de vida deste programa 142 00:06:20,690 --> 00:06:22,950 é aparentemente para pedir o usuario a un número enteiro 143 00:06:22,950 --> 00:06:25,270 e, a continuación, facer algunha gordo análise sobre el a través do cal 144 00:06:25,270 --> 00:06:29,510 dis si é positivo ou negativo ou igual a cero. 145 00:06:29,510 --> 00:06:34,220 E eu traio este enriba só porque, á excepción quizais dun pequeno detalle, 146 00:06:34,220 --> 00:06:37,150 é indistinguível tan lonxe de C. 147 00:06:37,150 --> 00:06:39,930 >> Cal é a única característica aquí que talvez salta 148 00:06:39,930 --> 00:06:41,410 para ti como algo diferente? 149 00:06:41,410 --> 00:06:42,160 Quizais dúas cousas. 150 00:06:42,160 --> 00:06:42,660 Si? 151 00:06:42,660 --> 00:06:44,070 >> ESTUDANTE: Dólar sinal n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. Malan: Yeah. 153 00:06:44,944 --> 00:06:46,210 Entón cifrão n está presente. 154 00:06:46,210 --> 00:06:48,120 E cifrões, como imos ver, imos 155 00:06:48,120 --> 00:06:51,460 ser unha solución para o inicio de calquera variable en PHP. 156 00:06:51,460 --> 00:06:54,250 É tanto o ben bo e bad-- en que é unha especie de evidente o que é 157 00:06:54,250 --> 00:06:56,797 unha variable, mal en que é unha cousa para escribir. 158 00:06:56,797 --> 00:06:58,630 E hai outro cousa que non ten moito 159 00:06:58,630 --> 00:07:00,876 visto, polo menos por esta grafia. si? 160 00:07:00,876 --> 00:07:01,630 >> ALUMNO: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. Malan: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline non ver, por si só, en C, aínda que hai algo 163 00:07:06,550 --> 00:07:09,530 semellante, pero usamos getString, e esta é a súa homóloga. 164 00:07:09,530 --> 00:07:12,950 Entón, se eu entrar nesa directorio, que pasa a ser, 165 00:07:12,950 --> 00:07:18,030 como vou explicar un pouco na miña vHost directorio e miña fonte dun directorio, 166 00:07:18,030 --> 00:07:22,730 e eu ir adiante e facer o corte de punto conditions-- barra dot whoops-- 167 00:07:22,730 --> 00:07:26,710 condicións 1, vai ver, unha vez máis, o mesmo permiso issue-- negado. 168 00:07:26,710 --> 00:07:33,610 >> Entón deixe-me achegar e facer chmod un plus x sobre as condicións, as condicións da corte de punto. 169 00:07:33,610 --> 00:07:35,222 Gustaríame un número enteiro, por favor, 50. 170 00:07:35,222 --> 00:07:36,930 E poderiamos xogar este xogo durante todo o día. 171 00:07:36,930 --> 00:07:39,140 Vai comportarse exactamente como o fixo nunha semana. 172 00:07:39,140 --> 00:07:42,860 >> OK, por tanto, non moi diferente, agás non só que leve pouco de sintaxe, 173 00:07:42,860 --> 00:07:45,490 pero, na parte superior, I novo tiña esta liña que 174 00:07:45,490 --> 00:07:49,760 permitiume crear algo que parece un programa en C chamado Ola, 175 00:07:49,760 --> 00:07:51,150 chamadas condicións 1. 176 00:07:51,150 --> 00:07:54,520 Pero non é 0 e os Estou executando directamente. 177 00:07:54,520 --> 00:07:57,620 É, en vez de realizar este intérprete, cuxo nome 178 00:07:57,620 --> 00:07:59,440 pasa a ser o mesmo que o idioma. 179 00:07:59,440 --> 00:08:04,970 O programa chámase PHP, e meu código por baixo da liña de un está a ser pasado para el. 180 00:08:04,970 --> 00:08:07,740 >> Podemos facer outra moi sinxelo exemplo unha reminiscencia de algo 181 00:08:07,740 --> 00:08:09,240 fixemos semanas. 182 00:08:09,240 --> 00:08:12,020 Unha vez máis, esta é unha especie de anaco de código arbitrario 183 00:08:12,020 --> 00:08:14,000 que, ao parecer, fai que cando executa-lo? 184 00:08:14,000 --> 00:08:15,625 Que isto vai imprimir, presuntamente? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Entón, inicialmente na liña 16, é vai dicir que x é agora 2, probablemente. 187 00:08:28,250 --> 00:08:30,920 % D é a mesma que a printf $ i. 188 00:08:30,920 --> 00:08:33,460 Entón é cubing, punto, punto, punto, na liña 17. 189 00:08:33,460 --> 00:08:36,299 E despois a liña 18 aparece para chamar a unha función Cubed. 190 00:08:36,299 --> 00:08:37,600 E onde é definido Cubed? 191 00:08:37,600 --> 00:08:40,319 >> Ben, parece que na liña 25, de xeito que non é tan diferente. 192 00:08:40,319 --> 00:08:42,610 Teño algúns comentarios anteriores Lo, mais, na maior parte, 193 00:08:42,610 --> 00:08:45,370 é un moi sinxelo portabilidad ou conversión 194 00:08:45,370 --> 00:08:48,470 do programa en C para a versión de PHP. 195 00:08:48,470 --> 00:08:52,670 Pero agora hai un par de diferenzas que quizais debe ir para fóra. 196 00:08:52,670 --> 00:08:56,100 Que máis é diferente sobre como pode escribir este mesmo programa en C? 197 00:08:56,100 --> 00:08:57,900 >> Estudante: [inaudível]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. Malan: Non hai ningún prototipo enriba. 199 00:09:00,070 --> 00:09:03,210 Entón PHP-- e, francamente, un chea de languages-- moderno 200 00:09:03,210 --> 00:09:06,920 son moito máis intelixentes e máis útil de C compiladores en que 201 00:09:06,920 --> 00:09:09,740 pode pór a función aquí enriba, pode pór unha función aquí en baixo, 202 00:09:09,740 --> 00:09:12,740 eo intérprete vai para facerlle o favor de ler 203 00:09:12,740 --> 00:09:16,010 o arquivo enteiro antes de decidir que algunha función non existir. 204 00:09:16,010 --> 00:09:17,970 Entón boas melloras anos máis tarde. 205 00:09:17,970 --> 00:09:22,126 Pero hai tamén algo outra cousa distinta é ausente aquí. 206 00:09:22,126 --> 00:09:22,626 Si? 207 00:09:22,626 --> 00:09:25,084 >> Estudante: [inaudível]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. Malan: Nós non temos que declarar tipo de variables, 209 00:09:27,750 --> 00:09:31,780 entón imos ver o pouco tempo que existen diferentes tipos en PHP, 210 00:09:31,780 --> 00:09:34,970 pero non precisa especificalo eles, o que tamén é bo e malo. 211 00:09:34,970 --> 00:09:36,623 E hai outra cousa que falta. 212 00:09:36,623 --> 00:09:37,430 >> Estudante: Non hai bibliotecas. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. Malan: Non hai bibliotecas. 214 00:09:38,630 --> 00:09:39,350 OK, entón iso é bo. 215 00:09:39,350 --> 00:09:40,540 Recibimos moito máis fóra da caixa. 216 00:09:40,540 --> 00:09:43,373 Polo tanto, non hai realmente moito máis cousas que eu cría que eran diferentes. 217 00:09:43,373 --> 00:09:44,350 Que tal xeito arredor? 218 00:09:44,350 --> 00:09:46,032 ¿Que é iso? 219 00:09:46,032 --> 00:09:46,740 Diga-se unha vez máis? 220 00:09:46,740 --> 00:09:47,960 >> ALUMNO: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. Malan: Sen punteiros. 222 00:09:49,270 --> 00:09:51,280 Aceptar, polo menos, neste exemplo, non. 223 00:09:51,280 --> 00:09:52,070 Iso é xusto. 224 00:09:52,070 --> 00:09:55,090 Polo tanto, non hai indicacións en PHP, en realidade, en xeral. 225 00:09:55,090 --> 00:09:58,730 Hai algo chamado referencia pero non imos gastar moito tempo alí. 226 00:09:58,730 --> 00:09:59,520 E o que máis? 227 00:09:59,520 --> 00:10:00,185 >> ALUMNO: Principal. 228 00:10:00,185 --> 00:10:01,060 DAVID J. Malan: Main. 229 00:10:01,060 --> 00:10:02,768 Polo tanto, este foi o Biggie Eu estaba a pensar. 230 00:10:02,768 --> 00:10:04,660 Teña en conta que non hai punto de entrada principal. 231 00:10:04,660 --> 00:10:06,525 Simplemente comezar a escribir o seu código. 232 00:10:06,525 --> 00:10:08,400 E este é, en realidade, será vantaxoso 233 00:10:08,400 --> 00:10:10,560 cando nós facemos a transición momentáneamente para realmente usar 234 00:10:10,560 --> 00:10:13,980 esta mesma linguaxe para web baseada en de programación, para os cales nós 235 00:10:13,980 --> 00:10:16,580 Non quero ter só un punto de entrada. 236 00:10:16,580 --> 00:10:19,980 Podemos querer ter unha chea de URL, unha morea de arquivos diferentes 237 00:10:19,980 --> 00:10:22,930 todo tendo en entrada do usuario e producindo saída. 238 00:10:22,930 --> 00:10:27,130 >> Pero aquí é o moi desanimado exemplo que prometín a última vez, 239 00:10:27,130 --> 00:10:30,130 nomeadamente neste cartafol aquí, os erros ortográficos. 240 00:10:30,130 --> 00:10:33,680 Polo tanto, neste ortográfico arquivo, que non vai gastar moito tempo en, hai 241 00:10:33,680 --> 00:10:37,870 esencialmente un porting-- P-O-P-A. É só a palabra dada cando, digamos, 242 00:10:37,870 --> 00:10:40,800 converter dunha lingua a outra normalmente manualmente. 243 00:10:40,800 --> 00:10:45,680 >> Esta é unha portabilidade de PC versión do corrector ortográfico do PSET 5. 244 00:10:45,680 --> 00:10:48,856 E eu esencialmente intentou convertelo liña por liña, tanto como eu poida. 245 00:10:48,856 --> 00:10:51,730 Entón, se lle gusta deste tipo de cousas, realmente paga a pena nalgún momento 246 00:10:51,730 --> 00:10:54,229 tirando os dous lado a lado e ver o que é o mesmo 247 00:10:54,229 --> 00:10:55,230 eo que é diferente. 248 00:10:55,230 --> 00:10:57,510 Pero son moi danado similar. 249 00:10:57,510 --> 00:11:00,110 Se recorda que ortográfico aínda parecía, 250 00:11:00,110 --> 00:11:02,110 aínda que non fixo Ten que cambiar o ficheiro, 251 00:11:02,110 --> 00:11:04,860 é moi semellante estruturalmente con só un par 252 00:11:04,860 --> 00:11:06,200 de cambios aquí e alí. 253 00:11:06,200 --> 00:11:10,140 >> Entón, iso é só para dicir que é moi simple para converter ortográfico 254 00:11:10,140 --> 00:11:12,000 de C para PHP. 255 00:11:12,000 --> 00:11:15,390 Pero no dicionario, non hai algo aínda máis atractivo. 256 00:11:15,390 --> 00:11:19,270 Deixe-me ir adiante e crear meu propio arquivo dictionary.php. 257 00:11:19,270 --> 00:11:24,010 Así lixeiramente diferente en que imos chamalo .PHP ao contrario de .c. 258 00:11:24,010 --> 00:11:26,980 Porque este é un ficheiro PHP, I fazer-- lixeiramente annoyingly-- ter 259 00:11:26,980 --> 00:11:30,132 para iniciar o ficheiro con unha etiqueta php así. 260 00:11:30,132 --> 00:11:32,340 E eu estou indo a ir adiante e establecer algunhas funcións. 261 00:11:32,340 --> 00:11:35,770 Función chamada de verificación, que é vai levar nunha palabra como antes. 262 00:11:35,770 --> 00:11:37,520 Pero este argumento terá un dólar 263 00:11:37,520 --> 00:11:39,840 asinar, porque estamos, unha vez máis, usando PHP. 264 00:11:39,840 --> 00:11:42,350 Outra función do dictionary.c era carga 265 00:11:42,350 --> 00:11:47,120 e tardou en nome dun dicionario, así que vou comezar esta función preparado para ir. 266 00:11:47,120 --> 00:11:50,920 >> Outro en dictionary.c foi o que? 267 00:11:50,920 --> 00:11:54,580 Tamaño foi un dos máis fermosos, en menos se mantivo algunha variable arredor. 268 00:11:54,580 --> 00:11:57,830 por iso o tamaño só ten que devolver unha variable. 269 00:11:57,830 --> 00:11:59,090 E entón houbo descarga. 270 00:11:59,090 --> 00:12:02,830 >> Así, había estes catro funcións no conxunto de problemas 5 271 00:12:02,830 --> 00:12:06,770 que precisaba para aplicar con algunha estrutura ou estruturas de datos. 272 00:12:06,770 --> 00:12:10,170 Entón eu prometín que en PHP, podemos declarar 273 00:12:10,170 --> 00:12:14,490 unha táboa hash, por exemplo, todo o que máis facilmente. 274 00:12:14,490 --> 00:12:17,377 En realidade, se eu queira unha táboa hash, Eu só vou ir así 275 00:12:17,377 --> 00:12:18,460 e non é a miña táboa de hash. 276 00:12:18,460 --> 00:12:21,555 E esa é a nota, desanimado, que paramos na última vez. 277 00:12:21,555 --> 00:12:23,930 E vostede sabe que, se eu quixese unha variable de tamaño, ben, 278 00:12:23,930 --> 00:12:25,867 este non é todo que diferente de C, 279 00:12:25,867 --> 00:12:27,450 pero eu estou indo a ir adiante e facelo. 280 00:12:27,450 --> 00:12:28,630 E teña en conta ningún tipo de datos. 281 00:12:28,630 --> 00:12:31,180 E eu vou volver máis tarde e realmente engadir algúns comentarios aquí. 282 00:12:31,180 --> 00:12:32,480 Pero o que dicir de carga? 283 00:12:32,480 --> 00:12:35,780 >> Se dicionario cifrão é o nome do meu arquivo 284 00:12:35,780 --> 00:12:39,600 e eu realmente quero cargar palabras en esta táboa agora, 285 00:12:39,600 --> 00:12:42,360 Podo realmente facer algo moi sinxelo. 286 00:12:42,360 --> 00:12:44,880 Um-- e este é minorly annoying-- en PHP, 287 00:12:44,880 --> 00:12:47,710 ten que especificar no interior dunha función, se 288 00:12:47,710 --> 00:12:51,060 quere acceder algúns mundial variable que é definida fóra. 289 00:12:51,060 --> 00:12:53,530 >> Pero iso non é especialmente interesante neste momento. 290 00:12:53,530 --> 00:12:57,920 O que é máis interesante é que para cada construír que mencionei da última vez. 291 00:12:57,920 --> 00:13:01,880 E verifícase que o PHP ten unha función chamado ficheiro cuxo propósito na vida 292 00:13:01,880 --> 00:13:05,550 é abrir un arquivo e ler en todas as súas liñas nunha matriz 293 00:13:05,550 --> 00:13:06,840 e entrega-los ao. 294 00:13:06,840 --> 00:13:12,170 >> O que quere dicir que podo facer tan dicionario que agora efectivamente cando eu chamo de arquivo, 295 00:13:12,170 --> 00:13:15,472 iso me vai devolver unha serie de palabras do ficheiro. 296 00:13:15,472 --> 00:13:16,430 Non é todo de bo. 297 00:13:16,430 --> 00:13:20,130 El aínda vai ser unha liña de palabras, algo lineal. 298 00:13:20,130 --> 00:13:23,880 Pero eu podo ir adiante e facer unha iteración sobre cada unha destas palabras usando 299 00:13:23,880 --> 00:13:25,710 que a sintaxe que vimos brevemente última vez. 300 00:13:25,710 --> 00:13:27,940 E vai velo máis o próximo PSET. 301 00:13:27,940 --> 00:13:32,070 >> Pero agora eu teño unha iteración de loop sobre cada palabra no dicionario. 302 00:13:32,070 --> 00:13:36,100 E en cada iteración, lembro que eu son chamando a palabra actual "palabra". 303 00:13:36,100 --> 00:13:39,790 E todo iso vai levar a poñer unha palabra no dicionario é 304 00:13:39,790 --> 00:13:43,530 será palabra palpite "verdade". 305 00:13:43,530 --> 00:13:44,740 Esa é a miña función de inserción. 306 00:13:44,740 --> 00:13:46,661 Esa é a miña función de carga para o meu dicionario. 307 00:13:46,661 --> 00:13:49,410 Agora é un pouco de unha fraude, porque, Vostede sabe o que, non hai, en realidade, 308 00:13:49,410 --> 00:13:52,920 n de barra invertida ao final das palabras que eu probablemente debería desfacerse, 309 00:13:52,920 --> 00:13:56,380 pero iso non é un problema, xa que o PHP ten unha costeleta que función chamada literalmente 310 00:13:56,380 --> 00:13:58,480 Costeletas de fóra un personaxe ben ao final. 311 00:13:58,480 --> 00:13:59,400 Entón, non hai problema ningún. 312 00:13:59,400 --> 00:14:02,199 Temos ido adiante e, de feito, acurtado que só iso. 313 00:14:02,199 --> 00:14:05,240 E agora eu probablemente debería manter o control de tamaño, entón imos polo menos facer isso- 314 00:14:05,240 --> 00:14:05,835 tamaño ++. 315 00:14:05,835 --> 00:14:07,339 Podo facelo como antes. 316 00:14:07,339 --> 00:14:10,380 E entón que é probablemente vai funcionar moi ben, así que de regresar certo. 317 00:14:10,380 --> 00:14:10,930 Feito. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Risas] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. Malan: Aceptar. 321 00:14:14,420 --> 00:14:16,628 Nós imos facelo de novo coa seguinte PSET, tamén. 322 00:14:16,628 --> 00:14:18,730 Así que sobre o tamaño? 323 00:14:18,730 --> 00:14:22,080 Ben, espero que este é de preto de como sería de esperar a última vez, 324 00:14:22,080 --> 00:14:24,460 aínda que eu teño que facer esa cousa estúpida mundial. 325 00:14:24,460 --> 00:14:26,610 É só un artefacto de proxecto da linguaxe. 326 00:14:26,610 --> 00:14:28,450 >> Pero cheque é un pouco máis interesante. 327 00:14:28,450 --> 00:14:31,420 Entón, se eu pase en dólar asinar palabra, eu primeiro 328 00:14:31,420 --> 00:14:34,060 quere ter acceso a que a táboa variable global. 329 00:14:34,060 --> 00:14:36,700 E agora, se eu queira comprobar se unha palabra está aí, 330 00:14:36,700 --> 00:14:44,350 Podo simplemente dicir se é certo que o seguinte defínese na táboa, 331 00:14:44,350 --> 00:14:49,957 entón vai adiante e retorno true; máis, return false. 332 00:14:49,957 --> 00:14:51,180 Feito. 333 00:14:51,180 --> 00:14:52,440 A outra metade do PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Todo ben, entón, de novo, eu son cortar algúns cantos. 335 00:14:54,540 --> 00:14:56,831 Para ser xusto, eu probablemente debería gastar máis uns segundos 336 00:14:56,831 --> 00:14:58,300 nesta aplicación. 337 00:14:58,300 --> 00:15:01,860 E eu probablemente non debería mofar de todo o hora que poñer na PSET tanto. 338 00:15:01,860 --> 00:15:04,045 Entón strtolower é unha función. 339 00:15:04,045 --> 00:15:06,670 Algo semellante existencialista C en, polo menos, para os caracteres, 340 00:15:06,670 --> 00:15:08,560 pero o PHP ten unha versión corda toda. 341 00:15:08,560 --> 00:15:11,226 >> Isto vai obrigar todo en minúsculas, o que algúns de vós 342 00:15:11,226 --> 00:15:14,944 podería ter feito para canonizar o que estabas poñendo no seu dicionario. 343 00:15:14,944 --> 00:15:16,360 E agora pode facelo en C, tamén. 344 00:15:16,360 --> 00:15:17,780 Isto non ten nada que ver co PHP. 345 00:15:17,780 --> 00:15:20,260 >> Pero sempre que ten unha condición booleana, 346 00:15:20,260 --> 00:15:22,680 como algo na liña 10 alí, o que só é 347 00:15:22,680 --> 00:15:27,145 vai avaliar o certo é falsa, e é o caso máis claramente 348 00:15:27,145 --> 00:15:33,620 está retornando verdadeiro ou falso, eu podería simplemente realmente facelo máis sexy 349 00:15:33,620 --> 00:15:38,360 e só facer algo así. 350 00:15:38,360 --> 00:15:40,500 De xeito que non é a miña función de verificación. 351 00:15:40,500 --> 00:15:42,560 Certo, o booleano retorna verdadeiro ou falso, 352 00:15:42,560 --> 00:15:44,630 imos devolve-lo inmediatamente. 353 00:15:44,630 --> 00:15:47,340 >> E hai algúns outros axustes Podería facer aquí e alí. 354 00:15:47,340 --> 00:15:51,380 Descarga Load--, de feito, que está feito. 355 00:15:51,380 --> 00:15:52,850 Nada que facer alí. 356 00:15:52,850 --> 00:15:55,840 Xa que toda a memoria en PHP e moitas outras linguas 357 00:15:55,840 --> 00:15:57,570 é realmente conseguiu para ti. 358 00:15:57,570 --> 00:16:00,330 Así, mentres que no C, como aprendeu dolorosamente, 359 00:16:00,330 --> 00:16:04,700 calquera cousa que malloc ou calloc ou realloc, ten que se librar. 360 00:16:04,700 --> 00:16:08,770 O que se fopen, ten que usar fclose, para que os recursos son finalmente liberados 361 00:16:08,770 --> 00:16:11,690 e ferramentas como Valgrind non facer entender e non se queixa, 362 00:16:11,690 --> 00:16:13,570 que é bo para correr con eles. 363 00:16:13,570 --> 00:16:16,190 >> Pero, certamente, non debe haber algunha captura, non? 364 00:16:16,190 --> 00:16:19,400 Se non, nós medio que desperdiçado unha morea de semanas. 365 00:16:19,400 --> 00:16:23,270 Polo tanto, hai unha serie de razóns por que tipo de tomar esta traxectoria, 366 00:16:23,270 --> 00:16:24,440 pero hai un trade-off. 367 00:16:24,440 --> 00:16:25,820 Correcto, iso foi temática. 368 00:16:25,820 --> 00:16:29,690 >> Entón, o que pode un trade-off aquí se desprazan, de C para PHP? 369 00:16:29,690 --> 00:16:33,250 Sinto como se todos gañan tan lonxe que non un pouco de feiúra aquí ou alí. 370 00:16:33,250 --> 00:16:34,040 Si. 371 00:16:34,040 --> 00:16:34,700 ¿Que é iso? 372 00:16:34,700 --> 00:16:36,064 >> Estudante: [inaudível] de memoria. 373 00:16:36,064 --> 00:16:36,980 DAVID J. Malan: Speed. 374 00:16:36,980 --> 00:16:37,479 Está ben. 375 00:16:37,479 --> 00:16:40,720 Ben, a miña velocidade era moi rápido. 376 00:16:40,720 --> 00:16:42,020 Non? 377 00:16:42,020 --> 00:16:44,320 Pero a velocidade de execución do programa? 378 00:16:44,320 --> 00:16:45,580 OK, entón iso é un punto xusto. 379 00:16:45,580 --> 00:16:50,930 >> Entón, como iso ía acontecer, eu adiantado cued-se tanto a miña solución intento, a un 380 00:16:50,930 --> 00:16:53,510 Eu tiña na tarxeta grande era unha solución a base de intento, 381 00:16:53,510 --> 00:16:55,510 e eu teño que neste directorio aquí. 382 00:16:55,510 --> 00:16:58,510 Entón, eu, nun momento, podo ir adiante e realizar tanto na Biblia King James, 383 00:16:58,510 --> 00:16:59,657 premer Intro. 384 00:16:59,657 --> 00:17:01,990 E iso é esperanza correcto execución ao final, 385 00:17:01,990 --> 00:17:05,109 me dá tempo en total de 0,38 segundos para que 386 00:17:05,109 --> 00:17:07,270 un exemplo dalgún modo arbitrario. 387 00:17:07,270 --> 00:17:09,270 >> E se eu agora ir a este segunda xanela de terminal 388 00:17:09,270 --> 00:17:14,569 aquí onde abrín primeiro gedit, imos me entrar code-- de hoxe que, de novo, 389 00:17:14,569 --> 00:17:19,650 É neste directorio aqui-- e déixeme ir adiante e executar ortográfico. 390 00:17:19,650 --> 00:17:23,470 Entón, só para quedar claro, esta é a versión de PHP. 391 00:17:23,470 --> 00:17:25,170 Estou só mostrando o inicio do mesmo aquí. 392 00:17:25,170 --> 00:17:32,020 >> Entón, se eu fago ortográfico de til CS50 PSet cinco textos, King James, entrar. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 É aínda máis rápido que a escrita Lo en C, pero o tempo total de 395 00:17:43,050 --> 00:17:47,650 é, o aviso previo, de 0,93, mentres que o meu Implantación baseada en C foi de 0,38. 396 00:17:47,650 --> 00:17:49,110 Entón é unha diferenza non-trivial. 397 00:17:49,110 --> 00:17:51,100 >> E este é só nun arquivo. 398 00:17:51,100 --> 00:17:53,480 Se fose para executar os dous programas contra o gran consello 399 00:17:53,480 --> 00:17:56,510 e ten unha morea de entradas probado, este sería seguramente sumar. 400 00:17:56,510 --> 00:18:00,310 E se tivésemos conxuntos de datos aínda maiores, iso, tamén, que se suman aínda máis. 401 00:18:00,310 --> 00:18:04,820 Entón, si, pagar algún prezo de velocidade é realmente o caso. 402 00:18:04,820 --> 00:18:05,470 Que máis? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Si? 405 00:18:08,860 --> 00:18:10,340 >> ESTUDANTE: Cantidade de uso de memoria RAM. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. Malan: Cantidade de uso de memoria RAM. 407 00:18:11,756 --> 00:18:15,380 Así que non dar un segundo penso ao escribir este PHP 408 00:18:15,380 --> 00:18:17,300 versión de canto memoria que eu estaba a usar. 409 00:18:17,300 --> 00:18:22,080 Estou totalmente retrasar isto para PHP si e quen escribiu este programa. 410 00:18:22,080 --> 00:18:24,500 E iso pode ser OK, pero se realmente 411 00:18:24,500 --> 00:18:28,420 preocupan axustado tanto o desempeño fóra do meu programa ou fóra do meu sitio 412 00:18:28,420 --> 00:18:31,150 ou fóra de calquera ferramenta Estou construíndo, quizais 413 00:18:31,150 --> 00:18:33,310 PHP, en realidade, non é a linguaxe correcta. 414 00:18:33,310 --> 00:18:36,330 >> E, de feito, é por iso que, para exemplo, moitos web servers-- 415 00:18:36,330 --> 00:18:38,980 os programas que reais servir-se content-- web 416 00:18:38,980 --> 00:18:41,810 non están escritas en PHP ou en Python ou Ruby. 417 00:18:41,810 --> 00:18:44,630 Son escritos, como agora vai facer PSet 6, 418 00:18:44,630 --> 00:18:48,120 en C, de xeito que pode espremer cada bit de desempeño fóra del 419 00:18:48,120 --> 00:18:50,780 e realmente exercer control de gran fino sobre o que é 420 00:18:50,780 --> 00:18:52,980 pasando baixo a capa e non só tomalo 421 00:18:52,980 --> 00:18:54,890 para concedida algún superior estrutura de datos nivel. 422 00:18:54,890 --> 00:18:58,071 >> Considere-se, a pesar de todo, quen en PHP aplicado 423 00:18:58,071 --> 00:19:00,070 esa noción dun hash mesa-- é realmente máis 424 00:19:00,070 --> 00:19:04,260 apropiadamente chamado array-- asociativa fai ou ten algunha idea de que tipo 425 00:19:04,260 --> 00:19:07,090 de entradas que van ser poñer na estrutura? 426 00:19:07,090 --> 00:19:08,260 Entón, obviamente, non, non? 427 00:19:08,260 --> 00:19:10,340 É unha ferramenta xenérica no conxunto de ferramentas que se 428 00:19:10,340 --> 00:19:13,430 proporcionada para quen queira para usalo, e por iso seguramente que 429 00:19:13,430 --> 00:19:17,680 non se pode óptimo, en definitiva exactamente o que quere facer. 430 00:19:17,680 --> 00:19:21,180 >> Así, o tempo de desenvolvemento trade-offs-- pode diferentes, o desempeño pode ser diferente, 431 00:19:21,180 --> 00:19:23,120 complexidade ou uso de memoria pode ser diferente. 432 00:19:23,120 --> 00:19:24,820 E entón o que vai atopar cada vez máis, é que non hai 433 00:19:24,820 --> 00:19:26,570 será diferente ferramentas para o comercio. 434 00:19:26,570 --> 00:19:31,160 E, de feito, para un super maioría dos proxectos finais da xente nesta clase, 435 00:19:31,160 --> 00:19:34,360 cren ou non, C non vai ser a linguaxe correcta para usar. 436 00:19:34,360 --> 00:19:37,880 >> E, de feito, un dos delivery en definitiva, para calquera clase como este 437 00:19:37,880 --> 00:19:40,510 é para ti pensar sobre, ben, o que ten que retirar 438 00:19:40,510 --> 00:19:42,710 andel cando quere para resolver algún problema. 439 00:19:42,710 --> 00:19:46,720 E, de feito, nós imos atravesar esa ponte aínda máis cando miramos para máis idiomas 440 00:19:46,720 --> 00:19:47,920 mesmo para alén de hoxe. 441 00:19:47,920 --> 00:19:50,530 >> Entón transición imos agora para quizais un contexto máis familiarizado 442 00:19:50,530 --> 00:19:52,480 para a utilización dunha linguaxe como PHP. 443 00:19:52,480 --> 00:19:56,720 É pouco común para usar en liña de comandos, escribindo guións 444 00:19:56,720 --> 00:19:59,050 como eu fixen, pero é moito máis común. 445 00:19:59,050 --> 00:20:02,350 E foi destinado a ser utilizado en a forma de ficheiros que normalmente terminan 446 00:20:02,350 --> 00:20:05,060 en .php-- pero iso é non un prerequisite-- 447 00:20:05,060 --> 00:20:07,990 que se xerar o contido da web. 448 00:20:07,990 --> 00:20:11,310 >> Entón deixe-me ir adiante e abrir un pouco exemplos que me preparado con antelación. 449 00:20:11,310 --> 00:20:15,100 E estes son, en realidade, unha especie de verdade historias en que unha das primeiras cousas 450 00:20:15,100 --> 00:20:18,200 Nunca me fixo despois de rematar CS50 e quizais, creo, 451 00:20:18,200 --> 00:20:21,350 CS51 anos é o meu compañeiro de cuarto e eu estaba axudando 452 00:20:21,350 --> 00:20:24,320 para realizar o intramural calouro programa de deporte, o que, no momento, 453 00:20:24,320 --> 00:20:28,610 calouro tiña de se rexistrar para varias Deportes, cubrindo unha folla de papel, 454 00:20:28,610 --> 00:20:31,800 como era chamado, camiñando en todo o curro para Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 e deixala caer nalgún caída porta de Proctor. 456 00:20:34,030 --> 00:20:37,210 E entón el ou ela pasaría por los e, a continuación, en realidade, un correo electrónico manualmente 457 00:20:37,210 --> 00:20:39,140 que foron rexistrados por algún deporte. 458 00:20:39,140 --> 00:20:41,166 >> Entón, claramente, unha oportunidade para melloras. 459 00:20:41,166 --> 00:20:44,040 Estes días, pode recorrer a só Formas de Google, pero volta no día, 460 00:20:44,040 --> 00:20:46,914 tivemos de realmente alcanzar este for-- Non se mesmo que a longo ago-- chegar 461 00:20:46,914 --> 00:20:49,410 para unha programación linguaxe que non era PHP. 462 00:20:49,410 --> 00:20:51,200 Na época, era algo chamado Perl, 463 00:20:51,200 --> 00:20:52,890 que xa saíu de moda desde entón. 464 00:20:52,890 --> 00:20:54,160 Pero a idea é a mesma. 465 00:20:54,160 --> 00:20:58,940 >> E eu, esencialmente, sentou-se para tratar a porta vai versións Perl para PHP, 466 00:20:58,940 --> 00:21:03,710 pero en negación completa, non deu calquera pensamento á estética aínda. 467 00:21:03,710 --> 00:21:04,960 Entón, aquí é unha páxina web. 468 00:21:04,960 --> 00:21:05,670 Este é un ficheiro. 469 00:21:05,670 --> 00:21:09,470 Se eu aumentar o zoom, a súa aparentemente chamado froshim0.php 470 00:21:09,470 --> 00:21:12,060 só porque é o noso primeiro exemplo desta serie. 471 00:21:12,060 --> 00:21:15,970 E entender que ten o que parece para ser un formulario HTML moi feo, 472 00:21:15,970 --> 00:21:18,680 pero dunha forma é interesante porque permite 473 00:21:18,680 --> 00:21:21,910 me proporcionar a entrada do usuario para o navegador. 474 00:21:21,910 --> 00:21:27,730 >> Agora última vez cando tivemos un formulario, para quen é o que nos sometemos noso parámetro de consulta, 475 00:21:27,730 --> 00:21:30,450 o parámetro de cola, como era chamado? 476 00:21:30,450 --> 00:21:31,330 Entón, a Google, non? 477 00:21:31,330 --> 00:21:34,090 Estamos totalmente punted na idea de facer algo con esa entrada. 478 00:21:34,090 --> 00:21:36,160 >> Pero hoxe, comezan a producir a saída. 479 00:21:36,160 --> 00:21:39,420 E o comportamento que vou ver aquí, inicialmente, é moi trivial. 480 00:21:39,420 --> 00:21:42,980 David, eu vou marcar xénero aquí, di Matthews aquí. 481 00:21:42,980 --> 00:21:43,800 Non vou ser o capitán. 482 00:21:43,800 --> 00:21:45,410 Vou prema en rexistrar. 483 00:21:45,410 --> 00:21:50,720 E teña en conta que a URL ten cambiado rexistrarse 0.php, 484 00:21:50,720 --> 00:21:52,310 e despois hai este texto feo aquí. 485 00:21:52,310 --> 00:21:54,460 Non pensou en o formato deste. 486 00:21:54,460 --> 00:21:59,900 >> Pero o que é interesante é que tres Os valores foron aparentemente pasado. 487 00:21:59,900 --> 00:22:02,960 Esta é unha especie de PHP equivalente a printf-- 488 00:22:02,960 --> 00:22:06,330 imos ver o que é realmente chamado nun bit-- que imprime 489 00:22:06,330 --> 00:22:08,300 o que pasou para el. 490 00:22:08,300 --> 00:22:11,414 Entón iso suxire que esta forma tiñan, polo menos, tres campos para iso, 491 00:22:11,414 --> 00:22:12,580 e me viu escriba-los. 492 00:22:12,580 --> 00:22:15,739 Un deles era o meu nome, unha era xénero, un era dormitorio. 493 00:22:15,739 --> 00:22:18,780 E o capitán nin sequera son enviados o servidor, porque eu non verificalo. 494 00:22:18,780 --> 00:22:22,150 >> Entón, iso quere dicir, ao parecer, cando enviar as cousas na web, 495 00:22:22,150 --> 00:22:26,830 non só a URL ás veces change-- ás veces iso non acontece. 496 00:22:26,830 --> 00:22:30,330 De feito, o nome do ficheiro modificado, pero o que está ausente da URL 497 00:22:30,330 --> 00:22:32,861 que vimos a última vez con Google. 498 00:22:32,861 --> 00:22:33,360 Si? 499 00:22:33,360 --> 00:22:34,380 >> ESTUDANTE: Non cadea de consulta 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. Malan: Non hai ningunha cadea de consulta. 501 00:22:35,220 --> 00:22:37,270 Non hai ningún punto de interrogación algo. 502 00:22:37,270 --> 00:22:40,050 Non hai ningún punto de interrogación q é igual a gatos, como fixemos a última vez. 503 00:22:40,050 --> 00:22:42,170 E non hai dúbida ningunha Nome de punto de interrogación é igual a 504 00:22:42,170 --> 00:22:46,310 David ou dormitorio é igual Matthews, Entón, onde é que todo está indo? 505 00:22:46,310 --> 00:22:51,290 >> Ben, deixe-me volver a gedit aquí e abrir o primeiro destes ficheiros 506 00:22:51,290 --> 00:22:57,020 no meu vhost, servidor local, público directorio aquí e ir froshim0. 507 00:22:57,020 --> 00:23:02,060 Así, verifícase que case todo esta páxina é só HTML. 508 00:23:02,060 --> 00:23:05,410 E iso pode ser raro para ti, pero pronto será máis así con PSET 6 509 00:23:05,410 --> 00:23:07,370 e PSET 7 e 8 PSET. 510 00:23:07,370 --> 00:23:09,160 Pero esta é só unha páxina HTML. 511 00:23:09,160 --> 00:23:12,400 >> E a cousa interesante semella aquí. 512 00:23:12,400 --> 00:23:16,290 A etiqueta form cuxa acción atributo ten un valor de rexistro 0. 513 00:23:16,290 --> 00:23:18,890 É por iso que cando eu submeto iso, que vai para o arquivo. 514 00:23:18,890 --> 00:23:20,620 Pero o método é distinto post today--. 515 00:23:20,620 --> 00:23:23,120 Así, verifícase que hai polo menos dous métodos utilizados na web 516 00:23:23,120 --> 00:23:24,911 para enviar información desde o navegador ao servidor. 517 00:23:24,911 --> 00:23:25,980 Get pon na URL. 518 00:23:25,980 --> 00:23:27,950 Publicar o pon en outro lugar. 519 00:23:27,950 --> 00:23:30,570 E cando e por que pode realmente quere un sitio 520 00:23:30,570 --> 00:23:34,110 usar post, entón, no canto de obter, só intuitivamente? 521 00:23:34,110 --> 00:23:37,080 Calquera sitio. 522 00:23:37,080 --> 00:23:42,010 Que tipo de datos deben ser pasados ​​só por inferencia agora vía correo, por oposición 523 00:23:42,010 --> 00:23:45,184 para chegar, se nós vimos as dúas diferenzas? 524 00:23:45,184 --> 00:23:46,350 Estudante: [inaudível] seguro. 525 00:23:46,350 --> 00:23:47,790 DAVID J. Malan: Se quere algo para ser seguro. 526 00:23:47,790 --> 00:23:50,360 Entón, pode escribir un contrasinal nun sitio web, unha tarxeta de crédito 527 00:23:50,360 --> 00:23:53,030 nunha web faría tipo de estes sub-óptima 528 00:23:53,030 --> 00:23:56,220 se o navegador que poñer valor dentro da URL. 529 00:23:56,220 --> 00:23:57,680 Por que? 530 00:23:57,680 --> 00:24:00,059 Ve, o que non fai parece ser un negocio tan grande, 531 00:24:00,059 --> 00:24:03,350 pero as probabilidades son que anda moi frecuentemente lonxe do seu ordenador ordenador ou uso 532 00:24:03,350 --> 00:24:05,310 laboratorios, e así por alguén persoa ou mesmo un compañeiro de cuarto 533 00:24:05,310 --> 00:24:08,220 podería facilmente camiñar cara arriba e ver que información privadas. 534 00:24:08,220 --> 00:24:10,220 Cando envía un correo-e vía web, probablemente 535 00:24:10,220 --> 00:24:12,350 Non quero ese final de datos na URL tamén. 536 00:24:12,350 --> 00:24:15,266 E por iso hai unha serie de razóns por iso que pode querer poñelas aquí. 537 00:24:15,266 --> 00:24:18,610 E así photos--, eu non podo mesmo moi imaxinar como levaría un gráfico, 538 00:24:18,610 --> 00:24:21,480 como un JPEG, e poñelas nunha URL. 539 00:24:21,480 --> 00:24:22,330 Podería facelo. 540 00:24:22,330 --> 00:24:25,840 Hai formas de codificar-lo, pero é só non é sinxelo así. 541 00:24:25,840 --> 00:24:29,030 >> Entón Rexístrese 0 é realmente moi por baixo do esperado. 542 00:24:29,030 --> 00:24:31,610 Todo o que di, literalmente, é iso. 543 00:24:31,610 --> 00:24:35,910 El imprime nuns Etiquetas HTML o seguinte. 544 00:24:35,910 --> 00:24:38,640 Eu teño un código PHP aquí aninhado dentro dunha etiqueta de pre. 545 00:24:38,640 --> 00:24:42,300 "Vista" significa só texto pre-formatado, monoespazado, como unha máquina de escribir. 546 00:24:42,300 --> 00:24:44,836 >> Printr é unha función recursiva de impresión. 547 00:24:44,836 --> 00:24:46,710 E despois hai este O interesante aquí. 548 00:24:46,710 --> 00:24:48,835 E nós imos voltar a este porque hai outros, 549 00:24:48,835 --> 00:24:51,140 pero subliñado cifrão pos semella 550 00:24:51,140 --> 00:24:56,110 unha variable en PHP no que nada envía desde o navegador ao servidor 551 00:24:56,110 --> 00:24:58,040 queda almacenado para ti. 552 00:24:58,040 --> 00:25:00,930 E imos ver como chegar en que a información antes de tempo. 553 00:25:00,930 --> 00:25:04,000 >> Pero, primeiro, imos voltar a un exemplo un pouco diferente. 554 00:25:04,000 --> 00:25:09,050 Indo register-- ou no seu lugar, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 que parece un pouco diferente. 556 00:25:10,470 --> 00:25:12,670 Tomei un pouco máis esforzo con o formato, 557 00:25:12,670 --> 00:25:14,370 aínda que aínda é moi feo. 558 00:25:14,370 --> 00:25:16,990 Pero eu estou indo a ir adiante e escriba "David" agora. 559 00:25:16,990 --> 00:25:17,850 Masculino. 560 00:25:17,850 --> 00:25:19,360 Imos comprobar "capitán" esta vez. 561 00:25:19,360 --> 00:25:20,660 Faremos Matthews. 562 00:25:20,660 --> 00:25:22,430 E se dar de alta. 563 00:25:22,430 --> 00:25:24,110 >> E esta vez el di que, hm, non realmente. 564 00:25:24,110 --> 00:25:26,180 Todo ben, entón o que é rexistrar un? 565 00:25:26,180 --> 00:25:30,509 Déixeme entrar rexistro aberto un hm correo. 566 00:25:30,509 --> 00:25:32,300 Todo ben, entón iso é interesante, e este 567 00:25:32,300 --> 00:25:34,880 é un trampolín cara agora programas máis interesantes. 568 00:25:34,880 --> 00:25:38,970 >> Teña en conta o principio deste arquivo ten un PHP etiqueta así como a algúns comentarios. 569 00:25:38,970 --> 00:25:42,590 E estes son, polo momento, unha distracción entón imos nos librar deses comentarios 570 00:25:42,590 --> 00:25:47,070 como están en C. E eu reclamo con este anaco de código con un comentario 571 00:25:47,070 --> 00:25:49,280 que este código é validando a presentación. 572 00:25:49,280 --> 00:25:51,690 >> Ben, acontece que variables como cifrão 573 00:25:51,690 --> 00:25:53,739 subliñado post son chámase super globals. 574 00:25:53,739 --> 00:25:55,530 Son como estes variables globais especiais 575 00:25:55,530 --> 00:25:58,840 que son só OMNI-presentemente dispoñible dentro do seu programa. 576 00:25:58,840 --> 00:26:03,870 E pode usar a notación de corchete indexar para eles non usar números 577 00:26:03,870 --> 00:26:07,460 como 0, 1, 2, 3, pero as palabras reais. 578 00:26:07,460 --> 00:26:12,100 >> Así, pode pensar en cifrão subliñado posto como unha especie de táboa hash 579 00:26:12,100 --> 00:26:15,920 que podería pasar unha clave nunha investigación palabra nos entre os corchetes, 580 00:26:15,920 --> 00:26:19,370 e vai lle dar de volta o valor que o usuario realmente indicado. 581 00:26:19,370 --> 00:26:21,210 PHP ten unha función chamado baleiro que só 582 00:26:21,210 --> 00:26:23,720 di si ou non, este variable está baleira ou non. 583 00:26:23,720 --> 00:26:27,250 Temos estas barras dobres, que significa ou, como en C. 584 00:26:27,250 --> 00:26:31,740 >> Entón, en realidade, esa liña 4 é só dicindo que se o usuario non dar un nome 585 00:26:31,740 --> 00:26:36,540 ou non deu un xénero ou non dar un dormitorio, dalle redireccionándoos lo 586 00:26:36,540 --> 00:26:38,184 ou ela vía esa liña aquí. 587 00:26:38,184 --> 00:26:40,600 Entón, iso é algo enigmática, pero iso só quere dicir literalmente 588 00:26:40,600 --> 00:26:43,330 volver a este lugar, por iso, o usuario patadas 589 00:26:43,330 --> 00:26:45,420 de volta a onde queira que el ou ela veu. 590 00:26:45,420 --> 00:26:47,880 Pero é algo deselegante en que codificado. 591 00:26:47,880 --> 00:26:52,150 >> Pero e se esa condición se non avalía a verdade? 592 00:26:52,150 --> 00:26:55,790 E se o usuario me deu o seu ou o nome dela e dormitorio e de xénero? 593 00:26:55,790 --> 00:26:58,540 Que, se a condición non é vai avaliar a realidade, 594 00:26:58,540 --> 00:27:00,650 entón eu non acertar a saída na liña 7. 595 00:27:00,650 --> 00:27:01,680 Entón o que ocorre? 596 00:27:01,680 --> 00:27:03,880 E iso é o que é interesante sobre PHP. 597 00:27:03,880 --> 00:27:07,470 >> Pode deixar caer a dentro e fóra de xeito PHP, por así dicir. 598 00:27:07,470 --> 00:27:10,985 Se quere algún código para realizar, pode abrir e pechar a etiqueta PHP 599 00:27:10,985 --> 00:27:13,010 e poñer o código alí como eu fixen aquí. 600 00:27:13,010 --> 00:27:16,810 Así que pechar tag PHP, o servidor 601 00:27:16,810 --> 00:27:19,407 é só ir cuspir o que poñer alí. 602 00:27:19,407 --> 00:27:21,740 E, de feito, iso era parte do o proxecto orixinal do PHP, 603 00:27:21,740 --> 00:27:25,280 para mellor ou peor, se esta fungibilidade de código e marcado 604 00:27:25,280 --> 00:27:25,920 lingua. 605 00:27:25,920 --> 00:27:28,670 E veremos que esta moito axiña se transforma nunha desorde. 606 00:27:28,670 --> 00:27:31,280 E así imos facer mellor que este, en última instancia, pero só 607 00:27:31,280 --> 00:27:35,620 entender a facilidade con que eu son realmente capaces de realizar algunha lóxica. 608 00:27:35,620 --> 00:27:37,440 >> Pero aínda un pouco por baixo do esperado. 609 00:27:37,440 --> 00:27:41,210 Imos abrir versión dous de Frosh IMS, que 610 00:27:41,210 --> 00:27:44,270 aparentemente se somete a register2.php. 611 00:27:44,270 --> 00:27:47,600 Polo tanto, este ficheiro está realmente a suceder ollar case o mesmo. 612 00:27:47,600 --> 00:27:50,780 Eu estou indo a ir a Frosh IMS 2. 613 00:27:50,780 --> 00:27:53,050 Pero en Frosh GI 2, imos ver o que acontece. 614 00:27:53,050 --> 00:27:58,110 >> David, prema no botón de radio, como é chamado; Matthews, sen capitán. 615 00:27:58,110 --> 00:27:59,230 Registre-se. 616 00:27:59,230 --> 00:28:00,130 Está rexistrado. 617 00:28:00,130 --> 00:28:00,700 Non é realmente. 618 00:28:00,700 --> 00:28:02,574 Oh, espera, fixemos Nese exemplo, non foi? 619 00:28:02,574 --> 00:28:04,520 Todo ben, sexa. 620 00:28:04,520 --> 00:28:06,602 Nós imos facer a tres. 621 00:28:06,602 --> 00:28:08,560 Claramente algo é sobre ocorrer con Gmail. 622 00:28:08,560 --> 00:28:09,600 Nós imos chegar alí. 623 00:28:09,600 --> 00:28:11,900 >> Entón Frosh IMS 3 parécese iso. 624 00:28:11,900 --> 00:28:13,050 Non é diferente. 625 00:28:13,050 --> 00:28:19,850 Pero cando fago David, do sexo masculino, Matthews, e rexistrar, esta terceira e última versión 626 00:28:19,850 --> 00:28:22,230 reivindicacións, simplemente ti, rexístranse realmente. 627 00:28:22,230 --> 00:28:23,560 Ese é o tipo de inmaterial. 628 00:28:23,560 --> 00:28:25,600 Pero eu afirmo con este terceira e última versión 629 00:28:25,600 --> 00:28:30,610 Teño agora recreado exactamente o que o meu compañeiro de cuarto e eu construído para os IMS Frosh 630 00:28:30,610 --> 00:28:31,731 anos do programa atrás. 631 00:28:31,731 --> 00:28:32,480 E era simple. 632 00:28:32,480 --> 00:28:34,330 Non había base de datos, ningunha folla de cálculo Excel. 633 00:28:34,330 --> 00:28:36,450 Pero, máis importante, non había máis papel 634 00:28:36,450 --> 00:28:42,520 porque o que fixemos con este programa era, en realidade, o correo electrónico o inspector, que 635 00:28:42,520 --> 00:28:44,530 estaba recibindo anteriormente estas cousas a través de formularios. 636 00:28:44,530 --> 00:28:48,890 >> E ao parecer temos programado iso en tal xeito que, cando alguén rexistra, 637 00:28:48,890 --> 00:28:52,470 Correos electrónicos de conta de John Harvard a proctor-- ou a si mesmo neste caso, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- coa seguinte texto-- "Esta persoa acaba de rexistrar." 639 00:28:55,960 --> 00:29:00,560 Nome é David, o capitán está baleiro; xénero, do sexo masculino; e dormitorio, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Entón o que pasou alí? 641 00:29:01,560 --> 00:29:05,360 Ben, o arquivo en cuestión aquí é aparentemente register3.php. 642 00:29:05,360 --> 00:29:09,080 E se eu abrir iso, vai ver tanto o poder do código coma este 643 00:29:09,080 --> 00:29:12,380 e tamén, a verdade, a inseguridade dun sistema como o correo electrónico. 644 00:29:12,380 --> 00:29:16,290 Acabo efectivamente finxiu ser John Harvard do seguinte xeito. 645 00:29:16,290 --> 00:29:20,920 >> Teño a etiqueta php aberto enriba, o que só di aí vén algún código PHP. 646 00:29:20,920 --> 00:29:23,155 Aquí en baixo, xira por aí son bibliotecas en PHP. 647 00:29:23,155 --> 00:29:26,410 Só non precisa incluír ficheiros de cabeceira como moito. 648 00:29:26,410 --> 00:29:28,900 Gañou máis coa pía da cociña, por así dicir. 649 00:29:28,900 --> 00:29:31,820 >> Pero, esta vez na liña 4, fago quere biblioteca especial chamado 650 00:29:31,820 --> 00:29:36,087 PHP sistema de correo, que é algo que pode instalar gratuitamente en moitos sistemas. 651 00:29:36,087 --> 00:29:37,920 Aquí debaixo estou validando presentación só 652 00:29:37,920 --> 00:29:40,540 comprobando se o usuario dar me un nome, un xénero e un dormitorio. 653 00:29:40,540 --> 00:29:44,130 E se é así, vai adiante e instanciar un sistema de correo. 654 00:29:44,130 --> 00:29:47,020 >> Pode pensar niso como unha liña de código que só aloca. 655 00:29:47,020 --> 00:29:48,950 É como malloc, pero é un pouco máis sexy 656 00:29:48,950 --> 00:29:51,790 en que non mencionar só malloc e algún número xenérico. 657 00:29:51,790 --> 00:29:55,030 Vostede di que me dar un destes, dáme un novo un destes. 658 00:29:55,030 --> 00:29:57,950 >> E se xa programou en Java ou C ++ ou outras linguaxes, 659 00:29:57,950 --> 00:29:59,130 podes ver iso. 660 00:29:59,130 --> 00:30:01,840 Pero a curto que si descoñecido, esta liña 661 00:30:01,840 --> 00:30:05,410 pon en correo cifrão unha estrutura especial chamada 662 00:30:05,410 --> 00:30:08,731 un obxecto que foi construído con función de correo electrónico. 663 00:30:08,731 --> 00:30:10,355 E, de feito, entender e sintaxe similar. 664 00:30:10,355 --> 00:30:11,900 >> Este non é un punteiro, per se. 665 00:30:11,900 --> 00:30:13,990 PHP só usa a mesma sintaxe. 666 00:30:13,990 --> 00:30:17,660 Esta liña está dicindo uso SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protocolo, que é só o protocolo usado para enviar correos electrónicos. 668 00:30:20,900 --> 00:30:24,240 Este é que especifica o uso Servidor SMTP de Harvard, que 669 00:30:24,240 --> 00:30:25,830 está nalgún lugar aquí no campus. 670 00:30:25,830 --> 00:30:28,480 >> Isto está dicindo que o TCP número de porto para falar, 671 00:30:28,480 --> 00:30:31,650 e eu só entender iso por buscando ou pregunta ao help desk. 672 00:30:31,650 --> 00:30:34,640 E despois xa Harvard usa algún seguridade do sistema na server-- correo 673 00:30:34,640 --> 00:30:37,060 polo menos para cifrar tráfico entre vostede e el, 674 00:30:37,060 --> 00:30:41,380 aínda que calquera pode enviar a ele-- Vou chamar o protocolo TLS 675 00:30:41,380 --> 00:30:42,710 para manter esta seguro. 676 00:30:42,710 --> 00:30:44,730 >> Pero é aí onde as cousas estar un pouco asustado. 677 00:30:44,730 --> 00:30:47,970 Podo só arbitrariamente dicir que estou jharvard, 678 00:30:47,970 --> 00:30:51,930 e podo só arbitrariamente enviar correo-e me aquí. 679 00:30:51,930 --> 00:30:55,650 E entón podo especificar un tema con esta liña aquí. 680 00:30:55,650 --> 00:30:58,460 >> E iso só parece feo, pero é só unha morea de concatenação. 681 00:30:58,460 --> 00:31:04,480 Acontece que o PHP ten un símbolo super útil, como algunhas linguas, o operador punto, 682 00:31:04,480 --> 00:31:07,340 que literalmente concatena cadea tras cadea despois de cadea, 683 00:31:07,340 --> 00:31:09,810 e non ten que malloc ou figura a lonxitude total da cadea. 684 00:31:09,810 --> 00:31:10,820 Só fai iso. 685 00:31:10,820 --> 00:31:15,220 E, de feito, por que eu estou concatenando en todas estas cousas con estes puntos, 686 00:31:15,220 --> 00:31:18,330 é por iso que o correo-e que eu enviado mirou como fixo. 687 00:31:18,330 --> 00:31:20,610 >> E entón, finalmente aquí, estou enviando correo. 688 00:31:20,610 --> 00:31:22,580 Entón, se isto é falso, Eu só vou morrer, 689 00:31:22,580 --> 00:31:25,680 que é unha función que só impresións á pantalla algúns mensaxe de erro. 690 00:31:25,680 --> 00:31:29,170 Pero é, de feito, chamando a función de envío. 691 00:31:29,170 --> 00:31:31,780 Se non, se todo isto falla, el me redirecciona para acá. 692 00:31:31,780 --> 00:31:34,050 >> E por que vexo que Estou rexistrado realmente? 693 00:31:34,050 --> 00:31:36,110 Ben, isto aconteceu aquí. 694 00:31:36,110 --> 00:31:38,170 Entón eu traio isto para un par de razóns. 695 00:31:38,170 --> 00:31:41,542 >> Un deles, é exactamente así que se construír algún sitio para un proxecto final 696 00:31:41,542 --> 00:31:44,000 ou para o mundo real, este é como enviar recordatorios de correo-e 697 00:31:44,000 --> 00:31:45,924 para os seus clientes ou os seus subscritores. 698 00:31:45,924 --> 00:31:47,590 Isto é como enviar recordatorios de contrasinais. 699 00:31:47,590 --> 00:31:50,760 Isto é como enviar mensaxes de persoas que teñen un novo Facebook 700 00:31:50,760 --> 00:31:52,990 mensaxe pendente ou algo parecido. 701 00:31:52,990 --> 00:31:55,010 >> Pero tamén fala o feito de que esta podía 702 00:31:55,010 --> 00:31:58,160 foron moi ben desde Davin ou calquera outra persoa. 703 00:31:58,160 --> 00:32:00,567 E digo que este tipo de cun sorriso, porque eu son 704 00:32:00,567 --> 00:32:03,400 moita certeza do que está pasando por varias das súas mentes neste momento. 705 00:32:03,400 --> 00:32:11,910 Pero este é un destes faga como eu digo, non como fago tipo de cousas, 706 00:32:11,910 --> 00:32:14,480 porque é trivial forxar correos electrónicos como este. 707 00:32:14,480 --> 00:32:16,480 Pero, como pode ver ou ler o Crimson, 708 00:32:16,480 --> 00:32:18,271 de tarde tamén é moi trivial para persoas 709 00:32:18,271 --> 00:32:20,050 rastro-las para algunha orixe. 710 00:32:20,050 --> 00:32:23,790 E preguntar-me un tempo, quizais en CS50 xantar, como eu primeiro 711 00:32:23,790 --> 00:32:27,080 coñeceron moi de preto case ás taboleiro ed moitos anos 712 00:32:27,080 --> 00:32:30,890 atrás, cando descubrín como a internet funciona. 713 00:32:30,890 --> 00:32:36,940 Así, en calquera case-- lixeiramente despois de que o consello fixo ed. 714 00:32:36,940 --> 00:32:42,300 >> Así, en calquera caso, hai unha todo grupo de super-globals, 715 00:32:42,300 --> 00:32:45,960 como son chamados aquí, un dos cales nós saw-- post dólar sinal de subliñado. 716 00:32:45,960 --> 00:32:49,530 Hai unha contrapartida chamado get, que é onde o material a partir dunha URL 717 00:32:49,530 --> 00:32:50,690 acaba indo. 718 00:32:50,690 --> 00:32:54,051 E hai unha morea de outros, sesión demasiado-- e servidor e cookie. 719 00:32:54,051 --> 00:32:55,800 Imos volver biscoito algún outro momento, 720 00:32:55,800 --> 00:33:01,340 pero sesión é legal porque neste agora- ata agora- 721 00:33:01,340 --> 00:33:06,350 todo o que fixemos con un navegador web é unha especie de apátrida, por así dicir. 722 00:33:06,350 --> 00:33:10,060 Podo premer arredor, o acceso arquivos no servidor, algo 723 00:33:10,060 --> 00:33:13,500 acontece na pantalla, pero a continuación, a conexión é pechada. 724 00:33:13,500 --> 00:33:17,450 O Internet Explorer ou o Icona de Firefox para de xirar 725 00:33:17,450 --> 00:33:20,340 e só ver o que esta páxina web contén. 726 00:33:20,340 --> 00:33:23,530 >> Entón HTTP é apátrida en que xa que fai unha conexión, 727 00:33:23,530 --> 00:33:25,050 recibe algúns datos, é iso. 728 00:33:25,050 --> 00:33:29,940 Non hai máis respecto, ao contrario do Skype, ao contrario FaceTime, GChat pola contra, o que 729 00:33:29,940 --> 00:33:32,180 mantén unha constante conexión co servidor. 730 00:33:32,180 --> 00:33:34,650 A web é fundamentalmente desconectado, pero imos 731 00:33:34,650 --> 00:33:36,630 ver en pouco tempo como podemos simular cousas 732 00:33:36,630 --> 00:33:39,300 como Facebook chat e GChat, aquelas que manteñen a illusion-- 733 00:33:39,300 --> 00:33:41,680 ou realmente facer manter un conexión constante con 734 00:33:41,680 --> 00:33:43,270 tecnoloxía máis moderna. 735 00:33:43,270 --> 00:33:49,000 >> Pero se eu for a, digamos, counter.php, este é un exemplo máis sinxelo, 736 00:33:49,000 --> 00:33:52,700 como veremos, que pensa actualmente Eu visitei o sitio tempo cero. 737 00:33:52,700 --> 00:33:56,790 Pero se eu simplemente recargar a páxina, que dalgún xeito sabe que eu estaba aquí antes. 738 00:33:56,790 --> 00:33:58,840 Se eu actualizar de novo, sabe que eu estaba aquí antes. 739 00:33:58,840 --> 00:34:01,100 E de novo e de novo e de novo e de novo. 740 00:34:01,100 --> 00:34:03,610 >> Entón, hai algunha máis-plussing suceder, pero aviso 741 00:34:03,610 --> 00:34:07,090 a pequena cousa vira sempre tan brevemente enriba e despois desconectar, 742 00:34:07,090 --> 00:34:11,179 entón non é como se eu tivese unha constante conexión co meu dispositivo. 743 00:34:11,179 --> 00:34:16,929 Ben, se eu entrar counter.php, entender como é simple. 744 00:34:16,929 --> 00:34:19,080 A primeira vez que chamar iso de especial función que veremos en breve 745 00:34:19,080 --> 00:34:21,513 comezar a tomar para concedida chamado de inicio de sesión. 746 00:34:21,513 --> 00:34:22,179 Iniciar unha sesión. 747 00:34:22,179 --> 00:34:25,095 >> E unha sesión a partir de agora é só será un balde, como un centro comercial 748 00:34:25,095 --> 00:34:28,120 cesta en que pode pór valores e tipo de confianza como un programador 749 00:34:28,120 --> 00:34:31,590 que van estar aquí cando que o usuario chega traseira-- unha segunda 750 00:34:31,590 --> 00:34:35,670 despois, unha hora máis tarde, mesmo un ano despois, con tal de que el ou ela non desaparecer 751 00:34:35,670 --> 00:34:37,602 as cookies, como imos finalmente ver. 752 00:34:37,602 --> 00:34:39,310 E agora eu só teño unha condición aquí. 753 00:34:39,310 --> 00:34:44,679 Entón, se a seguinte clave, chamado contador, defínese dentro 754 00:34:44,679 --> 00:34:49,210 desta super global-- este hash mesa, se will-- chamado sesión, 755 00:34:49,210 --> 00:34:53,350 entón vai adiante e cara o valor do think session-- 756 00:34:53,350 --> 00:34:55,250 deste como un centro comercial cart-- e almacena-lo 757 00:34:55,250 --> 00:34:57,680 nunha variable temporal chamado contador. 758 00:34:57,680 --> 00:35:02,240 >> Se non, se o valor do contador foi non definido no chamado cesta da compra, 759 00:35:02,240 --> 00:35:04,430 só arrincar a 0. 760 00:35:04,430 --> 00:35:09,830 Para rematar, aquí abaixo, vaia e poña de volta para os carrinhos da compra ou a sesión 761 00:35:09,830 --> 00:35:13,000 o valor do contador dun. 762 00:35:13,000 --> 00:35:16,730 Así, verifícase que este aqui-- especial recipiente 763 00:35:16,730 --> 00:35:20,355 que, de novo, é un destes asociado matrices, unha matriz que pode indexar 764 00:35:20,355 --> 00:35:25,010 en palabras, no canto de números de persiste mesmo despois de que o usuario vai. 765 00:35:25,010 --> 00:35:26,510 Unha vez máis, eu vou volver á páxina agora. 766 00:35:26,510 --> 00:35:28,400 Foi un minuto ou así. 767 00:35:28,400 --> 00:35:31,300 Pero lembra que eu teño estiven aquí 19 veces antes. 768 00:35:31,300 --> 00:35:32,740 Este é o meu 20 º visita. 769 00:35:32,740 --> 00:35:36,560 >> E así é que isto vai ser a clave para implementación de calquera sitio que recorda 770 00:35:36,560 --> 00:35:40,640 que está conectado, que puxo algo literal na súa cesta da compra 771 00:35:40,640 --> 00:35:43,902 para comprar ou que ten algún número de mensaxes pendentes. 772 00:35:43,902 --> 00:35:45,610 Sempre que sexa lembrar de información, 773 00:35:45,610 --> 00:35:48,130 veremos que o PHP, como diversas outras linguaxes, 774 00:35:48,130 --> 00:35:53,640 ofrece-nos con esa ilusión de estado aínda que, como podes ver en PSET 6, 775 00:35:53,640 --> 00:35:57,642 como está facendo solicitudes HTTP do cliente ao servidor, é iso. 776 00:35:57,642 --> 00:35:59,850 Xa que recibe de volta ese resposta, non hai nada máis 777 00:35:59,850 --> 00:36:01,790 volvendo do servidor por defecto. 778 00:36:01,790 --> 00:36:03,820 Pero imos ver como solucionar isto. 779 00:36:03,820 --> 00:36:07,430 >> Ben, agora, imos tratar limpar iso un pouco. 780 00:36:07,430 --> 00:36:09,470 Vimos algúns diferentes exemplos alí. 781 00:36:09,470 --> 00:36:12,250 Ah, e como un aparte, para os familiares ou non, 782 00:36:12,250 --> 00:36:14,230 a razón pola que o Exemplo Frosh IMS foi 783 00:36:14,230 --> 00:36:18,060 mirar realmente feo para slightly-- ben, 784 00:36:18,060 --> 00:36:23,160 aínda ugly-- a lixeiramente menos feo aínda que feo 785 00:36:23,160 --> 00:36:25,230 é porque se miramos o código fonte aquí, 786 00:36:25,230 --> 00:36:28,240 verifícase que eu teño esa na parte superior do ficheiro. 787 00:36:28,240 --> 00:36:32,570 >> Acontece que de bootstrap é un dos moitos bibliotecas libremente dispoñibles aí fóra 788 00:36:32,570 --> 00:36:37,140 que non existe para linguaxes de programación sempre, pero para CSS ou Javascript para 789 00:36:37,140 --> 00:36:39,190 ou HTML ou calquera número de idiomas. 790 00:36:39,190 --> 00:36:42,160 >> E esas persoas aqui-- orixinalmente saíu 791 00:36:42,160 --> 00:36:44,730 de Twitter-- só ten unha morea de estilos. 792 00:36:44,730 --> 00:36:47,360 É un arquivo enorme aquí que alguén escribiu, 793 00:36:47,360 --> 00:36:51,020 ou alguén da escribiu, co paso do tempo que especifica as cores e formato 794 00:36:51,020 --> 00:36:53,740 e outros enfeites para que eu poida tipo de prestar a súa sintaxe 795 00:36:53,740 --> 00:36:56,157 e non ten que descubrir como poñer o meu formulario. 796 00:36:56,157 --> 00:36:57,990 Isto tamén é minified de xeito que un ordenador pode 797 00:36:57,990 --> 00:37:00,560 comprende-lo, pero non necesariamente un ser humano. 798 00:37:00,560 --> 00:37:03,050 Entón, iso é só por iso que o estilización non cambiou. 799 00:37:03,050 --> 00:37:05,450 >> Pero imos agora facer mellor en termos de deseño, 800 00:37:05,450 --> 00:37:07,490 porque se ficarmos abaixo esta estrada por moito tempo, 801 00:37:07,490 --> 00:37:11,290 o noso código vai ficar confuso e desorde. 802 00:37:11,290 --> 00:37:13,040 Entón, imos concentrar-se neses exemplos aquí. 803 00:37:13,040 --> 00:37:15,090 A última de hoxe. 804 00:37:15,090 --> 00:37:18,720 >> Entón aquí vai unha super sinxelo versión 1.0 do sitio web da CS50. 805 00:37:18,720 --> 00:37:21,250 El só ten enlaces a conferencias e contidos programáticos, 806 00:37:21,250 --> 00:37:25,490 e el está a usar esta lista non ordenada tag-- marca UL que usan última vez. 807 00:37:25,490 --> 00:37:28,800 E se, en realidade, se eu abrir View Page Source, 808 00:37:28,800 --> 00:37:31,710 vai ver que iso é realmente, HTML moi sinxelo. 809 00:37:31,710 --> 00:37:35,460 E, de feito, aínda que esta sexa un arquivo PHP debaixo do capó, 810 00:37:35,460 --> 00:37:38,620 el é aínda só cuspindo fóra só HTML agora. 811 00:37:38,620 --> 00:37:41,312 >> Entón, se eu premer en charlas, vemos isto acontecer. 812 00:37:41,312 --> 00:37:43,020 E se eu premer en semana cero, vemos isto. 813 00:37:43,020 --> 00:37:44,920 E se eu premer en Mércores, nós vemos isto. 814 00:37:44,920 --> 00:37:47,900 E iso, ao parecer, foi o PDF dos diapositivas a partir daquel día. 815 00:37:47,900 --> 00:37:52,020 Todo o que eu teño feito é conexión cun Referencia tag para este URL aquí. 816 00:37:52,020 --> 00:37:55,400 >> Entón, iso é só para dicir que este é un fermoso versión simple do sitio web do CS50. 817 00:37:55,400 --> 00:37:56,790 A ver como é aplicado. 818 00:37:56,790 --> 00:38:01,240 Se eu ir ao directorio mvc0, imos ver algúns ficheiros. 819 00:38:01,240 --> 00:38:03,250 Un deles é un README, entón se algúns iso é moi rápido, 820 00:38:03,250 --> 00:38:05,166 pode só bisbilhotar máis vagaroso máis tarde. 821 00:38:05,166 --> 00:38:07,930 E aviso aquí é un ficheiro index.php. 822 00:38:07,930 --> 00:38:09,960 Acontece que, se ti mesmo, o ser humano, 823 00:38:09,960 --> 00:38:14,460 non especifica un nome definitivo en unha URL, o servidor web normalmente 824 00:38:14,460 --> 00:38:17,010 infere algún nome estándar para ti. 825 00:38:17,010 --> 00:38:20,060 Un índice dot algo é xeralmente o defecto. 826 00:38:20,060 --> 00:38:23,010 >> Entón é por iso un momento atrás cando visitei este URL aquí, 827 00:38:23,010 --> 00:38:26,750 ningún nome de ficheiro, o ficheiro extensión, ningún período na URL. 828 00:38:26,750 --> 00:38:29,710 El só sabía que dalgunha forma Magic a ollar para index.php. 829 00:38:29,710 --> 00:38:30,870 É só unha convención. 830 00:38:30,870 --> 00:38:32,360 Podería ser chamado de calquera cousa. 831 00:38:32,360 --> 00:38:35,110 >> Entón, se eu agora vai index.php, verás 832 00:38:35,110 --> 00:38:37,100 que, indeed-- imos se librar dos comentarios 833 00:38:37,100 --> 00:38:39,500 aquí porque non hai realmente nada de interesante para ele-- 834 00:38:39,500 --> 00:38:41,579 este é só codificado HTML. 835 00:38:41,579 --> 00:38:43,370 Entón, iso é consistente, porén, co meu pedido 836 00:38:43,370 --> 00:38:45,230 que pode mesturar HTML e PHP. 837 00:38:45,230 --> 00:38:48,060 Non hai real lóxica de programación aquí. 838 00:38:48,060 --> 00:38:51,030 >> E os outros ficheiros son moi moi tan pouco atractivo. 839 00:38:51,030 --> 00:38:56,240 É só unha semana hard-coded aquí para unha semana m e unha semana w, 840 00:38:56,240 --> 00:38:57,510 para o luns e mércores. 841 00:38:57,510 --> 00:39:01,890 E entón se eu abrir semana cero, ter en conta que é case idéntico. 842 00:39:01,890 --> 00:39:03,320 >> E iso é unha especie de takeaway clave. 843 00:39:03,320 --> 00:39:06,180 Teña en conta o quão redundante que é iso. 844 00:39:06,180 --> 00:39:10,710 Estes arquivos mal cambiar, e aínda así eu tirou un deses postos de traballo de copiar / pegar 845 00:39:10,710 --> 00:39:13,420 onde tomei un file-- presuntamente a semana zero-- copiados por 846 00:39:13,420 --> 00:39:16,320 cando unha semana chegou, e axustados algúns valores. 847 00:39:16,320 --> 00:39:18,590 Nós probablemente debe ser capaz de facer mellor que iso. 848 00:39:18,590 --> 00:39:21,800 >> Entón, imos voltar ata MVC e vai á versión un. 849 00:39:21,800 --> 00:39:24,810 E teña en conta que eu teño un algúns arquivos, xa que o que 850 00:39:24,810 --> 00:39:29,870 era común a todos estes arquivos só unha momento ago-- se eu volver á versión 0, 851 00:39:29,870 --> 00:39:32,600 imos voltar para o índice, e só postulate-- 852 00:39:32,600 --> 00:39:36,090 xa para me librar do comments-- que parte desta páxina 853 00:39:36,090 --> 00:39:40,072 é, presuntamente, en cada un dos meus arquivos? 854 00:39:40,072 --> 00:39:40,780 Basta chamalo para fóra. 855 00:39:40,780 --> 00:39:44,620 Que liñas son duplicados probablemente a través de todas estas páxinas? 856 00:39:44,620 --> 00:39:45,120 Si? 857 00:39:45,120 --> 00:39:46,110 >> Estudante: [inaudível]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. Malan: 1 a 9. 859 00:39:47,660 --> 00:39:48,720 Si, con certeza. 860 00:39:48,720 --> 00:39:52,080 De 1 a 9, excepto quizais 8 cambia un pouco, xa que CS50 861 00:39:52,080 --> 00:39:54,650 convértese en conferencias ou semana cero ou algo así. 862 00:39:54,650 --> 00:39:55,970 Pero case idéntica. 863 00:39:55,970 --> 00:39:58,657 Entón, todo isto é só tipo de copiado e pegado. 864 00:39:58,657 --> 00:40:00,490 E hai unha parella outras liñas que podo pensar 865 00:40:00,490 --> 00:40:05,000 de que son probablemente idénticos en todos os arquivos. 866 00:40:05,000 --> 00:40:06,315 >> Estudante: 12 e 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. Malan: Yeah. 868 00:40:07,190 --> 00:40:11,220 Por suposto, 12, 13 e 14, probablemente, só porque as cousas interesantes 869 00:40:11,220 --> 00:40:15,460 está pasando en liñas de 11 e 10, polo menos así parece. 870 00:40:15,460 --> 00:40:18,350 Entón, imos ollar para a versión 1, que trata de mellorar isto. 871 00:40:18,350 --> 00:40:24,020 Na versión 1 do presente example-- MVC nós imos explicar o que MVC medio dunha moment-- 872 00:40:24,020 --> 00:40:27,420 se eu entrar índice, tipo de parece un pouco confuso agora. 873 00:40:27,420 --> 00:40:28,880 Non é tan sinxelo coma antes. 874 00:40:28,880 --> 00:40:30,906 >> Pero unha vez que comeza a lelo con coidado, é 875 00:40:30,906 --> 00:40:32,530 moi sinxelo o que está facendo. 876 00:40:32,530 --> 00:40:34,397 Ao parecer, a liña 1 e liña 8 substituíron 877 00:40:34,397 --> 00:40:37,230 todas as cousas que acaba de identified-- aínda que só para unha boa medida, 878 00:40:37,230 --> 00:40:41,900 Deixei os MMSS non só no caso de algúns días, non teño unha lista de cousas. 879 00:40:41,900 --> 00:40:47,860 E así o esixen é como libra incluír en C. El copia e cola 880 00:40:47,860 --> 00:40:50,470 os contidos de forma eficaz aquí neste arquivo. 881 00:40:50,470 --> 00:40:53,650 >> Así, en header.php, como pode inferir a partir do seu nome, 882 00:40:53,650 --> 00:40:55,330 será a cabeceira da páxina. 883 00:40:55,330 --> 00:40:57,110 É unha especie de orfandade aquí. 884 00:40:57,110 --> 00:41:01,820 El só ten a parte superior a el, pero Non hai máis contido a continuación. 885 00:41:01,820 --> 00:41:05,070 >> E se eu ollar para rodapé, mentres, que foi o outro ficheiro mentioned-- 886 00:41:05,070 --> 00:41:08,830 este é aínda menos interesante, pero, de novo, é común a todo. 887 00:41:08,830 --> 00:41:10,250 Entón que é o pé. 888 00:41:10,250 --> 00:41:11,300 Este é a cabeceira. 889 00:41:11,300 --> 00:41:13,950 Este é o arquivo que é cambiando, entón por que non 890 00:41:13,950 --> 00:41:18,140 tentar fatorar o comunalidade con estas dúas liñas aquí? 891 00:41:18,140 --> 00:41:20,090 >> Pero podemos limpar isto ata un pouco máis. 892 00:41:20,090 --> 00:41:23,260 Eu estou indo a ir adiante e abrir versión dous, onde 893 00:41:23,260 --> 00:41:27,106 veremos que hai un novo arquivo, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Veremos que que está en un momento. 895 00:41:28,610 --> 00:41:30,930 Imos ao índice, como o punto de entrada como antes. 896 00:41:30,930 --> 00:41:35,230 >> E agora entende que estou requirindo helpers.php, non cabeceira ou pé de páxina. 897 00:41:35,230 --> 00:41:41,720 Pero axudantes é tipo de gusto helpers.c e helpers.h de PSET 2 898 00:41:41,720 --> 00:41:46,150 ou PSET 3 hai moito tempo cando realmente se buscar e atopar a que PSET, 899 00:41:46,150 --> 00:41:50,950 e tivo todo o seu código para clasificar e busca nun ficheiro separado. 900 00:41:50,950 --> 00:41:52,510 Iso é o que está pasando aquí. 901 00:41:52,510 --> 00:41:54,390 >> E agora a liña 3 parece un pouco diferente. 902 00:41:54,390 --> 00:41:55,920 E iso é só unha liña. 903 00:41:55,920 --> 00:41:57,950 Para facer isto aínda máis suposto, eu podería só 904 00:41:57,950 --> 00:42:01,820 Non que iso sexa estilisticamente consistente con todo o que fixemos. 905 00:42:01,820 --> 00:42:04,130 Pero iso non é realmente cambiar a función. 906 00:42:04,130 --> 00:42:05,880 É só unha liña de código real. 907 00:42:05,880 --> 00:42:09,010 >> Ao parecer, hai unha función nalgún lugar chamado facer cabeceira, 908 00:42:09,010 --> 00:42:11,420 E é aí onde as cousas ser moi poderoso. 909 00:42:11,420 --> 00:42:17,040 Nótese que no interior das súas parénteses é o que outra peza de sintaxe? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 É probabelmente un pouco difícil de dicir, pero notar there's-- vou poñer algún branco 912 00:42:23,350 --> 00:42:24,300 espazo. 913 00:42:24,300 --> 00:42:25,530 Hai corchetes. 914 00:42:25,530 --> 00:42:29,700 >> E corchetes vimos un pouco atrás no contexto de matrices de asociación, 915 00:42:29,700 --> 00:42:31,580 que son, de novo, como táboas de hash. 916 00:42:31,580 --> 00:42:36,230 E se pensas que agora a C, o orde dos argumentos nunha función 917 00:42:36,230 --> 00:42:37,570 ten que ser sempre a mesma. 918 00:42:37,570 --> 00:42:41,146 Ten que lembrar que o solicitar x é--, y ou z, y, x-- 919 00:42:41,146 --> 00:42:44,020 e ten que proporcionar-lles sempre na mesma orde ou buscalos 920 00:42:44,020 --> 00:42:45,100 se esqueceu. 921 00:42:45,100 --> 00:42:51,140 >> Pero esta parece ser unha forma intelixente de pasar un valor de clave arbitraria 922 00:42:51,140 --> 00:42:55,840 pares polo cal título é o nome dun argumento, neste caso, 923 00:42:55,840 --> 00:42:58,334 e CS50 é o seu valor. 924 00:42:58,334 --> 00:43:00,250 E o feito de eu ter estes corchetes 925 00:43:00,250 --> 00:43:02,560 aquí significa que eu puidese tamén pasar en algo 926 00:43:02,560 --> 00:43:07,550 como unha semana ou 1 é 0 ou 2 ou 3. 927 00:43:07,550 --> 00:43:10,550 Entón, nós parametrizado esta función, de tal forma 928 00:43:10,550 --> 00:43:15,180 que pode levar varias entradas, pero de momento é só unha. 929 00:43:15,180 --> 00:43:20,060 >> Se eu agora vai helpers.php, entender o que está facendo. 930 00:43:20,060 --> 00:43:22,030 Este é un pouco de novas, 931 00:43:22,030 --> 00:43:24,190 pero por agora só tomar na fe de que se trata 932 00:43:24,190 --> 00:43:26,570 a sintaxe coa que definir unha función en PHP. 933 00:43:26,570 --> 00:43:27,840 Vostede literalmente dicir función. 934 00:43:27,840 --> 00:43:30,090 Non especificar un retorno tipo, e iso é consistente 935 00:43:30,090 --> 00:43:33,880 co detalle da variable anteriormente onde realmente non fortemente escribir. 936 00:43:33,880 --> 00:43:35,650 >> Isto só especifica que, por defecto, este 937 00:43:35,650 --> 00:43:37,460 leva unha asociativo matriz como un argumento. 938 00:43:37,460 --> 00:43:38,210 E vostede sabe o que? 939 00:43:38,210 --> 00:43:41,450 Se o usuario non pasar unha en, asumir un valor por defecto. 940 00:43:41,450 --> 00:43:44,680 >> Este é un recurso que C non ten para nós, o que é bo, porque agora 941 00:43:44,680 --> 00:43:46,430 datos, mesmo se non darlle algo, 942 00:43:46,430 --> 00:43:49,300 será un matriz, pero un baleiro. 943 00:43:49,300 --> 00:43:51,860 E como un aparte, extracto só fai algo funky 944 00:43:51,860 --> 00:43:56,380 onde leva todas as claves dende matriz asociativa, as cousas 945 00:43:56,380 --> 00:43:59,950 podería poñer entre parénteses, e crea variables fóra delas 946 00:43:59,950 --> 00:44:06,270 para que poidamos finalmente ter acceso a eles en footet.php e header.php. 947 00:44:06,270 --> 00:44:08,950 Isto é un pouco abstracto, entón déixeme apuntar isto. 948 00:44:08,950 --> 00:44:12,990 >> En index.php, entender que eu son pasando un par de valores clave do título 949 00:44:12,990 --> 00:44:14,850 cun valor de CS50. 950 00:44:14,850 --> 00:44:18,660 Se eu agora ollar para helpers.php, notar que RenderHeader 951 00:44:18,660 --> 00:44:23,870 é extraer os datos que eu estou pasando en, a continuación, esixe header.php. 952 00:44:23,870 --> 00:44:27,970 O que eu fixen é unha especie de un pobre home de implantación de agora o seguinte. 953 00:44:27,970 --> 00:44:31,720 >> Se eu abrir header.php, Repare que eu non teño máis difícil 954 00:44:31,720 --> 00:44:34,890 codificado a palabra CS50 neste ficheiro de cabeceira. 955 00:44:34,890 --> 00:44:39,310 Engada este reconhecidamente atrozmente función chamada, HTML caracteres especiais, 956 00:44:39,310 --> 00:44:40,170 alí dentro. 957 00:44:40,170 --> 00:44:41,640 Pero teña en conta o que eu fixen. 958 00:44:41,640 --> 00:44:44,240 Teño HTML aberta. 959 00:44:44,240 --> 00:44:47,420 Eu, entón, ter a cabeza aberta e Título aberta. 960 00:44:47,420 --> 00:44:52,380 >> E, a continuación, dentro do título do aberto e etiquetas de preto, eu teño un pouco de código PHP. 961 00:44:52,380 --> 00:44:56,670 E este é un bo, pero de sintaxe, o que significa só eco fóra. 962 00:44:56,670 --> 00:44:59,840 Isto significa literalmente isto-- ecoar o following-- 963 00:44:59,840 --> 00:45:01,910 pero esta é a máis sexy de escribir. 964 00:45:01,910 --> 00:45:05,000 Ecoam o título que foi pasado. 965 00:45:05,000 --> 00:45:07,560 >> Pero o que pensas HTML carácter especial é sobre todo, 966 00:45:07,560 --> 00:45:10,590 especialmente se ten algunha experiencia anterior en HTML? 967 00:45:10,590 --> 00:45:14,050 Que personaxes se pode perigoso para pasar unha páxina 968 00:45:14,050 --> 00:45:17,980 onde está xerando dinamicamente a páxina web cun código coma este? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Déixeme ir a ese ficheiro, versión dous, para ver se eu non podo inducir iso. 971 00:45:24,650 --> 00:45:26,210 >> Versión dous é esta. 972 00:45:26,210 --> 00:45:28,510 E teña en conta todo está ben, traballando ben. 973 00:45:28,510 --> 00:45:35,280 Pero supoña que eu entro en index.php e I especificar que o título da miña páxina 974 00:45:35,280 --> 00:45:36,630 Non é CS50. 975 00:45:36,630 --> 00:45:44,930 É alerta guión soporte aberto Ola mundo, multimedia seguinte single, 976 00:45:44,930 --> 00:45:49,740 preto paréntese, punto e coma, soporte aberto, guión barra. 977 00:45:49,740 --> 00:45:51,897 >> Guión, como veremos finalmente ver, é unha etiqueta 978 00:45:51,897 --> 00:45:54,480 que pode usar para utilizar doutro linguaxe de programación chamada 979 00:45:54,480 --> 00:45:56,330 JavaScript dentro dunha páxina web. 980 00:45:56,330 --> 00:45:57,960 E agora entender a lóxica aquí. 981 00:45:57,960 --> 00:45:59,840 Aquí está unha chave chamada título. 982 00:45:59,840 --> 00:46:02,690 Aquí é que é de valor a longo tolo agora. 983 00:46:02,690 --> 00:46:07,840 >> Pero se eu for para os axudantes page- ou mellor, a páxina de cabeceira, 984 00:46:07,840 --> 00:46:11,310 Estou chamando esta función en que o título por primeira vez. 985 00:46:11,310 --> 00:46:15,250 Entón, se eu agora recargue esta páxina, eu ver iso, que parece ridículo, 986 00:46:15,250 --> 00:46:16,110 pero é seguro. 987 00:46:16,110 --> 00:46:17,310 El só parece estúpido. 988 00:46:17,310 --> 00:46:20,320 >> Pero supoñamos que no canto Eu tiña esquecido iso. 989 00:46:20,320 --> 00:46:24,660 E marque as miñas palabras, un número distinto de cero de esquecer de facelo 990 00:46:24,660 --> 00:46:27,790 e vai ter algún traballador estudante ou amigo chegando 991 00:46:27,790 --> 00:46:31,540 para ti na feira CS50 ou anónima á noite bisbilhotar no seu sitio 992 00:46:31,540 --> 00:46:35,300 e, esencialmente, injectando código sen o seu coñecemento na súa páxina web 993 00:46:35,300 --> 00:46:35,800 de algunha maneira. 994 00:46:35,800 --> 00:46:39,000 >> Porque se eu simplemente cuspir a título aquí e Título 995 00:46:39,000 --> 00:46:44,330 há-- ben, se o título literalmente parécese iso e PHP 996 00:46:44,330 --> 00:46:47,660 como unha linguaxe que pode cuspir fóra noutros idiomas texto, 997 00:46:47,660 --> 00:46:50,650 esta é literalmente indo para substituír esa etiqueta con, 998 00:46:50,650 --> 00:46:53,010 por suposto, o que engada noutros lugares. 999 00:46:53,010 --> 00:46:57,640 >> Entón, se eu agora vaia aquí e recargar despois desfacer eses mecanismos de seguridade, 1000 00:46:57,640 --> 00:46:59,982 agora eu teño Ola mundo aquí. 1001 00:46:59,982 --> 00:47:02,690 Agora iso non é todo o que de un gran tratar, pero podería facer algo 1002 00:47:02,690 --> 00:47:05,119 algo máis malicioso aquí, como hai 1003 00:47:05,119 --> 00:47:08,410 outro tags-- como veremos, xa que gastamos máis tempo en JavaScript-- como localización 1004 00:47:08,410 --> 00:47:14,910 dot href recibe, multimedia, pecha comiñas, HTTP business.com, pero o contrario do que 1005 00:47:14,910 --> 00:47:15,950 desde o outro día. 1006 00:47:15,950 --> 00:47:20,120 E agora pode inducir un web páxina para realmente ir inmediatamente 1007 00:47:20,120 --> 00:47:21,190 a esta páxina web aquí. 1008 00:47:21,190 --> 00:47:23,000 >> E de feito, eu non quero incluso para ir business.com 1009 00:47:23,000 --> 00:47:24,749 porque eu non quero para saber o que é. 1010 00:47:24,749 --> 00:47:28,710 Pero iso, tamén, pode desencadear código para ser inxectado desta páxina. 1011 00:47:28,710 --> 00:47:32,680 Entón, iso é só para dicir que, a pesar de estamos introducindo super cedo nalgúns 1012 00:47:32,680 --> 00:47:36,800 destas estruturas máis complexas, é todo para un fin de asegurarse de 1013 00:47:36,800 --> 00:47:39,320 que o código non é explorável. 1014 00:47:39,320 --> 00:47:40,960 >> Entón, agora unha terceira versión aquí. 1015 00:47:40,960 --> 00:47:42,470 Está quedando un pouco máis extravagante. 1016 00:47:42,470 --> 00:47:44,875 Realmente non como-- o lado anal de min 1017 00:47:44,875 --> 00:47:47,750 estaba quedando un pouco irritado coa feito de que eu tiña unha función chamada 1018 00:47:47,750 --> 00:47:51,940 RenderHeader e RenderFooter que eran case idénticos. 1019 00:47:51,940 --> 00:47:55,400 Entón, ocorreu-me, por que non facer Eu parametrizar estas funcións 1020 00:47:55,400 --> 00:47:59,180 en só un chamado renderse, teñen que ter un segundo argumento 1021 00:47:59,180 --> 00:48:04,420 como o nome do modelo, a finais para render-- calquera cabeceira ou pé de páxina? 1022 00:48:04,420 --> 00:48:07,160 E, a continuación, opcionalmente, se eu queira para pasar nalgúns pares de valores clave 1023 00:48:07,160 --> 00:48:10,580 como fago para o título para o cabeceira, pero non para o pé, 1024 00:48:10,580 --> 00:48:11,800 Podería facelo. 1025 00:48:11,800 --> 00:48:16,510 >> E agora, se eu entrar helpers.php, é un pouco máis complexa. 1026 00:48:16,510 --> 00:48:19,670 E eu vou acenar as mans no detalles, pero é só unha función. 1027 00:48:19,670 --> 00:48:21,890 Entón iso é un paso cara a un proxecto mellor. 1028 00:48:21,890 --> 00:48:23,360 >> Podemos dar un paso adiante. 1029 00:48:23,360 --> 00:48:28,890 Se eu vou para o meu cuarto versión deste, teña en conta agora 1030 00:48:28,890 --> 00:48:31,320 que eu estou facendo algo aínda máis especie de enigmático. 1031 00:48:31,320 --> 00:48:33,230 E sei que este é un moito para absorber dunha vez, 1032 00:48:33,230 --> 00:48:35,080 pero nós somos só unha especie limpador cousas. 1033 00:48:35,080 --> 00:48:38,550 Agora eu estou poñendo os meus axudantes arquivo nunha carpeta chamada 1034 00:48:38,550 --> 00:48:41,190 includes-- só un arbitrario nome onde quero poñer cousas 1035 00:48:41,190 --> 00:48:44,300 que quero include-- e despois o resto da é o mesmo. 1036 00:48:44,300 --> 00:48:47,140 >> Pero se eu ollar agora no gedit, aviso que comece librar 1037 00:48:47,140 --> 00:48:51,940 de todos estes outros arquivos e non teño moveu a eles, por exemplo, para aquí. 1038 00:48:51,940 --> 00:48:55,110 E entón, en modelos, Eu teño ese tamén. 1039 00:48:55,110 --> 00:48:59,292 E así todo isto é agora cara a un paso de usar un moito mellor patrón de deseño. 1040 00:48:59,292 --> 00:49:01,000 E nós estamos moi rapidamente indo a afastar 1041 00:49:01,000 --> 00:49:03,870 da función estándar de PHP, que comezan aquí con, 1042 00:49:03,870 --> 00:49:07,655 onde só mesturar PHP, e HTML, e seu CSS, 1043 00:49:07,655 --> 00:49:09,780 e simplemente cuspídela e vai facer sobre o seu camiño. 1044 00:49:09,780 --> 00:49:11,404 Non vai ser moi doado de manter. 1045 00:49:11,404 --> 00:49:14,481 Así como en C, que comezan a usar múltiples arquivos e múltiples funcións 1046 00:49:14,481 --> 00:49:15,730 e factoring cousas iso. 1047 00:49:15,730 --> 00:49:16,688 Nós imos facer o mesmo aquí. 1048 00:49:16,688 --> 00:49:19,970 E, de feito, no quinto e último versión aquí, eu fixen outra cousa. 1049 00:49:19,970 --> 00:49:23,710 Aínda pode usar dot dot, que, unha vez máis, é só o directorio pai. 1050 00:49:23,710 --> 00:49:28,260 Para ser aínda máis consciente de seguridade, porque se eu ollar para a escoita 1051 00:49:28,260 --> 00:49:32,450 aquí para xoves e versión final, previo que eu teño un directorio chamado aquí 1052 00:49:32,450 --> 00:49:35,180 público e, a continuación, no mesmo nivel, por así dicir, 1053 00:49:35,180 --> 00:49:38,490 Teño inclúe e modelos e, a continuación, o ficheiro de texto le-me. 1054 00:49:38,490 --> 00:49:41,130 >> E a razón pola que eu teño estruturado gusta isto-- e tantos web 1055 00:49:41,130 --> 00:49:44,330 hospedeiros, especialmente os US $ 5 por os meses ou uns 10 dólares mes, 1056 00:49:44,330 --> 00:49:47,170 se xa tivo un destes services-- o que moitos deles fan 1057 00:49:47,170 --> 00:49:50,690 é que só esperan que botan todo dos seus arquivos nun directorio, 1058 00:49:50,690 --> 00:49:53,640 como xa fixemos con este primeiro exemplo. 1059 00:49:53,640 --> 00:49:56,740 >> Pero así que comezar a construír máis lugares sofisticados que almacenan 1060 00:49:56,740 --> 00:50:00,480 datos que se preocupan e arquivos que preocupan, realmente organizar as cousas 1061 00:50:00,480 --> 00:50:05,060 correctamente e con máis seguridade conciencia na mente pode 1062 00:50:05,060 --> 00:50:07,927 comezamos a defender contra todos os amigos 1063 00:50:07,927 --> 00:50:10,135 que ten dentro ou fóra desta clase que, 1064 00:50:10,135 --> 00:50:12,510 así que comezar a facer programas na web, 1065 00:50:12,510 --> 00:50:15,140 comezarán a escoller sobre vostede e sobre eles. 1066 00:50:15,140 --> 00:50:17,420 >> E así imos ollar en definitiva, o seu deseño. 1067 00:50:17,420 --> 00:50:20,010 Esta é só unha imaxe que describe a continuación. 1068 00:50:20,010 --> 00:50:22,897 Nós imos poñer todo o noso lóxica de programación nun ou máis ficheiros, 1069 00:50:22,897 --> 00:50:25,230 e imos só comezar chamando eses controladores. 1070 00:50:25,230 --> 00:50:28,022 É onde o cerebro de nosos sitios realmente son. 1071 00:50:28,022 --> 00:50:29,730 Entón nós imos teñen vista, e vista 1072 00:50:29,730 --> 00:50:32,480 son tan sinxelo coma só separado files-- chamados templates, moitas veces. 1073 00:50:32,480 --> 00:50:34,410 Eles só teñen a estética da miña páxina, 1074 00:50:34,410 --> 00:50:37,020 o que quero a páxina para ollar como-- as cores eo deseño 1075 00:50:37,020 --> 00:50:38,870 e as posicións de todas as variables. 1076 00:50:38,870 --> 00:50:41,120 >> E, a continuación, máis interesante que vai finalmente chegar a 1077 00:50:41,120 --> 00:50:45,420 é o modelo, o que vai ser só a palabra que bater outras tecnoloxías 1078 00:50:45,420 --> 00:50:47,771 que traemos ao imaxe, como bases de datos reais, 1079 00:50:47,771 --> 00:50:49,520 de xeito que cando quere para salvar a información, 1080 00:50:49,520 --> 00:50:52,140 que non pode enviar un correo-e para a súa proctor ou a si mesmo, 1081 00:50:52,140 --> 00:50:57,350 realmente almacena-lo nunha base de datos usar outra linguaxe coñecida como SQL. 1082 00:50:57,350 --> 00:51:00,450 E así nós imos saír de aquí hoxe e incorporarse con este mércores 1083 00:51:00,450 --> 00:51:02,990 e introducir as bases de datos, a continuación. 1084 00:51:02,990 --> 00:51:06,940 >> [Música tocando] 1085 00:51:06,940 --> 00:54:24,555