DOUG LLOYD: Así que en nuestro video en la sintaxis de PHP, hablamos mucho acerca de cómo PHP se puede utilizar en la línea de comandos para ejecutar programas de una manera que estamos bastante familiarizados con de C. Pero como yo he mencionado en ese video, PHP se desarrolló inicialmente para aplicar la programación web, sitios web. Y así, en este video estamos vamos a hablar de la forma en que usar PHP en el contexto de desarrollo web. Sabemos ya, desde nuestro video en HTML, que los sitios web se construyen de un conjunto de etiquetas HTML que definen semánticamente la estructura de una página web. Pero los sitios web que son construido con pura HTML sufrir de una muy, limitación muy seria. Y para ilustrar esta limitación, vamos a considerar lo siguiente. Así que ahora quiero construir una página web que, siempre que el usuario visita it, me da la corriente tiempo en Cambridge, Mass., mostrarla al último minuto. Si yo estaba haciendo esto ahora mismo, Yo podría decir algo como esto. Hora en Cambridge-- así que tengo Etiquetas HTML, etiquetas de la cabeza, las etiquetas de título, cuerpo tags-- la corriente tiempo en Cambridge es 14:08, impresión de hora militar. ¿Qué pasa si ahora es 14:09, 14:09? Pues hasta ahora, con HTML, tengo para entrar y cambiar a 14:09. Y luego un minuto más tarde, Tengo que cambiar de nuevo. Y luego un minuto más tarde, Tengo que cambiar de nuevo. Y como se puede imaginar, eso es probablemente el peor trabajo nunca. Tú eres el webmaster de una página web, y cada minuto, las 24 horas del día, tiene que actualizar la hora actual abrir manualmente time.html y cambiando sólo que fragmento de código para decir lo hora actual en horas y minutos. Eso probablemente no es muy buen uso de nuestros recursos, tanto humanos como computacional. Los sitios web que son todos HTML son completamente estático. La única manera que usted puede actualizar contenido, como acabamos de ver, es abrir manualmente los fuente archivos, editarlos y guardarlos. Y luego cuando el usuario refresca la página, o visita la página por primera tiempo, van a tener el contenido más reciente. Pero sólo porque hemos manualmente editado. Si empezamos a mezclar un poco de PHP en allí, nuestro código puede conseguir mucho más flexible. Y podemos tener una manera para que nuestras páginas ser dinámico, o actualizar a sí mismos, sin necesidad de nuestro pobre webmaster en el ejemplo anterior ser manualmente la actualización de las cosas. Pueden hacerlo de forma automática. No tenemos que intervenir. Podemos dormir un poco. Lo cual es probablemente una buena cosa si que está haciendo una gran cantidad de programación web. Así que en CS50 IDE, corremos un servidor web llamado Apache. Es una muy usada, sistema del servidor web de código abierto. Este sistema tiene la capacidad de interpretar PHP, que va a ser útil si que quiere hacer ningún tipo de programación PHP. Y en IDE CS50, tenemos un comando para que este muy fácil de hacer, apache50 empezar. Y luego esa barra camino, barra de, recortar dir, que es sólo una forma muy común de indicando lo que has especificado aquí es un camino a un particular, anuario que quiero ser la raíz sitio, o la página raíz, o en la carpeta de la que su servidor web comenzará a examinar los archivos y servir les permitió llegar a los clientes que lo soliciten. Así que vamos a pop a CS50 IDE, sólo para mostrar, muy rápido, ¿cómo funciona esto. Así que aquí en IDE CS50, estoy en un directorio llamado Semana Cero Nueve. Y tengo dos-- tengo ejecutar un comando LS solo arriba para mostrar que tengo dos directorios en aquí, PHP, que es el conjunto de archivos que he usado en el video sintaxis de PHP, y luego de PHP en la web, que es el conjunto de archivos que le gustaría utilizar en este video. Y me gustaría empezar una instancia de servidor web con el contenido de la carpeta PHP-web a medida que se sirven de los archivos. Entonces, ¿qué voy a hacer? Yo voy a escribir apache50 espacio iniciar, PHP espacio, guión web. Esa es la ruta al directorio desde donde actualmente soy. Entonces me golpeó Intro. Se va a hacer un poco de cosas aquí. Y luego se va a decir, Apache se inició correctamente. Su sitio ya está disponible at-- y luego está la dirección URL del sitio. Entonces, ¿qué voy a hacer? Voy a copiar rápidamente esto. Y yo voy a abrir up-- y Voy Alejar un poco aquí-- Voy a abrir una nueva pestaña en Chrome. Y yo voy a visitar esa URL. Voy a pulsar Enter. Se va a cargar. Y voy a alejar el zoom de nuevo. Y podemos ver aquí es el contenido de mi directorio web PHP. Así que ahora lo que está ocurriendo básicamente aquí está, mi instancia de CS50 IDE está sirviendo estos archivos cualquiera que lo solicite. Y en el transcurso de este video, vamos a ordenar de echar un vistazo a un montón de ellos diferentes archivos en su contexto. Para probar que su Apache servidor está funcionando, que generalmente se va ser el caso en CS50 IDE, pero si lo hace de manera más general, y empezar a construir su propia web servidores, hay una realidad tipo común de analógico a, "hola mundo", que suele ser utilizado para el desarrollo web PHP. ¿Qué es tener un archivo que consiste en sólo esta code-- un delimitador PHP conjunto con información de PHP, paréntesis, punto y coma en el medio. Que es básicamente una especial Función de PHP que te dice qué versión de PHP que está ejecutando. Así que en CS50 IDE, tengo ese archivo disponible justo para mostrar lo que este se vería así. Así que estoy buscando en mi índice desde mi ejemplo PHP. Mi ejemplo Apache está funcionando los contenidos de PHP en web. Y tengo un archivo llamado aquí info.php. Voy a hacer clic en él, alejar. Esto es lo que vas para ver, más o menos. Esto se me acaba diciendo que mi servidor Apache está funcionando. Y esto es, al parecer, el versión de PHP que estoy corriendo. Este es mi analógica a "hola mundo". Así que sé que las cosas están en funcionamiento. Así que estamos bien para ir. Podemos continuar desde aquí. Así que vamos a revisar que ejemplo vez que estuvimos hablando con nuestro pobre webmaster que tuvo que actualizar la página constantemente. Esto podría ser una solución para la forma Me gustaría poner en práctica las cosas por lo que el webmaster no lo hizo tiene que mantener la actualización de la época. Sería sólo una especie de sucederá automáticamente. El abajo, el código HTML, es bastante similares, con una excepción. Pero aquí tengo algo de PHP en la parte superior. He, al parecer, llamó a este date_default_timezone_set función. Y no hablamos de todo estas funciones en CS50, porque PHP tiene, probablemente, Decenas de miles. Eso podría ser un poco de una exageración, pero no pudo ser. Tiene una gran cantidad de funciones integradas. Y por lo que esta es una función aparentemente establece mi zona de tiempo que nosotros / Este, que es la zona horaria que soy Actualmente en la toma de video. Entonces hago una llamada a función de llamada, fecha. Y, al parecer, estoy almacenando el HIS de algo que se llama, el tiempo. Entonces, ¿qué está pasando aquí? Bueno, básicamente lo que hay sucediendo es, estoy haciendo una llamada a algún servidor que va a dime lo que el tiempo del que actualmente es. Y estoy convertirlo a un formato de horas, minutos, segundos. Y la razón es de capital H es esto se me va a dar tiempo de 24 horas, no 12 tiempo de horas, lo que sería h minúscula. Y sólo estoy almacenando que en una variable llamada, el tiempo. Así que la segunda línea de PHP allí, la llamada a la función, fecha, se acaba de conseguir una cuerda, la cual es me va a dar la fecha y el tiempo, y un montón de otra información. Y el primer argumento allí, que HIS, se acaba de extraer la parte importante que me importa en este ejemplo, que es la hora, minuto y segundo. Así que ese es el único que está pasando. Así que almaceno que en un tiempo variable $. Y luego hacia abajo en el muy inferior allí, tener esa abreviatura de impresión de la hora actual. Así que sólo voy a imprimir lo que el tiempo actual. Así que echemos un vistazo a esto en IDE CS50 y ver cómo estamos ahora ahorro que webmaster un montón de problemas. Muy bien, así que aquí estoy de nuevo de vuelta en el directorio raíz de mi instancia de Apache. Y tengo un archivo llamado aquí time.php. Yo sólo voy a hacer clic en eso. Y voy a desplazarse hacia arriba, porque estamos acercado bastante lejos. La hora actual es 14:20:34. Así que lo estoy haciendo horas, minutos y segundos. Y puedo actualizar la página y obtener nueva hora. --41. Voy a actualizar la página y obtener nuevo tiempo, 44, 46, 47. Así que claramente no soy cambiar nada a mí mismo. Estoy aquí actualizar la página. Así que no puedo volver allí editarlo. Y te prometo, no lo hago tener cómplices que está editando el archivo en mi nombre a un lado. Sólo estoy usando esa función PHP, tiempo, para generar el momento para mí automáticamente. Así que incluso si estoy dormido, y mi servidor web está funcionando, el usuario que visita la página sigue siendo va a conseguir exactamente en el momento actual. Así que eso es bastante bueno. He hecho mi sitio más dinámico con no demasiado código PHP. Fue tan sólo dos líneas de código y después un poco de una sentencia print. Y ya tengo un sitio mucho más dinámico que el primer ejemplo que vimos al comienzo del vídeo. Por lo tanto, recordar del video sobre la sintaxis de PHP que cuando el intérprete PHP corre nuestro programa, ignora todo eso no es dentro de los delimitadores de PHP, escupirlo. En este ejemplo, lo que la cosa que estaba escupiendo era HTML. Y esto significa que ahora puede intercalar HTML y PHP juntos. Debido a que el intérprete simplemente ignorar el HTML y literalmente salida ello. Lo cual es bueno, ¿no? Debido a que, presumiblemente, al final del día, Me gustaría que mi sitio para ser construida de HTML. Así que cualquier navegador puede interpretar , o entender el código HTML de la página y hacerlo como algo que nos puede entender realmente como seres humanos. Y sólo puedo usar PHP para las partes de mi sitio la requieren dinamismo, que me requieren tener las cosas que se actualizan constantemente. La información estática puede permanecer igual. OK, así que está bien. Pero ¿por qué iba yo a hacer esto? ¿Por qué debería mezclar HTML y PHP? Yo sólo podía imprimir toda la HTML, utilizando la función de impresión de PHP. Por qué no estoy haciendo eso? Piensa en ello un segundo. ¿Por qué, cuando yo sólo pudiera imprimir fuera-- I podría tener líneas de PHP que acaba de decir, impresión de etiquetas HTML, cabezal de impresión. Por qué no estoy haciendo eso? ¿Por qué estoy mezclando el PHP y HTML? Bueno, si usted piensa en esto por un segundo. PHP, el intérprete tiene interpretar lo que ve. Y así va a tener para ejecutar una línea de código. Imprima HTML. Imprima etiqueta de la cabeza abierta. Imprima etiqueta del título abierta. Va a tener que ejecutar e interpretar que cada paso del camino. ¿Por qué no dejar que el intérprete acaba de brillo más cosas que no entiende y hacerlo de forma automática? Se me va a ahorrar un montón de tiempo mezclar mi HTML y mi PHP juntos. Y por eso no lo hacemos sólo hay abierta delimitador PHP y luego simplemente imprimir la totalidad contenido de nuestra página como uno PHP gigante llame a la función, Imprimir, y luego cerca PHP delimitador y hemos terminado. Así que por eso mezclamos ellos juntos. Hasta ahora, no hemos visto demasiado de una diferencia de sintaxis general de PHP. Ha sido bastante sencillo. Ya hemos visto la signo de interrogación, iguales. Vimos un par de nuevas llamadas a funciones, pero nada realmente de lujo pasando. Vamos a hacer las cosas lo mejor un poco más de lujo. ¿Qué pasa si queremos pasar información entre los diferentes archivos PHP, por lo que tal vez el usuario puede presentar información para mí. Y entonces yo podría hacer algo con ella en otra página. Así que PHP tiene soporte para algo llamado Super Global Variables, que suena bastante impresionante. Son realmente sólo matrices asociativas gigantes que ayudar a implementar este funcionalidad de fallecimiento información entre archivos PHP que están existente en nuestro servidor web. El primero de estos súper globales se llama $ _GET. Y es probablemente el más simple de entender. ¿Qué pasa con $ _GET? Bueno, básicamente, el usuario es va a escribir información adicional al final de nuestras direcciones URL. Y todo lo que escriba, asumiendo que está formateado de una manera particular llama una cadena de consulta, que es justo un conjunto de pares de valores clave separada por símbolos de unión. Estos pares de valores clave serán almacenado en un array asociativo $ _GET. Y a partir de nuestro video en Sintaxis de PHP, sabemos cómo trabajar con matrices asociativas ya. Así que aquí es un ejemplo de algo de PHP, donde tal vez soy extracción de todos los pares de valores clave que el usuario que se proporciona en la URL. Así que tengo mi Abrir delimitador PHP. Tengo un bucle foreach. Estoy iterar a través de la Súper Matriz Global llamó $ _GET. Y yo quiero ser capaz de referirse tanto a la clave y el valor. Y sólo estoy imprimirlas a cabo, cada uno en apariencia su propia etiqueta de párrafo aquí. Estoy imprimiendo algo de HTML e interpolando los valores de la clave y el valor en esa declaración. Así que echemos un vistazo a cómo este sería realmente trabajar en nuestro IDE. Y tal vez esto le ayudará ilustrar un poco de lo que se obtiene es realmente hacer. Así que estoy de vuelta aquí en mi web raíz. Y voy a zoom en un poco para mostrarle que tengo un archivo llamado, get1.php. Así que vamos clic en get1.php. Y yo no estoy viendo cualquier contenido. Eso es raro, ¿no? Bueno, no realmente en realidad. Porque yo no proveo nada en la URL. Voy a get1.php, pero yo no suministrar ningún pares de valores clave como parte de mi cadena de consulta. Así que vamos a agregar una cadena de consulta y ver lo que este archivo puede hacer. Para empezar una cadena de consulta que sólo tienes que escribir el signo de interrogación. Entonces tal vez voy a decir el nombre = Doug y año = 2.015. Y entonces les presione Enter. Ahora note lo que está sucediendo. Todavía estoy en get1.php. Pero ahora he suministré pares de valores clave, y estoy imprimirlos por su cuenta Nombre paragraph--, año Doug--, 2015. Eso es exactamente el código que acabamos de vio en la diapositiva hace un momento. Y si quiero añadir tal vez otro par de valores clave, y class = CS50. Ahora tengo otro valor clave par que se imprime cuando vuelva a visitar la URL de nuevo. Ahora tal vez esto no es formateado terriblemente bien. Así que tengo otra versión de get.php. Es get2.php. La diferencia en este una es que tengo el archivo CSS, y formatos de las cosas poco más agradable para mí. Es tal vez no es el más hermosa CSS en el mundo. Pero es sólo otra manera de hacerlo. Así que puedo conseguir todavía el acceso a mis variables utilizando $ _GET. Y en este caso, yo soy sólo un poco haciendo que la CSS un poco más de lujo. Y si nos pop a mi IDE por un segundo, Te voy a mostrar en mi web PHP directorio de aquí, get2.php. Abriremos para arriba, algo de HTML aquí. Al parecer estoy vinculando en ese Archivo CSS que estaba hablando. Abro una etiqueta de mesa. Y entonces aquí está mi bucle foreach. Aquí es que, lo que yo mostró en la diapositiva anterior. La única diferencia es que yo tienen esta clave y valor CSS estilo que estoy aplicando a la misma. Pero eso es todo lo que estoy haciendo, es que soy iterar a través de $ _GET para obtener toda la de los pares de valores clave. Y estoy imprimirlos como la tabla. Y, al parecer, estoy formatear las llaves de una manera, con la clase "clave"