[Powered by Google Translate] [Semana 9] [David J. Malan - Harvard University] [Esta es CS50. - CS50.TV] Está bien. Bienvenido de nuevo. Esto es CS50, y este es el comienzo de la semana 9. Hoy nos centramos en particular en el diseño, ya no en el contexto de la C pero en el contexto de PHP y un poco de SQL y un poco de JavaScript, especialmente hacia el fin de los dos pset 7 y también su proyecto final. De hecho, si usted está en ese punto en el proyecto final donde presumiblemente a partir de una hora o así que hace que por lo menos empezamos a pensar un poco a su proyecto final y estás pensando que te gustaría colaborar con 1 o 2 compañeros de clase, si usted está teniendo problemas para conectarse con dichos compañeros, no dude en rellenar el formulario en cs50.net/partners/form. Simplemente te pregunta quién eres, qué tipo de proyecto que usted está pensando, donde vive sólo por razones logísticas. Y luego, si desea mantener un ojo en la próxima semana o así que la URL de hoja de cálculo allí, A continuación, puede ver una versión de sólo lectura del documento de Google Docs en el que estamos recogiendo esa información. Así que si usted quiere trabajar con alguien, por todos los medios no dude en acercarse a la gente a través de ese mecanismo. Pero la mayoría de la gente hacer solo trabajo. Eso es totalmente bien. Así que no creo que esto es de alguna manera obligatoria. El viernes era sólo yo y unos pocos del equipo de aquí, teatro vacío en su mayor parte. Hubo 3 turistas sentado ahí arriba, así que fue un poco incómodo. Lo que hablaba era de bases de datos y hablamos de pset 7 un poco. Y si no fue así para capturar en video que por el momento, eso está bien. Voy a tratar de definir los términos que de otra manera sería dar por sentado basado en conferencia del viernes. Pero hoy vamos a tratar de llegar al punto de no sólo ser capaz de hacer algo así pset 7 pero realmente entender lo que está pasando debajo de la campana, en particular algunas de las abstracciones que hemos puesto en marcha en el archivo functions.php para hacer su vida un poco más fácil, pero por lo que entiendo que en última instancia de modo que cuando las ruedas de entrenamiento salir en un par de semanas usted todavía puede sobrevivir en el mundo real y hacer estas cosas sin un marco CS50 debajo de usted. Este $ _SESSION, para aquellos de ustedes que están familiarizados o que ya cogido el video el viernes, ¿qué vamos a hacer SESIÓN en una aplicación web basada en PHP? Esta es una variable superglobal, lo que significa que es similar en espíritu a GET y POST y algunos otros, pero ¿qué es esto útil? ¿Cuál es SESIÓN utiliza? Si. [Estudiante] Logueandote ¿Cómo dice? [Estudiante] Logging in Logging in Indeed. En pset 7 que estamos usando este superglobal sesión para facilitar la tala pulg Y lo que es bueno de este superglobal es que es una matriz asociativa. Una matriz asociativa, recordar, es sólo un conjunto, pero cuyos índices ya no tienen que ser números como 012. Ellos pueden ser números o pueden ser incluso cadenas. Y lo que si ha buceado en pset 7, sin embargo, se recordará que estamos almacenando un ID de clave llamada dentro de esta matriz asociativa cuyo valor es algo así como 123 - cualquiera que sea el iniciado sesión ID de usuario es. El motivo de esto es que incluso después de que el usuario ha visitado localhost o mi sitio web en general y que han iniciado sesión, incluso si no hace clic en un enlace o volver a mi sitio web durante 5 minutos o incluso una hora o incluso un día, pero dejan su ventana del navegador abierta, a través de este superglobal puedo recordar que se ha autentificado En otras palabras, lo que me permite almacenar cualquier cosa un poco largo plazo Quiero acerca de un usuario. Y usted puede pensar que es realmente como la encarnación de un carrito de compras. Sitios como Amazon, obviamente, vamos a poner las cosas en un carro de compras, pero HTTP, el protocolo que alimenta la Web, es apátrida en el sentido de que cuando usted visita un sitio web, en su mayor parte no tiene algún tipo de conexión de red permanente entre su navegador y el servidor. Tan pronto como usted haya descargado el código HTML y JPEG y GIF las y los de todo, que la conexión desaparece y sólo hay una copia del código HTML y otras cosas desde el servidor. Pero si el servidor quiere recordar algo acerca de usted, la carga está en el servidor para registrar realmente esa información. Y por lo que el programador que tiene control sobre el servidor puede poner casi cualquier cosa que quieras dentro de esta matriz asociativa superglobal y que estará allí la próxima vez que el usuario vuelve, si se trata de minutos o incluso días más tarde, a menos que cerrar la ventana de su navegador, en la que SESIÓN punto desaparece. Así que es efímero almacenamiento, es no persistente, y que está destinado a desaparecer tan pronto como el usuario cierra su navegador - no sólo esa pestaña, a menudo el navegador entero, lo que efectivamente el registro el usuario fuera. Entonces, ¿cómo es esto en realidad práctica? Echemos un rápido vistazo a un ejemplo sencillo vimos el viernes. Para aquellos no familiarizados, es tan simple como esto. Esta es una página web cuyo único propósito en la vida es que me digas cuántas veces he visitado esta página. Esta es la primera vez hoy aquí que la visité, por lo que dice 0 veces. Pero si empiezo a volver a cargar esta página, se dice 1 hora, 2, 3, 4, 5, y esto finalmente se acaba de seguir contando hacia arriba, arriba, arriba, arriba, arriba por cada vez que haga clic en Actualizar en realidad en él. Entonces, ¿cómo es este trabajo? Déjame ir dentro de este archivo llamado counter.php. La parte superior de la misma es todos los comentarios azules, pero la parte interesante está aquí. En la línea 13 se llama session_start esta función, y que es, literalmente, todo lo que tienes que hacer si quieres tener acceso a este superglobal especial llamada $ _SESSION. Eso hace que todo sea posible, y veremos cómo en un momento en que todo es posible. En la línea 16 aviso de lo que estoy haciendo. Si la clave, llamado contra - en otras palabras, el valor del índice - "contador" existe dentro de esta matriz llamada SESSION, entonces ¿qué estoy haciendo con él en la línea de abajo? ¿Cuál es la línea 18 va? [Respuesta de los estudiantes inaudible] ¿Qué es eso? [Estudiante] Almacenar el valor. Bueno. Se almacena el valor que está en sesión en este momento en una nueva variable temporal local, $ Contador en minúsculas. Tenga en cuenta que PHP ya está siendo un poco perezoso aquí. Tenga en cuenta que no tenemos ninguna mención de int o float o cadena ni nada de eso debido a que PHP es tipos débiles, por lo que no es necesario especificar el tipo de una variable, y en este caso aquí no he siquiera lo declarado todavía. Lo estoy declarando dentro de estas llaves ya diferencia de C, esto es realmente bueno. No importa cuán profundamente anidado declaración de una variable es en PHP - dentro de llave, dentro de llave de cierre y similares - será en ese momento en el tiempo existe para el resto del programa, para bien o para mal. Así que inmediatamente se convierte en global tan pronto como usted lo define como estamos haciendo aquí. De lo contrario, si no me parece que haya nada en el superglobal REUNIÓN, Estoy aparentemente inicializar esta variable contador a 0, por lo tanto sólo suponiendo que el usuario nunca ha estado aquí antes. Y después de este curso es incrementar el contador, ¿cómo? Estoy actualizando el valor que hay dentro de esta matriz asociativa fijándola igual a lo que actualmente es contador + 1. Si me desplazo hasta aquí para el código HTML de la página, en realidad es bastante simple. Todo lo que tengo en el cuerpo de esta página es: "Usted ha visitado este sitio veces fulano de tal". Y este es un constructo PHP. Si lo hace