[Música tocando] DAVID J. Malan: Todo ben. Benvido de volta. Este é CS50. Este é o final da semana 8. E como vostede sabe, temos moi horario normal de oficina nalgúns dos comedores, incluíndo Annenberg. E algúns membros do equipo xentilmente tirou algunhas fotos recentemente. E en honor de Día das meiga, pensamos compartir xa que nos colleu de sorpresa aquí no Salón Annenberg só a outra noite. O seu compañeiro Jacob pousou para esa foto, pero era máis divertido estaba en Facebook, a que se seguiu conversa que pasou despois. 

O seu primeiro post en resposta a súa foto foi esta. Poucos minutos despois, el decidiu para un up-se con iso. Ela pasou entón a ir a este, e logo, aínda máis divertidamente é cando a súa nai entrou na conversa. E, a continuación, en definitiva, parece que este foi só un artificio marabilloso para un xogar o que está pasando. 

Entón, se quere para ver Jacob e outros, entre eles Cynthia Menger, que é nos bastidores do equipo zona CS50, ir a este URL e este xogo aquí. Así, sen máis delongas, hoxe nós seguir este ollo programación web, e creación real de programas que non funcionan na súa liña de ordes, pero en vez executado dentro dun navegador. 

Presuntamente, agora, é moi En breve, vai estar no medio de implantación seu propio servidor web, o que é diferente de programación web. O servidor web en pset6 ten todo a ver software que sabe escribir como tomar Solicitudes HTTP dun navegador, ou mesmo de ti, un ser humano, cun programa chamado Telnet, e logo responder a esas peticións ou por cuspir un ficheiro HTML, ou un jpeg, gif ou un, ou un ficheiro .PHP. 

Pero con un servidor web, non é suposto pode abrir un ficheiro PHP, algo que termina .PHP, e entón cuspir o contido. É suposto facer o que o ficheiro por primeira vez? Por así dicir. Non recompila-lo, dixemos o luns, pero rather-- Entón, interpretala. 

PHP é unha linguaxe interpretada, e así por unha das características clave na súa web servidor, aínda aplicado por nós, É esa capacidade de seu servidor web notar, oh. Este é un arquivo que remata en .PHP. Deixe-me só envialo ao usuario como se fose contido estático, pero déixeme lelo liña por liña, de esquerda a dereita, e interpretala lo. 

E para facer, que caras van esencialmente chutar a un programa no dispositivo, e en unha morea de sistemas de ordenador, chamado só PHP. Ese é o nome PHP o propio intérprete de linguaxe. Entón, que peza imos aplicar a ti, eo que queda para ti, en última instancia, é unha serie de pezas, entre as que está implementando soporte para contido estático. 

Pero agora, e con conxunto de problemas de sete, que é comezará a transición realmente escribir o código PHP que é interpretado en falar con un back-end base de datos que almacena información. Entón, imos entender mellor primeiro un par destes superglobals e canto poder ten saír da caixa de balde cunha linguaxe como PHP. Cousas que non ten aplicar-se. 

Entón, nós vimos o luns $ _GET, que é unha superglobal, que é só PHP falar dunha resposta global variable que pode acceder en calquera lugar. E o que está dentro de $ _GET? O que está dentro deste Superglobal que vemos? Certamente estatisticamente polo menos unha persoa sabe. O que está dentro de $ _GET? Si? 

Audiencia: É as variables pór na cadea de consulta. 

DAVID J. Malan: Perfecto. É as variables poñer na cadea de consulta. Así, no noso exemplo máis antigo de reimplementar Google cando tivemos un URL, e logo, punto de interrogación, que demarca o inicio do HTTP parámetros, entón tivemos q igual algo, como q é igual a gatos, o que iría automaticamente dentro do que US $ _GET super-global para ti, por mor do PHP, é unha clave de Q, eo seu valor de gatos. 

Noutras palabras, $ _GET e todos estas cousas son matrices asociativas, táboas hash de tipos, que tenda de claves e valores. Agora, de volta a pset5, o hash táboa que podería aplicado, ou o que pode probar Implementar, realmente era efectivamente un asociativa matriz, unha estrutura de datos a través do cal pode asociar chaves con valores. 

Pero en pset5, os valores foron trivial. O valor foi esencialmente verdadeiro ou falso. É a palabra no dicionario? Entón, cando hash unha palabra como mazá a ver se a Apple está no dicionario, súa función de verificación presuntamente retorno verdadeiro ou falso. Entón, iso é efectivamente o valor que estamos a recibir de volta. 

Pero vimos o luns brevemente, certamente pode asociar máis interesante valores que só verdadeiro ou falso con claves, como a mazá. Realmente pode voltar un secuencia arbitraria, e, de feito, iso é o que $ _GET e estes outras variables permiten que faga. 

Entón $ _POST é semellante en espírito, pero se enviar un formulario vía post, un método HTTP que é distinto usado para cousas como tarxetas de crédito, e información privada, e mesmo información binaria, como imaxes, esas cousas acaban dentro de $ _POST. E, de feito, para arquivos como JPEGs e outros enfeites, hai aínda outro que non é aquí chamado $ _FILES tamén. 

Así, o servidor que non vou me debruzouse sobre máis moito, pero dálle acceso clasificar de detalles de nivel inferior sobre o propio servidor que está a usar. Biscoito e sesión, porén, imos efectivamente ver agora. O último é o que usan para aplicar a noción de unha cesta da compra. A un super sinxelo, pero recordo que tivemos este exemplo aquí, contando cantas veces visitara esta páxina antes. 

Pero hoxe, no canto de só ollar para o efecto deste, imos abrir Inspector de Chrome, que pode xeralmente facer premendo ou Control dereita premendo en calquera lugar nunha páxina web, a continuación, escolla inspeccionar elemento. Ou pode ir a través do menú que describimos en especificación de pset6. E eu estou indo á pestana Rede aquí, e imos observar por un momento o tráfico HTTP que é indo e volvendo. 

Déixeme primeiro ir adiante e borrar a caché de Chrome. Entón, algúns de vostedes poden estar familiarizado con esta técnica xa, e nós estamos indo a usalo por aquí fins de depuración. Agora, como ordenador os científicos van comezar facendo iso para depuración efectos, polo que imos borrar a caché, tipicamente, de xeito que nós pode se librar de cousas chamadas cookies. Entón, probablemente está familiarizada co que son as cookies, ou polo menos que existen, pero o que é súa comprensión deles, como só un usuario de ordenadores, o que é unha cookie? Si. 

Audiencia: É un pouco de-- ben, non bit en un termo de ciencia da computación. É unha peza de datos que un sitio envía para ti, a fin para poder rexistrar estatísticas sobre ti. DAVID J. Malan: OK, bo. Polo tanto, é unha peza de datos que un servidor, pon no seu ordenador, e imos xeneralizar aínda máis, é unha clave value-- ben, que está ficando máis preciso. É unha peza de información, unha peza de datos, que un servidor é capaz para poñer no seu ordenador e, moitas veces, o servidor fai este, co fin de lembrar quen é vostede. Así, por exemplo, as probabilidades son probablemente está rexistradas en sitios como Facebook, ou Gmail, ou outros antes, e ingrese na súa nome de usuario e contrasinal, e logo despois diso, para algún número de minutos ou horas ou incluso días, o servidor que memoriza es, de feito, dentro do sistema. Agora, como é que realmente está a suceder? Porque certamente non está redigitação o seu nome de usuario e contrasinal cada vez navegar a un páxina diferente en Facebook. Entón non é que o galletas son a resposta. 

