[Powered by Google Translate] [Semana 9] [David J. Malan - Harvard University] [Esta é CS50. - CS50.TV] Todo ben. Benvido de volta. Este é CS50, e este é o inicio da semana 9. Hoxe, en particular, o deseño, non máis no contexto C pero no contexto do PHP e un pouco de SQL e un pouco de JavaScript, particularmente para un fin de ambos pset 7 e tamén o seu proxecto final. En realidade, se está nese punto no seu proxecto final onde presuntamente a partir dunha hora, ten polo menos comezou a dar un pensamento ao seu proxecto final e está a pensar que desexa colaborar con un ou dous compañeiros, Se vostede está tendo problemas para conectarse con compañeiros de clase dixen, Sinto-se libre para cubrir o formulario en cs50.net/partners/form. El só pide que o que é, o tipo de proxecto que está a pensar, onde vostede vive só por razóns loxísticas. E entón, se quere manter un ollo en durante a próxima semana ou así que a URL folla alí, entón podes ver unha versión de só lectura do documento de Google en que estamos traídos esta información. Entón, se quere traballar con alguén, por todos os medios sentirse libre para chegar á xente a través deste mecanismo. Pero a maioría das persoas fan traballo solo. Isto é totalmente ben. Polo tanto, non sinto que esta é de forma algunha obrigatorio. O venres era só eu e algúns do equipo aquí, teatro en branco para a maior parte. Foron tres turistas sentado alí enriba, de xeito que foi un pouco raro. O que falamos foi sobre bases de datos e nós conversas sobre pset 7 un pouco. E se non aconteceu para incorporarse aquela en vídeo aínda, iso é bo. Vou tentar definir os termos que, doutra forma que concedeu con base en charla do venres. Pero hoxe nós estamos indo para tratar de chegar ao punto de non só ser capaz de facer algo así pset 7 pero realmente entender o que está a suceder debaixo do capó, particularmente algunhas das abstraccións que poñemos no lugar do ficheiro functions.php para facer a súa vida un pouco máis fácil, pero para que finalmente entender de xeito que cando as rodinhas saír algunhas semanas aínda pode sobrevivir no mundo real e facer isto sen marco CS50 debaixo de ti. Ese $ _SESSION, para aqueles de vostedes que están familiarizados ou que xa peguei o vídeo na venres, o que imos facer SESIÓN en unha aplicación web baseado en PHP? Esta é unha variable superglobal, o que significa que é similar en espírito para GET e POST e algúns outros, pero o que é esa cousa de útil para? ¿Que é SESIÓN utilizado? Si [Alumno] log in Sentímolo? [Alumno] log in log in feito. En pset sete estamos a usar esa superglobal sesión para facilitar log in E o que é agradable sobre este superglobal é que é un array asociativo. Unha matriz asociativa, recall, é só unha matriz, pero cuxos índices xa non teñen que ser números como 012. Poden ser números ou poden ser aínda cordas. E iso, se mergullou pset 7 aínda, ten que se lembrar que estamos almacenando unha identificación clave chamada dentro desa matriz asociativa cuxo valor é algo así como 123 - calquera que sexa conectado no momento ID de usuario é. A motivación para iso é que, mesmo despois de que o usuario visitou localhost ou o meu sitio máis xeral e entón eles rexistrado, aínda que non faga clic nun enlace ou volver para o meu sitio por 5 minutos ou incluso unha hora ou un día, pero eles deixan a xanela do navegador aberta, través deste superglobal podo lembrar que se identificou Noutras palabras, iso me permite almacenar un pouco longo prazo calquera cousa que quero sobre un usuario. E pode pensar realmente como a encarnación dun cesta da compra. Lugares como a Amazon, obviamente, deixar poñer as cousas nun cesta de la compra, pero HTTP, o protocolo que alimenta a web, é apátrida no sentido de que cando visita un sitio web, Para a maior parte, non ten algunha conexión de rede constante entre o navegador eo servidor. Así que teña baixo a HTML e os JPEGs e os GIFs e todo iso, a conexión vai e só ten unha copia do HTML e outras cousas do servidor. Pero se o servidor quere lembrar de algo sobre ti, a carga está no servidor para realmente gravar esa información. E así que o programador que teñen control sobre o servidor pode pór algo que sexa dentro desa matriz asociativa superglobal e vai estar alí a próxima vez que o usuario atrás, se é minutos ou mesmo días máis tarde, a menos que pechen a ventana do navegador, en que punto SESIÓN desaparece. Entón, é o almacenamento efémero, é non persistente, e está destinado a ir así que o usuario pecha o seu navegador - non só que guía, moitas veces, o navegador enteiro, así, efectivamente deslogar o usuario. Entón, como é esa cousa realmente aplicado? Imos dar unha rápida ollo a un exemplo simples, mirou o venres. Para quen non coñece, era tan sinxelo coma iso. Esta é unha páxina web, cuxo único propósito na vida é me diga cantas veces eu xa visitaron esta páxina. Esta é a primeira vez aquí o luns que o visitei, por iso di 0 veces. Pero se eu comezar a actualizar esta páxina, el di que unha vez máis, 2, 3, 4, 5, e iso acabará por só manter a conta subindo, subindo, subindo, subindo, ata para cada vez que eu realmente premer Recargar sobre el. Entón, como é este traballo? Deixe-me ir a dentro dese ficheiro chamado counter.php. A parte de arriba é todos os comentarios azuis, pero a parte interesante é aquí. Na liña 13 chamamos iso de session_start función, e que é, literalmente, todo o que cómpre facer se quere ter acceso a este superglobal especial chamada $ _SESSION. Isto fai todo isto posible, e imos ver en un momento como este é posible. Nun comunicado liña 16 o que eu estou facendo. A clave, chamado contador - noutras palabras, o valor do índice - "contador" existe dentro desa matriz chamada sesión, entón o que estou facendo con el na liña de abaixo? Cal é a liña 18 está facendo? [Resposta do alumno inaudível] O que é isto? [Alumno] almacenar o valor. Bo É almacenar o valor que está en sesión agora nunha nova variable local temporal, $ Contador en todas as letras minúsculas. Teña en conta que o PHP xa está sendo un pouco preguiceiro aquí. Repare que non temos ningunha mención de int ou float ou cadea ou algo así porque o PHP é feblemente tipado, en que non ten que especificar o tipo dunha variable, e neste caso aquí eu non teño aínda declarou aínda. Estou declarando a dentro destas claves e ao contrario de C, este é realmente ben. Non importa o quão profundamente aniñados declaración dunha variable é en PHP - dentro rizado cinta, dentro rizado cinta e afíns - el naquel momento no tempo existen para o resto do programa, para mellor ou para peor. Por iso, inmediatamente convértese en global, logo que o define como estamos facendo aquí. Se non, se eu non cre que hai algo na superglobal session, Estou aparentemente arrincar este contador variable a 0, así, só asumindo o usuario nunca estivo aquí antes. E entón este curso é de incrementar o contador como? Estou a actualizar o valor que está dentro desa matriz asociativa fixándose a igual en calquera momento contador + 1. Se rolar ata aquí para o código HTML da páxina, é realmente moi simple. Todo o que teño no corpo desta páxina é: "Xa visitaron esta web veces así e así." E esta é unha construción PHP. Se fai