1 00:00:00,000 --> 00:00:10,393 >> [REPRODUCCIÓN DE MÚSICA] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: De acuerdo. 4 00:00:12,120 --> 00:00:12,830 Bienvenido / a. 5 00:00:12,830 --> 00:00:13,890 Esto es CS50. 6 00:00:13,890 --> 00:00:15,570 Este es el final de la semana 8. 7 00:00:15,570 --> 00:00:18,360 Y como usted sabe, tenemos bastante las horas de oficina en unos pocos 8 00:00:18,360 --> 00:00:21,090 de los comedores, incluyendo Annenberg. 9 00:00:21,090 --> 00:00:23,860 Y algunos de los equipo de la amabilidad tomó algunas fotos últimamente. 10 00:00:23,860 --> 00:00:26,230 Y en honor a Halloween, pensamos que sería mejor 11 00:00:26,230 --> 00:00:30,160 compartir un lugar que nos pilló por sorpresa aquí en Annenberg Salón justo 12 00:00:30,160 --> 00:00:31,490 la otra noche. 13 00:00:31,490 --> 00:00:36,300 Su compañero Jacob posó para esta foto, pero era más divertido 14 00:00:36,300 --> 00:00:39,760 estaba en Facebook, el siguiente conversación que ocurrió después. 15 00:00:39,760 --> 00:00:43,020 >> Su primer mensaje en respuesta a su foto fue esto. 16 00:00:43,020 --> 00:00:46,740 Unos minutos más tarde, decidió a uno a sí mismo con este. 17 00:00:46,740 --> 00:00:53,800 Continuó luego ir a este, y luego, aún más divertida 18 00:00:53,800 --> 00:00:55,320 es cuando su madre intervino. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 Y a continuación, en última instancia, parece que esto era sólo 21 00:01:01,800 --> 00:01:04,860 un truco maravilloso para una obra de teatro que está pasando. 22 00:01:04,860 --> 00:01:07,080 >> Por lo tanto, si desea a ver a Jacob y los demás, 23 00:01:07,080 --> 00:01:10,880 entre ellos Cynthia Meng, quien es detrás de las escenas de personal zona CS50, 24 00:01:10,880 --> 00:01:13,970 dirigirse a esta dirección URL y aquí esta obra. 25 00:01:13,970 --> 00:01:18,810 Así que sin más preámbulos, hoy continuar con esta mirada a la programación web, 26 00:01:18,810 --> 00:01:21,810 y la creación real de los programas que no se ejecutan en su línea de comandos, 27 00:01:21,810 --> 00:01:24,080 pero en lugar de ejecutarse dentro de un navegador. 28 00:01:24,080 --> 00:01:26,320 >> Presumiblemente ahora, o muy poco, vas 29 00:01:26,320 --> 00:01:30,200 para estar en el medio de la implementación su propio servidor web, que 30 00:01:30,200 --> 00:01:31,700 es diferente de la programación web. 31 00:01:31,700 --> 00:01:36,210 El servidor web en pset6 se trata software que sabe escribir cómo tomar 32 00:01:36,210 --> 00:01:39,300 Peticiones HTTP de un navegador, o incluso de usted, un ser humano, 33 00:01:39,300 --> 00:01:42,340 con un programa llamado Telnet, y a continuación, responder a esas peticiones, ya sea 34 00:01:42,340 --> 00:01:48,600 por escupir un archivo HTML, o un jpeg, gif o una, o incluso un archivo .php. 35 00:01:48,600 --> 00:01:52,490 >> Pero con un servidor web, no es supone que basta con abrir un archivo PHP, 36 00:01:52,490 --> 00:01:55,260 algo que termina en .php, y luego escupir el contenido. 37 00:01:55,260 --> 00:01:58,440 Se supone que debe hacer lo que a ese archivo por primera vez? 38 00:01:58,440 --> 00:01:59,390 Por así decirlo. 39 00:01:59,390 --> 00:02:04,060 No compilarlo, dijimos el lunes, pero rather-- Así, interpretarlo. 40 00:02:04,060 --> 00:02:08,070 >> PHP es un lenguaje interpretado, y así una de las características clave en su web 41 00:02:08,070 --> 00:02:11,550 servidor, aunque implementado por nosotros, Es esta capacidad de su servidor web 42 00:02:11,550 --> 00:02:12,490 a notar, oh. 43 00:02:12,490 --> 00:02:14,580 Este es un archivo con la extensión .php. 44 00:02:14,580 --> 00:02:17,970 No me dejes solo envío a la usuario como si fuera contenido estático, 45 00:02:17,970 --> 00:02:20,970 sino más bien déjame leer línea por línea, de izquierda a derecha, y de interpretarlo. 46 00:02:20,970 --> 00:02:23,030 >> Y para hacerlo, que chicos harán esencialmente 47 00:02:23,030 --> 00:02:26,520 punt a un programa en el aparato, y en muchos de los sistemas informáticos, 48 00:02:26,520 --> 00:02:27,500 simplemente llamado PHP. 49 00:02:27,500 --> 00:02:30,579 Ese es el nombre de la PHP propio intérprete del lenguaje. 50 00:02:30,579 --> 00:02:33,120 Por lo tanto, esa pieza que implementamos para usted, y lo que queda para usted, 51 00:02:33,120 --> 00:02:35,240 en última instancia, es un número de piezas, entre las que se 52 00:02:35,240 --> 00:02:37,960 está implementando apoyo para contenido estático. 53 00:02:37,960 --> 00:02:40,180 >> Pero ahora, y con problema establece siete, eres 54 00:02:40,180 --> 00:02:43,660 va a empezar a hacer la transición a realmente escribir el código PHP 55 00:02:43,660 --> 00:02:45,970 que consigue interpretarse al hablar con un back-end 56 00:02:45,970 --> 00:02:47,960 base de datos que almacena la información. 57 00:02:47,960 --> 00:02:51,020 Así que vamos a mejor entender primero un par de estos superglobals 58 00:02:51,020 --> 00:02:53,720 y sólo la cantidad de energía que salir de la caja de forma gratuita 59 00:02:53,720 --> 00:02:55,250 con un lenguaje como PHP. 60 00:02:55,250 --> 00:02:57,350 Cosas que usted no tiene para aplicar a ti mismo. 61 00:02:57,350 --> 00:03:01,700 >> Así, vimos el lunes $ _GET, que es un superglobal, 62 00:03:01,700 --> 00:03:05,496 que se acaba de hablar de PHP para un mundial variable que puede acceder en cualquier lugar. 63 00:03:05,496 --> 00:03:06,620 Y lo que hay dentro de $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 ¿Qué hay dentro de este superglobal que vemos? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Seguramente estadísticamente en menos una persona sabe. 68 00:03:19,020 --> 00:03:21,590 ¿Qué hay dentro de $ _GET? 69 00:03:21,590 --> 00:03:22,426 ¿Sí? 70 00:03:22,426 --> 00:03:24,130 >> AUDIENCIA: Es las variables se pone en la cadena de consulta. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. MALAN: Perfecto. 72 00:03:24,530 --> 00:03:26,488 Son las variables que puesto en la cadena de consulta. 73 00:03:26,488 --> 00:03:29,910 Por lo tanto, en nuestro ejemplo anterior de reimplementar Google cuando tuvimos 74 00:03:29,910 --> 00:03:34,130 una URL, y luego el signo de interrogación, que demarca el comienzo de HTTP 75 00:03:34,130 --> 00:03:37,950 parámetros, entonces tuvimos q igual algo, como q es igual a los gatos, 76 00:03:37,950 --> 00:03:41,500 lo que iría automáticamente dentro de que $ _GET súper mundial para usted, 77 00:03:41,500 --> 00:03:47,430 porque de PHP, es una clave de Q, y de valor de los mismos de los gatos. 78 00:03:47,430 --> 00:03:51,250 >> En otras palabras, $ _GET y todos estas cosas son matrices asociativas, 79 00:03:51,250 --> 00:03:54,530 tablas hash de clase, que almacenar claves y valores. 80 00:03:54,530 --> 00:03:57,980 Ahora, de vuelta en pset5, el hash mesa en la que podría haber aplicado, 81 00:03:57,980 --> 00:04:00,220 o el que usted podría intentar han puesto en marcha, de verdad 82 00:04:00,220 --> 00:04:04,010 era efectivamente un asociativa array, una estructura de datos 83 00:04:04,010 --> 00:04:07,220 mediante el cual se puede asociar claves con valores. 84 00:04:07,220 --> 00:04:09,690 >> Pero en pset5, los valores fueron trivial. 85 00:04:09,690 --> 00:04:12,430 El valor era esencialmente verdaderas o falsas. 86 00:04:12,430 --> 00:04:13,900 ¿Es la palabra en el diccionario? 87 00:04:13,900 --> 00:04:18,279 Así que, cuando usted HASHED una palabra como manzana para ver si la manzana está en el diccionario, 88 00:04:18,279 --> 00:04:21,820 su función de comprobación presumiblemente devuelto verdadero o falso. 89 00:04:21,820 --> 00:04:24,120 Entonces, eso es efectivamente el valor que está recibiendo de vuelta. 90 00:04:24,120 --> 00:04:26,456 >> Pero vimos el lunes brevemente, que sin duda puede 91 00:04:26,456 --> 00:04:28,830 asociar más interesante valores que sólo verdadero o falso 92 00:04:28,830 --> 00:04:30,790 con teclas, como la manzana. 93 00:04:30,790 --> 00:04:33,909 Usted podría devolver un cadena arbitraria, y de hecho, 94 00:04:33,909 --> 00:04:36,200 eso es lo que $ _GET y estos otras variables le permiten hacer. 95 00:04:36,200 --> 00:04:40,595 >> Así que $ _POST es similar en espíritu, pero si usted envía un formulario a través de correos, 96 00:04:40,595 --> 00:04:44,490 un método HTTP que es diferente usado para cosas como tarjetas de crédito, 97 00:04:44,490 --> 00:04:48,410 y la información privada, e incluso información binaria como fotos, 98 00:04:48,410 --> 00:04:51,840 esas cosas terminan dentro de $ _POST. 99 00:04:51,840 --> 00:04:53,770 Y en realidad los archivos como jpeg y todo eso, 100 00:04:53,770 --> 00:04:58,290 incluso hay otro que no es aquí llamado $ _FILES también. 101 00:04:58,290 --> 00:05:01,280 >> Por lo tanto, el servidor no vamos a detenernos en demasiado mucho, pero te da acceso 102 00:05:01,280 --> 00:05:04,860 para ordenar los detalles de bajo nivel sobre el propio servidor que está utilizando. 103 00:05:04,860 --> 00:05:07,430 Cookies y reunión, sin embargo, veremos efectivamente ahora. 104 00:05:07,430 --> 00:05:10,940 El último es lo que utilizamos para implementar la noción de un carrito de la compra. 105 00:05:10,940 --> 00:05:14,480 A un super simple, pero el recuerdo que tuvimos este ejemplo aquí, 106 00:05:14,480 --> 00:05:17,640 contando cuántas veces había visitado esta página antes. 107 00:05:17,640 --> 00:05:20,850 >> Pero hoy en día, en lugar de sólo mirar el efecto de esto, vamos a abrir hasta 108 00:05:20,850 --> 00:05:22,640 Inspector de Chrome, que por lo general puede 109 00:05:22,640 --> 00:05:25,740 hacer haciendo clic derecho o control al hacer clic en cualquier parte de una página web, 110 00:05:25,740 --> 00:05:27,250 y luego elegir inspeccionar elemento. 111 00:05:27,250 --> 00:05:31,600 O usted puede ir a través de los menús que se describen en las especificaciones de pset6. 112 00:05:31,600 --> 00:05:35,020 Y yo voy a la pestaña Red aquí, y vamos a ver por un momento 113 00:05:35,020 --> 00:05:37,590 el tráfico HTTP que es yendo y viniendo. 114 00:05:37,590 --> 00:05:40,929 >> Déjame primero ir por delante y borrar caché de Chrome. 115 00:05:40,929 --> 00:05:43,470 Así que algunos de ustedes podrían estar familiarizados con esta técnica ya, 116 00:05:43,470 --> 00:05:45,790 y vamos a utilizarlo para propósitos de depuración aquí. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Ahora nosotros, como equipo los científicos van a empezar 119 00:05:50,890 --> 00:05:53,920 haciendo esto para la depuración fines, con lo cual 120 00:05:53,920 --> 00:05:55,910 vamos a borrar la caché, normalmente, por lo que 121 00:05:55,910 --> 00:05:57,670 puede deshacerse de cosas llamadas cookies. 122 00:05:57,670 --> 00:06:01,700 Así que es probable que estés familiarizado general con lo que las cookies son, o al menos 123 00:06:01,700 --> 00:06:04,370 que existen, pero lo que es su comprensión de ellos, 124 00:06:04,370 --> 00:06:06,920 como sólo un usuario de ordenadores, lo que es una cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Sí. 127 00:06:09,990 --> 00:06:14,391 >> AUDIENCIA: Es un poco de-- así, no bit en un plazo de ciencias de la computación. 128 00:06:14,391 --> 00:06:18,303 Es una pieza de datos que un sitio web envía a usted con el fin 129 00:06:18,303 --> 00:06:20,209 ser capaz de registrar las estadísticas en usted. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, bueno. 131 00:06:21,250 --> 00:06:24,980 Así que es una pieza de datos que un servidor, pone en su ordenador, 132 00:06:24,980 --> 00:06:28,840 y vamos a generalizar aún más, es una clave value-- bien, 133 00:06:28,840 --> 00:06:30,064 eso es cada vez más precisa. 134 00:06:30,064 --> 00:06:31,980 Se trata de una pieza de información, una pieza de datos, 135 00:06:31,980 --> 00:06:34,430 que un servidor es capaz para poner en su computadora 136 00:06:34,430 --> 00:06:38,592 y muy a menudo, el servidor hace esto con el fin de recordar quién eres. 137 00:06:38,592 --> 00:06:40,300 Así, por ejemplo, las probabilidades es probablemente estás 138 00:06:40,300 --> 00:06:42,982 iniciado sesión en sitios como Facebook, o Gmail, o otros antes, 139 00:06:42,982 --> 00:06:44,940 y que se conecte con su nombre de usuario y contraseña, 140 00:06:44,940 --> 00:06:49,000 y después de eso, para algún número de minutos, horas o incluso días, 141 00:06:49,000 --> 00:06:52,970 el servidor recuerda que que son, de hecho, ha identificado. 142 00:06:52,970 --> 00:06:54,600 Ahora, ¿cómo es que realmente está sucediendo? 143 00:06:54,600 --> 00:06:58,630 Porque ciertamente no está volver a escribir su nombre de usuario y contraseña cada vez que 144 00:06:58,630 --> 00:07:00,760 se desplaza a un página diferente en Facebook. 145 00:07:00,760 --> 00:07:02,570 Así resulta que el las galletas son la respuesta. 146 00:07:02,570 --> 00:07:05,360 >> Una cookie que se pueda imaginar como, Algo así como, una mano digitales 147 00:07:05,360 --> 00:07:09,200 sello que usted puede conseguir en una diversión parque o un club que en esencia 148 00:07:09,200 --> 00:07:11,740 Indica que usted ha estado aquí antes, y que ya ha 149 00:07:11,740 --> 00:07:16,070 muestra su identificación con el gorila, para instancia, y que el club o el parque 150 00:07:16,070 --> 00:07:19,050 ahora debe asumir que usted ya se han autenticado. 151 00:07:19,050 --> 00:07:21,270 Usted ya ha sido identificado por el mismo. 152 00:07:21,270 --> 00:07:24,740 >> Así que con eso en mente, vamos a abrir hasta contador aquí. 153 00:07:24,740 --> 00:07:27,220 Déjame ir por delante, que acabo de hacer, y borrar todos mis galletas. 154 00:07:27,220 --> 00:07:29,970 Y ahora lo que voy a hacer es mantenga Mayús, sólo por si acaso, 155 00:07:29,970 --> 00:07:31,740 y volver a cargar la página por la fuerza. 156 00:07:31,740 --> 00:07:34,170 Shift sólo asegúrese que nada se almacena en caché. 157 00:07:34,170 --> 00:07:36,850 Y aquí está la petición que iba y venía. 158 00:07:36,850 --> 00:07:41,560 Así que aquí tenemos una solicitud, y vamos mí el zoom aquí abajo, y mucho de esto 159 00:07:41,560 --> 00:07:44,710 es una especie de detalles poco interesantes para ahora que el navegador tiene automáticamente 160 00:07:44,710 --> 00:07:47,800 envió, pero vamos a haga clic en Ver Fuente para ver los encabezados de primas. 161 00:07:47,800 --> 00:07:51,700 >> Y si usted ha zambullido en pset6 ya, que sin duda va a reconocer las cosas 162 00:07:51,700 --> 00:07:54,990 de esta manera, y tal vez algunos de estas otras líneas aquí, 163 00:07:54,990 --> 00:07:59,040 pero lo que es más interesante para hoy si me desplazo hacia abajo, no a la solicitud 164 00:07:59,040 --> 00:08:02,870 pero a la respuesta de la llamada, esta línea probablemente parece familiar. 165 00:08:02,870 --> 00:08:04,977 Eso es una buena cosa cuando ves a un 200 OK. 166 00:08:04,977 --> 00:08:07,060 Al parecer este es el fecha y hora en el servidor 167 00:08:07,060 --> 00:08:08,268 y hay un montón de cosas. 168 00:08:08,268 --> 00:08:09,290 Oh, esto es interesante. 169 00:08:09,290 --> 00:08:13,430 >> Resulta que cada vez que utilice PHP, al menos en este servidor, 170 00:08:13,430 --> 00:08:16,360 el servidor escupe lo versión de PHP que está utilizando. 171 00:08:16,360 --> 00:08:18,962 Lo cual, en realidad, para la seguridad propósitos, no es una buena cosa. 172 00:08:18,962 --> 00:08:21,170 Pero, vamos a volver a eso en otro momento, tal vez. 173 00:08:21,170 --> 00:08:25,740 Pero ahora se trata de la línea jugosa hoy, y vimos brevemente algunos de estos, 174 00:08:25,740 --> 00:08:29,240 Creo que con esto cuando nos clavaban alrededor del inspector en ese momento, 175 00:08:29,240 --> 00:08:33,380 conjunto cookie es lo que está plantando esa pequeña pieza de información 176 00:08:33,380 --> 00:08:34,890 en su ordenador. 177 00:08:34,890 --> 00:08:37,490 >> Este es un encabezado HTTP eso es efectivamente 178 00:08:37,490 --> 00:08:39,970 decirle a su navegador, Chrome, IE, lo que sea, 179 00:08:39,970 --> 00:08:44,480 Hey tienda navegador en el usuario de disco duro o en la memoria RAM del usuario, 180 00:08:44,480 --> 00:08:49,680 una clave llamada PHPSESSID, que es una notación abreviada para el ID de sesión, 181 00:08:49,680 --> 00:08:53,670 y darle un valor de 0vlk8t, punto, punto, punto. 182 00:08:53,670 --> 00:08:56,480 Una muy larga seudo cadena alfanumérica aleatoria. 183 00:08:56,480 --> 00:08:59,480 Es sólo un número muy grande, pero que está codificado con letras y números 184 00:08:59,480 --> 00:09:03,550 de modo que el tamaño de la misma puede ser incluso más grande que números por sí solos. 185 00:09:03,550 --> 00:09:06,947 Y luego, por cierto, Path = /, que Sólo significa que la cookie debería ser 186 00:09:06,947 --> 00:09:08,780 asociado con el totalidad de la página web, 187 00:09:08,780 --> 00:09:11,150 no sólo una específica La página de todo el asunto. 188 00:09:11,150 --> 00:09:12,930 Así que este es el sello que la mano virtual. 189 00:09:12,930 --> 00:09:16,330 Es como si el servidor, Facebook, o en nuestro caso el aparato, 190 00:09:16,330 --> 00:09:21,140 tiene 0vlk8t literalmente escrito y así sucesivamente, en su mano. 191 00:09:21,140 --> 00:09:24,360 Note lo del servidor, no hacerlo es que no es 192 00:09:24,360 --> 00:09:27,730 almacenar mi nombre de usuario, sin duda no almacenar la contraseña. 193 00:09:27,730 --> 00:09:31,710 >> En lugar de ello, parece ser almacenar información pseudoaleatoria 194 00:09:31,710 --> 00:09:35,010 de modo que nadie puede adivinar lo que mi sello en la mano es. 195 00:09:35,010 --> 00:09:37,590 En el lado del servidor, Mientras tanto, el servidor 196 00:09:37,590 --> 00:09:40,370 va a recordar, probablemente en una base de datos o algo así, 197 00:09:40,370 --> 00:09:46,490 que el usuario, que en el futuro presenta un sello de mano de 0vlk8t, punto, 198 00:09:46,490 --> 00:09:51,440 dot, dot, debe ser asociado con esta particular, carrito de compras, por así decirlo. 199 00:09:51,440 --> 00:09:55,060 En otras palabras, si me voy ahora volver aquí y volver a cargar esta página, 200 00:09:55,060 --> 00:09:58,020 ¿cómo sabe el servidor que visité una vez? 201 00:09:58,020 --> 00:10:01,730 >> O si lo hago de nuevo, ¿cómo funciona el servidor Sé que he visitado que dos veces? 202 00:10:01,730 --> 00:10:04,680 Bueno, si voy a esta más reciente solicitud, que 203 00:10:04,680 --> 00:10:09,150 ahora es la tercera que he enviado en total, cuenta mi petición ahora. 204 00:10:09,150 --> 00:10:11,300 Todavía hay esta solicitar hasta aquí, mismo 205 00:10:11,300 --> 00:10:15,040 como antes, todavía hay un montón de cosas que hemos ignorado como antes, 206 00:10:15,040 --> 00:10:19,350 pero el último encabezado, este tiempo, porque he estado aquí antes, 207 00:10:19,350 --> 00:10:21,980 es una presentación de este sello virtual de la mano. 208 00:10:21,980 --> 00:10:28,957 >> Por lo cual esta línea de galletas aquí, no se establece pero dos puntos de galletas PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 eso es de automático sólo mi navegador presentación de este sello en la mano para que 210 00:10:32,040 --> 00:10:37,910 Ahora el servidor, tan pronto como se da cuenta, ooh, ésta es punto 0vlk8t usuario, punto, punto, 211 00:10:37,910 --> 00:10:42,010 Ahora puedo recordar que él o ella es y volver a asociar con lo que el usuario 212 00:10:42,010 --> 00:10:46,450 información Marcar, y todos que la información se puede almacenar por usted, 213 00:10:46,450 --> 00:10:50,130 el programador, en $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Así que para ser claros, si abro muy rápido en gedit ese archivo real, counter.php, 215 00:10:57,170 --> 00:11:02,340 en mi directorio público host local como antes, observe que, de hecho, 216 00:11:02,340 --> 00:11:06,860 Estoy en última instancia, el almacenamiento en $ _SESSION Comillas "contador" 217 00:11:06,860 --> 00:11:10,110 el valor del contador anterior, que Que recibo de estas líneas hasta aquí que nosotros 218 00:11:10,110 --> 00:11:13,010 mirado tiempo pasado más uno. 219 00:11:13,010 --> 00:11:14,980 Así que debajo de la capilla, eso es todas las cookies son. 220 00:11:14,980 --> 00:11:17,563 Es justo el tipo de la tecnología digital sello en la mano que van y vienen, 221 00:11:17,563 --> 00:11:20,450 y, francamente, si abre Chrome Inspector en cualquier sitio web 222 00:11:20,450 --> 00:11:22,580 usted visita hoy, con super alta probabilidad, 223 00:11:22,580 --> 00:11:25,450 usted va a ver tal vez uno, tal vez media docena de galletas 224 00:11:25,450 --> 00:11:26,650 ser recordado por usted. 225 00:11:26,650 --> 00:11:29,500 >> Y peor aún, si los sitio web que está visitando 226 00:11:29,500 --> 00:11:32,640 todas tienen anuncios, el cual es ciertamente muy común hoy en día, 227 00:11:32,640 --> 00:11:36,100 y si esos anuncios están llegando de algún partido central, alguien 228 00:11:36,100 --> 00:11:39,000 como Google o AdWords, ya que llame a uno de sus productos 229 00:11:39,000 --> 00:11:42,880 u otros proveedores que vender anuncios, lo que es interesante, 230 00:11:42,880 --> 00:11:46,510 y, francamente, lo que es un poco preocupante, sobre el funcionamiento de HTTP, 231 00:11:46,510 --> 00:11:50,855 es que si usted tiene un anuncio embebido en Facebook.com y Google.com, 232 00:11:50,855 --> 00:11:54,240 y Harvard.edu, cualquier número de sitios web, por lo que es tal 233 00:11:54,240 --> 00:11:58,130 que hay un intermediario que está cumpliendo hasta los anuncios para los tres de esos sitios web, 234 00:11:58,130 --> 00:12:02,110 resulta que la las cookies son por dominio. 235 00:12:02,110 --> 00:12:05,910 >> Así que si usted tiene un anuncio que viene de la misma empresa en diferentes sitios web, 236 00:12:05,910 --> 00:12:11,140 que la empresa puede realizar un seguimiento eficaz que usted es a través de todos los sitios web. 237 00:12:11,140 --> 00:12:13,140 Harvard podría no saber usted está visitando Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook podría no saber y usted está visitando Harvard. 239 00:12:15,306 --> 00:12:18,160 Pero cualquiera que sea el servicio de anuncios Están usando si ese dominio es 240 00:12:18,160 --> 00:12:21,710 presente tanto en Harvard.edu web páginas y páginas web Facebook.com, 241 00:12:21,710 --> 00:12:26,850 este hombre de mediana seguramente sabe quién es usted porque de estas cookies se comparten 242 00:12:26,850 --> 00:12:30,910 a través de, o en vez de, que los llamados intermediarios. 243 00:12:30,910 --> 00:12:33,820 >> Así que vamos a volver a esto en implicaciones para la seguridad de los mismos, 244 00:12:33,820 --> 00:12:37,170 pero hay una gran cantidad de información siendo almacenado sobre usted en cualquier momento que 245 00:12:37,170 --> 00:12:40,120 visitar la mayoría de cualquier página web en internet y lo que realmente 246 00:12:40,120 --> 00:12:42,877 reduce a este mecanismo muy simple. 247 00:12:42,877 --> 00:12:44,710 ¿Qué sucede, entonces, si eres muy paranoico 248 00:12:44,710 --> 00:12:48,190 y usted decide ir en Chrome o IE o lo que sea y desactivar las cookies? 249 00:12:48,190 --> 00:12:49,365 Lo que sucede? 250 00:12:49,365 --> 00:12:50,790 ¿Sí? 251 00:12:50,790 --> 00:12:53,170 Usted realmente-- que has hecho este derecho? 252 00:12:53,170 --> 00:12:54,350 Okay. 253 00:12:54,350 --> 00:12:55,994 No, adelante. 254 00:12:55,994 --> 00:12:59,645 >> AUDIENCIA: Algunos sitios web no tienen una función sin ella como Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. MALAN: ¡Sí! 256 00:13:00,520 --> 00:13:02,311 Así que algunos sitios web se acaba de dejar de trabajar. 257 00:13:02,311 --> 00:13:05,520 Y en la mayoría de los sitios web de estos días que fundamentalmente se basan en cookies, 258 00:13:05,520 --> 00:13:08,360 especialmente si tienen que inicie sesión en, sólo lo van a romper. 259 00:13:08,360 --> 00:13:10,360 Debido a considerar la alternativa, si el sitio 260 00:13:10,360 --> 00:13:14,480 no tiene manera de recordar quién eres, y, por tanto, su navegador web no es 261 00:13:14,480 --> 00:13:16,949 representa con cada HTTP solicitud de este sello en la mano, 262 00:13:16,949 --> 00:13:18,740 efectivamente un sitio web como ir de Facebook 263 00:13:18,740 --> 00:13:22,050 a tener que le pedirá que conectarse cada vez maldito 264 00:13:22,050 --> 00:13:26,200 que cambie de página, o haga clic en un enlace, que No es sin duda una particularmente buena de usuario 265 00:13:26,200 --> 00:13:26,920 experiencia. 266 00:13:26,920 --> 00:13:30,020 >> Así que allí, también, es entre las compensaciones. 267 00:13:30,020 --> 00:13:34,140 Así que sin más preámbulos, vamos a echar por supuesto que con la programación web, 268 00:13:34,140 --> 00:13:37,630 en lenguajes como PHP, usted puede recordar información como la que en el problema establecido 269 00:13:37,630 --> 00:13:41,550 siete al implementar su propio Sitio web de E * Trade-como con los que comprar 270 00:13:41,550 --> 00:13:45,710 y vender acciones, usted recordará exactamente lo que el usuario ha comprado y vendido 271 00:13:45,710 --> 00:13:49,110 y que él o ella es a través de este período de sesiones. 272 00:13:49,110 --> 00:13:51,110 Pero vamos a necesitar una manera más elegante que el correo electrónico 273 00:13:51,110 --> 00:13:52,640 para comenzar a mantener la información alrededor. 274 00:13:52,640 --> 00:13:53,140 Derecha? 275 00:13:53,140 --> 00:13:56,780 >> El lunes, hablamos sobre Frosh mensajes instantáneos y cómo en la versión uno de ese sitio web, 276 00:13:56,780 --> 00:14:00,250 Hace años, todo lo que hicimos fue correo electrónico el Proctor quién es 277 00:14:00,250 --> 00:14:04,250 a cargo de los deportes intramuros programa, el nombre y el género, 278 00:14:04,250 --> 00:14:07,330 y si son o no son un capitán, y el dormitorio de alguien que es 279 00:14:07,330 --> 00:14:10,136 inscribirse en un deporte intramural. 280 00:14:10,136 --> 00:14:13,010 Así que no es malo, pero él o ella entonces tenía para recorrer a través de su correo electrónico, 281 00:14:13,010 --> 00:14:16,010 hacer una hoja de cálculo o algo así que, para mantener todo organizado. 282 00:14:16,010 --> 00:14:19,750 Así que seguramente nosotros como programadores puede hacer esto para que Proctor. 283 00:14:19,750 --> 00:14:22,970 Y así entrar en SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 que se va a parecer bastante diferente a ambos C y PHP, 285 00:14:26,050 --> 00:14:30,990 y te sumerjas en mucho más manos en PHP y establecieron siete problema sino también de SQL, 286 00:14:30,990 --> 00:14:35,310 o SQL, este es un lenguaje que que se utiliza para hablar con una base de datos. 287 00:14:35,310 --> 00:14:36,480 >> Pero lo que es una base de datos? 288 00:14:36,480 --> 00:14:38,440 Bueno usted piensa en un base de datos, al menos por ahora, 289 00:14:38,440 --> 00:14:41,750 como acaba de ser como un archivo de Excel, o si usted es un archivo de números de usuario de un Mac, 290 00:14:41,750 --> 00:14:44,400 o si usted es una de Google Apps usuario una hoja de cálculo Google, 291 00:14:44,400 --> 00:14:49,120 es efectivamente una base de datos, o realmente específicamente una base de datos relacional. 292 00:14:49,120 --> 00:14:53,070 Una base de datos relacional es sólo algo que tiene filas y columnas, 293 00:14:53,070 --> 00:14:56,440 y usted puede almacenar cualquier tipo de información en estas filas o columnas. 294 00:14:56,440 --> 00:15:00,480 >> Pero lo que es bueno de SQL, y sobre bases de datos reales, no sólo 295 00:15:00,480 --> 00:15:04,910 hojas de cálculo o Google hojas de cálculo, es que se puede utilizar un lenguaje 296 00:15:04,910 --> 00:15:09,000 para ejecutar realmente las consultas para insertar datos, para eliminar los datos, 297 00:15:09,000 --> 00:15:11,620 para buscar los datos, incluso lo más importante, y que 298 00:15:11,620 --> 00:15:16,110 no tienen que usarlo bastante manualmente como usted puede ser típicamente un Google 299 00:15:16,110 --> 00:15:17,690 hoja de cálculo como éste. 300 00:15:17,690 --> 00:15:22,217 >> Así que en SQL, hay un montón de declaraciones o piezas fundamentales 301 00:15:22,217 --> 00:15:23,300 de funcionalidad incorporada. 302 00:15:23,300 --> 00:15:26,450 Hay muchos más que éstos, pero usted puede ir a una enorme distancia 303 00:15:26,450 --> 00:15:28,620 con sólo saber que este lenguaje llamado 304 00:15:28,620 --> 00:15:30,840 SQL tiene al menos cuatro declaraciones que usted puede aprovechar. 305 00:15:30,840 --> 00:15:34,420 >> Eliminar, para la eliminación de los datos, Inserte, para añadir filas, 306 00:15:34,420 --> 00:15:37,340 Actualización, para cambiar filas, y Selección, 307 00:15:37,340 --> 00:15:39,860 para volver a las filas y eso es precisamente lo que hace SQL. 308 00:15:39,860 --> 00:15:43,810 Se opera por completo en filas de modo que al insertar o quitar, 309 00:15:43,810 --> 00:15:47,470 o actualización, o seleccionar lo que eres volver a estar como un conjunto de resultados de la llamada, 310 00:15:47,470 --> 00:15:49,690 como un conjunto de filas. 311 00:15:49,690 --> 00:15:51,700 Un montón de filas de una tabla. 312 00:15:51,700 --> 00:15:54,050 >> Así que de vuelta en el día, y aún hoy en día, 313 00:15:54,050 --> 00:15:56,560 se puede interactuar con el base de datos mediante una línea de comandos, 314 00:15:56,560 --> 00:15:59,691 pero no es particularmente divertido de usar esta ventana de estilo en blanco y negro 315 00:15:59,691 --> 00:16:02,190 y, de hecho ejecutar comandos y meter alrededor de su base de datos. 316 00:16:02,190 --> 00:16:06,054 Una interfaz gráfica de usuario o GUI, es mucho más preferible, sin duda, 317 00:16:06,054 --> 00:16:08,970 y por lo que la herramienta se recomienda y preinstalado para usted en el aparato 318 00:16:08,970 --> 00:16:10,580 se llama phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 Es una coincidencia total que el nombre de esta cosa tiene PHP en el mismo, 320 00:16:14,060 --> 00:16:17,430 sólo significa que las personas quien escribió este programa ellos mismos 321 00:16:17,430 --> 00:16:18,670 escribió en PHP. 322 00:16:18,670 --> 00:16:23,740 >> Pero es en última instancia acerca de la administración un servidor de base de datos, como un servidor MySQL 323 00:16:23,740 --> 00:16:26,589 que usted puede ser que tenga, como usted hacer, en el aparato CS50. 324 00:16:26,589 --> 00:16:29,130 Así que no hay más detalle aquí que tenemos que cuidar lo de hoy, 325 00:16:29,130 --> 00:16:33,280 pero lo que es clave es la de la izquierda lado es una lista de las bases de datos 326 00:16:33,280 --> 00:16:36,040 que usted tiene en su computadora, en su electrodoméstico CS50, 327 00:16:36,040 --> 00:16:40,090 o venir proyectos finales que te pueden tener a un tercero, una empresa de 328 00:16:40,090 --> 00:16:43,415 sitio web o servidor web, que usted podría estar pagando por el espacio. 329 00:16:43,415 --> 00:16:45,290 Así que a la izquierda es el bases de datos, uno de los cuales 330 00:16:45,290 --> 00:16:48,750 es pset7 que pedí prestado a partir del próximo pset semanas, y luego en la parte superior 331 00:16:48,750 --> 00:16:51,570 no notan que hay una montón de pestañas, una de las cuales 332 00:16:51,570 --> 00:16:55,150 es las bases de datos, SQL, estado, usuarios, exportación y así sucesivamente. 333 00:16:55,150 --> 00:16:56,900 Así que usted puede recorrer un largo camino sólo por darse cuenta 334 00:16:56,900 --> 00:16:59,770 que la mayoría de la interfaz de usuario está en la columna superior izquierda 335 00:16:59,770 --> 00:17:02,650 y en la parte superior a la altura. 336 00:17:02,650 --> 00:17:04,980 Entonces, ¿qué podemos hacer realmente con esto? 337 00:17:04,980 --> 00:17:08,609 Bueno, vamos a empezar la creación de un bit de información de la siguiente manera. 338 00:17:08,609 --> 00:17:11,760 >> Supongamos que el siguiente es el caso, como será en pocos días, 339 00:17:11,760 --> 00:17:14,440 desea implementar un sitio web, llamado CS50 Finanzas, 340 00:17:14,440 --> 00:17:17,328 y este sitio web le permite comprar entre comillas y vender acciones. 341 00:17:17,328 --> 00:17:19,619 Y que va a averiguar el precio de esas acciones, 342 00:17:19,619 --> 00:17:22,380 en última instancia, como se verá, hablando con Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Lo cual, maravillosamente, tiene un servicio gratuito por lo que puede pasar en un tablero de cotizaciones 344 00:17:26,250 --> 00:17:29,830 como GOOG para Google, y lo hará darle de nuevo stock actual de Google 345 00:17:29,830 --> 00:17:32,250 precio en el pasado pocos minutos por lo menos. 346 00:17:32,250 --> 00:17:35,080 >> Así que vamos a usar que, en última instancia, fingir para el usuario 347 00:17:35,080 --> 00:17:37,750 para comprar y vender real stocks utilizando dinero virtual, 348 00:17:37,750 --> 00:17:39,750 pero la primera cosa el usuario va a ver 349 00:17:39,750 --> 00:17:43,850 es esta pantalla de inicio de sesión que les pide por su nombre de usuario y contraseña. 350 00:17:43,850 --> 00:17:46,540 Y así, uno de los primeros desafíos para usted en pset7 351 00:17:46,540 --> 00:17:50,460 va a ser la implementación de la parte de atrás base de datos, la hoja de cálculo si se quiere, 352 00:17:50,460 --> 00:17:53,369 eso va a almacenar nombres de usuarios y contraseñas 353 00:17:53,369 --> 00:17:56,660 y en última instancia, lo que las existencias que poseen, y cuántos, y cuánto dinero tienen, 354 00:17:56,660 --> 00:18:00,110 por lo que un montón de otras cosas en otras tablas u hojas de cálculo. 355 00:18:00,110 --> 00:18:05,020 >> Así que echemos un vistazo a cómo esta podría parecer a primera vista. 356 00:18:05,020 --> 00:18:06,980 Voy a volver a el aparato y estoy 357 00:18:06,980 --> 00:18:14,102 va a ir a esta URL aquí phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 y verás que me lleva a una interfaz 359 00:18:16,060 --> 00:18:18,520 exactamente como lo vimos en el captura de pantalla, y aquí 360 00:18:18,520 --> 00:18:21,560 tener una base de datos adicional llamada conferencia para hoy 361 00:18:21,560 --> 00:18:24,280 y déjame ir por delante primera y haga clic en pset7. 362 00:18:24,280 --> 00:18:27,940 >> Me parece que tienen un par de opciones, uno para nueva, para la creación de una nueva tabla, 363 00:18:27,940 --> 00:18:30,770 y un enlace a los usuarios, que es una mesa que ya creado. 364 00:18:30,770 --> 00:18:31,790 Entonces, ¿qué es una mesa? 365 00:18:31,790 --> 00:18:33,740 Así que si usted utilizó Excel antes, y si usted tiene 366 00:18:33,740 --> 00:18:37,110 números usados ​​o Google Las hojas de cálculo, que abren una ventana 367 00:18:37,110 --> 00:18:39,350 y te dan un montón de filas y columnas, 368 00:18:39,350 --> 00:18:43,120 pero por lo general tienen hojas de trabajo a lo largo de la parte inferior, o pestañas separadas. 369 00:18:43,120 --> 00:18:46,140 Usted puede pensar en cada hoja de cálculo como una tabla 370 00:18:46,140 --> 00:18:51,150 de manera que la base de datos, en última instancia, es una combinación de una o más tablas, uno 371 00:18:51,150 --> 00:18:54,064 o más hojas de trabajo, en el mundo de una hoja de cálculo normal. 372 00:18:54,064 --> 00:18:55,980 Así que déjame ir por delante y haga clic en esta hoja de trabajo 373 00:18:55,980 --> 00:18:59,420 que premade, llamados usuarios, alias 374 00:18:59,420 --> 00:19:00,700 Tabla de base de datos. 375 00:19:00,700 --> 00:19:04,130 Y si me desplazo hasta aquí, déjame Alejar un poco, 376 00:19:04,130 --> 00:19:08,479 esto es lo que está diciendo phpMyAdmin nosotros es dentro de esta tabla en este momento. 377 00:19:08,479 --> 00:19:11,020 Es un poco confuso al principio mirada porque la interfaz de usuario no es 378 00:19:11,020 --> 00:19:15,140 la cosa más bonita del mundo, pero lo interesante es esta parte aquí. 379 00:19:15,140 --> 00:19:17,970 Identificación, nombre de usuario y hash. 380 00:19:17,970 --> 00:19:20,510 >> De antemano, y podrás mano esto en un problema establecido siete, 381 00:19:20,510 --> 00:19:25,050 te damos un archivo que contiene un super pequeña tabla de base de datos, prestado en realidad 382 00:19:25,050 --> 00:19:27,070 de la edición pirata del problema fijó dos, 383 00:19:27,070 --> 00:19:29,480 dentro de los cuales hay seis filas. 384 00:19:29,480 --> 00:19:32,720 Uno de Belinda toda la hasta llegar a uno de Zamyla, 385 00:19:32,720 --> 00:19:35,980 y notar a la izquierda de los nombres de usuarios son identificadores únicos como uno, 386 00:19:35,980 --> 00:19:39,410 dos, tres, cuatro, cinco, seis, números enteros, y luego a la derecha son los hashes. 387 00:19:39,410 --> 00:19:42,780 >> Y si, las probabilidades son, usted no hizo el problema edición pirata informático fijó dos, 388 00:19:42,780 --> 00:19:46,560 pero un hash es igual que un cifrado contraseña con algunas advertencias. 389 00:19:46,560 --> 00:19:49,470 Y así, lo que se ve aquí son las versiones cifradas de los seis 390 00:19:49,470 --> 00:19:52,950 de nuestras contraseñas de problema configurar la edición de dos piratas cibernéticos. 391 00:19:52,950 --> 00:19:56,500 Ahora a la izquierda es sólo un poco de materia GUI, edición de esta fila, copiar esta fila, 392 00:19:56,500 --> 00:19:57,630 la supresión de esta fila. 393 00:19:57,630 --> 00:19:59,840 >> Pero lo que es interesante ahora es el siguiente. 394 00:19:59,840 --> 00:20:03,810 Puedo empezar en realidad experimentar con esta tabla. 395 00:20:03,810 --> 00:20:07,330 Así que si me fuere y haga clic en el SQL ficha, me sale este cuadro de texto grande. 396 00:20:07,330 --> 00:20:10,190 Y esta no es la forma en que vamos a hacerlo cuando en realidad la escritura de código. 397 00:20:10,190 --> 00:20:12,700 Para ser claros, phpMyAdmin es sólo una herramienta que es 398 00:20:12,700 --> 00:20:16,450 va a dejar que nos hurgar la base de datos y vamos a experimentar con las consultas. 399 00:20:16,450 --> 00:20:19,430 >> Así, por ejemplo, supongamos que Ejecuto exactamente esto. 400 00:20:19,430 --> 00:20:22,820 Select, que es uno de los palabras clave que he mencionado antes, estrella, 401 00:20:22,820 --> 00:20:25,900 que representa a todos las columnas de una tabla. 402 00:20:25,900 --> 00:20:26,820 Por lo que la tabla? 403 00:20:26,820 --> 00:20:27,990 Bueno, los usuarios. 404 00:20:27,990 --> 00:20:29,950 Y aviso no es esto convención raro en SQL 405 00:20:29,950 --> 00:20:32,140 donde realmente se utiliza volver garrapatas, por lo general, 406 00:20:32,140 --> 00:20:35,940 cotizaciones no individuales y dobles comillas no cuando se habla de mesas de nombres, 407 00:20:35,940 --> 00:20:38,990 por lo que la cotización de espalda es la cosa en la superior izquierda de su teclado más 408 00:20:38,990 --> 00:20:39,720 probable. 409 00:20:39,720 --> 00:20:41,850 >> Así que déjame ir por delante ahora y simplemente dejar que solos 410 00:20:41,850 --> 00:20:46,020 y desplácese hacia abajo y haga clic en Ir, y estamos en realidad va a ver lo mismo. 411 00:20:46,020 --> 00:20:52,410 Acabamos de ejecutar una consulta SQL diciendo seleccione todo estrella 412 00:20:52,410 --> 00:20:55,610 de mesa llamado a los usuarios, y lo que recibe es esto. 413 00:20:55,610 --> 00:20:58,400 En última instancia, vamos a ser capaces de hacer eso mismo en código, 414 00:20:58,400 --> 00:21:02,109 pero por ahora todo lo que quería no era verla en mi navegador. 415 00:21:02,109 --> 00:21:03,900 Bueno vamos a hacer algo un poco diferente. 416 00:21:03,900 --> 00:21:08,330 Permítanme volver a la pestaña SQL, y vamos a decir que lo que? 417 00:21:08,330 --> 00:21:11,520 Zamyla ha perdido toda su dinero, y por lo tanto es 418 00:21:11,520 --> 00:21:13,190 tiempo para nosotros para borrar ella como un usuario. 419 00:21:13,190 --> 00:21:14,630 Ella ya no está en sesión. 420 00:21:14,630 --> 00:21:18,870 >> Así que voy a decir eliminar de-- así, mantener la capitalización 421 00:21:18,870 --> 00:21:23,080 por coherencia, eliminar desde donde los usuarios. 422 00:21:23,080 --> 00:21:25,430 Y así, podemos tener estos predicados, o éstos 423 00:21:25,430 --> 00:21:31,180 calificadores, al final de mi declaración dónde y cómo podría eliminar Zamyla? 424 00:21:31,180 --> 00:21:34,190 Por su nombre Zamyla, por lo que el columna, una de las columnas 425 00:21:34,190 --> 00:21:37,950 fue nombrado, por lo que donde nombre = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 Y aquí yo uso doble frases o citas individuales, 427 00:21:40,000 --> 00:21:42,958 sólo utiliza la parte de atrás, cuando las garrapatas hablando de los nombres, por ejemplo, 428 00:21:42,958 --> 00:21:45,130 de tablas o campos. 429 00:21:45,130 --> 00:21:47,440 Y permítanme haga clic en Ir aquí. 430 00:21:47,440 --> 00:21:50,400 Y ahora, la página web es siendo un poco tenso. 431 00:21:50,400 --> 00:21:53,620 >> O, lo que realmente quieres para ejecutar delete de los usuarios donde nombre es igual Zamyla? 432 00:21:53,620 --> 00:21:54,680 Sí. 433 00:21:54,680 --> 00:22:01,900 Así que ahora, si nos remontamos a mi mesa los usuarios hacen clic, observe que Hm. 434 00:22:01,900 --> 00:22:02,530 Me equivoqué. 435 00:22:02,530 --> 00:22:04,070 Y, de hecho, que tipo de hecho clic de distancia tan rápido 436 00:22:04,070 --> 00:22:06,195 que ni siquiera ve el mensaje de error de color rojo, tal vez. 437 00:22:06,195 --> 00:22:07,649 ¿Qué hice mal? 438 00:22:07,649 --> 00:22:09,690 AUDIENCIA: Usted no necesita para capitalizar su nombre. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Sí yo capitalizado su nombre, 440 00:22:11,260 --> 00:22:13,770 pero su username-- realidad yo hizo un par de errores, ¿no? 441 00:22:13,770 --> 00:22:16,720 Uno de ellos, su nombre de usuario es zamyla, Z minúscula, 442 00:22:16,720 --> 00:22:20,140 y el nombre de la columna es nombre de usuario, no el nombre, por lo que vamos a hacer esto de nuevo. 443 00:22:20,140 --> 00:22:25,750 Déjame ir por delante y eliminar de los usuarios en su 444 00:22:25,750 --> 00:22:28,990 nombre de usuario es igual entre comillas "Zamyla". 445 00:22:28,990 --> 00:22:29,490 Bien? 446 00:22:29,490 --> 00:22:32,600 Así que esto se ve un poco mejor, vamos me voy desplácese hacia abajo y haga clic en Ir. 447 00:22:32,600 --> 00:22:34,730 Todavía va a gritarme para estar seguro. 448 00:22:34,730 --> 00:22:37,500 Hago clic en Sí, y ahora veo, Francamente esto sucedió, realmente 449 00:22:37,500 --> 00:22:39,870 rápido, menos de una segundo, sin duda, esta 450 00:22:39,870 --> 00:22:41,720 es exactamente la pregunta que quedó ejecutado. 451 00:22:41,720 --> 00:22:45,617 Para confirmar, déjame haga clic en Usuarios y de hecho ahora Zamyla se ha ido. 452 00:22:45,617 --> 00:22:46,700 Ahora vamos a hacer lo contrario. 453 00:22:46,700 --> 00:22:49,320 Supongamos que quiere Gabe registrarse en el sitio web. 454 00:22:49,320 --> 00:22:52,825 ¿Cuál es la consulta SQL, ¿cuál es la comando que podía escribir para agregar Gabe? 455 00:22:52,825 --> 00:22:54,200 Bueno, es bastante sencillo. 456 00:22:54,200 --> 00:22:58,260 Insertar en los usuarios, y ahora se pone un poco críptico. 457 00:22:58,260 --> 00:23:03,190 Tengo que especificar, en el servidor, lo que los campos que desea asignar. 458 00:23:03,190 --> 00:23:06,630 Realmente no me importa lo de Gabe ID número, así que voy a omitir eso. 459 00:23:06,630 --> 00:23:11,360 Estoy en vez de ir a decir nombre de usuario, hachís, y luego 460 00:23:11,360 --> 00:23:14,960 los valores que quieren poner no va a ser Gabe. 461 00:23:14,960 --> 00:23:16,800 Y entonces su hachís, no sé. 462 00:23:16,800 --> 00:23:19,900 Así que por ahora, voy a dejar que como un grande para hacer. 463 00:23:19,900 --> 00:23:21,650 Volveremos a que en el conjunto del problema 464 00:23:21,650 --> 00:23:23,390 especificación de cómo en realidad se hace eso. 465 00:23:23,390 --> 00:23:24,630 >> Así notar, de nuevo, la sintaxis. 466 00:23:24,630 --> 00:23:28,430 Insertar en el nombre de la tabla, a continuación, un lista entre paréntesis de los campos, 467 00:23:28,430 --> 00:23:30,980 las columnas que desea añadir valores a, y luego sólo 468 00:23:30,980 --> 00:23:34,495 el mismo orden exacto de izquierda a derecha de los valores que desea añadir, 469 00:23:34,495 --> 00:23:36,870 Y es sólo porque envolver el texto es un poco largo. 470 00:23:36,870 --> 00:23:38,520 Así que ahora déjame haga clic en Ir. 471 00:23:38,520 --> 00:23:39,830 Inserta una fila. 472 00:23:39,830 --> 00:23:43,020 Y ahora si me voy de nuevo a los usuarios, lo que es interesante 473 00:23:43,020 --> 00:23:48,960 es que no sólo es Gabe ahora en el base de datos, lo que aparentemente es su Identificación? 474 00:23:48,960 --> 00:23:49,820 >> Bueno, es de siete. 475 00:23:49,820 --> 00:23:51,479 ¿Por qué es siete años cuando yo no agregarlo? 476 00:23:51,479 --> 00:23:54,020 Así que esto, también, es una de las características se obtiene de la base de datos. 477 00:23:54,020 --> 00:23:55,750 Un montón de construido en la funcionalidad. 478 00:23:55,750 --> 00:23:57,950 Resulta que cuando creado esta tabla, 479 00:23:57,950 --> 00:24:01,390 Yo preconfigurado es automáticamente asignar una ID de tal manera 480 00:24:01,390 --> 00:24:02,480 que se incrementa. 481 00:24:02,480 --> 00:24:05,470 Así que si alguna vez has hurgó, y visto lo que tu Facebook ID 482 00:24:05,470 --> 00:24:09,292 número es, en estos días no es realmente una cosa que hacer, pero Facebook como una API, 483 00:24:09,292 --> 00:24:11,750 Interfaz de programación de aplicaciones, por el que usted pueda volver 484 00:24:11,750 --> 00:24:14,430 un montón de datos sobre a ti mismo, de tus amigos, 485 00:24:14,430 --> 00:24:15,347 y sus conexiones. 486 00:24:15,347 --> 00:24:17,430 Y lo que solía ser amable de fresco, de nuevo en el día, 487 00:24:17,430 --> 00:24:19,510 fue a buscar lo que su Facebook fue el número de identificación. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg, de, por ejemplo, es tres 489 00:24:22,390 --> 00:24:23,890 ya que fue el autor del sitio. 490 00:24:23,890 --> 00:24:27,610 Y como dice la historia, que él creó dos cuentas de prueba, los usuarios de uno y dos, 491 00:24:27,610 --> 00:24:28,690 que luego se elimina. 492 00:24:28,690 --> 00:24:32,780 Y así, Zuck, como es su nombre de usuario en Facebook, es ID número tres, 493 00:24:32,780 --> 00:24:36,110 y todos nosotros tenemos un número mucho más grande que estos tres días. 494 00:24:36,110 --> 00:24:37,980 De hecho, en algún momento Facebook se alejó 495 00:24:37,980 --> 00:24:42,410 desde incluso utilizando un int, que es un valor de 32 bits, a la utilización de 496 00:24:42,410 --> 00:24:44,480 el siguiente paso, esencialmente un largo tiempo por lo que 497 00:24:44,480 --> 00:24:47,150 que podían acomodar incluso más usuarios se registren. 498 00:24:47,150 --> 00:24:49,420 Así que un poco de diversión hecho histórico. 499 00:24:49,420 --> 00:24:51,660 >> Así que eso es sólo el sintaxis básica con la que 500 00:24:51,660 --> 00:24:54,470 podríamos ejecutar un par de consultas, pero en realidad lo que podamos 501 00:24:54,470 --> 00:24:56,744 hacer un montón más cosas con SQL. 502 00:24:56,744 --> 00:24:58,910 Y verás, en última instancia, en el conjunto de problemas de siete 503 00:24:58,910 --> 00:25:01,034 que usted tiene que hacer una número de decisiones de diseño, 504 00:25:01,034 --> 00:25:03,290 entre ellos va a ser qué tipos de datos a utilizar. 505 00:25:03,290 --> 00:25:08,240 Así que al igual que en C, hay datos tipos en una base de datos, como MySQL, 506 00:25:08,240 --> 00:25:12,640 y los tipos de datos que tienen que elegir de estos campos incluyen aquí. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, int, int grande, decimal y de fecha y hora, y muchos otros. 508 00:25:17,287 --> 00:25:18,370 Así que vamos a hacer esto realidad. 509 00:25:18,370 --> 00:25:21,060 Hagamos de cuenta que no lo hicimos mano que la mesa de este usuario 510 00:25:21,060 --> 00:25:25,080 y déjame seguir adelante y crear, para yo mismo, en las conferencias database-- 511 00:25:25,080 --> 00:25:31,000 en realidad me dejó ir adelante y elimino la mesa que tengo aquí ya 512 00:25:31,000 --> 00:25:32,940 por lo que en realidad podemos crear esto. 513 00:25:32,940 --> 00:25:33,550 ¡Vaya. 514 00:25:33,550 --> 00:25:35,970 Voy a dejar esto mesa, y ahora estoy 515 00:25:35,970 --> 00:25:38,337 va a ir de nuevo a la dar una conferencia sobre la base de datos aquí, 516 00:25:38,337 --> 00:25:40,420 Voy a crear una tabla llamados usuarios y vamos a 517 00:25:40,420 --> 00:25:43,010 sólo hacer tres columnas inicialmente y haga clic en Ir. 518 00:25:43,010 --> 00:25:44,990 >> Ahora, en su mayor parte, de nuevo, esto es sólo 519 00:25:44,990 --> 00:25:48,570 el uso de esta herramienta gráfica llamada phpMyAdmin, y lo que estamos haciendo ahora 520 00:25:48,570 --> 00:25:49,600 es la creación de una mesa. 521 00:25:49,600 --> 00:25:53,170 Así que esto es como ir en Archivo, Nuevo, y la creación de un nuevo archivo de Excel. 522 00:25:53,170 --> 00:25:55,440 Así que me está pidiendo unos pocos preguntas, de izquierda a derecha, 523 00:25:55,440 --> 00:25:58,620 ¿cuál es el nombre de la primera columna, y luego el nombre de la segunda columna, 524 00:25:58,620 --> 00:25:59,560 y el nombre de la tercera. 525 00:25:59,560 --> 00:26:00,518 Así que vamos a recrear este. 526 00:26:00,518 --> 00:26:05,460 Identificación, nombre de usuario y luego fue uno, y luego de hash era otro. 527 00:26:05,460 --> 00:26:08,970 Entonces, ¿qué si el tipo de datos ahora para ser un campo como el ID? 528 00:26:08,970 --> 00:26:14,470 >> Aquí está la lista completa de tipos de datos disponibles para usted en una base de datos, 529 00:26:14,470 --> 00:26:16,070 y por ahora vamos a ir con int. 530 00:26:16,070 --> 00:26:18,160 Valor de 32 bits, no lo hago creo que soy realista 531 00:26:18,160 --> 00:26:21,484 va a tener más de 4 mil millones usuarios en mi cuenta, en mi servicio, 532 00:26:21,484 --> 00:26:23,650 así que voy a mantener en movimiento a la siguiente pregunta. 533 00:26:23,650 --> 00:26:25,490 Yo no voy a especificar una longitud o valores, 534 00:26:25,490 --> 00:26:28,540 que no es aplicable aquí por un int, per se. 535 00:26:28,540 --> 00:26:30,740 Y ahora puedo especificar, al parecer, un defecto 536 00:26:30,740 --> 00:26:33,970 valor, que no voy a especificar. 537 00:26:33,970 --> 00:26:36,050 A colación, no sé lo que es eso. 538 00:26:36,050 --> 00:26:37,290 Un atributo. 539 00:26:37,290 --> 00:26:39,455 Ahora que realmente hacemos tener una decisión de diseño. 540 00:26:39,455 --> 00:26:42,580 Así que hay un par de campos de aquí, no todos de los cuales son aplicables, pero sin signo 541 00:26:42,580 --> 00:26:43,380 sólo significa qué? 542 00:26:43,380 --> 00:26:45,400 Que el int debe ser? 543 00:26:45,400 --> 00:26:46,210 Simplemente no negativo. 544 00:26:46,210 --> 00:26:48,090 Así que tiene que ser 0 en adelante. 545 00:26:48,090 --> 00:26:51,120 No, yo no voy a comprobar porque Quiero que cada usuario tenga una identificación, 546 00:26:51,120 --> 00:26:52,470 no puede ser nulo. 547 00:26:52,470 --> 00:26:55,949 Y entonces, llegamos a algo más de interesantes decisiones de diseño como este. 548 00:26:55,949 --> 00:26:58,990 Volveremos a esto en un momento, pero lo que otra de las características de la base de datos 549 00:26:58,990 --> 00:27:04,200 Es decir, es que se puede decir el servidor de base de datos que adelante 550 00:27:04,200 --> 00:27:07,100 y optimizar a ti mismo, tu RAM y espacio en disco duro, 551 00:27:07,100 --> 00:27:11,770 de manera que selecciona, y se inserta, y borra, y las actualizaciones son muy rápido. 552 00:27:11,770 --> 00:27:13,250 Contraste esto con pset5. 553 00:27:13,250 --> 00:27:16,259 >> Si usted quería buscar algo en su tabla hash, que 554 00:27:16,259 --> 00:27:18,300 que piensan como una base de datos, quien tuvo que hacer todo el 555 00:27:18,300 --> 00:27:21,500 trabajar para hacer su tabla hash rápido. 556 00:27:21,500 --> 00:27:22,840 Es como, obviamente, usted. 557 00:27:22,840 --> 00:27:23,060 Derecha? 558 00:27:23,060 --> 00:27:26,080 Había que poner en todo momento la multa tuning cosas, conseguir una función hash 559 00:27:26,080 --> 00:27:27,820 derecho, encontrar la manera muchos cucharones tengan. 560 00:27:27,820 --> 00:27:29,611 >> Pero lo que es bueno, de nuevo, sobre una base de datos es 561 00:27:29,611 --> 00:27:31,762 que acaba de Punt todos esto a otras personas 562 00:27:31,762 --> 00:27:33,720 quienes han pensado que esto a través de usted, y lo que 563 00:27:33,720 --> 00:27:37,170 Yo voy a decir aquí bajo índice es que mi campo ID 564 00:27:37,170 --> 00:27:41,149 va a ser la forma principal de la identificación de los usuarios en esta base de datos. 565 00:27:41,149 --> 00:27:42,940 No voy a pensar de Zamyla como Zamyla, 566 00:27:42,940 --> 00:27:45,800 Voy a pensar en ella como el número 6. 567 00:27:45,800 --> 00:27:49,814 >> ¿Por qué es, tal vez, mejor intuitivamente a pensar y modelo 568 00:27:49,814 --> 00:27:52,480 cada una de sus filas individuales utilizando un número en lugar de algo 569 00:27:52,480 --> 00:27:56,480 como una cuerda, como el Zamyla o Gabe o cadena más larga todavía? 570 00:27:56,480 --> 00:27:57,444 ¿Sí? 571 00:27:57,444 --> 00:28:00,117 >> AUDIENCIA: Un ID es único? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: Diga otra vez? 573 00:28:01,200 --> 00:28:02,283 AUDIENCIA: Un ID es único? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: Un ID es único, pero suppose-- 575 00:28:04,400 --> 00:28:06,320 según sea el caso en general con los nombres de usuario, supongamos 576 00:28:06,320 --> 00:28:10,110 También dije que sólo puede haber uno Zamyla en el mundo, y sólo uno Gabe. 577 00:28:10,110 --> 00:28:13,730 Yo podría imponer la unicidad restricción en las cadenas, también, si quería. 578 00:28:13,730 --> 00:28:15,550 Así que no es una mala idea. 579 00:28:15,550 --> 00:28:16,500 >> AUDIENCIA: Más seguro. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Más seguro, ¿por qué? 581 00:28:17,874 --> 00:28:20,705 AUDIENCIA: Usted no puede decir que es que, como en el usuario. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, no se puede saber qué usuario 583 00:28:22,580 --> 00:28:24,380 es que lo que hay una privacidad aspecto a ella, 584 00:28:24,380 --> 00:28:27,810 especialmente si los ID quizás que aparece en las URL. 585 00:28:27,810 --> 00:28:29,960 Tan seguro, que pudiera tipo de trabajo, también. 586 00:28:29,960 --> 00:28:30,640 Otros pensamientos? 587 00:28:30,640 --> 00:28:31,383 ¿Sí? 588 00:28:31,383 --> 00:28:34,316 >> AUDIENCIA: Es más fácil realizar operaciones en un int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. MALAN: Ese es el verdadero truco. 590 00:28:35,940 --> 00:28:38,850 Es sólo más eficiente, o más fácil para el equipo, 591 00:28:38,850 --> 00:28:40,431 para realizar operaciones en un número entero. 592 00:28:40,431 --> 00:28:40,930 Derecha? 593 00:28:40,930 --> 00:28:43,905 Un int está garantizado para ser de 32 bits, mientras que Zamyla 594 00:28:43,905 --> 00:28:47,660 es un par de caracteres, Gabriel es un poco más caracteres de longitud, 595 00:28:47,660 --> 00:28:51,930 Davenport es muy largo, y por lo que es no es particularmente eficiente de usar 596 00:28:51,930 --> 00:28:55,860 cuerdas para comparar valores y buscan para los campos, y los campos de actualización, 597 00:28:55,860 --> 00:28:57,790 si usted puede conseguir lejos con un solo número entero. 598 00:28:57,790 --> 00:28:59,090 A tan sólo 32 bits. 599 00:28:59,090 --> 00:29:02,570 Así que los nombres de usuario, también, de esta manera, no tiene que ser único, 600 00:29:02,570 --> 00:29:05,040 a pesar de que probablemente debería ser, e incluso en esta manera también 601 00:29:05,040 --> 00:29:07,520 un usuario podría permitir que cambiar su nombre de usuario. 602 00:29:07,520 --> 00:29:10,810 >> Así que vamos a dejar ahora esta como la medios primarios de identificar al usuario. 603 00:29:10,810 --> 00:29:13,510 Esto le está diciendo a la base de datos seguir adelante y optimizar a ti mismo 604 00:29:13,510 --> 00:29:17,065 por lo que se ven ups en ID son super rápido. 605 00:29:17,065 --> 00:29:19,620 AI, horriblemente llamado, simplemente significa Incremento automático, 606 00:29:19,620 --> 00:29:21,500 y este es el cheque Box nosotros necesitamos comprobar 607 00:29:21,500 --> 00:29:24,614 para especificar que el campo ID de se actualizará automáticamente para mí, 608 00:29:24,614 --> 00:29:26,530 y luego me voy a desplazarse a la derecha aquí 609 00:29:26,530 --> 00:29:29,279 y, francamente, no estoy realmente interesado en más de estos campos. 610 00:29:29,279 --> 00:29:30,630 Ciertamente, hoy no. 611 00:29:30,630 --> 00:29:33,770 >> Así que me voy a volver aquí, a la primera columna, donde 612 00:29:33,770 --> 00:29:35,830 Tengo que especificar nombre de usuario y hachís, y vamos a 613 00:29:35,830 --> 00:29:38,080 al menos enfoque en el segundo por ahora. 614 00:29:38,080 --> 00:29:41,498 Int probablemente no es la decisión correcta, así que lo que tiene más sentido, tal vez? 615 00:29:41,498 --> 00:29:42,741 >> AUDIENCIA: Texto. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: Diga otra vez? 617 00:29:43,824 --> 00:29:44,710 AUDIENCIA: Texto. 618 00:29:44,710 --> 00:29:44,980 DAVID J. MALAN: Texto? 619 00:29:44,980 --> 00:29:45,590 OK, yo escuché texto. 620 00:29:45,590 --> 00:29:46,090 Qué otra cosa? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Es como que tenemos un montón de opciones que son textual en la naturaleza. 623 00:29:53,860 --> 00:29:55,990 Por eso, cuando, y por qué, hacer utiliza algunos de estos? 624 00:29:55,990 --> 00:29:59,560 Bueno char, al contrario de lo que te pueden pensar, no es un solo personaje. 625 00:29:59,560 --> 00:30:01,550 Es un número específico de caracteres. 626 00:30:01,550 --> 00:30:04,600 Así que si sabemos que todos los nombres de usuario debe ser como de ocho caracteres, 627 00:30:04,600 --> 00:30:08,490 como solía ser común en los mayores sistemas informáticos, podría decir Char 628 00:30:08,490 --> 00:30:09,830 y entonces yo podría decir 8 aquí. 629 00:30:09,830 --> 00:30:12,930 Fue entonces cuando se convierte en la tercera columna aplicable al crear una tabla. 630 00:30:12,930 --> 00:30:15,450 >> Pero eso es un poco molesto porque algunas personas podrían 631 00:30:15,450 --> 00:30:17,660 quiero tener un nombre de usuario ya de ocho caracteres, 632 00:30:17,660 --> 00:30:19,743 algunas personas podrían querer tener un nombre de usuario más corto, 633 00:30:19,743 --> 00:30:22,210 así que por qué comprometerme a un número específico? 634 00:30:22,210 --> 00:30:24,710 ¿Por qué no tener una variable número de caracteres y sólo 635 00:30:24,710 --> 00:30:28,580 decir que la longitud máxima de un nombre es, no sé, como 64 caracteres. 636 00:30:28,580 --> 00:30:31,780 No puedo pensar en ninguna amigos que tener nombres más de 64 caracteres, 637 00:30:31,780 --> 00:30:34,810 e incluso si eso es demasiado corto pudieras ciertamente topar para arriba arbitrariamente. 638 00:30:34,810 --> 00:30:37,330 >> Así varchar es una variable número de caracteres. 639 00:30:37,330 --> 00:30:41,010 El texto no es un mal instinto, y francamente que tipo de hace lo que dice, 640 00:30:41,010 --> 00:30:45,460 pero un campo de texto puede ser como 65.000 bytes, por lo menos. 641 00:30:45,460 --> 00:30:50,790 Eso es algo excesivo para un campo, y de hecho, yup, 65.535. 642 00:30:50,790 --> 00:30:53,740 Eso es algo excesivo para un nombre, así que me quedo, por lo general, 643 00:30:53,740 --> 00:30:56,910 con varchars para Pruebas campo y hachís, también. 644 00:30:56,910 --> 00:30:59,990 Hash, resulta que, podríamos hacer un varchar tan bien o algo por el estilo, 645 00:30:59,990 --> 00:31:03,080 pero no vamos a centrar hoy en la criptografía allí y los números 646 00:31:03,080 --> 00:31:05,210 para que podamos realmente que desee utilizar para su longitud. 647 00:31:05,210 --> 00:31:07,430 >> Pero permítanme desplácese hacia abajo a la derecha. 648 00:31:07,430 --> 00:31:11,280 Sólo puede tener una índice principal de una tabla, 649 00:31:11,280 --> 00:31:16,380 pero es lo que quiero para aplicar cualquiera de estos, ahora, a nombre de usuario, qué le dirías? 650 00:31:16,380 --> 00:31:21,980 ¿Cuál debe username basarse en una vaga comprensión de estas cuatro opciones? 651 00:31:21,980 --> 00:31:23,340 Sólo por sus nombres? 652 00:31:23,340 --> 00:31:24,140 >> AUDIENCIA: Único. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. MALAN: Tan único, ¿verdad? 654 00:31:25,100 --> 00:31:28,190 Así que resulta que no sólo podría le dices a una base de datos, de antemano, 655 00:31:28,190 --> 00:31:30,380 esta es la forma primaria de identificar los campos. 656 00:31:30,380 --> 00:31:32,990 También se puede decir que esto es va a ser un campo único. 657 00:31:32,990 --> 00:31:34,700 No va a ser la cosa Confío en que, 658 00:31:34,700 --> 00:31:38,490 pero me gustaría que la base de datos para esencialmente tiene que si la condición, por lo que 659 00:31:38,490 --> 00:31:42,340 que si alguna vez intenté dar de alta dos usuarios con el mismo nombre, 660 00:31:42,340 --> 00:31:44,360 la base de datos a toda máquina no me va a dejar. 661 00:31:44,360 --> 00:31:47,490 Puede que tenga algo de código adicional en PHP que impide tanto, 662 00:31:47,490 --> 00:31:50,640 pero la base de datos, también puede asegurar que eso nunca va a suceder. 663 00:31:50,640 --> 00:31:53,370 >> Ahora, como un aparte, especialmente en lo que se piensa en los proyectos finales, 664 00:31:53,370 --> 00:31:57,030 tener en cuenta que el índice y el pleno texto son en realidad muy útil. 665 00:31:57,030 --> 00:32:01,080 Si usted tiene una base de datos más grande, no con decenas, pero con cientos o miles 666 00:32:01,080 --> 00:32:05,270 o incluso millones de campos, puede También dígale a la base de datos con antelación 667 00:32:05,270 --> 00:32:07,980 este es un campo que voy estar buscando en un terreno. 668 00:32:07,980 --> 00:32:10,520 Tal vez su nombre de usuario, tal vez es bio, si estás 669 00:32:10,520 --> 00:32:13,750 hacer un sitio web de Facebook-como que tiene párrafos que el usuario que está permitido 670 00:32:13,750 --> 00:32:16,799 para ahorrar, y si quieres decir la base de datos con antelación 671 00:32:16,799 --> 00:32:20,090 Voy a estar buscando en este campo mucho, pero no es necesariamente único, 672 00:32:20,090 --> 00:32:22,800 puede especificar mí crear un índice. 673 00:32:22,800 --> 00:32:27,990 O bien, se puede decir también que me permita hacer tipo de registros arbitrarios como Comando 674 00:32:27,990 --> 00:32:30,420 o Control F, como tú podría en un procesador de textos, 675 00:32:30,420 --> 00:32:34,184 por lo que podría buscar cadenas arbitrarias o subseries de caracteres en este campo. 676 00:32:34,184 --> 00:32:36,600 En otras palabras, estamos recibiendo hasta el punto en el semestre 677 00:32:36,600 --> 00:32:40,720 donde usted no tiene que preocuparse acerca de cómo poner en práctica las cosas de manera eficiente. 678 00:32:40,720 --> 00:32:44,540 Usted sólo tiene que saber acerca de lo que las decisiones de diseño para hacer de modo que usted es 679 00:32:44,540 --> 00:32:48,470 utilizando las herramientas adecuadas para el el comercio con el fin de aprovechar las características 680 00:32:48,470 --> 00:32:50,380 que otras personas han construido para usted. 681 00:32:50,380 --> 00:32:54,240 Así que para recapitular, primaria sólo debe tener uno, sólo se puede tener uno, 682 00:32:54,240 --> 00:32:59,630 y que es lo que usted está cometiendo a utilizando a la identificación de campos de forma única. 683 00:32:59,630 --> 00:33:02,710 Steam es similar en espíritu, pero usted puede ser que sólo de vez en cuando usarlo, 684 00:33:02,710 --> 00:33:04,530 pero desea que la base de datos para imponerla. 685 00:33:04,530 --> 00:33:08,050 Índice sólo significa preventivamente acelerar las cosas en el futuro 686 00:33:08,050 --> 00:33:10,230 para que yo pueda buscar las cosas en este campo. 687 00:33:10,230 --> 00:33:13,700 Y a continuación, el texto completo es generalmente para párrafos, o ensayos, o grandes cuerpos 688 00:33:13,700 --> 00:33:16,270 de texto en el que También puede ser que desee tener 689 00:33:16,270 --> 00:33:19,420 comodines como el equivalente de la estrella. 690 00:33:19,420 --> 00:33:19,920 Derecha. 691 00:33:19,920 --> 00:33:22,580 >> Así que era una especie de mucho para todos a la vez. 692 00:33:22,580 --> 00:33:25,220 Vamos a ver si no podemos destilar un par de estas características 693 00:33:25,220 --> 00:33:29,540 y luego construir algo bastante simple, pero de gran alcance. 694 00:33:29,540 --> 00:33:31,380 Así que entre el otro las decisiones de diseño que usted está 695 00:33:31,380 --> 00:33:34,005 en última instancia, va a tener es a lo largo de las líneas de motores de almacenamiento. 696 00:33:34,005 --> 00:33:37,370 Y permítanme hacer mención de esto en previsión de proyectos fin de carrera, 697 00:33:37,370 --> 00:33:42,020 y la anticipación de la let de decir-- no vamos a hacer esto. 698 00:33:42,020 --> 00:33:43,820 Vamos a construir este pequeño primera aplicación. 699 00:33:43,820 --> 00:33:48,070 Voy a entrar en mi terminal ventana, y aquí no es 700 00:33:48,070 --> 00:33:52,500 sólo counter.php, que ahora vamos para deshacerse de como ya no pertinente, 701 00:33:52,500 --> 00:33:54,570 pero tenemos un montón de directorios y este 702 00:33:54,570 --> 00:33:58,080 va a ser muy similar en espíritu a lo que usted verá en el problema creado siete. 703 00:33:58,080 --> 00:34:00,980 >> Así que tenemos tres directorios incluye pública y las plantillas, que 704 00:34:00,980 --> 00:34:05,040 es exactamente donde lo dejamos en Lunes con todo nuestro paradigma MVC. 705 00:34:05,040 --> 00:34:09,290 Y para recapitular, en público se va a ir cualquier archivo que desea que los usuarios realmente 706 00:34:09,290 --> 00:34:12,969 v la posibilidad de visitar en su navegador a través de la URL. 707 00:34:12,969 --> 00:34:13,502 Plantilla. 708 00:34:13,502 --> 00:34:14,710 ¿Qué hemos puesto en las plantillas? 709 00:34:14,710 --> 00:34:17,070 ¿Qué tipo de cosas? 710 00:34:17,070 --> 00:34:21,659 No había mucho, pero un par archivos, por lo menos el lunes. 711 00:34:21,659 --> 00:34:22,619 Sí. 712 00:34:22,619 --> 00:34:23,100 >> AUDIENCIA: Encabezado y pie de página? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: Encabezado y pie de página. 714 00:34:24,516 --> 00:34:26,679 Así que tenemos algo similar hoy en día, también. 715 00:34:26,679 --> 00:34:30,330 Tenemos unos pocos archivos más pero Pie de página Veo, veo Cabecera, 716 00:34:30,330 --> 00:34:31,909 y luego un montón de otros archivos. 717 00:34:31,909 --> 00:34:35,482 Así que este es el equivalente de la vista V MVC, que, 718 00:34:35,482 --> 00:34:37,690 de nuevo, será un poco más claro en siete de problemas, 719 00:34:37,690 --> 00:34:40,380 pero esto es sólo una carpeta que soy poner un montón de mi estética. 720 00:34:40,380 --> 00:34:42,840 Una gran parte de mi HTML, muchos de mis formas. 721 00:34:42,840 --> 00:34:46,899 Mientras tanto, incluye, es otra directorio que tiene estos tres archivos 722 00:34:46,899 --> 00:34:48,440 y vamos a echar un vistazo rápido a los mismos. 723 00:34:48,440 --> 00:34:51,699 >> Voy a seguir adelante y abrir config.php. 724 00:34:51,699 --> 00:34:54,610 Como resultado, gran parte como antes en el término, 725 00:34:54,610 --> 00:34:57,850 usted agudo incluido CS50 dot h con pset7. 726 00:34:57,850 --> 00:35:00,780 En el ejemplo de hoy, vas hacer que el equivalente de 727 00:35:00,780 --> 00:35:03,600 con una declaración requerir que efectivamente 728 00:35:03,600 --> 00:35:05,340 incluye estas varias líneas. 729 00:35:05,340 --> 00:35:08,225 Así que para ser claros, esto es un archivo llamado config.php. 730 00:35:08,225 --> 00:35:09,350 Y note lo que está haciendo. 731 00:35:09,350 --> 00:35:11,970 Es aparentemente haciendo algo que dan vuelta en los mensajes crípticos, de error 732 00:35:11,970 --> 00:35:13,680 de modo que usted puede ver en el navegador. 733 00:35:13,680 --> 00:35:15,860 Es, pues, al parecer, que requiere otros dos archivos 734 00:35:15,860 --> 00:35:19,530 así que esto es como # include en C, y entonces éste nos vimos, 735 00:35:19,530 --> 00:35:22,720 y nosotros hemos confiado en, esta se enciende que la cesta de compras como la funcionalidad. 736 00:35:22,720 --> 00:35:25,610 >> Esto significa una voluntad de cookies ser enviado de vuelta y vuelta. 737 00:35:25,610 --> 00:35:27,290 ¿Por qué es interesante? 738 00:35:27,290 --> 00:35:32,460 Bueno, si nos remontamos a esta directorio y abrir, por ejemplo, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Tenga en cuenta que PHP hace constantes de apoyo, no es absolutamente como #define en C. 741 00:35:38,840 --> 00:35:41,290 En su lugar, literalmente decir definido, y previo aviso 742 00:35:41,290 --> 00:35:44,110 que ha almacenado con antelación cuatro constantes en este archivo. 743 00:35:44,110 --> 00:35:47,020 Uno para la base de datos de hoy en día, para mi contraseña, por mi nombre de usuario, 744 00:35:47,020 --> 00:35:48,690 y para el nombre del servidor. 745 00:35:48,690 --> 00:35:51,644 Así que estos son en realidad va a ser bastante similar en siete de problemas. 746 00:35:51,644 --> 00:35:54,560 Y por último, y aquí es donde estoy va a conseguir algo de funcionalidad agradable 747 00:35:54,560 --> 00:35:59,000 desde el personal, en functions.php es un montón de código que hemos escrito, 748 00:35:59,000 --> 00:36:01,040 y yo robé algo de esto del problema establece siete 749 00:36:01,040 --> 00:36:05,920 para hoy, que hace un montón de cosas y vamos a ver a uno de ellos 750 00:36:05,920 --> 00:36:07,270 En particular. 751 00:36:07,270 --> 00:36:09,720 Esta función aquí, consulta, va a ser 752 00:36:09,720 --> 00:36:13,600 la función de PHP que llamamos a fin de ejecutar SQL. 753 00:36:13,600 --> 00:36:16,070 Hace un momento estábamos usando phpMyAdmin, pero eso es sólo 754 00:36:16,070 --> 00:36:18,720 para suerte de los propósitos de aprendizaje y con fines de diagnóstico 755 00:36:18,720 --> 00:36:20,494 y olvidando su conjunto de bases de datos. 756 00:36:20,494 --> 00:36:22,660 Cuando usted utiliza realmente su base de datos, usted, el ser humano, 757 00:36:22,660 --> 00:36:24,100 son, obviamente, no va para ser tirando hacia arriba de una web 758 00:36:24,100 --> 00:36:25,740 página cada vez que una persona se registra. 759 00:36:25,740 --> 00:36:29,870 Vas a escribir código que inserciones y eliminaciones usuarios en la demanda, 760 00:36:29,870 --> 00:36:32,490 y vamos a hacer esto por medio de la función de consulta. 761 00:36:32,490 --> 00:36:35,360 Si ahora me desplazo hacia abajo, hay va a ser un poco más características. 762 00:36:35,360 --> 00:36:37,170 Redireccionamiento va a ser una función que escribimos 763 00:36:37,170 --> 00:36:40,160 para usted que le permite enviar al usuario a otra URL, 764 00:36:40,160 --> 00:36:43,780 y hacer que es una función, que se le parezca vimos el lunes, que en realidad hace 765 00:36:43,780 --> 00:36:48,000 una plantilla, pero más sobre estos en el forma de propio paseo de pset7 través. 766 00:36:48,000 --> 00:36:50,500 Por ahora, vamos a seguir adelante y hacer esto. 767 00:36:50,500 --> 00:36:54,860 >> Déjame ir a mi mesa de conferencias y ver que hay actualmente nada 768 00:36:54,860 --> 00:36:59,640 aquí todavía, y déjame ir también en mi directorio público, donde 769 00:36:59,640 --> 00:37:02,780 hay sólo un archivo, index.php. 770 00:37:02,780 --> 00:37:06,920 Este archivo parece ser super simple por el momento, que se parece a esto. 771 00:37:06,920 --> 00:37:09,110 Muy parecido a la forma en que dejado el lunes. 772 00:37:09,110 --> 00:37:11,945 Estoy requiriendo este archivo, config.php, que está en 773 00:37:11,945 --> 00:37:15,160 un directorio incluye, que está en punto punto, mis padres, 774 00:37:15,160 --> 00:37:17,650 y entonces es sólo la representación este archivo. 775 00:37:17,650 --> 00:37:18,960 Entonces, ¿qué es este archivo? 776 00:37:18,960 --> 00:37:24,700 >> Vamos a abrir en mis plantillas form.php, y vamos a ver esto. 777 00:37:24,700 --> 00:37:28,500 Súper simple, aparentemente este formulario es va a presentar por un $ _GET o $ _POST. 778 00:37:28,500 --> 00:37:29,320 Comprobación de validez rápida. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Literalmente buscar visualmente el archivo. 781 00:37:35,690 --> 00:37:36,610 Método es igual puesto. 782 00:37:36,610 --> 00:37:39,280 Así que no va a utilizar la dirección URL, como Google lo hace, va a ordenar de piel 783 00:37:39,280 --> 00:37:41,030 la información detrás de las escenas y que es 784 00:37:41,030 --> 00:37:43,580 va a someterse a una archivo llamado register.php, 785 00:37:43,580 --> 00:37:45,660 y eso es el archivo todavía no hemos escrito 786 00:37:45,660 --> 00:37:47,610 pero ¿qué va esto para que parezca es esto. 787 00:37:47,610 --> 00:37:52,670 >> Si voy a una página separada Esta es lo localhost / index.php se parece. 788 00:37:52,670 --> 00:37:56,930 Y de nuevo, el servidor de sólo asumiendo index.php. 789 00:37:56,930 --> 00:37:57,910 Intro. 790 00:37:57,910 --> 00:37:59,870 Así que ahí es donde estamos a, y lo que quiero hacer 791 00:37:59,870 --> 00:38:02,450 es ser capaz de escribir cosas como David, y luego 792 00:38:02,450 --> 00:38:08,050 mi número de teléfono, lo que va a decir 617-555-1212 por ahora, regístrese 793 00:38:08,050 --> 00:38:09,910 y ahora no se ha encontrado register.php. 794 00:38:09,910 --> 00:38:11,440 Así que necesito para implementar esto. 795 00:38:11,440 --> 00:38:13,320 Así que vamos a látigo rápidamente algo como esto. 796 00:38:13,320 --> 00:38:18,640 Déjame ir a mi directorio público y hacer gedit de register.php, 797 00:38:18,640 --> 00:38:22,300 y ahora voy a seguir adelante y iniciar el modo PHP, como lo hicimos el lunes, 798 00:38:22,300 --> 00:38:25,430 y la etiqueta de cierre de PHP, y vamos a hacer un par de cosas. 799 00:38:25,430 --> 00:38:28,336 >> Así que uno, lo sé, desde haber escrito esa forma, 800 00:38:28,336 --> 00:38:29,960 que quiero comprobar lo siguiente. 801 00:38:29,960 --> 00:38:35,670 Si está vacío, lo que el usuario escrito en el campo de nombre, a continuación, 802 00:38:35,670 --> 00:38:39,860 Voy a decir algo como pedir disculpas faltante nombre. 803 00:38:39,860 --> 00:38:42,380 Pedir disculpas, por su parte, es no una cosa construida en PHP, 804 00:38:42,380 --> 00:38:45,970 es una función que escribimos en functions.php para pset7 805 00:38:45,970 --> 00:38:47,940 para que usted tenga acceso a ella. 806 00:38:47,940 --> 00:38:53,830 Porque si el otro campo está vacío, número, entonces estoy 807 00:38:53,830 --> 00:38:58,370 va a pedir disculpas a la usuario y diga el número que falta. 808 00:38:58,370 --> 00:38:59,320 Guarde este archivo. 809 00:38:59,320 --> 00:39:02,640 >> Ahora vamos a volver a mi navegador, volver al foro vuelva a intentarlo. 810 00:39:02,640 --> 00:39:04,070 Registrar. 811 00:39:04,070 --> 00:39:05,090 Okay. 812 00:39:05,090 --> 00:39:06,730 No pasó nada, lo cual es bueno. 813 00:39:06,730 --> 00:39:08,120 No recibí un mensaje de error. 814 00:39:08,120 --> 00:39:11,651 Pero si por el contrario, vamos a Recargar página, y no proporciona nada. 815 00:39:11,651 --> 00:39:12,150 Maldita sea. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Haz eso. 818 00:39:17,140 --> 00:39:18,810 Registrar. 819 00:39:18,810 --> 00:39:20,350 ¿Qué hice mal? 820 00:39:20,350 --> 00:39:24,860 Si está vacío, el nombre $ _POST. 821 00:39:24,860 --> 00:39:26,350 Diga otra vez? 822 00:39:26,350 --> 00:39:27,670 >> Oh, por supuesto. 823 00:39:27,670 --> 00:39:30,919 Me olvidé de la parte más importante, que es require ("../ includes / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Es necesario disponer de acceso a la función de pedir disculpas, que 826 00:39:36,460 --> 00:39:37,770 Es por eso que no pasaba nada. 827 00:39:37,770 --> 00:39:39,460 La función en realidad no existe. 828 00:39:39,460 --> 00:39:40,640 Así que vamos a intentarlo de nuevo. 829 00:39:40,640 --> 00:39:42,350 Vamos a recargar la página, haga clic en Registro. 830 00:39:42,350 --> 00:39:43,060 Okay. 831 00:39:43,060 --> 00:39:43,770 Ahí está. 832 00:39:43,770 --> 00:39:45,700 Así, la salida que estamos viendo aquí es el resultado 833 00:39:45,700 --> 00:39:47,685 de llamar a un disculparse función, super sencillo, 834 00:39:47,685 --> 00:39:50,060 y que sólo se imprime lo que sea Le doy como argumento. 835 00:39:50,060 --> 00:39:51,370 >> Muy bien, así que vamos a cooperar. 836 00:39:51,370 --> 00:39:54,240 Vamos a proporcionar mi nombre como David, regístrese, 837 00:39:54,240 --> 00:39:56,890 faltante número Aceptar let de disponer que, demasiado. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registrar. 840 00:39:59,250 --> 00:39:59,750 Okay. 841 00:39:59,750 --> 00:40:02,760 Así que todo está bien ahora, nada interesante está ocurriendo. 842 00:40:02,760 --> 00:40:06,000 Así que ahora vamos a hacer algo más interesante suceda así. 843 00:40:06,000 --> 00:40:09,980 Déjame ir a phpMyAdmin, y vamos a en realidad crear una tabla llamada usuarios, 844 00:40:09,980 --> 00:40:12,330 Voy a darle tres columnas, y me da gusto 845 00:40:12,330 --> 00:40:16,250 crear ID, y luego nombrar, y luego el número, 846 00:40:16,250 --> 00:40:18,832 y el campo ID estoy va a dejar como un int. 847 00:40:18,832 --> 00:40:20,790 El campo de nombre que voy a dejar como un varchar, 848 00:40:20,790 --> 00:40:23,257 y vamos a decir 64, un tanto arbitrariamente. 849 00:40:23,257 --> 00:40:25,090 El número que voy para hacer, ¿sabes qué? 850 00:40:25,090 --> 00:40:27,350 Vamos a apoyar a los números de Estados Unidos aquí, 851 00:40:27,350 --> 00:40:31,510 así que voy a hacer algo como carbón y luego 10 caracteres 852 00:40:31,510 --> 00:40:34,540 max para un código de área y luego siete dígitos. 853 00:40:34,540 --> 00:40:37,870 Y luego por aquí, voy a especificar incremento automático este campo, 854 00:40:37,870 --> 00:40:40,550 hacer de esto una clave principal, y Voy a seguir adelante y no 855 00:40:40,550 --> 00:40:42,240 revisar cualquiera de estas otras cajas. 856 00:40:42,240 --> 00:40:48,030 >> Así que cuando por fin haga clic en Guardar, y vuelvo a mi mesa a los usuarios, 857 00:40:48,030 --> 00:40:52,270 esto es lo que se ve como si yo Ahora haga clic en una estructura nueva pestaña. 858 00:40:52,270 --> 00:40:54,550 Así que esto, que quede claro, es simplemente la manera de phpMyAdmin 859 00:40:54,550 --> 00:40:58,570 de decir su tabla de base de datos tiene un ID, un nombre, y un número 860 00:40:58,570 --> 00:41:02,040 con esas configuraciones particulares y vamos a ignorar el resto de los campos 861 00:41:02,040 --> 00:41:03,140 hay por ahora. 862 00:41:03,140 --> 00:41:04,810 >> ¿Y ahora qué es lo que quiero hacer? 863 00:41:04,810 --> 00:41:09,060 Así que si me voy ahora a mi código fuente, si todo está bien 864 00:41:09,060 --> 00:41:11,190 Quiero ejecutar la siguiente consulta. 865 00:41:11,190 --> 00:41:14,970 Insertar en, y puedo sólo dicen los usuarios no hacen estrictamente 866 00:41:14,970 --> 00:41:18,620 necesitan los de vuelta garrapatas si es no es una palabra peligrosa como usuarios. 867 00:41:18,620 --> 00:41:22,810 Yo voy a decir el nombre, número, y entonces aquí estoy 868 00:41:22,810 --> 00:41:24,960 no va a codificar la dígitos de los valores todavía. 869 00:41:24,960 --> 00:41:26,760 Voy a poner dos signos de interrogación. 870 00:41:26,760 --> 00:41:29,320 Y esto es una convención en muchos idiomas 871 00:41:29,320 --> 00:41:31,730 por lo que si usted quiere tener un marcador de posición para una cadena 872 00:41:31,730 --> 00:41:34,105 usted va a utilizar la cuestión marcas, por razones que vamos a 873 00:41:34,105 --> 00:41:36,370 volver a charlar sobre seguridad, y aquí 874 00:41:36,370 --> 00:41:39,420 Voy a pasar en los dos campos de publicar el nombre, 875 00:41:39,420 --> 00:41:44,850 y luego publicar el número, y ahora guardar el archivo. 876 00:41:44,850 --> 00:41:47,090 >> Y ahora voy a bajar aquí es un super 877 00:41:47,090 --> 00:41:55,690 simplemente decir rendersuccess.php, que va a ser otra plantilla. 878 00:41:55,690 --> 00:41:57,380 Voy a crear muy rápido. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php y yo sólo voy decir éxito H1 en ese archivo. 880 00:42:06,270 --> 00:42:06,990 Bien. 881 00:42:06,990 --> 00:42:11,312 Así que ahora, vamos a volver a la navegador, donde visité antes. 882 00:42:11,312 --> 00:42:14,270 Vamos a seguir adelante y confirme que escribí en David, que escribí en un número de teléfono, 883 00:42:14,270 --> 00:42:15,390 regístrese. 884 00:42:15,390 --> 00:42:16,100 Maldita sea. 885 00:42:16,100 --> 00:42:17,420 ¿Qué hice mal? 886 00:42:17,420 --> 00:42:20,850 Así que estoy viendo un error aquí, tener un error en su sintaxis SQL. 887 00:42:20,850 --> 00:42:24,900 Déjame saltar de nuevo a gedit, dejo me vuelvo a register.php, 888 00:42:24,900 --> 00:42:28,830 y ¿qué Omito que Fue importante la última vez? 889 00:42:28,830 --> 00:42:29,722 Necesito esto. 890 00:42:29,722 --> 00:42:32,930 ¿Quieres saber que, aparte de habiendo notado antes, pero necesito esto. 891 00:42:32,930 --> 00:42:35,596 >> Así que ahora vamos a volver, y este fue útil para ver en el navegador 892 00:42:35,596 --> 00:42:37,680 y es por eso que en config.php nos escupimos errores. 893 00:42:37,680 --> 00:42:41,770 Vamos a seguir adelante y volver a cargar, haga clic en Continuar, el éxito. 894 00:42:41,770 --> 00:42:47,060 Así que ahora me dejes ir a mi base de datos de aquí y haga clic en Usuarios, 895 00:42:47,060 --> 00:42:51,680 y navegar, y cuenta ahora tener a David en mi base de datos aquí. 896 00:42:51,680 --> 00:42:55,810 Ahora técnicamente esta página web es sin embargo, no en el Internet público, 897 00:42:55,810 --> 00:42:57,890 así que no puedo tener otra personas en poner aquí, 898 00:42:57,890 --> 00:43:01,120 pero si yo ahora quería, para ejemplo, enviar un mensaje de texto a mí mismo. 899 00:43:01,120 --> 00:43:03,920 Vamos a salir a un miembro aquí y ver si esto realmente funciona. 900 00:43:03,920 --> 00:43:07,331 Voy a seguir adelante y borrar esta fila 901 00:43:07,331 --> 00:43:09,080 y vamos a difuminamos este en el vídeo más tarde 902 00:43:09,080 --> 00:43:11,900 así que no tenemos la Internet me entero de mensajes de texto, 903 00:43:11,900 --> 00:43:17,270 y ahora vamos a ir hasta el navegador y vamos a ir a dar una conferencia 904 00:43:17,270 --> 00:43:22,040 y nosotros escribimos en diferente número aquí, registro, el éxito. 905 00:43:22,040 --> 00:43:25,550 >> Así que ahora, mi número es presumiblemente en la base de datos, y ahora la parte divertida. 906 00:43:25,550 --> 00:43:28,774 Vamos a realmente usar PHP para hacer algo mediante programación, 907 00:43:28,774 --> 00:43:30,940 ya sea desde el comando línea o de algún otro lugar, 908 00:43:30,940 --> 00:43:32,773 y por ahora estoy solo va a mantener la sencillez 909 00:43:32,773 --> 00:43:36,230 y yo voy a ir a mi directorio de aquí y haga lo siguiente. 910 00:43:36,230 --> 00:43:44,920 Guión Gedit digamos, vamos a llamarlo texto, #! / usuario / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 como vimos por última vez. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Ahora me voy a hacer requerir incluye config.php, 914 00:43:55,055 --> 00:43:57,360 a pesar de que esto podría inducir un ligero error. 915 00:43:57,360 --> 00:44:03,960 Y ahora voy a seguir adelante y decir filas, consulta, seleccione la estrella de los usuarios, 916 00:44:03,960 --> 00:44:08,149 y ahora aquí me voy a hacer una técnica desde la última vez para cada fila como fila. 917 00:44:08,149 --> 00:44:09,690 Y yo voy a hacer algo simple. 918 00:44:09,690 --> 00:44:19,090 Printf digamos nombre es este, y el número es esta, la barra invertida n. 919 00:44:19,090 --> 00:44:23,320 Y ahora voy a pasar en la fila citar nombre fin de la cita, 920 00:44:23,320 --> 00:44:28,140 y el número de fila entre comillas, y ahora vamos a seguir adelante 921 00:44:28,140 --> 00:44:31,430 y la ventana de mi terminal chmod este a + x para hacer 922 00:44:31,430 --> 00:44:33,970 este script ejecutable llamado texto. 923 00:44:33,970 --> 00:44:36,080 Y ahora vamos a correr texto. 924 00:44:36,080 --> 00:44:37,590 >> OK, así progresar. 925 00:44:37,590 --> 00:44:39,960 Una Así que ahora que he escrito script de línea de comandos, 926 00:44:39,960 --> 00:44:43,300 en un lenguaje llamado PHP, que, debido a que requieren de línea, 927 00:44:43,300 --> 00:44:46,380 tiene acceso a todos los de configuración constantes que ha especificado. 928 00:44:46,380 --> 00:44:48,177 El nombre de la base de datos y así sucesivamente. 929 00:44:48,177 --> 00:44:50,260 De hecho, sólo para ser claros que esto no es una casualidad, 930 00:44:50,260 --> 00:44:54,730 déjame ir por delante y registro, muy rápido, alguien más como Rob 931 00:44:54,730 --> 00:44:58,890 y le dará el número 555-1212. 932 00:44:58,890 --> 00:45:01,557 >> Y ahora, si me quedo el guión de nuevo, observe el poder 933 00:45:01,557 --> 00:45:03,140 de lo que estamos haciendo con la base de datos. 934 00:45:03,140 --> 00:45:07,680 Ahora que he visto de inmediato lo que el otras dos filas están en mi base de datos. 935 00:45:07,680 --> 00:45:10,699 Así que ahora vamos a tratar de hacer algo incluso más elegante en el interior de, 936 00:45:10,699 --> 00:45:12,740 y esta es la parte que hemos no probado de antemano, 937 00:45:12,740 --> 00:45:15,910 por lo que la última vez que hizo esto las cosas fueron horriblemente mal, 938 00:45:15,910 --> 00:45:17,120 tenemos vídeo a tal efecto. 939 00:45:17,120 --> 00:45:18,286 >> En realidad, sí, divertido a un lado. 940 00:45:18,286 --> 00:45:20,480 Así que la última vez, en una dar una conferencia al igual que hace dos años, 941 00:45:20,480 --> 00:45:23,230 decidimos, decidí, para ser todo esto sería una gran idea 942 00:45:23,230 --> 00:45:28,150 para generar dinámicamente los correos electrónicos en clase, utilizando la totalidad de la base de datos CS50 943 00:45:28,150 --> 00:45:33,390 estudiantes, que nos había dado sus números y sus compañías de telefonía móvil que usted 944 00:45:33,390 --> 00:45:36,290 podría recordar de pset0, cómo razonar, resulta 945 00:45:36,290 --> 00:45:40,650 Tuve un pequeño error en mi programa y hizo un par de errores en 2012, creo. 946 00:45:40,650 --> 00:45:43,997 >> Por lo cual, uno que tenía para bucle que hizo exactamente este tipo de cosas, 947 00:45:43,997 --> 00:45:46,580 iterar sobre la base de datos, conseguir un nombre de la base de datos, 948 00:45:46,580 --> 00:45:49,940 nombre de la base de datos, y luego en cada iteración del bucle que me envió un correo electrónico. 949 00:45:49,940 --> 00:45:54,130 Pero en lugar de enviar un correo electrónico, enviado un correo electrónico la primera iteración, 950 00:45:54,130 --> 00:45:58,200 y dos mensajes de correo electrónico una segunda iteración, enviados tres mensajes de correo electrónico una segunda iteración, que 951 00:45:58,200 --> 00:46:01,230 como se puede recordar de nuestro discusión de la notación asintótica 952 00:46:01,230 --> 00:46:06,400 este gran O de la mala, como n al cuadrado es la cantidad de mensajes que envié, 953 00:46:06,400 --> 00:46:08,560 pero no fue incluso mensajes de correo electrónico era mensajes de texto. 954 00:46:08,560 --> 00:46:12,070 >> Y como usted sabe, la asistencia no es super alta hacia el final del semestre 955 00:46:12,070 --> 00:46:15,360 y así que pensé que sería lindo en el tiempo para decir: "¿Por qué no es usted la clase?" 956 00:46:15,360 --> 00:46:17,880 En el mensaje de texto que enviado a toda la clase, 957 00:46:17,880 --> 00:46:22,140 y que era gracioso que gustar el 50% de la clase, pero el otro 50%, algunos de los cuales 958 00:46:22,140 --> 00:46:26,102 asustado, yo envié increíblemente dulces notas apologéticas 959 00:46:26,102 --> 00:46:28,560 para el personal pidiendo disculpas por habiendo perdido la conferencia sólo 960 00:46:28,560 --> 00:46:29,530 esta vez, ¿verdad? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> Así que sería horriblemente mal. 963 00:46:34,030 --> 00:46:37,030 Así que en ese espíritu, vamos a tratar este de nuevo, pero sólo con mi número. 964 00:46:37,030 --> 00:46:41,940 De antemano, en functions.php, He escrito esta función aquí. 965 00:46:41,940 --> 00:46:44,250 Se llama el texto, y toma en tres argumentos. 966 00:46:44,250 --> 00:46:46,360 Un número, un portador, y un mensaje. 967 00:46:46,360 --> 00:46:50,390 >> Estoy usando una sentencia switch, que maravillosamente PHP tome cuerdas, no sólo 968 00:46:50,390 --> 00:46:53,350 números enteros, y yo no implementan todo el apoyo para esto todavía, 969 00:46:53,350 --> 00:46:55,370 Yo sólo he hecho AT & T y Verizon. 970 00:46:55,370 --> 00:46:57,610 Debido a que resulta que con estos transportistas 971 00:46:57,610 --> 00:47:00,570 tienen correo electrónico a gateways SMS, por lo que en realidad se puede 972 00:47:00,570 --> 00:47:05,529 enviar un correo electrónico a una dirección como el número de teléfono en vtext.com 973 00:47:05,529 --> 00:47:08,070 y si el usuario no ha bloqueado los mensajes, que irán a través de 974 00:47:08,070 --> 00:47:09,340 es un mensaje de texto. 975 00:47:09,340 --> 00:47:13,270 >> Ahora, para hacer esto, voy a tener que añadir un campo muy rápido a mi base de datos. 976 00:47:13,270 --> 00:47:15,470 Voy a entrar en mi estructura, y yo soy 977 00:47:15,470 --> 00:47:21,880 va a seguir adelante y añadir un de campo en el extremo de la mesa. 978 00:47:21,880 --> 00:47:25,227 Vamos haga clic en Ir, y estoy va a llamar a este portador 979 00:47:25,227 --> 00:47:27,310 y por ahora me voy a dejar esto como un texto de la barra, 980 00:47:27,310 --> 00:47:29,320 pero podemos ser más elegante en el futuro. 981 00:47:29,320 --> 00:47:31,961 Voy a ir rápidamente en mi mesa, y yo soy 982 00:47:31,961 --> 00:47:34,210 va a deshacerse de Rob, porque eso es un número falso, 983 00:47:34,210 --> 00:47:38,540 Voy a ir a editar aquí y estoy va a cambiar mi carrera manualmente 984 00:47:38,540 --> 00:47:43,410 ser Verizon, que se es, y ahora aquí. 985 00:47:43,410 --> 00:47:44,980 >> Vamos a hacer una comprobación de validez rápida. 986 00:47:44,980 --> 00:47:52,730 Vamos a abrir nuestra escritura de texto, que se parece a esto, portador es% s. 987 00:47:52,730 --> 00:47:58,230 Estamos haciendo mucho más error la comprobación de lo que hice en 2012, portador. 988 00:47:58,230 --> 00:48:01,160 Y ahora, me voy a ir por delante y volver a ejecutar el script. 989 00:48:01,160 --> 00:48:01,660 Okay. 990 00:48:01,660 --> 00:48:06,100 Carrier es Verizon, lo que significa ahora espero que pueda hacer precisamente esto. 991 00:48:06,100 --> 00:48:08,360 Correctamente este año, con suerte, aquí vamos. 992 00:48:08,360 --> 00:48:12,200 >> Así que dentro de este bucle, estoy va a no sólo tener este printf, 993 00:48:12,200 --> 00:48:15,990 Yo también voy a llamar texto y el uso de esta función de recuperación 994 00:48:15,990 --> 00:48:19,670 fue que se necesita un número, un portador, y un mensaje. 995 00:48:19,670 --> 00:48:23,310 Así que vamos a ver, el número va a ser fila entre comillas "número" 996 00:48:23,310 --> 00:48:31,660 cita fila "portador", fin de la cita y el último fue el mensaje. 997 00:48:31,660 --> 00:48:36,250 No atornille hasta este año, punto y coma. 998 00:48:36,250 --> 00:48:36,780 >> Okay. 999 00:48:36,780 --> 00:48:38,280 Crucemos los dedos. 1000 00:48:38,280 --> 00:48:39,970 Vamos a ver si esto funciona. 1001 00:48:39,970 --> 00:48:41,720 Muy bien, así. 1002 00:48:41,720 --> 00:48:43,000 Aquí vamos. 1003 00:48:43,000 --> 00:48:47,380 Vamos a desbloquear el teléfono, cruzar los dedos, maldita sea. 1004 00:48:47,380 --> 00:48:50,300 Indefinido may-- variables oh espera, espera, espera, muy rápido. 1005 00:48:50,300 --> 00:48:51,340 Muy rápido, muy rápido. 1006 00:48:51,340 --> 00:48:53,380 Esto es totalmente la pena. 1007 00:48:53,380 --> 00:48:57,710 Permítanme agarro, déjame agarrar, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Gracias, los textos tienen iniciado de otra persona. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Déjame ir por delante y abrir de verdad rápido, dropbox.php / electrónico aquí. 1011 00:49:11,650 --> 00:49:12,660 Espera. 1012 00:49:12,660 --> 00:49:14,455 Merece la pena. 1013 00:49:14,455 --> 00:49:17,430 Descargas. 1014 00:49:17,430 --> 00:49:18,560 Aceptar, src8m fuente. 1015 00:49:18,560 --> 00:49:19,700 Okay. 1016 00:49:19,700 --> 00:49:21,380 >> ¿Necesitas una línea más aquí. 1017 00:49:21,380 --> 00:49:24,530 Oh ahí está, es en Frosh Mensajes instantáneos, es en el registro a las tres. 1018 00:49:24,530 --> 00:49:28,820 Oh hola, Margo, muchas gracias. 1019 00:49:28,820 --> 00:49:31,130 Aceptar, y me faltaba esta línea aquí. 1020 00:49:31,130 --> 00:49:33,010 Así que déjame agarrar rápidamente esta línea de código, 1021 00:49:33,010 --> 00:49:36,200 que incluye el correo o biblioteca que yo realmente quiero usar, 1022 00:49:36,200 --> 00:49:38,300 Voy a rápidamente volver a entrar en funciones, 1023 00:49:38,300 --> 00:49:42,337 Voy a ir a la parte superior de esta presentar y requieren de este archivo, así, 1024 00:49:42,337 --> 00:49:45,420 y ahora me voy a cruzar realmente mi dedos cuando vuelva a la orden 1025 00:49:45,420 --> 00:49:49,530 script de línea, que está dentro de directorio de host local de hoy. 1026 00:49:49,530 --> 00:49:50,610 Texto Ejecutar. 1027 00:49:50,610 --> 00:49:52,720 Intro. 1028 00:49:52,720 --> 00:49:53,220 Mail. 1029 00:49:53,220 --> 00:49:53,719 Espera. 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 Espera. 1032 00:49:59,600 --> 00:50:01,680 Mail. 1033 00:50:01,680 --> 00:50:02,290 Oh, OK. 1034 00:50:02,290 --> 00:50:03,870 Aquí vamos. 1035 00:50:03,870 --> 00:50:06,880 >> Correo consigue nuevo gestor de correo de PHP. 1036 00:50:06,880 --> 00:50:09,970 ¿Hice bien? 1037 00:50:09,970 --> 00:50:11,067 Maldita sea. 1038 00:50:11,067 --> 00:50:12,150 A-- oh, espera, espera, espera. 1039 00:50:12,150 --> 00:50:12,649 Colocarse. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Te lo prometo, esto es va a ser tan digno de él. 1042 00:50:18,630 --> 00:50:20,340 Dirección. 1043 00:50:20,340 --> 00:50:24,390 Es por esto que yo no hago la ejemplos derecha antes de la clase. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 Los siguientes destinatarios fallaron. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Vamos a intentar una última cosa. 1048 00:50:33,040 --> 00:50:40,660 SMTP fijar de, agregar la dirección, la dirección es de hecho eso. 1049 00:50:40,660 --> 00:50:43,980 Vamos a probar esta última parte en la dirección. 1050 00:50:43,980 --> 00:50:47,210 Aw, estoy muy triste en este momento. 1051 00:50:47,210 --> 00:50:47,854 Gracias. 1052 00:50:47,854 --> 00:50:50,270 Pero realmente aprecio todo los textos que han estado enviando. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Tienes esta David. 1055 00:50:56,320 --> 00:50:59,310 Usted está soplando. 1056 00:50:59,310 --> 00:51:01,720 Dejémoslo ahí y vamos a arreglar el lunes. 1057 00:51:01,720 --> 00:51:04,290 Nos vemos entonces. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: Y ahora Profundo Pensamientos de Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 Si un árbol binario cae en un bosque y no hay nadie alrededor para C it-- [Riéndose]. 1061 00:51:17,590 --> 00:51:18,998