[Powered by Google Translate] [Semana 8, continuación] [David J. Malan] [Harvard University] [Esta es CS50.] [CS50.TV] Esto es CS50, por lo que este es el final de la semana 8 aquí. Nosotros, por supuesto, tenía un poco de un huracán a principios de esta semana, por lo que ahora es realmente sólo tú y yo en esta sala de conferencias, pero hoy en día continuamos nuestra conversación sobre PHP y acerca de la programación web en general, y también introducir la idea de bases de datos, especialmente uno llamado MySQL, que es muy popular en estos días, en gran parte debido a su escalabilidad, así como por su ser libre y de código abierto. Pero primero, una mirada a donde lo dejamos la última vez. Recordemos que estábamos buscando en los varios ejemplos Frosh mensajes instantáneos, y ésta era la forma horrible en que me ocurrió con unos 15 + años con el fin de que los estudiantes en el campus de registro para los deportes intramuros de primer año sin tener que caminar más por el patio a Wigglesworth la caída de una pieza física de papel debajo de la puerta un poco de Proctor. En su lugar nos trasladamos todo en línea, pero para eso es necesario hacer un uso de unas pocas tecnologías, por lo que uno, necesitábamos HTML, HyperText Markup Language, que a su vez es este lenguaje de marcado con la que hacer paginas web estructuralmente. Con un poco de CSS en estos días, las hojas de estilo en cascada, en que podamos utilizar estilizaciones de la página web utilizando una sintaxis ligeramente diferente, mientras que el HTML es todo acerca de la estructura del mismo. También tenemos que introducir un lenguaje de programación web. En este caso, vamos a utilizar PHP, PHP y nos va a permitir al contenido de la salida de forma dinámica, así como hacer las cosas como programáticas el envío de correos electrónicos, como fue el caso en la nota que dejó la semana pasada. Recordemos que el código para esto fue en 2 partes. Uno de ellos, tuvimos froshims3.php, y esto fue en gran medida el marcado con un formulario HTML dentro de ella, un poco de CSS aquí en los atributos de estilo de modo que la forma en sí se centra en la página, pero más allá tuvimos algunos insumos forma representativa, un campo de texto, una casilla de verificación, Algunos botones de radio, un selecto menú y un botón submit. Y a través de este formulario, nos presentó a un archivo que se llama al parecer register3.php, que a su vez se veía un poco de algo como esto. Ahora, la mayor parte del código en register3.php, recordar, trataba de correo electrónico. Lo hizo un poco de la validación de la forma que se presentó para asegurarse de que que los campos fueron realmente que se esperaba. Luego llamamos a algunas funciones de PHP usando un poco nueva sintaxis, a pesar de que está tomado de C. Este operador de flecha nos permite hacer uso de algo que se llama programación orientada a objetos. No vamos a entrar en eso en detalle aquí, pero sabemos por ahora que es una manera de tener funciones asociadas con los objetos, que son un tipo especial de estructura, como vimos en C. Pero por ahora, sólo tener fe en que esta es la sintaxis correcta para utilizar cuando se utiliza una biblioteca como esta biblioteca PHPMailer. Y luego, al final de este archivo que habíamos generado dinámicamente un e-mail que fue enviado a mi cuenta jharvard@cs50.net de mi cuenta jharvard@cs50.net, y nos informaron al usuario en consecuencia que se habían registrado para este deporte. Eso es más o menos lo que el sitio Frosh IMs hizo hace tantos años cuando lo implementa, es cierto, en un idioma diferente, pero quizás te muestra el poder que tiene ahora que usted puede expresarse no sólo mediante programación a un nivel bajo en un lenguaje como C, pero a un nivel mucho más alto con estas aplicaciones en el mundo muy reales como el correo electrónico para resolver realmente algunos de los problemas del mundo real. Ahora, por supuesto, aunque yo uso este script para generar algún correos electrónicos de forma dinámica jharvard@cs50.net, que es en realidad una cuenta que tengo acceso, seas muy cuidadoso al enviar Mensajes sólo de las cuentas que están en realidad su cuenta, no sea que las cosas que te dan en un poco de agua caliente en la vida. Dicho esto, vamos ahora la transición a la solución de un problema totalmente diferente, la de los estados de retención. Ahora, ¿qué significa esto realmente? HTTP, el protocolo de transferencia de hipertexto, en realidad es un protocolo sin estado, y lo que esto significa es que cuando acabas de llegar algo como Google.com y luego pulsa enter por lo general su navegador tiene algún tipo de icono volador que luego resulta en alguna página web que se está descargando, y luego que pequeño icono deja de girar, y que en realidad sugiere HTTP que ha completado algún tipo de conexión con el servidor y ya está. HTTP es el estado en el sentido de que no mantiene una conexión permanente con el servidor de la misma manera que lo hace Skype o Gchat hace porque con HTTP el supuesto es que una vez que fue a buscar una página web que ya está. Ahora bien, en la realidad estos días en sitios como Facebook y Google Maps y Twitter y similares hay mucho más dinamismo por el cual incluso después de que el icono deja de girar puede de hecho tener más actualizaciones desde el servidor, más tweets, más actualizaciones de estado en Facebook y similares. Pero incluso eso está utilizando una técnica que vamos a hablar en una semana o dos conocida como Ajax usando un lenguaje llamado JavaScript pero al final de la día, HTTP es todavía sin estado. Y sin embargo, si usted quiere recordar alguna manera las cosas acerca de un usuario incluso después de haber desconectado del servidor PHP hace permitirse que un medio de hacer esto porque, como vimos por última vez, PHP tiene una serie de superglobales, y un superglobal es, de nuevo, una variable global especial que es entregado a usted por el servidor web y PHP por sí mismo. Usted no tiene que hacer nada para poner los valores en ella, y entre las superglobales que hemos visto hasta ahora son GET y POST, que es donde se colocan los campos de formulario de forma automática, así como un par de otros que no hemos visto todavía. Dentro de $ _SERVER algunas variables especiales relacionadas con el propio servidor. ¿Cuál es la dirección IP, qué protocolo, HTTP o HTTPS usaste, qué método usaste solicitud y similares, por lo que hay algunos interesantes, jugosos detalles sobre el servidor, y de hecho, el usuario así como en allí. Hay $ _COOKIE, que es donde estas cosas llamadas cookies se almacenan. No vamos a dedicar tiempo a sí mismas galletas hoy, pero sabemos por ahora que una cookie es una pequeña pieza de información que un servidor web se puede plantar en un navegador web ya su vez su memoria RAM o el disco duro de su ordenador para almacenar información acerca de un usuario, por ejemplo, su nombre de usuario de modo que no tenga que escribirla cada vez que inician sesión en o algunos número único o identificador para ese usuario de modo que usted no tiene que molestar con el mismo tipo de preguntas sobre preferencias en el futuro, pero la mayoría de los intereses en estos momentos es de $ _SESSION. Esta superglobal, que, como los demás, se entrega de forma automática por PHP cuando escribes sitios web basados ​​en PHP puede almacenar lo que quieras, cadenas, enteros, puntos flotantes, valores, matrices, objetos, Realmente cualquier cosa que desee, y le permite almacenar de forma que incluso si el usuario lo visita de vez en cuando regresa un minuto a partir de ahora o 5 minutos a partir de ahora, porque se toman su tiempo antes de pulsar algún otro enlace PHP se asegurará de que lo que pones en esa sesión superglobal minutos o 5 minutos hace todavía estará allí cuando regrese el usuario. Y debajo de la capucha esta superglobal sea implementada a través de esas cosas llamadas cookies, pero por ahora, es sólo una abstracción por lo cual es una especie de equivalente programático de un carrito de compras. Lo que usted, el programador, puesto que en matriz asociativa superglobal estará allí cierto número de minutos más tarde hasta que lo elimine, o hasta que el usuario sale de su navegador completo. Echemos un vistazo a un ejemplo de cómo esto se utiliza realmente. En counter.php entre piezas actuales de código tenemos la siguiente línea. Al inicio de este archivo tenemos un montón de observaciones azules, que son poco interesantes por ahora. Sin embargo, en la línea 13 tenemos una nueva línea, session_start, y que en realidad hace exactamente lo que dice. Se inicia sesiones. Le permite usar esa gran superglobal $ _SESSION, y es tan simple como eso. Ahora bien, si se procede a observar la línea 16, vamos a tratar de averiguar lo que esta página web se va a hacer. If (isset ($ _SESSION ["contador"]) y luego seguir adelante y guardar en la variable de contador, contador minúsculas, $ _SESSION ["Contador"]. Esto parece que se declara una variable local llamada contador dentro de los cuales se trata de poner una copia de todo lo que está dentro de la superglobal llamado período de sesiones en la ubicación "contador". Si no, al parecer, este pequeño mostrador variable local, se inicializa a 0. Pero entonces, unas líneas más adelante en el 26 aviso de que copia de la sesión de mostrador, su llave, tiene un valor asignado nuevo que es su valor actual más 1. En resumen, este archivo parece estar actualizando un contador que está almacenado en el interior de la superglobal sesión en un incremento de 1, pero primero conserva una copia del valor anterior almacenándolo en una variable local llamada $ mostrador, y entonces aquí vamos a ver lo que queda. Resulta que es más o menos sólo HTML. En la parte inferior de esta página podemos ver en la línea 37 que he visitado este sitio número del contador de tiempo, así que hay un par de características interesantes. Uno de ellos, se trata claramente de una variable, pero no es suficiente para poner sólo $ Contador en el cuerpo del HTML porque claro si sólo hay entre su PHP HTML se va a suponer que es sólo HTML. Usted, literalmente, quiere $ contador que se imprimirá en la pantalla. Pero en vez de caer en el modo PHP con este pedazo de sintaxis que dinámicamente se puede insertar un valor aquí muy similares en espíritu a lo que hicimos la última vez con insertar valores en cadenas. De hecho, esto es sólo una notación abreviada para decir algo como esto en forma literal, print ($ contador) o incluso algo como printf (% s, contador), o incluso, como usted pudo haber visto en Internet o en libros de texto, hay una función en PHP llamada eco que hace lo mismo, y todos esos son sólo formas más prolijas de decir: