SAM Levatich: Bienvenido a sección para esta semana. No soy Andi. Andi ha caído enfermo el día de hoy, y yo han sido una especie de llamada de último minuto para hacerse cargo. Es la temporada de gripe, así que asegúrese de que usted son mantenerse limpio, lavarse las manos, y comer sano para que usted, también, no está postrado en la cama. Pero sin más preámbulos, vamos a empezar. Hoy, vamos a hablar sobre PHP un poco bit-- cómo PHP se refiere a HTML, la forma en que se refiere a CSS, y algunos de los web cosas que hiciste en la última asignación. Vamos a hablar un poco sobre SQL y cómo se puede trabajar con las bases de datos, que es un componente clave de la P bastante establece 8-- P fijó 7. P fijó 7. Y luego vamos a hablar un poco poco acerca de cómo funcionan los controladores de vista y por qué eso es una filosofía detrás de algunos páginas web modernas y un diseño diferente. Más o menos una gran cantidad de tipos de aplicaciones y las aplicaciones que te pueden enviar están utilizando este modelo, marco regulador de vista, que usted va a utilizar en P puesto 7, así que voy a hablar un poco acerca de por qué que se ha convertido popular, por qué es importante y agradable. Y luego voy a fin de pasar a algunos consejos acerca de la lucha contra P fije 7. Y si tenemos tiempo sobrante al final, realmente podemos hacer algo trabajar en eso juntos. Así, PHP. De hecho, te habrás dado cuenta esto-- que realmente no tiene que sumergirse en it-- pero P puesto 6 tenido algún PHP código que estaba pasando. Y debido a que PHP es un C-como idioma, PHP, a diferencia de HTML y CSS, es un lenguaje de programación, mientras que HTML y CSS son estáticas. Son lenguajes de marcas que tratan con el estilo y el diseño visual. PHP es el verdadero negocio. PHP tiene bucles, tiene conditions-- todas esas cosas que es divertido acerca C. Tiene algunas cosas que son un poco poco mejor que C, que ya veremos, pero creo que la forma más fácil de hablar acerca del PHP es sólo para bucear. Así que me voy a ir a la derecha en el IDE en este punto. Lo primero que vamos que hacer es mirar realmente un poco a algunos de los Código PHP que estaba en P fijó 6. Así que la manera que lo hacemos que-- antes, la forma en que estábamos corriendo el servidor para el aparato fue que tendríamos que type-- o bien usar su aplicación o implementación del personal de server.c por entrar en directorio y corriendo server.c con ningún arguments-- por lo que sólo lo llaman en la host local, que es lo que, probablemente, hizo la mayor parte del tiempo-- y luego alimentándolo un directory-- con que para utilizar como su raíz donde el sitio web haría ser correr, básicamente. Esta semana para P fijó 7, como grande como nuestro código de server.c Es decir, hay personas que ya tienen escrito estas cosas finas encima en CS50 que tienen un poco más funcionalidad, un programa de servidor que es capaz de tratar con un poco más de de las complejidades que vamos a ver tanto en P puesto 7 y P puesto 8. Y la forma en que se inicia el servidor es con solo teclear "apache50." Y antes de hacer nada, usted quiere asegurarse de que que Apache 50 no es ya se está ejecutando, ya que es en mi máquina, lo que hice para probarlo. Y lo hace llamando apache50. Deja, y verás que está parando el servidor web, si usted puede mirar allí en la parte inferior de la ventana de terminal. Y a continuación, sólo para empezar, estamos va a llamar, "apache50 comenzar." Y luego vamos para alimentar a un directorio. Ahora, porque queremos ver a algunos de los P puesto 6 Código que habíamos implementado, en realidad copiado un poco de la P set 6 código en mi propia carpeta, que se puede ver a la izquierda allí. Se llama "SECCIÓN 8" en letras mayúsculas porque estoy tan emocionada para ser transmitido en vivo-en la actualidad. Así que si corremos esto, debe todo el trabajo bastante eficaz. Dice, OK, nuestro sitio es ahora disponible en la dirección de la IDE, básicamente, que es lo que estaba usando exactamente como lo fue en P establece 7-- P fijó 6. Todos mis índices son un índice de hoy. Así que podemos ir a esa dirección, si usted recordará, con sólo hacer clic este pequeño botón en la parte superior derecha. Y usted recordará este código, que pasó cuando entraste en hello.php. Y lo que el código está diseñado para hacer es al escribir un nombre aquí-- si usted dice Sam porque ese es mi nombre-- y hago clic Say Hello, cuando nos fuimos a la página siguiente, Se suponía que el nombre que se mostrará. Se decía: "Hola, Sam" o "Hola," lo que sea que el nombre ponemos en él a pesar de que nos fuimos a una nueva página web. Y este es el tipo de cosas que PHP puede hacer por usted. PHP es capaz de pasar los datos entre dos páginas web. Esta es una página totalmente diferente. Verá el título es "hola" aquí. En realidad, tienen el mismo título, pero yo prometen son diferentes web páginas si nos fijamos en la fuente. Y usted puede pasar los datos que es introducido en este campo de texto, enviarlo a la siguiente página que está siendo llamado a filas, y luego de que los datos es capaz de estar allí en su forma actual. Ahora todavía no hemos implementado esto nosotros mismos, que es lo que vamos a hacer ahora mismo para especie conseguir un sabor de cómo funciona PHP, pero la idea fundamental es que PHP-- puedas especie de pensar en ello como una función. Algo que PHP puede dejarte do es que puede tomar parámetros que la entrada en una página HTML mediante el uso de PHP y formas, y puede pasar como parámetros los a la siguiente página que se carga para arriba. En este caso, estamos cargando este página con el botón de "Say hello". Pero, por ahora, en realidad eliminado algunos de ese código en el hello.php que estaba siendo dirigido que fue realmente Viendo el "hola, mundo "o" hola, Sam "o "hola," lo que era la entrada solo. Así que por ahora, estamos va a hacer eso, básicamente. Vamos a recrear ese y También añadir un poco más funcionalidad, hacer un poco más con ella, consulte lo que PHP es realmente capaz de hacer. Así que primero, vamos a hablar de este archivo, hello.php. Así que si nos acercamos en un poco bit-- y ahora estoy especie de tratar de desplazarse todos el camino around-- allí vamos. Verás que se llama hello.php, pero la sintaxis de ella se parece a un archivo HTML. Esto es porque el PHP real en este archivo es todo atascado entre estos interrogación bloques mark-caret. Todo aquí se considera código PHP. Y te darás cuenta de que cuando hice un comentario, verás lo familiar de dos barras diagonales. Y si usted recordará, en HTML, si escribo un comentario, se ve algo más cerca esto, que es un comentario en HTML. Así que en realidad todo lo que entre estos dos corchetes angulares ahora es de código PHP, que se refleja en el hecho de que este pequeño comentario símbolo se convirtió en un comentario. Así que cada vez que escribir código PHP, incluso si no hay código HTML fuera de ella, Siempre va a ser encerrado en estos corchetes angulares con signos de interrogación. Puede especie de pensar it-- cómo todo del código que corría en sus programas en C fue encerrado en una principal int, nula, corchete, extremo declaración corchete. Y verás llaves en PHP, también, pero esto es una especie de como el principal método de PHP. Así que ahora, ¿cómo lo hacemos nada en PHP? Ahora, PHP es una programación lenguaje que es muy similar a C, pero opera en la web. Así que una cosa que podrás immediately-- un solo de las primeras cosas que realmente hizo con C se le imprime cosas, ¿verdad? Así que en C lo hicimos con una función printf. Le dimos una cadena, probablemente con una nueva línea, y luego nos terminamos con un punto y coma. Así que la forma en que vamos a hacer eso en PHP-- porque no es bastante printf. Es un poco de sintaxis diferente. La forma en que imprimimos cosas en PHP es que decimos, "echo hola" o "eco" palabra. Y eso tiene el efecto de hacer printf con una cadena, "hola". Y añade la nueva línea a la misma. Así que vamos a hacer en este momento sure-- Voy a alejar el zoom de nuevo un poco bit-- vamos a asegurarnos de que que el código está trabajando porque puede muy bien de un error en el código que tendremos que afrontar. Así que el servidor ya se está ejecutando. Así que si nos desplazamos hacia abajo hasta el fondo, yup, el servidor sigue funcionando. Así que si simplemente hacemos tapping en este poco adecuado aquí-- welcome-- debemos get-- grande. Seguimos teniendo la familiar "Saluda" diálogo, pero cuando escribo en "hola", ya veremos que el texto "hola" era de hecho impreso, que es exactamente como que esperábamos debido eco en PHP es como una declaración printf. Así que de vuelta al código, la forma en P puesto 6 lo hicieron el código de distribución se le proporciona hacerlo de modo que lo haría PHP salida de lo que usted tecleado en la pantalla anterior? Y para suerte de examinar por qué sucede esto, estamos va a entrar en index.html, que es el archivo original, el archivo que aparece en esta pantalla con el botón "Saluda". Te das cuenta de que hay todas las cosas clásicas que hemos llegado a esperar de HTML, tales ya que estas cosas, estas etiquetas encerradas entre paréntesis angulares, como PHP pero sin los signos de interrogación, lo que indica una cosa especial a HTML. Tenemos título, que es "hola". Y te darás cuenta de que, como vimos, el título es "hola" en ambos casos. Vamos a cambiar éste "decir" lo que sólo puede distinguirnos donde estamos. Pero tenemos un cuerpo. Y entonces el poco interesante, el bits que aparece en el código HTML, Es este elemento de formulario. Y así que tenemos un formulario. Y esta es la clave. Así es como estamos trabajando con PHP. El parámetro de acción de forma dice que hello.php es lo que vamos a enviar los valores de esta forma a. Aquí es donde estamos pasando los parámetros, por así decirlo. Se dará cuenta de otra cosa aquí es que el método es "llegar". Hay dos principales métodos por los cuales será a utilizar PHP para pasar datos entre las páginas web websites--, rather-- en esta asignación. Y esos métodos son "get" y "post". Hay algunas sutiles diferencias entre GET y POST que vamos a obtener into-- nos será "llegar" en, si se quiere. Pero para todos los intentos y fines, obtener y post están a sólo formas que pasar parámetros con un poco diferentes ejecuciones. Por ahora, vamos a utilizar conseguir porque conseguir era lo que se usaba originalmente en el archivo PHP de P puesto 6. Y de hecho, si vamos en y buscar antes de que hayamos editado cualquier otra cosa, Voy a decir hola a-- ¿cómo te llamas? AUDIENCIA: Elliot. Levatich SAM: Oh, Dios mío. No sé cómo se escribe eso. ¿Podría explicar eso por mí? AUDIENCIA: E-L-L-Me-O-T. Levatich SAM: Me-O-T? AUDIENCIA: Sí. SAM Levatich: Perfecto. OK. Supongo que lo hice saber cómo se escribe eso. Lo siento por eso. Pero si decimos "Di hola," no es no va a aparecer en la pantalla todavía porque modificamos el código un poco. Pero si "Say Hello" - OK, así que "hola" es aquí. Pero si tomamos un cerrador mirar a la propia dirección URL, veremos que termina con hello.php? name = Elliot. Por lo tanto, esta es una manera de comunicar a la siguiente página Web los parámetros que hemos pasado. Dijimos name = Elliot. Y eso es en última instancia cómo P fijó 6 accedido a la variable que pasamos en a través del formulario. Y esto es algo que es peculiar a una petición GET. Una petición get hace que los parámetros conocido en la URL de la página web. Y usted recordará, también, en P puesto 6 que tenía que escribir una función que se refirió al hecho de que esta cadena de consulta podría existir después de un archivo. Podría haber un signo de interrogación seguido por, básicamente, cualquier número de caracteres. Y eso es exactamente lo que está pasando aquí. Y la razón por la que había que analizar que en su implementación de server.c en P set 6 es para que se notaba el código PHP que name = Elliot. Necesitabas poder analizar que de la URL para que el archivo PHP en cuestión sabía lo que estaba tratando. Así que espero que esto le da la motivación para server.c ahora que nos estamos moviendo en fuera del C en PHP. Así que vamos a realmente se centran en el acceso a la las cosas pasan a través de una petición GET ahora en este punto. Voy a guardar este. No cambiamos nada. Parece que tenemos un campo de entrada. Estamos estableciendo algunas propiedades, como podemos hacer un HTML. Estas son las cosas simples. No necesitamos estos. Pero tenemos autocompletado apagado, que básicamente says-- ya sabes, cuando escribe cosas en la web, a veces se trata de llenar que para usted. Así que es una buena cosa. Queremos que apagarlo para este propósito. Esa fue una decisión CS50. Así que podemos eliminar que si queríamos. El enfoque automático simplemente pega el cursor en la forma como en el principio. Una vez más, no es demasiado importante. Pero name = "nombre" - que es un poco difícil porque su nombre y el nombre. Pero podríamos haber cambiado esto a algo más. Y de hecho, eso es lo que haremos ahora. Vamos a decir "persona", que es algo así como el nombre si una persona se define por su nombre. Así que vamos a cerrar esta, abrir de nuevo hasta nuestro sitio web ya que nuestro servidor todavía está en ejecución Apache 50, y nos van a decir, hola, aquí está Elliot de nuevo. ¿Por que no? Hola. Y si vamos por aquí, ya veremos entonces en lugar de name = Elliot, dice persona = Elliot. Y eso es un resultado directo del hecho que simplemente cambiamos name = "persona". Así, en un elemento de entrada de un formulario HTML, el campo de nombre es el identificador para el parámetro que está siendo pasado. Es como si va a crear una función "añadir" que se llevó en dos enteros y dijiste int a y b int. Eso sería un nombre, y si querías otra forma, que que podemos hacer con sólo copiar y pegar, entonces tendría nombre b. Así que ahora vamos a tener dos parámetros que se están pasando a través de llegar al siguiente website-- la siguiente página web, hello.php. Y en realidad podemos ver que de nuevo si queremos. Esta es la forma más fácil para hacer frente a el código web en el IDE, básicamente. Empiezas el servidor, lo consigue correr, y luego cada vez que hacer algunos cambios, justo cerca ese archivo sólo para estar seguro. Al pulsar el botón de retroceso es un poco difícil porque podría cargar una anterior versión, no la más actualizada. Y luego simplemente haga clic en el botón de nuevo, pop up-- derecha oh, y ahora hay dos formas. Y por lo que si escribimos una cosa en cada uno-- "Hirshhorn jason," para instance-- decimos hola. Miramos hacia nuestros parámetros. Parece que tenemos, como era de esperar, a = jason yb = Hirshhorn, que representa los dos parámetros que pasamos a esta función. Así que ahora vamos a realmente llegar a la aplicación de esa funcionalidad que nos tenido en P puesto 6. Así que en este momento sólo estamos haciendo eco hola. Y eso no es muy útil. Queremos hacer eco de alguna variable que se pasó a nosotros. Y sabemos el nombre de esta variable. Tenemos una y hemos b. Así que podríamos optar por repetir cualquiera de ellos. Pero, ¿cómo acceder a ella? Bueno, hay cierta variables globales en PHP. Y yo voy a escribir en comentarios aquí. Los dos más importantes son get y después para nuestros propósitos en este momento. Estas son las matrices o, Técnicamente, los diccionarios donde nuestras variables que estamos que pasa a la siguiente página Web en directo. Y pronto veremos cómo usarlos. Otra breve nota sobre el código PHP y algunos detalles de it-- en C, para declarar una variable o utilizar variables, que primero había que declararlos. Y lo que tenía que hacer cuando declararon ellos era decir int a carbón o b. Usted tuvo que declarar los tipos de éstos las variables antes de que los creó. PHP-- usted no tiene que hacer nada de eso. PHP no pide el tipo de variable. Y la forma en que usted crear un lugar variable-- de decir int, char, string-- que es realmente char *, ya que sabes-- en lugar de hacer todo eso, porque todo es del mismo tipo, sin tipo, podemos simplemente utilizar un carácter, el cual es el signo de dólar. Y verás que ya está apareciendo arriba, pequeñas cosas de autocompletar. Y está diciendo que _GET y _POST dos opciones que tengo disponible a mi. Algunas de estas otras cosas son otras variables globales en PHP que usted va a utilizar más de el curso de P fijó 7. Por ahora vamos a centrarse en GET y POST. Pero este es un útil cosa que el IDE hace donde una vez que has escrito en ese signo de dólar, que va a empezar a rellenar las variables globales o variables que ya han definido. Así que si quería definir una variable llamada "cadena" usted podría ponerlo igual a "hola". Y es, básicamente, tan simple como eso. Y entonces podríamos hacer algo así como "$ string eco." El IDE se debe tirar algunas errores si estoy haciendo algo mal, así que espero que estoy haciendo las cosas bien. Pero los errores siempre se presentan. Otra cosa difícil sobre PHP es que no está compilado. Así que con los programas en C, que haría la rutina diaria de-- básicamente, usted hacer cambios a el código, había guardarlo, y luego lo haría hacen, dónde estaba maquillaje el paso que llama el compilador, clang, para hacer que su código, este texto presentar, en un archivo ejecutable. PHP es similar a C, pero ha ejecutado sobre la marcha de su navegador web. Así que no hay forma de saberlo. Hacer lanzaría los errores votos, ¿no? Sería como, usted no declaró esta variable antes de intentar usarlo. Hiciste todo este mal segfault stuff--, violación de segmento, todo ese tipo de momentos de diversión que vinieron con maquillaje. PHP es un arma de doble filo porque no va a conseguir esos errores, pero eso también significa que usted no sabrá realmente lo que está mal con su programa si usted acaba de ejecutarlo y no está trabajando. Pero el depurador debe señalar algunas pequeñas cosas esperemos votos sintácticamente que se puede arreglar. Así que ahora si vamos más a-- dicen, vamos a cerrar eso. Reabrir. Y estamos de vuelta aquí. Así que tenemos una variable y una variable b. Y estos no importa en última instancia. Vamos a los llamamos hy g por ninguna razón en particular. Y decimos hola. Ahora parece que nuestra cadena "hola" es de hecho la impresión. Creamos una variable llamada "cadena", lo puso igual a "hola". Tenga en cuenta que no teníamos que hacer malloc o hacer un arreglo de caracteres. En PHP, ya que las variables son sin tipo, una cadena es la misma que para un char todos los efectos. Esto podría ser "hi". Esto podría ser sólo el carácter k. Este puede ser un número 1. Y no le importa. PHP no se preocupa por el tipo de la variable. O bien, se preocupa. Se preocupa cuando intenta y hacer cosas con él, pero no le importa en el paso de la declaración. Y al igual que se puede en C, puede declarar cadenas en la pila como éste aunque decir "pila" es un poco nombre poco apropiado potencial cuando estamos hablando de PHP. Pero no tenemos que preocuparnos por eso. Así que nos dieron nuestra cadena "hola", y nos hacemos eco de la cadena. Así que ahora que hemos discutido variables. Así que ahora tenemos que hablar sobre get y publicar y realizar la última cosa que es necesaria para conseguir realmente la copia de seguridad a la funcionalidad de la P puesto 6. Así que ahora mismo estamos haciéndose eco de la cadena, pero no tienen estas variables GET y POST. Y debido a que estamos utilizando El método GET, que Parece natural que nuestra variable que nos interesa, tanto A como B, se ubicará en la matriz o diccionario, técnicamente conseguir. Así que si establecemos conseguir de esta manera con su groups-- Presioné entrar y no le gustaba it-- pero aquí tenemos conseguir. Y así que ya existe. Así que ya podemos comenzar con el acceso algunos de los elementos de conseguir. Si nosotros conseguimos, esta sintaxis para matrices en PHP es muy similar a C. Tenemos nuestros dos corchetes. Así que si decimos llegar de manera normal array, podríamos acceder el índice de orden cero, el primer índice. PHP es el índice cero. Podríamos decir cero, uno, cosas dos-- como este. Y he estado diciendo que consiguen es técnicamente un diccionario. Así que lo que PHP está haciendo bajo el capó, que es un poco mejor que C, es que ya está dando algunos funcionalidad diccionario, que es realmente tablas de hash, o intenta, supuestamente. O, técnicamente podría ser una oportunidad así. Pero PHP está implementando una tabla hash, que forma un diccionario eficaz. Y por lo que sabemos el nombre de nuestra variable, ¿verdad? Se trata de ser aprobada en la cadena de consulta por PHP. Tenemos a = h y b = g donde ayb son los nombres de las variables. Así que la forma en que podemos acceder a la valor que corresponde a la tecla en el diccionario es sólo decir _GET_GET ["a"]. Así que ahora tenemos _GET ["a"]. Y si simplemente reemplazamos el interior nuestro eco, si nos hacemos eco _GET_GET ["a"] - y vamos a ver si el depurador lanza cualquier error de alrededor esto-- vamos a guardar eso y cerramos esto. Abrelo. Así que estamos haciendo un derecho ahora, para que b no debería importar. "ella" y "él" - "tararear." "ella" y "zumbido". Suena bien. Y imprime "ella", que es una locura. Pero eso es exactamente lo que estaba sucediendo en P puesto 6. Básicamente, lo que establece P 6 fue doing-- echo hola, nombre-- donde tuvo un nombre de la variable y que sólo le pide que escriba en ese poco de texto. También hubo alguna código adicional en incluía sentencias if, que podemos hacer en este momento. Podemos decir, si existe, que es una funcionalidad dentro de PHP, _GET Con el subrayado, "nombre" - que es básicamente diciendo: "si el nombre ha sido rellenado" porque podríamos haber hecho clic en el botón para enviar el formulario sin escribir nada en ese campo. Y nos envolvemos que en nuestra amistosas entre llaves. Podemos tener una declaración más. Y eso es todo dentro del ángulo de PHP soporte, signo de interrogación, soporte en ángulo, si se quiere. Y ahora vamos a ver si esto funciona. Sigo esperando a que la depuración y mierda sobre mí, básicamente, pero aún no lo ha hecho. Tal vez lo hará ahora porque yo hablé. Sip. Lo hizo, de hecho. Así, nada está apareciendo. Esto se debe a algo mal que escribí en el código PHP. Y mencioné la depuración es difícil porque en PHP, que no compilarlo antemano y el compilador no era como, aquí es donde sus errores son. Pero lo que podemos hacer es-- hacer la gente recuerda cómo mirar a las diferentes redes solicitudes que PHP-- o que los sitios web ¿enviar? [? Malin?] Hizo esto en dar una conferencia una vez o dos veces. ¿Te acuerdas de dónde vamos a encontrar las diferentes deudas y 200 aprueba, todos estos códigos que se están enviando a través de HTTP de la página web a la página web? ¿Alguien recuerda donde vamos a hacer eso? AUDIENCIA: Página Fuente. SAM Levatich: fuente de página. Exactamente. Si usted va a la página Source-- perfecto. Así Página Fuente detiene el inspector. Y yo estoy usando Safari. Muchos de ustedes probablemente a utilizar Chrome o Firefox. Pero mientras estás en cualquier browser-- moderna y no dude en seguir junto, si quieres. Puede escribir hasta este código o basta con ver el interior del conjunto P 6 directorio para algunas cosas similares. hello.php es lo que estamos Actualmente trabaja en la emulación. Así que hay una variedad de fichas. Podemos mirar a todos los recursos. Podemos ver el código fuente. Así que parece que no lo hizo conseguir el cuerpo pasado en la final. Se encontró un error en PHP y dejado de cargar toda la página web. Ni siquiera tenemos un fin etiqueta para HTML ni nada. Y si nos fijamos en la red, podemos vemos que estamos siendo enviado una solicitud. Este es el dominio. Esta es la direccion. Es un documento. Estamos utilizando el método get. Y es rojo. O, fue rojo cuando No se lo selecciona. ¿Cómo puedo eliminar la selección? Bueno, era de color rojo. Permítanme Actualizar. Ahí está. Ahora es el rojo. Así que es de color rojo, lo que significa fracasó, lo que es malo. Así que vamos a examinar por qué se dejó. Así que todo lo que la fuente de la página puede básicamente dicen es lo tuyo no trabajamos, que ya podemos ver. Así que lo ideal no habría ser una herramienta más útil. Y hay algunas extensiones del navegador que le permiten depurar PHP, pero nosotros no vamos a estar escribiendo un montón de PHP, por lo que es probable que sólo lo mejor mirar a través de su código con cuidado y sólo asegúrese de que no está haciendo otra cosa. Así que vamos a ver si el formato de este si la declaración es donde está el problema. Quiero cargar que volver aquí. Hola. Así que hay un problema allí. Así que para la sintaxis correcta de PHP, PHP va siendo C-como en que verás bucles. Vas a ver si las declaraciones. Vas a ver todos estos amigos que te has convertido en familiarizados con en el transcurso de este semestre CS50. Pero la mejor manera de encontrar la manera de hacer algo en PHP es Google que o mirar algunos ejemplos de código PHP porque usted sabe la funcionalidad. Usted sabe lo que pueda ver con el programa. Usted puede recorrer. Usted puede bucle tantas veces como quieras. Usted puede recorrer en toda tipo de maneras diferentes. Puede crear funciones. Usted puede crear funciones que llamar a otras funciones, funciones que llaman a sí mismos. Y usted tiene nombres para estos conceptos. Tienes recursividad, loops, si, otros flujos de control. Y por lo que Google es su mejor amigo. Incluso decir, "si PHP declaración "y que habrá ser toneladas de mensajes con respuestas a otras personas que he tenido preguntas similares a usted, que están empezando a cabo con PHP y tienen curiosidad por una cosa sintaxis. Porque tenemos el lujo de ser capaz de mirar el código en P serie 6, que realmente tire hacia arriba y vemos que OK, aquí hay algo interesante. Así que esto es lo que realmente parecía en P puesto 6. Así que si pasamos por esto, podemos ver que hemos tiene varios de estos pequeños Bits de signo de interrogación en PHP similares. Y no hay llaves. Hay dos puntos. Y hay rizado apoyos en PHP, pero esto es un formato y una forma de hacer PHP que funciona bien con HTML porque como verá, estamos cerrando fuera de estos PHP bits-- la vigilara y el ifs y todo eso-- y después estamos intercalando HTML dentro de ellos mientras que aún después de la flujo de control establecido por PHP. Así que sólo voy a rápido paseo a través de este porque es una gran parte de la misma conceptos que estábamos haciendo antes. Tenemos, si no está vacío, paréntesis, _GET_GET ["nombre"]. Esto es todo lo mismo. Estamos utilizando el diccionario que _GET PHP envía a petición de las formas, porque es los parámetros de acción, y el método es conseguir. Y a continuación, que termina eso. El colon es un significante sólo hacer esto si la sentencia if se evalúa como verdadera. Es como una llave. Y de hecho, es una llave en otros lenguajes como Python, que puede encontrar si sólo hacer eso para su proyecto final. Y luego esta línea, hola. Entonces tenemos esa cosa rara. Tenemos más soportes. No hay HTTP allí-- o PHP, lo siento. Pero hay un signo igual. Y luego tenemos una función, htmlspecialchars (_GEThtmlspecialchars (_GET ["name"]). Esto es algo así como una mayor versión avanzada del eco. Como habíamos echo como una forma para imprimir cosas en PHP. Esta es una función que es se define en el que PHP se ocupará de algunos más desagradable personajes y valores de bytes que podría pasar. Siempre es más seguro que usar esto. Pero echo hará el trabajo bien si no estamos se trata de algo demasiado desagradable. Y por lo que este tiene el mismo efecto de que, básicamente, estas cosas en el medio la cuestión marcas se evalúa por PHP. htmlspecialchars devuelve un bonito HTML valor impreso de _GET_GET ["nombre"], es decir, lo hemos escrito en el formulario. Y entonces va a decir hola, espacio de coma, y ​​después de eso. Toda esa cosa entre los paréntesis angulares será reemplazado por lo que sea htmlspecialchars pone a cabo. Así que eso es básicamente similar a lo que estamos haciendo. Y tenemos una sentencia else que es hola mundo, lo cual tiene sentido. Así que ahora vamos a volver a nuestro código y ver exactly-- oh. Dije existe, que no es una cosa que queríamos hacer. Queríamos decir no está vacío. Y lo que este debe trabajar un poco poco mejor, no _GET_GET vacío ["nombre"]. Y eso corchete partidos que corchete. Tenemos nuestras llaves aquí. echo hola _GET ["nombre"]. Vamos a ver si esto funciona un poco mejor. Estamos aún en marcha nuestro servidor. Hola Jason. Hola Jason. Y funcionó esta vez. Y eso es una prueba que pueda de hecho utilizar las llaves que conocer y amar en código PHP en HTML. El código PHP proporcionada a que en conjunto de procesadores 6-- pset 6-- proporciona otra manera de haciendo la misma cosa. Así que ahora tenemos el poder. Tenemos la funcionalidad para implementar el código PHP que vimos en el conjunto de procesadores 6 por nosotros mismos, básicamente. Antes de pasar, ¿cuáles son algunos de los preguntas que usted tiene en este momento? Sí [inaudible]. AUDIENCIA: Entonces, en la versión en pset6, cuando se ejecuta, hay un espacio. Y puedo ver que el espacio es después de la coma. [Inaudible] inicio el soporte abierto. ¿Cómo incorporar el espacio la forma en que escribió sus propios códigos? ALTAVOZ: Esa es una buena pregunta. Y así vamos a darse cuenta de eso. Así que eso es una muy buena pregunta y uno que no me considero. Pero vamos a hacerlo juntos. Así que en primer lugar, lo que Que estoy haciendo con eco es cuando acabamos de eco hola, emite hola. Si nos hacemos eco ahora esto subir a un independiente línea, vamos a examinar lo que sucede. Así hacemos clic esto. Seguimos diciendo hola Jason. Así que de nuevo, no tenemos este espacio. Y es que, en PHP, cuando hemos echo, no importa cuántas spaces-- pues no, no la V-- no importa cuántos espacios que ponemos en aquí-- si ahora cargamos que de nuevo, Hola, Jason. Sí, ver, todos aquellos espacios consiguieron devorados. Y eso es algo que la función de eco hace. Así que para cuidar de ese espacio, y esto es una de las razones ¿por qué usted no utiliza el eco y utiliza htmlspecialchars lugar. Tengo curiosidad por lo haría pasaría si hiciéramos esto donde adjuntamos un espacio en una cadena. Sinceramente, no estoy seguro de lo pasará cuando hago esto. Así que esa es una forma. Esa es una manera de cuidar de él. Si envuelve el espacio una cadena, entonces el espacio se emitirá muy bien por el eco. Lo más seguro es hacer htmlspecialchars. Eso siempre es la apuesta segura. Pero ahora tenemos una manera de hacerlo con eco en caso necesario. Y de manera similar, podemos eco nuevas líneas, toda la clase de cosas que usted está familiarizado hacerlo en PHP. Cualquier otra persona, lo que son más preguntas que otras personas tienen en este punto sobre PHP? Si la gente se presentó un poco tarde, Estoy feliz de estar después de un poco y hablar de algunos de los principios. Y está también toda livestreamed, y archivados, que es una locura. De todos modos, así que ahora vamos a hacer algunos más cosas avanzadas con PHP. Y una de las primeras cosas que usted se introdujeron en el C fue de bucles. Y PHP tiene un motor más potente para lazo llama el bucle foreach. Y parece que esto-- para cada espacio en blanco como, entre llaves en blanco, hacer la cosa. Así que esto es básicamente un atajo. Véase, el bucle for como una construcción sintáctica fue ideado en C y en asamblea lengua y cosas así. Ideado en C, precisamente, como una abreviatura para muchos de los tipos de bucles que la gente vea. Como cuando usted escribió un bucle, hay era a menudo un paso de inicialización ejecutado desde el principio, un condición en la que el bucle sería stop-- y esa es la característica eso es sólo en un bucle while, o que hace tiempo tiene exactamente sólo que feature-- y después un paso de incremento en el extremo. Y así que le encuentras a menudo escribir código como el siguiente. Voy a borrar algo de esto. Pero si estamos iteración a través de personajes de una matriz, por ejemplo, al igual que hemos tiene una gran variedad de personajes. Lo sentimos para traer de vuelta C. Lo sé, usted pensaba que estaba hecho. Pero es sólo con el propósito de aprendizaje de PHP, lo prometo. Así que si tienes un str carbón de longitud 8, y vamos a dicen que dice Hellooo con un nulo final. Grande, así que eso es nuestra cadena. Y luego tuvimos un bucle for. Tenemos int i es igual a 0. Y queremos salir cuando str de i no es igual a igual a null, porque salimos cuando es igual a cero. Y luego hacemos i ++ en cada punto en el bucle for. Hacer algo con str de i. Así la fórmula básica era, tuvimos esta matriz que querido tratar como elementos separados. Pero lo que teníamos que hacer es que tuvimos que básicamente crear un número entero separada variable que fue contando cada vez que fuimos a través del bucle. Y entonces tendríamos que luego llamar strstr [i] cuando lo que realmente quería hacer es ir personaje por el personaje, ¿no? No queremos incrementar la número entero y luego usar ese entero para acceder a cada carácter individual. Tenemos muchas ganas de carácter por carácter. Y así para cada uno de forma inteligente calcula que para nosotros. Si tenemos una matriz, que podemos declarar en PHP como sólo-- si tenemos una variable llama, vamos a llamarlo matriz. Los milagros de ninguna tipificación, es al igual que cualquier otra variable. Es sólo una matriz. Y tenemos un poco de [inaudible] como 1, 2, 3, sólo una especie de matriz inicializado. Está bien, no le gusta mi foreach. Pero si foreach-- realidad He escrito que un poco mal. Hay dos maneras de hacer un bucle foreach. Ahí está la sintaxis y el como sintaxis. Y nosotros vamos a hacer en primera sintaxis, no como. Esa es mi error. Num Así foreach en ordenanza, eco num. Y PHP está gritando a mí por alguna razón. Se trata de encontrar un inesperado en en algo, que es un poco de una molestia. Pero vamos a averiguar por qué es eso en un momento. Así que no le gusta eso. Vamos a tratar de usar el como. Prefiere la sintaxis es como parece. Así que vamos a hacer array foreach como num. Así que un poco de explicación de lo que acaba de suceder se la como sintaxis se diciendo-- bien primero, echemos un vistazo a lo que este imprime. Así que abrimos nuestra IDE. Vamos aquí. Decimos: Hola Jason. Y lo hizo 123, que eran los contenidos de la matriz que hemos creado hasta la parte superior. Así que sumergirse en este bucle foreach, tenemos una gama variable llamada que es un conjunto de tres números. Y luego estamos haciendo foreach matriz como num, eco num. Y eso es más intuitivo que una de lop. Estamos diciendo, el tratamiento de cada uno de las cosas en la matriz como num, Quiero que me des num. Y eso es exactamente lo que está haciendo. PHP es el cálculo que cuando dices gama foreach, y que está tratando con una matriz, lo que usted va a querer para repetir son los personajes de esa matriz, son los enteros en esa matriz, son los elementos de la matriz. Y es lo que le permite almacenar aquellas variables como num, y num continuación, sólo de salida de inmediato en lugar de decir, Tengo una variable llamada i, y entonces quiero strstr salida [i]. Y para que nos permite hacer cosas interesantes. Al igual que, básicamente, no tenemos para crear estas variables como la i de y hacer todo estas cosas de incremento al final. PHP se encarga de todo eso para usted. Así que ahora vamos a hablar de foreach como se aplica a nuestro diccionario _GET. Así que vamos a comentar esta rápidamente. Así que tenemos nuestra matriz _GET. Tenemos esta variable. Y tiene algunas cosas en ella. En este momento, sólo tenemos una variable se pasa a ella, que es nombre. Pero si pulsa ENTER, ahora podemos tener dos variables. Podemos tener el nombre y la edad, por ejemplo, si queremos obtener la edad y también el nombre de una persona, curiosamente. Así que ahora _GET va a ser un diccionario con dos elementos, con dos pares de valores clave. Y la primera key-- voy a escribir ésta en el tablero también. Tenemos nuestro diccionario es _GET. Lo siento, es que es un poco difícil de ver. Pero dentro de nuestro diccionario tenemos nombrar, que va a ser algo que se nos da. Y vamos a tener la edad, que es también va a ser algo que se nos da. Y esta es la totalidad de nuestro diccionario. Así que tiene dos elementos en los mismos. Y así porque foreach bucles son inteligentes, que podría pensar, y correcta podría pensar que foreach puede recorrer este diccionario, imprimiendo los valores dados por su nombre y edad. Así que vamos, de hecho, lo hacen precisamente eso. Vamos a construir un bucle foreach. Y vamos a hacer por _GET como. Y vamos a hacer lo siguiente. Así que vamos a ver qué pasa si tecleamos simplemente la palabra, y luego decir palabra eco. También vamos a hacerse eco de una nueva línea sólo para que sea un poco más claro, que esta pasando. Así que vamos a ver. No me da ningún error. Y vamos a cerrar esto. En nuestra página web, vas a estar haciendo mucho de eso en el transcurso de pset7. Por eso decimos que mi nombre es Sam. Mi edad es 45. No es. Pero imprime, como se esperaba, Sam 45. Y así te darás cuenta de que lo que bucle foreach did-- aquí, vamos a volver a eso por lo que toca en el board-- obtenemos _GET como palabra. Y había cuatro cosas en _GET. Pero sólo imprime dos cosas. foreach, siendo su auto de inteligencia, por supuesto que lo que realmente queríamos era de los valores, no las llaves. Pero hay una manera de que pudiéramos imprimir las llaves, así, si queríamos. Si quisiéramos también saber qué se llamaban estas variables, hay una manera que puede acceder a este también. Y la forma de una especie de hacer eso, por lo que podemos decir, permite en realidad dividirlo en pares de valores clave. Así que vamos a ver qué pasa ahora. Así que tenemos la clave. Tenemos valor. Tenemos otro nuevo line para facilitar la lectura. Y vamos a ver qué pasa cuando hacemos esto ahora. No sé la edad que Jason es. Jason de 15. Así que tenemos el nombre de Jason, de 15 años. Así que pudimos acceder a la clave y pares de valores de este diccionario sólo decir como puntos clave para valorar. Y eso es una sintáctica foreach poco azúcar que permite tener acceso a las cosas en el diccionario. Así que espero que este tipo de enfatiza la potencia del bucle foreach. Usted puede casi tiro cualquier cosa que iterable parece, como todo lo que tiene múltiples elementos como una matriz, como un dictionary-- esos son de dos cosas principales que va a trabajar con tanto en la vida y en el conjunto de procesadores 7. Así que usted puede lanzar ese material en ella, y se darán cuenta de lo que quiere hacer con ella. Se dirá, OK, voy a conseguir estas cosas de los datos que se pasó a mí. Y eso es algo que usted es va a utilizar una gran cantidad de en pset 7. Voy a desplazamiento rápido abajo sólo para ver donde estoy. ¿Las personas tienen preguntas en este momento? Preguntas en absoluto? ¿Sí? AUDIENCIA: Así que con la clave y el valor, usted podría llamarlo otra cosa y no por ello deja trabajar? ALTAVOZ: Vaya. Wow, estoy totalmente eliminado toda la línea. Buen trabajo. Así que una, a. Key y el valor es sólo una convención. Es útil. Se podría conseguir un poco de diseño puntos, tal vez algunos puntos de estilo por hacer eso, ya que realmente transmite la intención. Pero nosotros decimos una y yarp. AUDIENCIA: Usted no tiene que cambiar nada en el archivo HTML con el fin de reflejar eso? ALTAVOZ: No, en absoluto. AUDIENCIA: Y que sólo sabe que debido a la mayor es igual a no sea: ALTAVOZ: Sí. AUDIENCIA: indicador --que que Eso es-- ALTAVOZ: Sí. Esa es una sintaxis foreach, pero sí. AUDIENCIA: No son tipos. Entonces, ¿qué si quería edad solamente ser un número? ¿Hay una manera de hacer eso? ALTAVOZ: Hay maneras de comprobar si variables que se ajustan a ciertos tipos. Así PHP pide un poco más de porque no hay tipos en. Algunas formas en que pide menos. En cierto modo, pide más. Porque si usted tiene sólo algo en una variable, usted no tiene idea de qué tipo es. Pero si usted es inteligente acerca de las variables que se asigna a los tipos y asegúrese que funciona sólo le return-- quiero funciones a solamente retorno un tipo de valor, de modo que pueda básicamente esperar que la variable que volver a partir de una función será del tipo que usted piensa que va a ser, básicamente. Pero hay algunos métodos por el cual se puede comprobar. No me acuerdo de ellos la parte superior de mi cabeza. Estoy esperando a que se vuelve azul. isint? ISSTR? Hay métodos incorporado en PHP que puede comprobar el tipo de variables para usted. Pero si asigna las variables inteligentemente, no debe tener que hacer eso demasiado en pset 7. Pero sí existen esos métodos. Y eso es algo que es en el lenguaje mismo. Y no recuerdo la sintaxis precisa. Incluso podríamos mirar hacia arriba. Pero el tiempo es la esencia. ¿Alguien más tiene tienen alguna pregunta más? Sí. AUDIENCIA: Tengo sólo una más. Así que usted ha mencionado el método GET, pero Usted no mencionó el método POST. ¿Estamos regresando a eso? ALTAVOZ: Sí, lo haremos volveremos a eso. Eso es exactamente lo que estaba buscando en mi teléfono, que ahora se quedó dormido, pero lo encontraré. Sólo me aseguraba que golpeamos todas las notas de PHP. Sí, no hay versión de depuración. Sí, tenemos un par de cosas más que queremos hacer ahora en este punto. Así que hablando de POST, que usted ha mencionado, la unica diferencia entre GET y POST es que recuerdan cuando miramos en esta dirección URL y vimos, oh, es igual a un nombre y edad es igual a yarp están justo en la URL ahí para nosotros. POST es un poco más reservado con su paso de la información. Así que si usted no desea que un usuario a saber, por ejemplo, No quería que el nombre de usuario y la contraseña de la persona actualmente conectado a mostrar en la URL, que es una cosa razonable a no querer en la URL, porque alguien puede verlo. Si se vinculan a alguien a una página, no quieren que su URL pegado allí, porque eso sería permitir que la gente inicie sesión solo con el pegado de una URL en lugar del hecho de rellenar un formulario. POST es un poco más reservado. Y lo único que vamos a tener que cambiar son este método, el cambio de llegar a publicar. Y luego en el interior del HTTP, en lugar de acceder a la _GET matriz, vamos a acceder al _POST matriz. Y nos dimos cuenta de que, si abrimos este nuevo otra vez, Jason declina lentamente en edad. nombrar Jason, de 14 años. El mismo material aparece. Pero vamos a la URL y esas variables no están allí. Y la forma en que la POST passes-- a fin de recordar cómo mirar a la fuente de una página. Nos vamos a la red. Nos refrescamos. Y esta es otra cosa que POSTE le dará advertencias sobre. Es posible que haya visto un cuadro, un texto boxear como este en su navegador. Estas seguro que quieres para enviar un formulario de nuevo? POST es lo que está enviando estas formas. Debido a que, básicamente, si envía su información de tarjeta de crédito a alguien, eso no va a aparecer en la URL. Eso va a ser una solicitud POST. Así que cuando se actualiza la página, que es volver a enviar esa solicitud posterior. Así que ahora sí queremos enviar el formar de nuevo porque no va para crear las compras duplicadas. Y nos dimos cuenta de que aquí abajo, el método que estamos usando es POST. Y, efectivamente, la transferencia de bytes. Se transfiere 401 de ellos. De muy pequeño programa. Pero no hay ningún lugar que podemos ver los valores que se pasan. Las páginas web en sí pueden ver, pero nosotros como usuarios no somos capaces de ver, a menos que seas un hacker. Si eres un buen hacker, usted puede mirar. Si conoce el básico formato de la HTML, los valores harán darse a conocer en las páginas. Usted será capaz de ver. Los valores estarán allí, son sólo un poco menos obvio para usted de acceso, básicamente. ¿Tenemos más preguntas acerca de GET, POST antes-- lo que vamos a hacer a continuación en realidad es mirar a una parte del código que se está dando en el conjunto de procesadores 7, habla de la forma en que utiliza algunos de estos conceptos, y hablar sobre el las cosas que se van a tener que hacer un poco de pset 7. ¿Alguna pregunta más antes de eso? Más preguntas que ustedes tienen? Excelente. Muy bien, vamos a ver un poco al conjunto de procesadores 7, sin duda lo que eres todo más entusiasmado. Quiero decir, esto es algo que David pasa por un poco. Pero vamos a tener tres directorios en el la parte superior, así como un archivo de configuración. Eso es para las bases de datos, lo que vamos a hablar en unos cinco minutos. Incluye, nunca se necesita para buscar en este directorio si no quieres, pero es bueno saben que hay todo tipo de ayudantes. Ayudantes es como funciones útiles. Y luego tenemos config, que establece algunas cosas. Hay algunas funciones que tiene CS50 escrito que están en ayudante y config. Y algunos de los que PHP ya sale en los archivos va a hacer una gran cantidad de la especie más trabajo de la pierna de obtuso para usted. Al igual que si entramos en público login.php, que es lo que muestra a la derecha cuando se entra en pset 7. Veremos que hay esto requiere declaración. Y eso como una especie de aguda incluyen, hashtag incluir si eres de una generación más reciente. Pero esto, básicamente, dice que necesito acceso a todas las funciones en config.php. Y usted podría tener una requerir para todo tipo de otras cosas. config en realidad requiere ayudantes. Así que cada vez que usted requiere config, usted es también incluyendo o que requieren ayudantes también. Así que le da acceso a toda la funciones interesantes que vamos a utilizar, cosas como render. Estoy realmente va a aliviar esto abajo un poco. Así la función entonces estamos ir a caminar a través de justo antes de pasar a SQL un poco bit es la función login.php, justo ya que utiliza algunos de los temas que acabamos de hablar en PHP. Usted ve la primera cosa es si $ _SERVER. Esta es otra variable global que usted va a estar tratando. Es como _GET y _POST, pero lo servidor contiene está esto puede dejarte saber si el método de la petición fue un GET o POST. Al igual que anteriormente lo que estábamos haciendo es sólo en nuestro código que escribimos, estábamos cambiando que sea GET y POSTE dependiendo de lo que tiene el HTML. Pero hay páginas que pueden ser visitada con ambos tipos de peticiones. Y es posible que desee hacer diferentes cosas dependiendo en el tipo de solicitud, al igual que lo hace de inicio de sesión. Así se puede comprobar que la solicitud método a través de las teclas con el acceso, mediante el uso de una clave y obtener el valor de algo en el diccionario _SERVIDOR. Así que esa es otra mundial variables como _GET y _POST. Si se trata de GET, queremos hacer que el formulario de acceso. Render es una función que, básicamente, simplemente pone el HTML adecuado y lo pasa algunos parámetros. Este título es un parámetro que es utilizado en la visualización, por extraño que parezca, el título de la página en cuestión, la cosa aquí, decir o saludar en nuestro ejemplo anterior. Ahora tenemos una cosa diferente. Porque si es POST, que hacer algunas otras cosas. Estamos usando ese método vacía. No es existe, está vacío. Y vimos antes, PHP tiene una buena cantidad de construida en métodos que David Voluntad-- si hay son métodos que son útiles para usted, serán alertados de que en el paseo a través de que David da en la visión general que comienza, y también votos trozos de Zamyla. Ella está de vuelta cada uno. Todos podemos regocijarnos. pedir disculpas es una función bien llamado que, básicamente, sólo imprime algunos mensajes de error, porque CS50 es muy educado. Y ahora esto, esta es una poco complicado porque este es donde estamos consultando la base de datos. Ahora no hemos hablado de las bases de datos. Y vamos a la próxima cinco minutos más o menos, como máximo. Pero esta es una función que CS50 ha escrito para conseguir una mesa, básicamente, de una base de datos que estamos trabajando con en el conjunto de procesadores 7. Soy muy malo con mi indexación hoy en día cero. Pero sí, es 7. Así consulta que va a devolver un matriz, básicamente es el paletón. Y porque estas cosas no tienen mecanografía, así filas es una matriz de matrices. Porque cuando estamos pensando en una mesa, ¿qué vamos a hacer es, como usted aprendió en conjuntos de procesadores como el juego de 15, de todos modos donde había que utilizar una doble matriz, que básicamente tienen gran variedad de otros arrays hace una mesa. Y tienes filas y columnas. Y entonces usted puede acceder a ellos como [0] [1], se obtiene la [0] [1]. Cosas básicas como eso. Así que lo que estamos haciendo aquí en esta función, estamos pidiendo a la base de datos si el usuario que es tratar de iniciar sesión, que será enviado a través del método POST. Ya veremos que estamos recibiendo el nombre de usuario de _POST. Ellos te han enviado, el usuario o, se enviará un valor a través de un formulario a través de la POST porque es nombre de usuario y la contraseña de cosas. Estamos comprobando el nombre de usuario para ver, ¿es esto en la tabla? Porque si un usuario inicia sesión en, a continuación, su nombre de usuario debe ser almacenado en la tabla de los usuarios que existen para este sitio. Así que, básicamente, si el usuario está en la base de datos, consulta se va a volver esa fila, que es una matriz. Pero la parte difícil es que si incluso si la matriz doble es sólo una fila, incluso si es una fila de un array-- como si tuvieras basically-- si usted tiene un tamaño de un array eso es la celebración de otra matriz, usted está realmente hacer frente a una columna. Pero todavía es tratada como una doble matriz. Y aquí es donde a veces puede llegar difícil, porque tenemos filas aquí. Nuestra variable es filas. Y entonces estamos creando una fila nueva variable llamada y se establece igual a la primera fila de las filas. Y te darás cuenta de que el comentario dice que es la primera y única fila. Así que este es el complicado funciones parciales, donde ahora puede devolver matrices muy fácilmente. No hay mallocs. Usted no verá mallocs. Así que usted no verá faltas seg. Pero las funciones seguirán pasando alrededor de las matrices y los datos en grupos. Y hay que tener cuidado con lo que exactamente sus funciones volverán. E incluso si es uno columna como ésta, consultar Todavía va a devolver una doble matriz. Así que para que el acceso o column-- puede pensar en todo esto como invertida ya que estamos hablando de filas. Sin embargo, para acceder a esa una fila, usted no puede simplemente decir filas. A pesar de que es una fila, usted tiene que Qué rowsrows [0] para eliminar la especie de este bit exterior de la matriz y tener sólo su una fila. Haga un poco de otras cosas. Hay una función llamada password_verify que verifica la contraseña que fue publicada. Y luego vemos otro mundial variable de aquí, _SESSION. Básicamente identificador de sesión es la forma de llevar un registro de si alguien está conectado o no. Así que en este momento con login.php, estamos registrar un usuario en. Así que lo que queremos hacer es que queremos dicen que el identificador de sesión es igual a la fila id, que sólo tiene sentido porque cada fila tendrá un ID diferente número como parte de la mesa. Vamos a entrar en SQL en un segundo, por lo que si algo de esto Parece un poco como bla, entonces todo será aclarado. Pero vamos a establecer el id igual a lo propio, registrando el usuario en. Pedir disculpas si algo sale mal. Y es que los inicios de sesión propósito en la vida como profesor Malan diría. Así que eso fue login.php. Y una gran parte del código PHP que escribes en pset 7, van a ser un poco. No te olvides de chmod a los permisos adecuados. Habrá un poco acerca de que en el principio de la especificación. Pero el PHP que eres escritura va a ser haciendo cosas que son similares a este. Usted va a estar acceder a algunas cosas que se dan a usted en la variables globales de PHP que se trata de la corriente usuario conectado, si existe tienen peticiones sido enviados a esta página, diferentes cosas como eso. Y también será potencialmente iteración a través de las filas de esta cosa. En una función diferente, consulta no devuelva este doble matriz. Y si hay más de un filas en el mismo, si no trate: sí, si hay son más de uno filas en el mismo, entonces será una mesa. Y es posible que desee repetir a través de las filas de esta matriz utilizando el bucle foreach que describimos. Así que si usted hace foreach en un doble matriz, ¿cuál será el palabra-- aquí, Voy realidad escribo. Lo escribiré rápido aquí. Si tenemos un foreach de filas como fila, ¿cuál es el tipo de la fila? ¿Alguien sabe? ¿Lo tienes? Así filas es una doble matriz. Entonces, ¿qué se va a inferir foreach que nosotros queremos de esta doble matriz si estamos iterando sobre él? Básicamente Podemos suponer que que va a ser o elementos, o filas o columnas, básicamente. Y así filas y columnas nosotros puede tratar como la misma cosa. Básicamente lo que el bucle foreach va que hacer es que va a devolver filas. fila va a ser de la fila tipo, mientras que las filas es una doble matriz. Así que si usted da foreach una doble matriz, que es no va a repetir más de un nivel de profundidad. Que es básicamente para decir si hay son ocho células en esta table-- 1,2, 3 4, 5, 6, 7, la 8-- bucle foreach no es va a ir a través de cada una de estas células. Lo que el bucle foreach hará se va a ir a través de esta fila, darle toda esta fila. Y entonces va a ir a través de esa fila. Por lo tanto, sólo se itera un nivel de profundidad. Si agrega un anidada bucle foreach, entonces usted puede tratar cada fila de regresar de filas, hacen fila foreach como elemento, digamos. Y entonces se podría repetir el elemento. Así que eso es una breve pequeño repaso sobre cómo usted podría estar usando foreach bucles en el contexto de consulta. ¿Hay alguna pregunta sobre PHP? Cualquier cosa antes de que pasar a hablar de SQL y la diversión de la base de datos? ¿Sentirse bien? Sentirse bien. Correcto. Vamos a pasar de nuevo a la PowerPoint, que es probable que se pierda. SQL, yay. Las personas que están en mi sección normalmente sabrá que subpartidas de acrónimos siempre son sólo las primeras palabras Creo que de ese partido que algorithm-- esa sigla. No es un algoritmo. Así que es una base de datos SQL. Es un lenguaje que trabaja con bases de datos. Y todas las bases de datos son es tablas, al menos en la forma que SQL los representa. Otra forma de pensar acerca de las bases de datos es bases de datos son un conjunto de claves y valores básicamente. Usted puede pensar en una base de datos como un diccionario y también como una mesa. Básicamente se trata de una manera de asociar diferentes datos con otros datos, menudo a través de filas y columnas. Y esa es la forma eso es SQL funciona mejor. Así que este es un ejemplo de una tabla. Tengo un par de ejemplos de personas en mi sección, que No tuve tiempo de cambiar. Pero tenemos cosas como ID, nombre, superpotencia, y ciudad natal. No sé donde cualquiera es en de mi sección, así que sólo voy a asumir todo el mundo es de Nueva York Ciudad porque tengo una alta estadística probabilidad de ser correcta. SQL tomará automáticamente el cuidado de la columna ID para usted. Si inserta una nueva fila en una base de datos SQL, se incrementará que Número de identificación y justo básicamente se adhieren como cinco nombres, superpotencia, ciudad natal, quienquiera en el extremo de esa tabla. Así ID es una columna que va a nunca tiene que preocuparse. Pero, al igual que en el caso de login.php, cuando estaban recibiendo el ID de sesión de una tabla y sólo usar ID, ID es una manera de identificar de forma exclusiva un elemento de una base de datos. Así que si teníamos dos Sams, ambos que enseñaba CS50, y ambos de los cuales eran de Milwaukee, los haría todavía tienen números de identificación distintos y por lo tanto ser distinto en el contexto de la tabla. Así que esto es lo que está tratando de SQL con, trabajando con en el extremo posterior. Y estos son los cuatro comandos que usted necesita para trabajar con SQL. Y todos ellos vomité en una diapositiva. Pero vamos a ir a través de todos ellos individualmente. El primer comando es UPDATE, el que hace lo que se podría esperar. Digamos que tienes algunos datos en la tabla que está fuera de fecha. Al igual que si usted está manteniendo registro de nombres de las personas y las edades, si alguien aumenta la edad, entonces usted va a querer entrar y actualizar edad sólo que la persona. Para un ejemplo que funciona con nuestra primera table-- no te preocupes por escribir todos estos comandos al mismo tiempo. Pero si tienes la actualización abajo, que va a ser bueno para esta parte, porque vamos a volver a la mesa. Así que si nos remontamos a la mesa, digamos que algo que sucedió Se hubo un terremoto o una línea de falla que divide directamente a través de la ciudad de Nueva York. Y queríamos actualizar todo el mundo que vivía en la ciudad de Nueva York. Todos ellos tuvieron que mudarse a Pensilvania. Eso no es un pueblo de origen. Todos ellos tuvieron que mudarse a New Haven. Allá vamos. Así que todo el mundo en Nueva York se traslada a New Haven. Y eso es algo que es edición de tres filas de esta tabla. Pero en SQL, puede hacerlo que en sólo un comunicado. Así que volvemos a actualizar. Permítanme rápida borrar este tablero nuevo. Cuando estamos hablando de actualización, hay algunas partes de la sintaxis que son clave. Bueno, toda la sintaxis es la clave. Pero las cosas en verde es opcional. Se requiere que el blanco, nombres predefinidos similares. Y el azul claro son las cosas que varían en función de la tabla. Así que eso es lo que está pasando con la combinación de colores aquí, allá arriba. Así que si queremos actualizar sólo esos filas de las personas que viven en Nueva York, así que lo que haríamos si nos dijo ACTUALIZACIÓN? Así mesa es donde ponemos el nombre de nuestra mesa. Digamos que el nombre de nuestra mesa es mesa una. Así que queremos actualizar la tabla una. Y queremos definido-- ¿qué es lo que queremos establecer? Pues queremos decir, PHP lo column-- trata a filas como identificadores únicos. Y a continuación, son columnas los diferentes campos de aquellos elementos de la base de datos. Así que el primer elemento de la base de datos tiene un nombre de Sam, superpotencia del CS50, y una ciudad natal de Milwaukee. Así que si dicho conjunto, echemos un vistazo a los parámetros de nuevo ese conjunto toma. Tenemos la columna es igual valor. Por eso queremos decir que algunos column-- que recordar es una field-- queremos ver a un campo igual a algo nuevo. Así que si acabamos de decir de actualización tabla 1, nombre del conjunto de la igualdad de Elliot. Obtener algunas personas de la nueva sección en esto. Pero si acabamos de hacer tabla de actualización 1 nombre del conjunto de la igualdad de Elliot, lo haría la mirada mesa como después de eso? La gente tiene alguna idea? Sí. AUDIENCIA: Todo en esa fila se convertiría Elliot. ALTAVOZ: Todo en la fila? AUDIENCIA: En la primera fila. ALTAVOZ: En la primera fila? ¿Por qué la primera fila? No me refiero a meterse con usted. AUDIENCIA: Tal vez todo en toda la mesa? ALTAVOZ: Todo en toda la mesa, sí. Y eso es exactamente correcto que porque-- fue simplemente ayudar a salir un poco allí-- porque omitimos la cláusula opcional WHERE. Si usted no tiene el DONDE cláusula, lo que hará este comando se va a trabajar con cada una sola fila en la tabla. El nombre de todo el mundo se convertido Elliott, básicamente, que Elliot es muy feliz. O Yanni, uno de los dos. Pero el nombre de todo el mundo va a cambiar. Así que la forma en que utiliza el DONDE clause-- y esto se aplica a todos los wheres que se encuentran en cada uno de estas cosas diferentes. Así te darás cuenta de que la SET tiene columna de valor igual. Y lo mismo ocurre con WHERE. Pero éstas son diferentes tipos de declaraciones. Así que la columna es igual al valor en SET está en asignación. Al igual que estamos diciendo que queremos para establecer el nombre igual a Elliot. Pero en las cláusulas WHERE, estos son declaraciones de igualdad. Así que digamos que sólo queríamos cambiar el nombre de la persona a Elliot si su nombre era Ryan, digamos. Así que cuando decimos DONDE nombre es igual a Ryan, que haría éxito único cambio el nombre-- que sólo lo haría cambiar el campo Nombre en filas donde el campo de nombre es igual a Ryan. Así que si teníamos varias personas llamado Ryan, todos sus nombres cambiaría a Elliot. Esto es similar al ejemplo de si una línea de falla se divide Ciudad y todo el mundo de Nueva York tiene que trasladarse a New Haven, la forma en que podemos hacer eso en una declaración es ACTUALIZACIÓN tabla1 SET ciudad natal = New Haven donde la ciudad natal es igual a la ciudad de Nueva York. Este es el poder de la instrucción UPDATE. Podemos seleccionar cualquier número de filas a través de enunciados verdaderos acerca de los campos en esas filas. No podemos decir conjunto tabla1 ACTUALIZACIÓN name = Elliot DONDE fila = 1, excepto que podamos si decimos ID = 1. Así que vamos a estar trabajar con la igualdad de campos, la igualdad de columnas. Pero utilizando el campo ID es una manera de seleccionar filas individuales específicamente, porque el campo ID es una única identificador en una base de datos SQL. Así que, como la actualización de la fila uno, ID es igual a 1. Actualización de la segunda fila, justo cambiar ese número de identificación. Pero la potencia de la DONDE declaración es que nos puede actualizar las cosas en base a lo que su valores actuales de ciertas cosas. Sí Elliot? AUDIENCIA: ¿Y qué pasa si quieres a-- de nuevo, esta es otra cuestión. Pero mi primera pregunta fue: donde sucede esto? ¿Dónde estoy actualizando esto? ¿Es esto en un código PHP? ALTAVOZ: Cuando actualizas, sí. Vamos a hablar acerca de dónde todo esto sucede especie de una vez nos vamos a través de todos los comandos. Pero lo que usted necesita saber por ahora es, básicamente, que su base de datos SQL existe como algo para ser visitada por la consulta función, que CS50 define. Así que si usted utiliza la función de consulta, se puede acceder a esta tabla. Así que va a enviar estos comandos a su mesa en archivos PHP a través de la función de consulta. También puede jugar con su mesa directamente. Y esa es la mejor manera de probar este tipo de comandos. Y vamos a ir a través de exactamente cómo que ver que en tan sólo un poco. Así que eso es comando UPDATE. Y el resto de los comandos van a ser una especie de similares, trabajando en cosas similares. El INSERT INTO es probablemente el más diferente de UPDATE. Voy a dejar que hasta allí para sólo un poco y trabajar aquí. Así INSERT INTO, verás esa mesa sigue siendo el mismo. Usted quiere INSERT INTO. La capitalización, SQL es sensible a mayúsculas. Así que usted no tiene que capitalizar estas cosas. Por convención, las palabras en blanco se capitalizan. Pero también el color de ellos codificados. La única razón por la que a capitalizar aquellos en los que usted les está escribiendo se acaba de poner de relieve que aquellos son constantes. Y por lo que puede mirar a la capitalización o el hecho que yo les he de diferentes colores. Así que tenemos INSERT INTO, hagámoslo tabla1 nuevo. Esto es todo en una línea. Sólo estoy separándolo por los diferentes estados. Así que no se preocupe por el hecho de que tabla1 lo hizo en la segunda línea. Así que queremos insertar EN tabla1 algunos valores. Y te darás cuenta de la opcional bits, lo que voy a llegar a en un segundo. Así que tenemos VALORES. Así que digamos que queremos añadir Andi a nuestra mesa, porque nos perdemos Andi. Andi está enfermo. Así que vamos a añadir Andi a nuestra mesa. Recuerde que el número de identificación se actualiza automáticamente. Así que los únicos campos que tiene que preocuparse de son nombre, superpotencia, y ciudad natal. Y así, la forma en que lo hacemos, mirar nuestra sintaxis, es que hemos acaba de recibir un paréntesis, con comas valores separados, cada uno de los cuales es un valor. Así que si queríamos insertar Andi en nuestra mesa, todo lo que tenemos que hacer es correcto Andi. ¿Cuál es la superpotencia de Andi, personas en la sección de Andi? Ella, como el vuelo, o como velocidad, o algo así. ¿Qué es lo que ya tenemos ahí arriba? Tenemos CS50, vuelo, velocidad y fuerza. AUDIENCIA: Viaje en el tiempo. ALTAVOZ: Viaje en el tiempo, increíble. Así que tenemos Andi, el tiempo viajes, y su ciudad natal. Esa es una muy buena pregunta. Ciudad de Nueva York, a menos que alguien lo sabe. Todo el mundo es de Nueva York es el lección para llevar a partir de hoy. Así que esta declaración sería insertar, como una quinta fila, con el viaje en el tiempo superpotencia y una ciudad natal de la ciudad de Nueva York. Sin embargo, el campo opcional es básicamente una manera para especificar exactamente qué columnas desea insertar cosas. La forma en que lo estamos haciendo ahora, Andi, viajes en el tiempo, la ciudad de Nueva York, que está pasando en el orden exacto de nuestra Nombre table--, superpotencia, ciudad natal. Y si querías hacer algo más que eso, como dices que no lo sabía superpotencia de alguien, como la forma en que no sabía de Andi superpotencia al principio. Así que todo lo que sabía era su nombre y su ciudad natal. Lo que podría hacer es que pude hacer-- voy a borrar esto rápido. Quiero actualizar únicamente las columnas. Y aquí es donde la opcional lista de columnas entra en juego. Sólo quiero actualizar nombre y ciudad natal. Y luego voy a decir VALORES. Haré Andi y la ciudad de Nueva York. Si hubiera omitido la lista de columnas y acaba de hacer estas dos cosas, donde sería la ciudad de Nueva York han ido? ¿Qué columna haría Nueva York Ciudad han sido colocados en? La gente tiene alguna idea? Superpotencia, exactamente. Así que esto se acaba de ir en orden. Y una vez que llega al final de la lista, sólo va a dejar de llenar las cosas en. Y los valores que me quedo en todas las columnas sólo será NULL. Así pues especificamos nombre y ciudad natal, vamos a tener ID 5, nombrar Andi, NULL superpotencia. Así superpotencia es un valor sin inicializar. Usted no necesariamente obtener la mismos errores Valgrind si intenta y acceder a ella. Todo estará bien a cero , porque NULL es un valor en SQL. Esa es una constante. Y entonces ciudad natal será la ciudad de Nueva York. Así que ese es el comando INSERT INTO. Antes de continuar, hay dos comandos más. ¿Las personas tienen alguna pregunta sobre UPDATE sobre INSERT INTO, acerca de SQL en general, antes de pasar en nuestros pedacitos finales? La gente se siente bien, muy bien. Lo amo. Así que vamos a hablar de SELECT. Yendo ACTUALIZACIÓN zanja por aquí. Y SELECT va a ser muy similar. El objetivo de SELECT, El propósito de SELECT en la vida es para darle un montón de columnas que satisfacen ciertas condiciones. Y cuando digo satisfacer ciertas condiciones, su mente podría inmediatamente volver a esa cláusula WHERE que surgió en UPDATE. Y esa cláusula es exactamente allí en SELECT. Si no ponemos el DONDE cláusula y decimos SELECT nombre, ciudad natal-- deletreado que un poco de Nombre wrong--, ciudad natal de la Tabla1. Si nos limitamos a decir que, lo SELECT nos va a dar es que es nos va a dar una double-- una mesa, en lugar. Una matriz de doble si somos pensando en PHP detecta. Pero sólo va a darnos una doble gama de de dos nombre columns--, y la ciudad natal. Y va a ignorar ID. Y va a ignorar superpotencia. Y sólo nos dará todos los sola fila de esa tabla. Así que si nos insertamos Andi, tendremos Andi. Y vamos a tener los cuatro originales. Si han sido actualizados, que lo hará reflejarse, etcétera, etcétera. Así que esto se debe a que no utilizar la cláusula WHERE. Pero podemos utilizarla en exactamente el misma manera que lo usamos en UPDATE. Si sólo queremos una tabla de los nombres y súper poderes de las personas que viven en Nueva York, se puede ejecutar una instrucción como SELECT nombre, superpower-- Yo sólo voy a dejar que-- DE tabla1 DONDE ciudad natal = la ciudad de Nueva York. Así que esto viene a demostrar que se puede conseguir totalmente diferentes columnas, y luego poner las columnas que no estás incluso volver a estar en la cláusula WHERE. Ni siquiera queremos que el ciudad natal de todos. Pero queremos que el nombre y la la superpotencia de la gente cuya ciudad natal es la ciudad de Nueva York. Así que eso es algo que puede hacer con el DONDE cláusula es que podemos hacer frente a columnas que no necesariamente queremos volver. De la misma manera en la actualización, podemos tratar con columnas que nosotros no necesariamente desee actualizar. Podemos actualizar la ciudad de todo el mundo cuyo nombre es Sam, por ejemplo. Podemos actualizar la ciudad de todos aquellos cuyo número de identificación es 2. Así que sólo actualizar el ciudad de la segunda fila donde no tenemos que lidiar con necesaria la pregunta común. Y BORRAR es, como era de esperar, DELETE FROM tabla1. Y luego tenemos otra cláusula WHERE. Así que podemos decir donde id = 1. Eliminar la primera fila. Y ELIMINAR siempre eliminar una fila, o se elimine algún número de filas. DELETE FROM tabla WHERE Ciudad natal = Nueva York eliminará todo el mundo en la ciudad de Nueva York. Eso es si había una plaga trágica súbita y que sólo quería quitar todos, desde la mesa que vivido en una ciudad que fue golpeado por la plaga. Que descansen en paz. Estos son los cuatro comandos SQL que tendrá que utilizar. Ni siquiera puede ser que necesite utilizar todos ellos. Pero estos son los cuatro que CS50 te espera para sentirse cómodo con entrar en tanto cuestionario 1 y también pset7 y pset8. Sólo hay esa mesa de nuevo. En éste, la superpotencia de Roy tiene ha actualizado para rayos láser, que es un ejemplo que no usamos. No sé cuál Roy prefiere, pero la fuerza. Roy tiene una superpotencia de fuerza. Katherine no lo hacen hoy en día. Eso es desafortunado. Pero ella tiene super velocidad. Bueno, eso fue PHP. Antes de hablar de MVC, hace Alguien tiene preguntas sobre PHP? Ahora SQL, PHP o si de repente tienes llegar a una pregunta sobre PHP? Excelente. Muy bien, está todo listo entonces. Así que hablar un poco acerca de vista del modelo controladores, volvamos a alguna de las cosas en pset7. Entonces, ¿qué vista de modelo controlador es-- No estoy va a guardar mis cambios para iniciar sesión porque estoy totalmente masacrado él. Pero básicamente tenemos dos cosas separadas pasando. Tenemos un público directorio que contiene el código que va a ser ejecutado y las páginas web que se visitarán. Y también tenemos este directorio vistas. Y vistas contiene plantillas. Esto es lo que la función render-- vimos el render función en un montón de código PHP que CS50 ya ha escrito para usted, que toma en ciertos parámetros. Lo que el código está haciendo se va a vistas, que son conjuntos de igual código HTML escrito previamente, y se está insertando valores en ciertos lugares. Así es como cuando usted entrar en CS50 Finanzas, la misma cabecera es en cada página. Lo mismo pie de página es en cada página. Esto se debe a la forma que hacer obras es que va a parchear automáticamente en esa cabecera y visualizador de imágenes que se pueden encontrar en las vistas. En realidad podemos entrar en la cabecera, y mira, es un archivo HTML con una cabeza. Tiene unas hojas de estilo. Usted no tiene que mirar en CSS para pset7 si no quieres. Pero usted puede modificar si usted quiere, hacen su Hacienda se ven un poco diferente. Tiene algo de PHP en la cabecera un poco para ver si hay un título diferente se debe poner en esta cabecera. Pero sólo algunos otros guiones, y enlaces, y otras cosas. Jefe termina, el cuerpo comienza, y perdón, tenemos este poco extremo raro. Y hay un div, al igual que una especie sin forma de elemento que tiene una idea del medio. Y luego, cuando vemos a pie de página, tenemos el final de un div. Tenemos un fondo, que es donde el texto de pie de página es. Fin de la div, extremo del cuerpo, al final del HTML. Entonces, ¿qué hacer es haciendo es hacer que es una especie de remendar cabecera, un diferente archivo PHP que contendrá las cosas reales que podrás ver, al igual que su tabla de los stocks si va a comprar o vender acciones. Y entonces va a poner en el pie de página. Y la vista del modelo idea es que el controlador querer separar la forma las cosas se ven desde el código. Es que queremos separar el frontend y el backend, donde el frontend es las cosas que el usuario ve, el buen visuals-- HTML, CSS, cosas por el estilo, imágenes, etcétera. Y el backend es PHP. Este es el código que usted escribe. Aquí es donde el código que es hacer operaciones reales. Esto es cuando se va a añadir una acción a su mesa, cuando usted está comprando y venta, que es backend. Y podemos, como usted vio, incluyendo PHP directamente en HTML. Así que lo que podríamos haber hecho para esta asignación se acaba de tener un archivo HTML para cada página, como inicio de sesión. Y entonces en esa página, simplemente tenido un enorme bloque de código PHP, incluyendo todo el código que esa página en concreto necesitaría. Y entonces podríamos tener hecho que para la cartera. Podríamos haber hecho todo de la compra y venta dentro de las páginas individuales. Pero debido a que estamos haciendo separado desde donde estamos escribiendo el backend código, podemos fácilmente cambiar la forma de las cosas se ven sin cambiando cada archivo. Hacemos cosas como simplemente añada un nuevo div a la parte inferior de-- Hola he modificado el pie de página. Usted sólo puede hacer cosas por el estilo. Pero también, puede cambiar todo el diseño visual sin afectar lo que es ir en el backend. Y usted puede cambiar el toda backend y todavía tiene que se vea igual que lo hacía antes. Esta Es la idea de controlador de vista del modelo. Y en realidad es un paradigma impuesto en algunos de los lenguajes de programación es posible que desee utilizar para los proyectos finales. Si lo hace el desarrollo de iOS, tienen puntos de vista, que es lo que se ve en el iPhone, y entonces backend como como una cosa separada. Usted puede pensar un poco. Hay un montón de binarios en ciencias de la computación, que es divertido, porque todo es en binario. No pensaba eso. Eso era un juego de palabras intencionado. Sí, retruécano no previsto. Pero al igual que los archivos .h y archivos .c, hay una gran cantidad de separación de las cosas que nosotros podría no necesitar. Así que sólo podemos editar los archivos H, o alguien sólo puede ver un archivo .h y saber exactamente las funciones que se encuentran en el archivo .c sin necesariamente saber su implementación. Esta idea de los componentes que separan que dependen unos de otros pero algo se puede acceder de unos a otros a través de diferentes canales, que pasa de variables, simplemente incluir declaraciones, cosas así, este principio ayuda a crear aplicaciones que puede ser más fácilmente editado por varias personas, se puede cambiar más fácilmente o modificado en gran escala, y son más fáciles depurar en muchos sentidos. Muy rápido, tengo algunos consejos para pset7, que voy a hacer de pantalla completa para que no sólo mirar el-- Tippee punta punta. No hay que muchos consejos. Pero he mencionado PHP es difícil de depurar. Doble y triple comprobarlo. Si el código no es sólo aparecer en la página, es probable que sea un error de PHP, lo siento. Usted nunca tiene que mirar CSS si no quieres. Pero una vez que haya terminado, puede ser una cosa agradable poco divertido para ir en y meterse con los parámetros de estilo CSS. CSS y HTML son un ejemplo de un modelo cosa también, a la derecha vista de estilo controlador? Usted podría tener etiquetas de estilo en el interior de los elementos HTML. Pero si una especie de la externalización a CSS, son más fáciles de editar, y el juego alrededor con, y divertirse con. Tratar CS50 ayudante funciona como cajas negras. Usted no necesita saber exactamente lo que está haciendo render, pero confía en que hacer siempre la derecha cosa dependiendo de lo que le pasa, cosas como esta. Y yo recomendaría viendo tutorial de David, pasando por todo el cosas, no sólo los todos, pero que realmente puede tratar estas cajas como negros. No entre en éstas funciones en busca de errores. Y dar la bienvenida al retorno de nuestro señor Zamyla. Excelente. ¿Hay alguna pregunta antes de finales que tipo de rebotar para el día? ¿Estoy todavía vivo? Excelente. Personas livestream Hola. Excelente. ¿Hay más preguntas? ¿No? Y entonces creo que estamos bueno ir para hoy. Me quedaré un poco después si la gente tenía preguntas tenían miedo de preguntar sobre el arroyo. Pero por lo demás, tener un buen día.