Unha cookie que pode pensar que, tipo de gusto, unha man dixitais selo que pode obter nun parque de atraccións parque ou un club que, esencialmente, indica que estivo aquí antes, e xa mostra o seu ID a seguridade, por exemplo, e que o club ou ao parque debe agora asumir que xa dentro do sistema. Xa foron identificadas por el. 

Entón, con iso en mente, imos abrir contador aquí. Déixeme ir adiante, eu só fixen, e limpar todos os meus cookies. E agora o que vou facer é Manteña a tecla Shift, só para unha boa medida, e forzosamente recargar a páxina. Cambio só comproba se que nada é almacenado na caché. E aquí está a solicitude que ía e volvía. Entón, aquí temos unha proposta, e deixar me achegar aquí abaixo, e unha morea de presente é tipo de detalles desinteressante para agora que o navegador automaticamente enviado, pero imos faga clic en Ver Fonte para ver as cabeceiras materias. 

E se xa mergullou pset6 xa, certamente vai recoñecer as cousas así, e quizais algúns desas outras liñas aquí, pero o que é máis interesante para hoxe se eu rolar para abaixo, non para a solicitude pero para a resposta de chamada, esta liña probablemente parece familiar. Iso é unha cousa boa cando ve un 200 Aceptar. Ao parecer, esta é a data e hora no servidor e hai unha morea de cousas. Oh, iso é interesante. 

Acontece que sempre que usa PHP, polo menos neste servidor, o servidor que cospe versión de PHP que está a usar. O que, de feito, para a seguridade propósitos, non é unha cousa boa. Pero imos volver ao que noutro momento, quizais. Pero agora esta é a liña suculento hoxe, e vimos brevemente algúns destes, Creo que con Facebook cando cutucou en todo o Inspector na época, biscoito conxunto é o que está plantando aquel pequeno anaco de información para o seu ordenador. 

Este é unha cabeceira HTTP que é efectivamente o teu navegador, Chrome, IE, sexa cal sexa, hey tenda navegador no que o usuario de disco duro ou na memoria RAM do usuario, unha clave chamada PHPSESSID, que é un notación abreviada para o ID da sesión, e darlle un valor de 0vlk8t, punto, punto, punto. Un tempo moi longo pseudo secuencia alfanumérica aleatoria. É só un número moi grande, pero é codificado con letras e números de tal forma que o tamaño do que se pode aínda maior que as cifras por si só. E, a continuación, polo camiño, camiño = /, que Significa só que ese cookie debe ser asociada co totalidade do sitio web, non só un específico páxina cousa toda. Polo tanto, este é ese selo man virtual. É coma se o servidor, Facebook, ou, no noso caso o aparello, ten 0vlk8t literalmente escrito etc., na súa man. Teña en conta que o servidor, non facer é non é gardar o meu nome, seguro non gardar o meu contrasinal. 

Pola contra, parece haber almacenar a información de pseudo aleatorio de xeito que ninguén pode adiviñar o meu selo de man é. No lado do servidor, Mentres tanto, o servidor vai lembrar, probabelmente nunha base de datos ou algo así, que o usuario, que no futuro presenta un selo de man de 0vlk8t, punto, punto, punto, debe ser asociado a este particular, cesta da compra, por así dicir. Noutras palabras, se eu agora vaia volve aquí e recargue esta páxina, como é que o servidor sabe que visitei unha vez? 

Ou se eu fai iso de novo, como é que o servidor sei que teño visitado dúas veces? Ben, se eu baixar a este solicitude máis recente, o que agora é o terceiro que eu enviei en total, teña en conta a miña petición agora. Hai aínda esta é solicitar até aquí, mesmo como antes, aínda hai un grupo enteiro de cousas que nós ignoramos, como antes, pero a última cabeceira, este tempo, porque eu xa estiven aquí antes, é unha presentación de este selo man virtual. 

Biscoito en que esta liña aquí, non definida pero bolinha colonos PHPSESSI = 0vlk8t, iso é automático de só meu navegador presentación deste selo man para que Agora o servidor, logo que se entende, ooh, este é usuario 0vlk8t punto, punto, punto, Agora recordo que el ou ela é e asociar novo que o usuario sexa cal sexa información que quero, e todo esta información pode ser almacenada por ti, o programador, en $ _SESSION. 

Entón, para ser claro, se eu abrir ben rápido no gedit o ficheiro real, counter.php, no meu directorio público servidor local como antes, entender que, de feito, Estou en definitiva, o almacenamento en $ _SESSION Entre comiñas "contra", o valor do contador anterior cales Recibe destas liñas ata aquí que nós mirou para última hora máis. Entón, debaixo do capó, iso é todo cookies son. É exactamente o tipo de dixitais selo man indo e volvendo, e, a verdade, se abrir o Chrome do Inspector en calquera sitio visita hoxe, con Super alta probabilidade, vai ver, quizais un, quizais media ducia de galletas lembrar por ti. 

E peor aínda, se os web que está a visitar todos os anuncios, que teñen é certamente moi común hoxe en día, e se eses anuncios están chegando dalgún partido central, alguén como Google ou AdWords como chame un dos seus produtos ou outros provedores tales que vender anuncios, o que é interesante, e, a verdade, o que é un pouco preocupante, sobre como funciona HTTP, é que se ten un anuncio incorporado no Facebook.com e Google.com, e Harvard.edu, calquera número de sitios, por iso é tan que hai un home de media que está servindo arriba anuncios para todos os tres destes sitios, verifícase que o as cookies son por dominio. 

Entón se ten un anuncio que vén do mesma empresa en diferentes sitios, que empresa pode efectivamente controlar quen está en todos os sitios. Harvard pode non saber vostede está a visitar o Facebook. Facebook pode non saber e vostede está a visitar Harvard. Pero calquera que sexa servizo de anuncios eles están a usar, se ese dominio é presente en ambos Harvard.edu web páxinas e páxinas web Facebook.com, este home medio certamente sabe quen é vostede porque destes cookies sendo compartido do outro lado, ou en vez de, que o chamado intermedio. 

Entón, imos volver a este en implicacións de seguridade dos mesmos, pero hai unha gran cantidade de información sendo almacenados sobre vostede en calquera momento visitar máis calquera páxina web en a Internet e realmente reduce a este mecanismo moi sinxelo. Que pasa, entón, se es super paranoica e decide ir en Chrome ou IE ou o que quere e apagar os seus cookies? Que pasa? Si? Vostede realmente-- xa fixo iso certo? Está ben. Non, vai adiante. 

Audiencia: Algúns sitios non teñen unha función sen gusta Facebook. DAVID J. Malan: Yeah! Así, certos sitios só vai deixar de traballar. E na maioría dos sitios hoxe en día que, fundamentalmente, confiar en cookies, especialmente se eles teñen que iniciar sesión en, están indo só para romper. Porque a considerar alternativa, se o sitio web non ten forma de lembrar quen é vostede, e, polo tanto, o seu navegador non é representando cada con HTTP petición deste selo banda, eficazmente un sitio como ir de Facebook ter que pedirlle a Póñase-se cada vez danado cambiar de páxina ou facer clic nun enlace, o que certamente non é especialmente un bo usuario experiencia. 

De xeito que non é, tamén, entre os trade-offs. Así, sen máis delongas, imos dar por certo que con programación web, en linguaxes como PHP, pode lembrar información como esta no conxunto de problemas sete cando aplicar o seu propio Web E * Trade, como co que mercar e vender accións, vai lembrar exactamente o que o usuario teña adquirido e vendido e que el ou ela é por medio da sesión. Pero nós imos ter unha forma máis extravagante que correo-e para comezar a manter a información en torno. Non? 

O luns, nós falamos sobre Frosh IMS e como na versión de que un sitio web, anos, o único que fixemos foi enviar correo-e a Proctor quen é encargado dos deportes internos programa, o nome eo sexo, e se son ou non un capitán, eo dormitorio de alguén que é rexistrar para un deporte intramural. Polo tanto, non é malo, pero el ou ela, a continuación, tiven que percorre a través do seu correo electrónico, facer unha folla de cálculo ou algo parecido que, para manter todo organizado. Entón certamente nós como programadores pode facelo para que Proctor. E así entra SQL, Structured Query Language, que se ve fermosa diferente para ambos C e PHP, e vai mergullo moito máis mans PHP e conxunto de problemas, pero tamén sete SQL, ou SQL, é unha linguaxe que que usa para falar con unha base de datos. 

Pero o que é unha base de datos? Ben pensas dun base de datos, polo menos por agora, como só como un arquivo de Excel, ou se é un ficheiro de números de usuario de un Mac, ou se é un Google Apps usuario unha folla de cálculo de Google, é efectivamente unha base de datos, ou realmente especialmente unha base de datos relacional. Unha base de datos relacional é só algo que ten liñas e columnas, e pode almacenar calquera tipo de información nestas liñas ou columnas. 

Pero o que é agradable sobre SQL, e sobre bases de datos reais, e non só follas de cálculo ou follas de cálculo de Google, é que pode usar unha linguaxe para realmente executar consultas para introducir datos, para eliminar os datos, de ollar os datos, mesmo o máis importante, e vostede Non ten que usalo moi manualmente como pode tipicamente un Google folla como este. 

Así, en SQL, hai unha morea de declaracións fundamentais ou pezas de funcionalidade embutida. Hai moitos máis que estes, pero pode ir unha enorme distancia só por saber que esta linguaxe chamada SQL ten polo menos catro declaracións que pode aproveitar. 

Eliminar, para a eliminación de datos, Inserir, para engadir liñas, Update, para cambiar liñas e Selección, para volver liñas e que é de feito o que o SQL fai. El opera enteiramente en liñas para que cando inserir ou retirar, ou actualización, ou seleccionar o que está quedando atrás como un chamado conxunto de resultados, como unha matriz de liñas. Un grupo de liñas de unha táboa. 

Entón, de volta ao día, e até hoxe, Pode interactuar co base de datos a usar unha liña de comandos, pero non é especialmente divertido de usar Nesta xanela estilo branco e negro e realmente executar comandos e picar en torno a súa base de datos. A interface gráfica de usuario, ou GUI, é moito máis preferíbel, sen dúbida, e por iso a ferramenta recomendamos e preinstalado para que no aparello chámase phpMyAdmin. É unha coincidencia total que o nome desa cousa ten PHP nel, isto significa só que a xente que escribiu este programa-se escribiu el en PHP. 

Pero é en definitiva, sobre a administración un servidor de base de datos, como un servidor de MySQL que pode ter, como facer, o aparello CS50. Polo tanto, non hai máis detalles aquí do que necesitamos nos preocupe hoxe, pero o que é fundamental é que na esquerda banda está a lista das bases de datos que ten no seu ordenador, no seu dispositivo CS50, ou vir proxectos finais que pode ter en relación a terceiros, unha empresa de web ou servidor web, que pode estar pagando por espazo. Entón, á esquerda é o bases de datos, un dos cales é pset7 que eu pedín prestado a partir do pset semanas e logo na parte superior non entender que hai unha chea de pestanas, unha das cales é bases de datos, SQL, estado, usuarios, exportación e así por diante. Entón pode ir un longo camiño só por entender que a maior parte do interface de usuario está na parte superior da columna esquerda e na parte superior dereita alí enriba. Entón o que podemos realmente facer iso? Ben, imos comezar a crear unha bit de información como segue. 

Supoña que o seguinte é o caso, como será en poucos días, quere implantar un web, chamado CS50 Finanzas, e esta web permite que compra entre comiñas e vender accións. E vai descubrir o prezo desas accións, en definitiva, como vai ver, charlar co Yahoo Finance. Que, marabillosas, ten un servizo gratuíto a través do cal pode pasar nun ticker stock como GOOG a Google, e que vai darlle de volta o stock actual de Google prezos no pasado polo menos uns minutos. 

Entón vai usar isto, en última instancia, finxir ao usuario para mercar e vender real accións usando diñeiro virtual, pero o primeiro o usuario verá é esta pantalla de inicio de sesión que pide para o seu nome de usuario e contrasinal. E, así, un dos primeiros retos para ti en pset7 será para aplicar o back-end base de datos, a folla de cálculo se, que vai gardar nomes de usuarios e contrasinais e, finalmente, que accións eles mesmos, e cantos e canto diñeiro teñen, polo que unha morea de outras cousas en outras táboas ou follas de cálculo. 

Entón, imos dar un ollo a como esta podería parecer a primeira vista. Vou volver o aparello e eu son indo a ir a este URL aquí phpMyAdmin localhost / phpmyadmin e verás que me leva a unha interface exactamente como vimos no captura de pantalla, e aquí eu ten unha base de datos adicional chamado charla para hoxe e deixe-me ir adiante primeiro e prema en pset7. 

Parece que teño un par de opcións, un para os novos, para a creación dunha nova táboa, e un enlace para os usuarios, que é unha táboa que xa creada. Entón o que é unha táboa? Entón, se usou Excel antes, e se ten números usados ​​ou Google Follas de cálculo, se abre unha fiestra e terá un grupo enteiro de liñas e columnas, pero entón xeralmente ten follas de cálculo ao longo do fondo, ou abas separadas. Pode pensar de cada folla como unha táboa base de datos, de xeito que, en definitiva, é unha combinación dunha ou máis táboas, unha ou máis follas de cálculo, en mundo dunha folla normal. Entón deixe-me ir adiante e clic sobre esta folla que eu Premade, chamados de usuarios, a.k.a. Táboa de base de datos. E se eu rolar para abaixo aquí, déixeme afastar un pouco, iso é o que está dicindo phpMyAdmin nós é dentro deste marco agora. É un pouco confuso no inicio relance, porque a interface do usuario non é a cousa máis bonita do mundo, pero o que é interesante é esta parte aquí. ID, nome de usuario e hash. 

Con antelación, e vai ser entregado este problema en establecer sete, nós dámoslle un arquivo que contén un super táboa de base pequeno, prestado realmente a partir da edición de hackers do conxunto de problemas dous, no interior dos cales existen seis liñas. Un para toda a Belinda camiño para un para Zamyla, e teña en conta á esquerda daqueles nome de usuario son IDs únicas, como un, dous, tres, catro, cinco, seis, números enteiros, e despois a dereita son hashes. 

E se, as probabilidades son, non fixo o problema edición hacker de definir dous, pero un hash é como un cifrado contrasinal con algunhas ressalvas. E así, o que ve aquí son as versións cifradas de todos os seis das nosas claves de problema definir edición dous do hacker. Agora á esquerda é só algunhas cousas GUI, editar esta liña, copiando esta liña, eliminar esta liña. 

Pero o que é interesante agora é o seguinte. Podo realmente comezar experimentando con esta táboa. Entón, se eu for e prema o SQL guía, eu recibín esta caixa de texto grande. E non é así que imos facelo cando, en realidade, escribir código. Para ser claro, phpMyAdmin é só unha ferramenta que é vai deixarnos bisbilhotar a base de datos e déixenos experimentar con consultas. 

Así, por exemplo, supoña Eu executar exactamente isto. Select, que é un dos palabras clave que mencionei anteriormente, estrela, que representa todo as columnas dunha táboa. Polo que a táboa? Así, os usuarios. E noten que hai esta convención estraño en SQL onde realmente usar volta ácaros, normalmente, citas non individuais e citas non dobres cando se fala de nomes de táboas, así a cita de volta é a cousa sobre a superior esquerda do seu teclado máis probable. 

Entón deixe-me ir adiante agora e só deixar isto quedo e role a páxina e prema en Ir, e estamos realmente vai ver o mesmo. Acabamos executada unha consulta SQL dicindo selecciona todo estrela da táboa chamada usuarios e o que recibe de volta é esta. En definitiva, nós imos ser capaces de facer o mesmo en código, pero por agora todo o que eu quería que foi velo no meu navegador. Ben, imos facer algo un pouco diferente. Déixeme volver á pestana SQL, e imos só dicir que o que? Zamyla perdeu toda a súa diñeiro, e, polo tanto, é hora de eliminar o seu como un usuario. Ela non está login. 

Entón eu vou dicir eliminar de-- así, manter a capitalización para a consistencia, eliminar dos usuarios onde. E así, podemos ter estes predicados, ou estes cualificados, ao final da miña declaración onde e como eu podería eliminar Zamyla? Polo seu nome Zamyla, de xeito que o columna, unha das columnas foi nomeado, entón onde name = "Zamyla". E aquí eu uso dobre comiñas ou aspas simples, só se pode usar a parte de atrás cando ácaros falando sobre os nomes, por exemplo, de táboas ou campos. E déixeme clic Aquí. E agora, a páxina web é sendo un pouco tenso. 

Ou, o que realmente quere facer borrar dos usuarios onde o nome é igual Zamyla? Si. Entón, agora, se volver para a miña mesa premendo usuarios, teña en conta que Hm. Eu gozado. E, de feito, eu medio que premendo lonxe tan rápido vostede nin sequera ver o mensaxe de erro vermello, quizais. O que eu fixen de malo? Audiencia: Non para capitalizar o seu nome. DAVID J. Malan: Si, eu capitalizar o seu nome, pero a súa username-- en realidade eu fixo un par de erros, non? Un deles, o seu nome de usuario é zamyla, Z en minúsculas, eo nome da columna é nome de usuario, non o nome, entón imos facelo de novo. Deixe-me ir adiante e eliminar dos usuarios ONDE nome de usuario é igual entre comiñas "Zamyla". Todo certo? Entón, iso parece un pouco mellor, imos me ir role a páxina e prema en Ir. El aínda vai grite comigo para estar seguro. Eu faga clic en Si, e agora vemos, francamente que isto aconteceu, realmente rápido, menos dun segundo, seguramente, este é exactamente a consulta que foi executada. Para confirmar, déixeme prema usuarios e de feito agora Zamyla está desaparecido. Agora imos facer o contrario. Supóñase que quere Gabe rexistrar para o sitio. ¿Que é a consulta SQL, que é o mando que eu podería escribir para engadir Gabe? Ben, é moi sinxelo. Insire en usuarios, e agora está un pouco enigmática. Necesito especificar, para o servidor, cales campos quero asignar. Realmente non me importa o que de Gabe ID número é, entón eu vou saltar esa. Estou vez vai dicir username, hash e, a continuación, os valores que quero poñer alí será Gabe. E entón a súa mestura, eu non sei. Entón, por agora, eu vou deixar isto como un gran para facer. Imos volver en que o conxunto de problemas especificación de como realmente facelo. 

Así notar, de novo, a sintaxe. Insire o nome da táboa, a continuación, unha parénteses lista dos campos, as columnas que quere engadir valores e logo só mesma orde exacta de esquerda a dereito dos valores que quere engadir, e é só enrolando porque o texto é un pouco longo. Entón, agora deixe-me faga clic en Ir. Unha liña inserida. E agora, se eu volver usuarios, o que é interesante é que non só é Gabe agora en base de datos, o que é, ao parecer, o seu ID? 

Ben, é sete. Por que é sete anos cando eu non engadir lo? Polo tanto, esta é, tamén, un dos características que comeza da base de datos. Moita construído en funcionalidade. Acontece que cando creado esta táboa, I preconfigurado é automaticamente atribúa unha ID de tal xeito que incrementa. Entón, se xa se remexia, e mirou para o seu Facebook ID número é, a día de hoxe non é realmente unha cousa que facer, pero o Facebook como unha API, Application Interface de Programación, a través do cal pode obter de volta todo un conxunto de datos sobre si mesmo, sobre os seus amigos, e as súas conexións. E o que adoitaba ser tipo de legal, de volta ao día, estaba a mirar para arriba que o seu Facebook número de identificación era. Mark Zuckerberg de, por exemplo, é tres desde que el era o autor do sitio. E como a historia vai, el creou dúas contas de proba, os usuarios un e dous, que entón excluídos. E así, Zuck, como é o seu nome de usuario en Facebook, é o número de ID tres, e todos temos un número moi maior que tres destes días. De feito, nalgún momento Facebook se afastou do mesmo a usar un int, que é un valor de 32 bits, a través da o seguinte paso, esencialmente un longo tempo para que que poderían albergar incluso os usuarios máis se rexistrar. Así, un feito histórico pouco divertido. 

Entón, iso é só o sintaxe básica cos que poderiamos facer un par de consultas, pero podemos, en realidade, facer unha chea máis cousas con SQL. E vai ver, en última instancia, no problema de definir sete que ten que facer unha número de decisións de proxecto, entre eles será que tipo de datos para usar. Así como en C, non hai datos tipo nunha base de datos, como MySQL, e tipo de datos que ten que escoller de incluír estes campos aquí. Char, varchar, Int, gran int, decimal e data e hora, e moitos outros. Entón, imos realmente facelo. Imos finxir que non man que mesa do usuario e deixe-me ir adiante e crear, por eu, nas conferencias database-- en realidade, deixe-me ir adiante e eliminar a mesa que teño aquí xa para que poidamos realmente crear este. Whoops. Vou deixar caer este mesa, e agora estou indo a ir de novo para o charla de base de datos aquí, Vou crear unha táboa chamados de usuarios e imos só facer tres columnas inicialmente e prema en Ir. 

Agora, na súa maior parte, unha vez máis, este é só usando esta ferramenta gráfica chamada phpMyAdmin, eo que estamos facendo agora é a creación dunha táboa. Entón, iso é como Arquivo indo, Novo, e crear un novo ficheiro de Excel. Entón, está me pedindo algo cuestións, de esquerda a dereita, cal é o nome da primeira columna, e logo, o nome da segunda columna, e o nome do terceiro. Entón, imos recrear iso. ID, nome de usuario e logo, era un, e despois de hash era outra. Entón, o que debe o tipo de datos ser-se agora a un campo como ID? 

Aquí está a lista completa de tipos de datos dispoñibles para vostede nunha base de datos, e polo de agora imos só ir con int. Valor de 32 bits, non pensar de forma realista eu son terá máis que 4 millóns usuarios na miña conta, no meu servizo, entón eu vou manter en movemento á seguinte pregunta. Non vou especificar ou unha lonxitude de valores, non se aplicará aquí para un int, por si só. E agora podo especificar, parecer un patrón valor, que eu non vou especificar. Unha agrupación, eu non sei o que é. Un atributo. Agora nós realmente facer ter unha decisión de proxecto. Polo tanto, hai algúns campos aquí, non todos de que é aplicable, pero non asinado só significa o que? Que o int debe ser? Só non negativo. Entón iso ten que ser 0 enriba. Non, eu non estou indo para comprobar por que Quero que cada usuario teña unha identificación, el non pode ser nulo. E entón, nós conseguimos algo máis decisións de deseño interesantes coma este. Volveremos a iso nun momento, pero o que outra característica da base de datos é, é que pode dicir o servidor de base de datos, vai adiante e optimizar a si mesmo, a súa RAM e espazo en disco duro, de xeito que selecciona e insercións, e exclusións e actualizacións son moi rápidos. Compare isto con pset5. 

Se quere buscar algo na súa táboa de hash, que pensa como unha base de datos, que tiña que facer todo o traballar para facer a súa táboa hash rápido. É coma se, obviamente, vostede. Non? Vostede tiña que poñer no tempo todo ben axustando as cousas, recibindo unha función hash dereita, para descubrir como moitos baldes de ter. 

Pero o que é bo, unha vez máis, sobre unha base de datos é só punt todos isto para outras persoas que penso que este a través de ti, e que Eu vou dicir aquí, baixo contido é que o meu campo ID será a principal forma de identificación de usuarios na base de datos. Non vou pensar de Zamyla como Zamyla, Vou pensar en ela como o número 6. 

Por que é quizais mellor intuitivamente pensar e modelo cada unha das súas liñas individuais usando un número en vez de algo como unha corda, como o Zamyla ou Gabe ou máis corda aínda? Si? 

Audiencia: Un ID é único? DAVID J. Malan: Diga de novo? Audiencia: Un ID é único? DAVID J. Malan: Un ID é único, pero suppose-- segundo o caso, en xeral, con nomes de usuarios, supoña Eu tamén dixo que só pode haber un Zamyla no mundo, e só un Gabe. Podería impoñer a singularidade constrangimento en cordas, tamén, se eu quixese. Entón, non é un mal pensamento. 

Audiencia: Máis seguro. 

DAVID J. Malan: Máis seguro, por que? Audiencia: Non pode dicir que é que, como no usuario. DAVID J. Malan: OK, vostede Non pode dicir que o usuario é que por iso hai unha Privacidade aspecto a el, especialmente as identificacións quizais aparecendo nas URLs. Entón, por suposto, que podería tipo de traballo, tamén. Outros pensamentos? Si? 

Audiencia: É máis fácil realizar operacións nun int. DAVID J. Malan: Esa é a verdadeira kicker. É só máis eficiente, ou máis doado para o ordenador, para realizar operacións sobre un número enteiro. Non? Un int se pode garantir a ser de 32 bits, mentres que Zamyla está a poucos caracteres, Gabriel é un pouco máis caracteres, Davenport é moi longa, e por iso é non é especialmente eficaz para usar cordas para comparar valores e buscar para os campos e campos de actualización, se pode ir lonxe con só un número enteiro. Só 32 bits. Así, nomes de usuario, tamén, deste xeito, Non ten que ser único, aínda que probablemente debería ser, e mesmo deste xeito tamén un usuario podería ser permitido cambiar o seu nome de usuario. 

Entón, imos agora deixar este como o medios primarios de identificar o usuario. É dicir dicir a base de datos dalle optimizar-se de xeito que os emerxentes ollar en ID son super rápido. AI, horriblemente nomeado, só significa auto incremento, e esta é a comprobación caixa hai que comprobar para especificar que o campo ID para ser actualizado automaticamente para min, e entón eu vou rolar para a dereita aquí e, sinceramente, eu non estou realmente interesado máis en calquera destes campos. Certamente non é de hoxe. 

Entón, eu vou volver aquí, para a primeira columna, onde Necesito especificar nome de usuario e haxix, e imos polo menos no foco segundo para agora. Int probablemente non é a opción correcta, Entón, o que fai máis sentido, se cadra? 

Audiencia: Texto. DAVID J. Malan: Diga de novo? Audiencia: Texto. DAVID J. Malan: Texto? OK, eu oín texto. Que máis? Nós medio que ten unha morea de opcións que son de natureza textual. Entón, cando e por que, facer usa algún destes? Ben char, ao contrario do que pode pensar, non é un único carácter. É un número específico de caracteres. Entón, se sabemos que todos os nomes de usuario debe ser como oito caracteres, como adoitaba ser común en persoas maiores sistemas de ordenador, eu podería dicir de char e entón eu podería dicir 8 aquí. É cando a terceira columna se fai aplicable ao crear unha táboa. 

Pero iso é medio chat porque algunhas persoas poden quero ter un nome de usuario máis de oito caracteres, algunhas persoas poden querer ten un nome máis curto, entón por que comprometerse me a un número específico? Por que non ter unha variable número de caracteres e só dicir que a lonxitude máxima dun nome é, eu non sei, como 64 caracteres. Eu non podo pensar en todos os amigos que teñen nomes máis de 64 caracteres, e aínda que sexa moi curto que podería certamente bater-lo arbitrariamente. 

Entón varchar é unha variable número de caracteres. O texto non é un mal instinto, e francamente que tipo de fai o que di, pero un campo de texto pode ser como 65.000 bytes, polo menos. Isto pode ser unha esaxeración para un campo, e, de feito, si, 65.535. Isto pode ser unha esaxeración para un nome, entón imos ir, normalmente, con varchars para textual campo e haxix tamén. Hash, verifícase que, poderíamos facer unha varchar ben ou algo parecido, pero non imos centrar hoxe no cifrado alí e os números que pode, en realidade, desexa utilizar para a súa lonxitude. 

Pero déixeme rolar para a dereita. Só pode ter un índice primario de unha táboa, pero me gustaría aplicar calquera destes, agora, para o nome de usuario, diría? O que debe ser nome de usuario baseada nunha praza comprensión destas catro opcións? Só polos seus nomes? 

Audiencia: Unique. 

DAVID J. Malan: tan único, non? Así, verifícase que non só podería dis a unha base de datos, con antelación, esta é a principal forma identificación de campos. Tamén pode dicir que este é será un campo exclusivo. Non será a cousa que eu confiar, pero me gustaría que a base de datos para teñen esencialmente que, se condición, de xeito que se eu tente rexistrar dous usuarios co mesmo nome, o flat out base de datos non me vai deixar. Podería ter un código adicional en PHP que impide que logo, a base de datos, pero, tamén, pode garantir que iso non vai acontecer. 

Agora, como un aparte, especialmente canto pensa sobre proxectos finais, Teña en conta que de posiciona-lo e chea texto son realmente moi útil. Se ten unha base de datos máis grande, non con decenas, pero con centos ou miles ou mesmo millóns de campos, pode tamén dicir a base de datos con antelación este é un campo que eu vou estar buscando en un monte. Quizais o seu nome de usuario, quizais sexa bio, se está facer un sitio Facebook, como que ten números que o usuario ten permiso para salvar, e se quere dicir a base de datos de antemán Eu vou estar á procura neste campo moito, pero non é necesariamente única, pode especificar crear me un índice. Ou, pode dicir que tamén me permite facer tipo de procuras arbitrarias como Command ou Control F, como podería, nun procesador de texto, para que poida ollar cordas arbitrarias ou substrings neste ámbito. Noutras palabras, estamos chegando ao punto no semestre onde non se preocupe como aplicar as cousas de forma eficiente. Só ten que saber sobre o que decisións de proxecto para facer de xeito que está a empregando as ferramentas certas para o comercio, a fin de alavancar recursos que outros construíron para ti. Entón, para recapitular, principal só debe ten un, pode que só un, e que é a cousa que está comprometéndose a mediante a identificación de campos exclusivamente. Único é só semellante en espírito, pero pode só ocasionalmente usalo, pero quere que a base de datos para impoñelas la. Índice significa só cautelarmente acelerar as cousas no futuro para que eu poida buscar cousas neste ámbito. E, a continuación, o texto completo é xeralmente para parágrafos, ou ensaios, ou organismos grandes de texto onde Tamén pode querer ter curinga como o equivalente de estrelas. Right. 

Entón, que era unha especie de moi a todos dunha vez. A ver se non podemos destilar un par destes recursos e entón construír algo moi sinxelo, pero poderosa. Así, entre a outra decisións de proxecto que está en definitiva, vai ter é ao longo as liñas de mecanismos de almacenamento. E déixeme só facer mención a este en anticipación de proxectos finais, e anticipación de deixar de dizer-- non imos facelo. Imos construír este pequeno primeira aplicación. Eu estou indo a ir no meu terminal fiestra, e aquí non é só counter.php, que imos agora para se librar de como non pertinente, pero temos un grupo enteiro de directorios e esta vai ser moi similar en espírito o que verás no conxunto de problemas sete. 

Polo tanto, temos tres directorios inclúe público e modelos, que é exactamente de onde paramos no Luns con todo o noso paradigma MVC. E, para recapitular, en público está indo a ir calquera arquivo que quero que os usuarios realmente v poder visitar en seu navegador vía URL. Modelo. Que poñemos en modelos? Que tipo de cousas? Non era moito, pero unha parella arquivos, polo menos, o luns. Si. 

Audiencia: cabeceira e pé? 

DAVID J. Malan: Cabeceira e Rodapé. Polo tanto, temos algo similar hoxe, tamén. Temos máis algúns arquivos, pero Rodapé vexo, vexo cabeceira, e logo, unha morea de outros ficheiros. Polo tanto, este é o equivalente da visión V MVC, que, unha vez máis, será un pouco máis claro no conxunto de problemas de sete, pero isto é só un cartafol que estou poñendo unha morea de miña estética. Moi do meu HTML, moitas das miñas formas. Mentres tanto, inclúe, é outra directorio que ten estes tres arquivos e imos dar un ollo rápida para estes. 

Eu estou indo a ir adiante e abrir config.php. Como se ve, moi como no inicio do prazo, vostede incluíu afiada CS50 dot h con pset7. No exemplo de hoxe, vai para facer o equivalente a de que cunha declaración requiren que efectivamente inclúe esas varias liñas. Entón, para ser claro, este é un arquivo chamado config.php. E teña en conta o que está facendo. É aparentemente facendo algo transformando mensaxes enigmáticas, erro para que poida velos no navegador. É, entón, ao parecer requirindo dous outros ficheiros entón iso é como #include en C, e entón este que fixo ver, e nós invocados, iso se transforma que cesta da compra como a función. 

Isto significa unha vontade de cookie ser enviado de volta e cara atrás. Entón, por que iso é interesante? Ben, se volvemos a este directorio e abrir-se, por exemplo, constance.php. Teña en conta que o PHP fai constantes de apoio, non é completamente como #define en C. Pola contra, ten literalmente dicir definido, e previo que eu teño gardado con antelación catro constantes neste arquivo. Unha base de datos para a de hoxe, para meu contrasinal para o meu nome de usuario, e para o nome do servidor. Entón, estas son realmente vai ser moi semellante en conxunto de problemas sete. E para rematar, e é aí onde eu son indo para obter algunhas funcións agradable do equipo, en functions.php é unha morea de código que escribiu, e eu roubei algunhas destas do conxunto de problemas de sete para hoxe, que fai unha morea de cousas e imos só ollar para un deles en particular. Esta función aquí, consulta, será a función PHP que chamamos a fin de realizar SQL. Un momento atrás, estabamos empregando phpMyAdmin, pero iso é só por tipo de efectos de aprendizaxe e fins de diagnóstico e esquecendo o seu conxunto de datos. Cando realmente usar o seu base de datos, vostede, o ser humano, son, obviamente, non vai estar tirando un web páxina cada vez que alguén rexistra. Vai escribir un código que insercións e exclúe usuarios baixo demanda, e nós imos facelo por medio da función de consulta. Se eu agora vaia para abaixo, non hai será máis algunhas funcionalidades. Redirect vai ser unha función que escribimos para ti que lle permite enviar o usuario a outra URL, e procesar é unha función, así como vimos o luns, que realmente fai unha plantilla, pero máis para estes na forma de pset7 da propia andaina. De momento, imos adiante e facelo. 

Deixe-me ir para a miña mesa de conferencias e ver que hai actualmente nada aquí aínda, e deixe-me ir tamén no meu directorio público, onde hai só un arquivo, index.php. Este ficheiro semella super sinxelo No momento, el se parece con isto. Moi parecido coma nós deixou o luns. Estou esixindo o ficheiro, config.php que é en un inclúe directorio, que está dot dot, meus pais, e despois é só facer este ficheiro. Entón, cal é esta imaxe? 

Imos abrir nos meus modelos form.php, e imos ver iso. Super sinxelo ao parecer esta forma é presentará, ata un $ _GET ou $ _POST. Corrección de sanidade rápida. Literalmente visualmente buscar o arquivo. Método iguala post. Entón, el non vai utilizar o URL, como Google fai, que vai clasificar de ocultar a información por tras as escenas e é vai someterse a unha ficheiro chamado register.php, e que é o ficheiro que aínda non escribín pero o que é que isto vai para ollar como é iso. 

Se eu for a unha páxina separada Esta é o localhost / index.php parece. E, de novo, o servidor só asumindo index.php. Intro. Entón é aí onde estamos , Eo que quero facer é ser capaz de escribir cousas como David, e despois meu número de teléfono, o que vai dicir 617-555-1212 polo momento, cadastre e agora register.php non se atopou. Entón eu teño para aplicar iso. Entón, imos rapidamente látego algo como isto. Déixeme ir ao meu directorio público e facer gedit de register.php, e agora eu estou indo a ir adiante e iniciar o modo PHP, como fixemos o luns, e etiqueta preto do PHP, e imos facer un par de cousas. 

Entón, sei, desde escribir esta forma, que quero para comprobar o seguinte. Se está baleira, calquera que sexa o usuario escribiu para o campo de nome e logo Vou dicir algo como pedir desculpas falta nome. Peza desculpas, mentres, é non é unha cousa construída en PHP, é unha función que escribimos en functions.php para pset7 para que teña acceso a el. Else se o outro campo está baleiro, número, entón eu son vai pedir desculpas ao usuario e dicir o número que falta. Salva este ficheiro. 

Agora imos volver para o meu navegador, volver ao foro ténteo de novo. Registre-se. Está ben. Non pasou nada, o que é bo. Non recibín unha mensaxe de erro. Pero se en vez diso, imos actualizar esta páxina, e non ofrecer algo. Caramba. Fai iso. Registre-se. O que eu fixen de malo? Se baleiro, o nome $ _POST. Diga de novo? 

Oh, claro. Esquecín a parte máis importante, que é require ("../ includes / config.php."). Necesito ter acceso ao Desculpe función, que É por iso que nada estaba acontecendo. A función non existe realmente. Entón, imos tentar iso de novo. Imos volver cargar a páxina, prema en Register. Está ben. Non é. Así, a saída que estamos ver aquí é o resultado de chamar unha desculpas función, super sinxelo, e el simplemente imprime o que quere Dou-lle como un argumento. 

Todo ben, entón imos cooperar. Imos ofrecer o meu nome como David, rexistrar, falta número Ok, imos prever que, tamén. 617-555-1212. Registre-se. Está ben. Entón, todo está ben agora, só nada interesante está a suceder. Entón, agora imos facer algo máis interesante ocorrer así. Déixeme ir phpMyAdmin, e imos realmente crear unha táboa chamada usuarios, Vou darlle tres columnas, e eu rapidamente crear ID, e despois nome, e entón o número, eo campo ID eu son vai saír como un int. O campo do nome vou para deixar como varchar, e imos dicir 64, un tanto arbitrariamente. O número que eu vou para facer, xa sabe o que? Estamos indo a apoiar números norteamericanos aquí, entón eu vou facer algo como carbón e, a continuación, 10 caracteres max para un código de área e logo sete díxitos. E entón para acá, eu vou especificar auto incremento neste campo, facer esta unha chave primaria, e Eu estou indo a ir adiante e non comprobar calquera destes outros caixas. 

Entón, cando eu agora, finalmente, prema Gardar, e eu voltar á miña táboa de usuarios, este é o que parece que se me click agora unha estrutura New Tab. Entón iso, para ser claro, é só unha forma de phpMyAdmin de dicir a súa táboa de base de datos ten un ID, un nome e un número con esta configuración particulares e imos ignorar o resto dos campos alí polo momento. 

Entón agora o que quero facer? Entón, se eu ir agora para o meu código fonte, se está todo ben Quero realizar a consulta seguinte. Insire en, e podo só din os usuarios non estrictamente precisa para atrás os ácaros se é nin unha palabra perigosa como usuarios. Eu vou dicir o nome, número, e entón aquí estou non vai codificar a díxitos dos valores aínda. Vou poñer dous puntos de interrogación. E esta é unha convención en moitas linguas en que se quere ter un espazo reservado para unha cadea vai empregar o tema marcas, por razóns que vou volver a falar sobre seguridade, e aquí Vou pasar naqueles dous campos de publicar o nome, e, a continuación, publicar o número, e agora salva o arquivo. 

E agora eu vou baixar aquí é un super simplemente dicir rendersuccess.php, que será outro modelo. Vou crear moi rápido. Geditsuccess.php e eu só vou dicir éxito H1 nese ficheiro. Todo correcto. Entón, agora, imos voltar para o navegador, onde visitei antes. Imos ir adiante e confirmar que escribín en David, escribín un número de teléfono, rexístrese se. Caramba. O que eu fixen de malo? Entón, eu estou a ver un erro aquí, ten un erro na súa sintaxe SQL. Déixeme ir de volta para gedit, imos me volver register.php, eo que eu omitir que Era importante da última vez? Eu teño diso. Quere saber o que ademais de notar antes, pero eu teño diso. 

Entón agora imos volver, e iso foi útil para ver no navegador e é por iso que en config.php nós cuspir erros. Imos adiante e actualizar, prema en Continuar, o éxito. Entón, agora deixe-me ir ao meu base de datos aquí e prema en Usuarios, e navegar, e ter en conta que eu agora David ten no meu base de datos aquí. Agora tecnicamente esta web é aínda non está en internet pública, polo que non pode ter outro persoas en poñer aquí, pero se eu xa quixo, por exemplo, me envíe unha mensaxe de texto. Imos saír nun membro aquí e ver se iso realmente funciona. Eu estou indo a ir adiante e eliminar esta liña e imos borrar esta no vídeo máis tarde polo que non temos a toda internet texting me, e agora imos ir ata o navegador e nós falaremos sobre a charla e imos escribir diferente número aquí, rexistrar o éxito. 

Entón, agora, o meu propio número é presuntamente en a base de datos, e agora a parte divertida. Imos realmente usar o PHP para facer algo de programación, ou desde o mando liña ou dalgún outro lugar, e polo de agora eu son só vai mantelo simple e eu estou indo a ir ao meu directorio aquí e faga o seguinte. Rueiro Gedit imos dicir, imos chamalo de texto, #! / user / bin / Estructural PHP, como vimos a última vez. PHP. 

Agora eu vou esixen inclúe config.php aínda que isto pode inducir un pequeno erro. E agora eu estou indo a ir adiante e dicir liñas, consulta, seleccione estrela dos usuarios, e agora aquí eu vou facer unha técnica a última vez para cada liñas como liña. E eu vou facer algo sinxelo. Printf digamos que nome é ese, eo número é este, barra invertida n. E agora vou pasar na liña citar nome unquote, eo número da liña entre comiñas, e agora imos adiante ea fiestra do meu terminal chmod este a + x para facer este script chamado executable texto. E agora imos realizar texto. 

OK, entón o progreso. Entón, eu teño unha empresa escrita comando de script de liña, nunha linguaxe chamada PHP, que, debido a que requiren liña, ten acceso a todos aqueles configuración constantes que eu especificados. O nome da base de datos e así por diante. De feito, só para quedar claro que este non é un acaso, déixeme ir adiante e rexistrar, moi rápido, alguén como Rob e vai darlle o número 555-1212. 

E agora, se eu executar o script de novo, teña en conta o poder do que estamos facendo a base de datos. Agora eu inmediatamente vin o que o outras dúas liñas están no meu base de datos. Entón agora imos tratar de facer algo aínda máis extravagante dentro, e esta é a parte que temos Non probada anticipadamente, polo que a última vez que fixen iso as cousas foron horriblemente mal, dispoñemos de vídeo para ese efecto. 

De feito, si, divertido lado. Entón, a última vez, nun charla como hai dous anos, decidimos, eu decidir, para ser todo isto sería unha gran idea para xerar dinamicamente correos electrónicos en clase, utilizando toda a base de datos CS50 alumnos, que nos deron os seus números e as súas operadoras de telefonía móbil que pode lembrar de pset0, como razoar, verifícase se Eu tiña un pequeno erro no meu programa e fixo un par de erros en 2012, eu creo. 

Polas que, unha que tiña para o lazo que fixo exactamente este tipo de cousas, iteración sobre a base de datos, a obtención dun nome da base de datos, nome da base de datos, e logo en cada iteración do lazo que eu mandei un correo electrónico. Pero no canto de enviar un correo electrónico, eu enviou un correo electrónico a primeira iteración, e dous correos electrónicos dunha segunda iteración, enviado tres correos electrónicos dunha segunda iteración, o que como pode lembrar da nosa discusión de notación asintótica esta gran O malo, como n ao cadrado é o número de mensaxes que eu enviei, pero non foi ata correos electrónicos foi mensaxes de texto. 

E como vostede sabe, a comparecencia non é super en alta ata o final do semestre e entón eu penso que sería bonito en o tempo para dicir: "Por que non está de clase?" O texto da mensaxe I enviado para toda a clase, e era divertido como o 50% do clase, pero os restantes 50%, algúns dos cales apavorei, enviei incrible doces notas apologéticas para o equipo de pedir desculpas por perder a charla só esta vez, non? 

De xeito que sería horriblemente mal. Entón, nese espírito, imos tentar facer iso de novo, pero só co meu número. De antemán, no functions.php, Escribín esta función aquí. Chámase de texto, e leva en tres argumentos. Un número, un transportista, e unha mensaxe. 

Eu estou usando un switch, que marabillosas PHP levar cordas, e non só enteiros, e eu non aplicar todo o soporte para iso aínda, Acaba de facer AT & T e Verizon. Pois verifícase se que, con estes transportistas eles teñen correo electrónico para gateways SMS, a través do cal pode realmente enviar un correo electrónico a un enderezo como número de teléfono no vtext.com e se o usuario non ten bloqueado as mensaxes, que vai pasar por é unha mensaxe de texto. 

Agora, para facelo, eu vou ter que engadir un campo moi rápido para o meu banco de datos. Eu estou indo a ir a miña estrutura, e estou indo a ir adiante e engade un campo ao final da táboa. Imos facer clic Go, e eu son vai chamar esta transportadora e de momento eu vou deixar isto como un texto da barra, pero podemos ser máis sofisticado no futuro. Eu estou indo a ir rápido na miña mesa, e eu son vai se librar de Rob, porque iso é un número falso, Eu estou indo a ir a editar aquí e estou vai cambiar a miña operadora manualmente para ser Verizon, que el é, e agora aquí. 

Imos facer unha verificación de sanidade rápida. Imos abrir o noso guión de texto, que parécese tanto, transportista é% s. Estamos facendo moito máis erro comprobación do que eu fixen en 2012, portador. E agora, eu estou indo a ir adiante e re-executar o script. Está ben. Transporte é Verizon, o que significa Agora espero que eu poida facer exactamente isto. Correctamente este ano, espero, aquí imos nós. 

Entón, dentro dese loop for, eu son vai non só ten ese printf, Eu tamén vou chamar texto e o uso desta recordo función era que leva un número, un transporte, e unha mensaxe. Entón imos ver, o número vai ser liña entre comiñas "número", Cita liña "transportista", pecha comiñas ea última foi a mensaxe. Non romper este ano, punto e coma. 

Está ben. Dedos cruzados. A ver se isto funciona. Todo ben, entón. Aquí imos nós. Imos desbloquear o teléfono, cruzar os dedos, maldición. May-- variable indefinida oh espera, espera, espera, moi rápido. Moi rápido, moi rápido. Isto é totalmente paga a pena. Deixe-me incorporarse, deixe-me incorporarse, uh-oh. Grazas, os textos teñen iniciado a partir de outra persoa. Deixe-me ir adiante e abrir reais rápido, dropbox.php / mail aquí. Espera. Realmente paga a pena. Descargas. OK, fonte src8m. Está ben. 

Precisa máis unha liña aquí. Oh alí está, é en Frosh IMS, é o rexistro en tres. Oh Ola, Margo, moitas grazas. OK, e eu estaba falta esa liña aquí. Entón deixe-me incorporarse rapidamente esta liña de código, que inclúe o correo electrónico ou biblioteca que realmente quero usar, Vou rapidamente volver en funcións, Eu estou indo a ir ao principio desta arquivo e esixen o ficheiro, así como, e agora eu estou indo realmente cruzar meu dedos cando volten ao mando guión de liña, o que está dentro directorio servidor local de hoxe. Texto Executar. Intro. Mail. Espera. Espera. Mail. Oh, Aceptar. Aquí imos nós. 

Correo recibe novo sistema de correo PHP. Eu fixen este dereito? Caramba. A-- Oh, espera, espera, espera. Estar por. Eu prometer, é dicir será así paga a pena. Enderezo. É por iso que eu non faga o exemplos dereita antes da clase. Ugh. Os seguintes destinatarios fallou. Imos probar unha última cousa. SMTP definir desde, engade a dirección, a dirección é realmente iso. Imos probar esta última parte da dirección. Ah, eu estou realmente triste agora. Grazas. Pero eu realmente aprecio todo os textos que está enviando. Ten este David. Vostede está golpe. Imos deixalo alí e imos resolve o luns. Vexa vostede, entón. 

Daven FARNHAM: E agora Profunda Pensamentos por Daven Farnham. Se unha árbore binaria cae nun bosque e ninguén está por preto para C ele-- [rindo].