1 00:00:00,000 --> 00:00:10,393 >> [Música tocando] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: Tudo bem. 4 00:00:12,120 --> 00:00:12,830 Bem vindo de volta. 5 00:00:12,830 --> 00:00:13,890 Este é CS50. 6 00:00:13,890 --> 00:00:15,570 Este é o fim da semana 8. 7 00:00:15,570 --> 00:00:18,360 E como você sabe, nós temos bastante horário normal de expediente em alguns 8 00:00:18,360 --> 00:00:21,090 dos refeitórios, incluindo Annenberg. 9 00:00:21,090 --> 00:00:23,860 E alguns membros da equipe gentilmente tirou algumas fotos recentemente. 10 00:00:23,860 --> 00:00:26,230 E em honra de Dia das Bruxas, nós pensamos 11 00:00:26,230 --> 00:00:30,160 compartilhar uma vez que nos pegou de surpresa aqui no Salão Annenberg apenas 12 00:00:30,160 --> 00:00:31,490 a outra noite. 13 00:00:31,490 --> 00:00:36,300 Seu colega Jacob posou para essa foto, mas era mais divertido 14 00:00:36,300 --> 00:00:39,760 estava no Facebook, a que se seguiu conversa que aconteceu depois. 15 00:00:39,760 --> 00:00:43,020 >> Seu primeiro post em resposta a sua foto foi esta. 16 00:00:43,020 --> 00:00:46,740 Poucos minutos depois, ele decidiu para um up-se com isso. 17 00:00:46,740 --> 00:00:53,800 Ela passou então a ir a este, e, em seguida, ainda mais divertidamente 18 00:00:53,800 --> 00:00:55,320 é quando sua mãe entrou na conversa. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 E, em seguida, em última análise, parece que este foi apenas 21 00:01:01,800 --> 00:01:04,860 um artifício maravilhoso para um jogar o que está acontecendo. 22 00:01:04,860 --> 00:01:07,080 >> Então, se você gostaria para ver Jacob e outros, 23 00:01:07,080 --> 00:01:10,880 entre eles Cynthia Meng, que é nos bastidores da equipe zona CS50, 24 00:01:10,880 --> 00:01:13,970 ir para este URL e este jogo aqui. 25 00:01:13,970 --> 00:01:18,810 Assim, sem mais delongas, hoje nós continuar esta olhada programação web, 26 00:01:18,810 --> 00:01:21,810 e a criação real de programas que não funcionam em sua linha de comando, 27 00:01:21,810 --> 00:01:24,080 mas em vez executado dentro de um navegador. 28 00:01:24,080 --> 00:01:26,320 >> Presumivelmente, agora, ou muito Em breve, você vai 29 00:01:26,320 --> 00:01:30,200 estar no meio de implementação seu próprio servidor web, o que 30 00:01:30,200 --> 00:01:31,700 é diferente de programação web. 31 00:01:31,700 --> 00:01:36,210 O servidor web em pset6 tem tudo a ver software que sabe escrever como tomar 32 00:01:36,210 --> 00:01:39,300 Solicitações HTTP de um navegador, ou até mesmo de você, um ser humano, 33 00:01:39,300 --> 00:01:42,340 com um programa chamado Telnet, e em seguida, responder a esses pedidos ou 34 00:01:42,340 --> 00:01:48,600 por cuspir um arquivo HTML, ou um jpeg, gif ou um, ou até mesmo um arquivo .php. 35 00:01:48,600 --> 00:01:52,490 >> Mas com um servidor web, não é suposto basta abrir um arquivo PHP, 36 00:01:52,490 --> 00:01:55,260 algo que termina em .php, e então cuspir o conteúdo. 37 00:01:55,260 --> 00:01:58,440 É suposto fazer o que esse arquivo pela primeira vez? 38 00:01:58,440 --> 00:01:59,390 Por assim dizer. 39 00:01:59,390 --> 00:02:04,060 Não compilá-lo, dissemos na segunda-feira, mas rather-- Então, interpretá-la. 40 00:02:04,060 --> 00:02:08,070 >> PHP é uma linguagem interpretada, e assim por uma das características-chave em sua web 41 00:02:08,070 --> 00:02:11,550 servidor, embora implementado por nós, É essa capacidade de seu servidor web 42 00:02:11,550 --> 00:02:12,490 notar, oh. 43 00:02:12,490 --> 00:02:14,580 Este é um arquivo que termina em .php. 44 00:02:14,580 --> 00:02:17,970 Deixe-me não apenas enviá-lo para o usuário como se fosse conteúdo estático, 45 00:02:17,970 --> 00:02:20,970 mas deixe-me lê-lo linha por linha, da esquerda para a direita, e interpretá-lo. 46 00:02:20,970 --> 00:02:23,030 >> E para fazer, que você caras vão essencialmente 47 00:02:23,030 --> 00:02:26,520 chutar a um programa no aparelho, e em um monte de sistemas de computador, 48 00:02:26,520 --> 00:02:27,500 chamado apenas PHP. 49 00:02:27,500 --> 00:02:30,579 Esse é o nome de PHP o próprio intérprete de linguagem. 50 00:02:30,579 --> 00:02:33,120 Então, que peça vamos implementar para você, eo que resta para você, 51 00:02:33,120 --> 00:02:35,240 em última instância, é uma série de peças, entre as quais 52 00:02:35,240 --> 00:02:37,960 está implementando suporte para conteúdo estático. 53 00:02:37,960 --> 00:02:40,180 >> Mas agora, e com conjunto de problemas de sete, você é 54 00:02:40,180 --> 00:02:43,660 vai começar a transição para realmente escrever o código PHP 55 00:02:43,660 --> 00:02:45,970 que é interpretado em falar com um back-end 56 00:02:45,970 --> 00:02:47,960 banco de dados que armazena informações. 57 00:02:47,960 --> 00:02:51,020 Então, vamos entender melhor primeiro um par destes superglobals 58 00:02:51,020 --> 00:02:53,720 e quanto poder você sair da caixa de graça 59 00:02:53,720 --> 00:02:55,250 com uma linguagem como PHP. 60 00:02:55,250 --> 00:02:57,350 Coisas que você não tem implementar-se. 61 00:02:57,350 --> 00:03:01,700 >> Então, nós vimos na segunda-feira $ _GET, que é uma superglobal, 62 00:03:01,700 --> 00:03:05,496 que é apenas PHP falar de uma resposta global variável que você pode acessar em qualquer lugar. 63 00:03:05,496 --> 00:03:06,620 E o que está dentro de $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 O que está dentro deste Superglobal que vemos? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Certamente estatisticamente pelo menos uma pessoa sabe. 68 00:03:19,020 --> 00:03:21,590 O que está dentro de $ _GET? 69 00:03:21,590 --> 00:03:22,426 Sim? 70 00:03:22,426 --> 00:03:24,130 >> AUDIÊNCIA: É as variáveis você colocar na cadeia de consulta. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. MALAN: Perfeito. 72 00:03:24,530 --> 00:03:26,488 É as variáveis colocar na cadeia de consulta. 73 00:03:26,488 --> 00:03:29,910 Assim, em nosso exemplo mais antigo de reimplementar Google quando tivemos 74 00:03:29,910 --> 00:03:34,130 uma URL, e em seguida, ponto de interrogação, que demarca o início do HTTP 75 00:03:34,130 --> 00:03:37,950 parâmetros, então tivemos q igual alguma coisa, como q é igual a gatos, 76 00:03:37,950 --> 00:03:41,500 o que iria automaticamente dentro do que US $ _GET super-global para você, 77 00:03:41,500 --> 00:03:47,430 por causa do PHP, é uma chave de Q, e do seu valor de gatos. 78 00:03:47,430 --> 00:03:51,250 >> Em outras palavras, $ _GET e todos essas coisas são matrizes associativas, 79 00:03:51,250 --> 00:03:54,530 tabelas hash de tipos, que loja de chaves e valores. 80 00:03:54,530 --> 00:03:57,980 Agora, de volta a pset5, o hash tabela que você poderia ter implementado, 81 00:03:57,980 --> 00:04:00,220 ou o que você pode tentar Implementamos, realmente 82 00:04:00,220 --> 00:04:04,010 era efetivamente um associativa matriz, uma estrutura de dados 83 00:04:04,010 --> 00:04:07,220 através do qual você pode associar chaves com valores. 84 00:04:07,220 --> 00:04:09,690 >> Mas em pset5, os valores foram trivial. 85 00:04:09,690 --> 00:04:12,430 O valor foi essencialmente verdadeiro ou falso. 86 00:04:12,430 --> 00:04:13,900 É a palavra no dicionário? 87 00:04:13,900 --> 00:04:18,279 Então, quando você hash uma palavra como maçã para ver se a Apple está no dicionário, 88 00:04:18,279 --> 00:04:21,820 sua função de verificação presumivelmente retornado verdadeiro ou falso. 89 00:04:21,820 --> 00:04:24,120 Então, isso é efetivamente o valor que estamos recebendo de volta. 90 00:04:24,120 --> 00:04:26,456 >> Mas vimos na segunda-feira brevemente, certamente você pode 91 00:04:26,456 --> 00:04:28,830 associar mais interessante valores que apenas verdadeiro ou falso 92 00:04:28,830 --> 00:04:30,790 com chaves, como a maçã. 93 00:04:30,790 --> 00:04:33,909 Você realmente pode retornar um seqüência arbitrária, e, na verdade, 94 00:04:33,909 --> 00:04:36,200 isso é o que $ _GET e estes outras variáveis ​​permitem que você faça. 95 00:04:36,200 --> 00:04:40,595 >> Então $ _POST é semelhante em espírito, mas se você enviar um formulário via post, 96 00:04:40,595 --> 00:04:44,490 um método HTTP que é diferente usado para coisas como cartões de crédito, 97 00:04:44,490 --> 00:04:48,410 e informações privadas, e mesmo informação binária, como fotos, 98 00:04:48,410 --> 00:04:51,840 essas coisas acabam dentro de $ _POST. 99 00:04:51,840 --> 00:04:53,770 E, na verdade, para arquivos como jpegs e outros enfeites, 100 00:04:53,770 --> 00:04:58,290 há ainda um outro que não é aqui chamado $ _FILES também. 101 00:04:58,290 --> 00:05:01,280 >> Assim, o servidor que não vou me debruçar sobre demais muito, mas dá-lhe acesso 102 00:05:01,280 --> 00:05:04,860 classificar de detalhes de nível inferior sobre o próprio servidor que você está usando. 103 00:05:04,860 --> 00:05:07,430 Biscoito e sessão, porém, vamos efetivamente ver agora. 104 00:05:07,430 --> 00:05:10,940 O último é o que usamos para implementar a noção de um carrinho de compras. 105 00:05:10,940 --> 00:05:14,480 A um super simples, mas recordação que tivemos esse exemplo aqui, 106 00:05:14,480 --> 00:05:17,640 contando quantas vezes você tinha visitado esta página antes. 107 00:05:17,640 --> 00:05:20,850 >> Mas hoje, em vez de apenas olhar para o efeito deste, vamos abrir 108 00:05:20,850 --> 00:05:22,640 Inspector do Chrome, que você pode geralmente 109 00:05:22,640 --> 00:05:25,740 fazer clicando ou Controle direita clicando em qualquer lugar em uma página web, 110 00:05:25,740 --> 00:05:27,250 em seguida, escolha inspecionar elemento. 111 00:05:27,250 --> 00:05:31,600 Ou você pode ir através do menus que descrevemos em especificação de pset6. 112 00:05:31,600 --> 00:05:35,020 E eu estou indo para a guia Rede aqui, e vamos observar por um momento 113 00:05:35,020 --> 00:05:37,590 o tráfego HTTP que é indo e voltando. 114 00:05:37,590 --> 00:05:40,929 >> Deixe-me primeiro ir em frente e limpar o cache do Chrome. 115 00:05:40,929 --> 00:05:43,470 Então, alguns de vocês podem estar familiarizados com esta técnica já, 116 00:05:43,470 --> 00:05:45,790 e nós estamos indo para usá-lo por aqui fins de depuração. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Agora, como computador os cientistas vão começar 119 00:05:50,890 --> 00:05:53,920 fazendo isso para depuração efeitos, pelo que 120 00:05:53,920 --> 00:05:55,910 vamos limpar o cache, tipicamente, de modo que nós 121 00:05:55,910 --> 00:05:57,670 pode se livrar de coisas chamadas cookies. 122 00:05:57,670 --> 00:06:01,700 Então, provavelmente você está familiarizada com o que são cookies, ou pelo menos 123 00:06:01,700 --> 00:06:04,370 que eles existem, mas o que é seu entendimento deles, 124 00:06:04,370 --> 00:06:06,920 como apenas um utilizador de computadores, o que é um cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Sim. 127 00:06:09,990 --> 00:06:14,391 >> AUDIÊNCIA: É um pouco de-- bem, não bit em um termo de ciência da computação. 128 00:06:14,391 --> 00:06:18,303 É uma peça de dados que um site envia para você, a fim 129 00:06:18,303 --> 00:06:20,209 para ser capaz de registrar estatísticas sobre você. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, bom. 131 00:06:21,250 --> 00:06:24,980 Portanto, é um pedaço de dados que um servidor, coloca em seu computador, 132 00:06:24,980 --> 00:06:28,840 e vamos generalizar ainda mais, é uma chave value-- bem, 133 00:06:28,840 --> 00:06:30,064 que está ficando mais preciso. 134 00:06:30,064 --> 00:06:31,980 É uma peça de informações, um pedaço de dados, 135 00:06:31,980 --> 00:06:34,430 que um servidor é capaz para colocar no seu computador 136 00:06:34,430 --> 00:06:38,592 e, muitas vezes, o servidor faz este, de modo a lembrar quem você é. 137 00:06:38,592 --> 00:06:40,300 Assim, por exemplo, as probabilidades são provavelmente você está 138 00:06:40,300 --> 00:06:42,982 registradas em sites como o Facebook, ou Gmail, ou outros antes, 139 00:06:42,982 --> 00:06:44,940 e você ingresse em sua nome de usuário e senha, 140 00:06:44,940 --> 00:06:49,000 e em seguida, depois disso, para algum número de minutos ou horas ou até mesmo dias, 141 00:06:49,000 --> 00:06:52,970 o servidor que memoriza você é, de fato, logado. 142 00:06:52,970 --> 00:06:54,600 Agora, como é que realmente está acontecendo? 143 00:06:54,600 --> 00:06:58,630 Porque você certamente não está redigitação seu nome de usuário e senha toda vez 144 00:06:58,630 --> 00:07:00,760 você navegar para um página diferente no Facebook. 145 00:07:00,760 --> 00:07:02,570 Então não é que o biscoitos são a resposta. 146 00:07:02,570 --> 00:07:05,360 >> Um cookie que você pode pensar que, tipo de gosto, uma mão digitais 147 00:07:05,360 --> 00:07:09,200 selo que você pode obter em um parque de diversões parque ou um clube que, essencialmente, 148 00:07:09,200 --> 00:07:11,740 indica que você tem estado aqui antes, e você já 149 00:07:11,740 --> 00:07:16,070 mostrado o seu ID para o segurança, por exemplo, e que o clube ou para o parque 150 00:07:16,070 --> 00:07:19,050 deve agora assumir que você já autenticado. 151 00:07:19,050 --> 00:07:21,270 Você já foram identificadas por ele. 152 00:07:21,270 --> 00:07:24,740 >> Então, com isso em mente, vamos abrir contador aqui. 153 00:07:24,740 --> 00:07:27,220 Deixe-me ir em frente, eu apenas fiz, e limpar todos os meus cookies. 154 00:07:27,220 --> 00:07:29,970 E agora o que eu vou fazer é segure a tecla Shift, apenas para uma boa medida, 155 00:07:29,970 --> 00:07:31,740 e forçosamente recarregar a página. 156 00:07:31,740 --> 00:07:34,170 Mudança apenas certifique-se que nada é armazenado em cache. 157 00:07:34,170 --> 00:07:36,850 E aqui está o pedido que ia e voltava. 158 00:07:36,850 --> 00:07:41,560 Então, aqui temos um pedido, e deixar me aproximar aqui em baixo, e um monte de presente 159 00:07:41,560 --> 00:07:44,710 é tipo de detalhes desinteressantes para agora que o browser automaticamente 160 00:07:44,710 --> 00:07:47,800 enviado, mas vamos clique em Exibir Fonte para ver os cabeçalhos matérias. 161 00:07:47,800 --> 00:07:51,700 >> E se você já mergulhou pset6 já, você certamente vai reconhecer as coisas 162 00:07:51,700 --> 00:07:54,990 assim, e talvez alguns dessas outras linhas aqui, 163 00:07:54,990 --> 00:07:59,040 mas o que é mais interessante para hoje se eu rolar para baixo, não para o pedido 164 00:07:59,040 --> 00:08:02,870 mas para a resposta de chamada, essa linha provavelmente parece familiar. 165 00:08:02,870 --> 00:08:04,977 Isso é uma coisa boa quando você vê um 200 OK. 166 00:08:04,977 --> 00:08:07,060 Aparentemente, esta é a data e hora no servidor 167 00:08:07,060 --> 00:08:08,268 e há um monte de coisas. 168 00:08:08,268 --> 00:08:09,290 Oh, isso é interessante. 169 00:08:09,290 --> 00:08:13,430 >> Acontece que sempre que você usa PHP, pelo menos neste servidor, 170 00:08:13,430 --> 00:08:16,360 o servidor que cospe versão do PHP que você está usando. 171 00:08:16,360 --> 00:08:18,962 O que, na verdade, para a segurança propósitos, não é uma coisa boa. 172 00:08:18,962 --> 00:08:21,170 Mas, vamos voltar ao que em outro momento, talvez. 173 00:08:21,170 --> 00:08:25,740 Mas agora esta é a linha suculento hoje, e vimos brevemente alguns destes, 174 00:08:25,740 --> 00:08:29,240 Eu acho que com o Facebook quando cutucou em todo o Inspector na época, 175 00:08:29,240 --> 00:08:33,380 biscoito conjunto é o que está plantando aquele pequeno pedaço de informação 176 00:08:33,380 --> 00:08:34,890 para o seu computador. 177 00:08:34,890 --> 00:08:37,490 >> Este é um cabeçalho HTTP que é efetivamente 178 00:08:37,490 --> 00:08:39,970 informar o seu navegador, Chrome, IE, seja qual for, 179 00:08:39,970 --> 00:08:44,480 hey loja navegador em que o usuário do disco rígido ou na memória RAM do usuário, 180 00:08:44,480 --> 00:08:49,680 uma chave chamada PHPSESSID, que é um notação abreviada para o ID da sessão, 181 00:08:49,680 --> 00:08:53,670 e dar-lhe um valor de 0vlk8t, ponto, ponto, ponto. 182 00:08:53,670 --> 00:08:56,480 Um tempo muito longo pseudo seqüência alfanumérica aleatória. 183 00:08:56,480 --> 00:08:59,480 É apenas um número muito grande, mas ele é codificado com letras e números 184 00:08:59,480 --> 00:09:03,550 de modo a que o tamanho do que pode ser ainda maior do que os números por si só. 185 00:09:03,550 --> 00:09:06,947 E, em seguida, pelo caminho, caminho = /, que Significa apenas que esse cookie deve ser 186 00:09:06,947 --> 00:09:08,780 associada com o totalidade do site, 187 00:09:08,780 --> 00:09:11,150 não apenas um específico página da coisa toda. 188 00:09:11,150 --> 00:09:12,930 Portanto, este é esse selo mão virtual. 189 00:09:12,930 --> 00:09:16,330 É como se o servidor, Facebook, ou, no nosso caso o aparelho, 190 00:09:16,330 --> 00:09:21,140 tem 0vlk8t literalmente escrito e assim por diante, em sua mão. 191 00:09:21,140 --> 00:09:24,360 Observe que o servidor de, não fazer é não é 192 00:09:24,360 --> 00:09:27,730 guardar o meu nome, certamente não guardar a minha senha. 193 00:09:27,730 --> 00:09:31,710 >> Em vez disso, parece haver armazenar a informação de pseudo aleatório 194 00:09:31,710 --> 00:09:35,010 de modo que ninguém pode adivinhar o meu selo de mão é. 195 00:09:35,010 --> 00:09:37,590 No lado do servidor, Enquanto isso, o servidor 196 00:09:37,590 --> 00:09:40,370 vai se lembrar, provavelmente em um banco de dados ou algo assim, 197 00:09:40,370 --> 00:09:46,490 que o utilizador, que no futuro apresenta um selo de mão de 0vlk8t, ponto, 198 00:09:46,490 --> 00:09:51,440 ponto, ponto, deve ser associado a este particular, carrinho de compras, por assim dizer. 199 00:09:51,440 --> 00:09:55,060 Em outras palavras, se eu agora vá volta aqui e recarregue esta página, 200 00:09:55,060 --> 00:09:58,020 como é que o servidor sabe que visitei uma vez? 201 00:09:58,020 --> 00:10:01,730 >> Ou se eu fizer isso de novo, como é que o servidor sei que tenho visitado duas vezes? 202 00:10:01,730 --> 00:10:04,680 Bem, se eu descer a este pedido mais recente, o que 203 00:10:04,680 --> 00:10:09,150 agora é o terceiro que eu enviei no total, observe o meu pedido agora. 204 00:10:09,150 --> 00:10:11,300 Há ainda esta é solicitar até aqui, mesmo 205 00:10:11,300 --> 00:10:15,040 como antes, ainda há um grupo inteiro de coisas que nós ignoramos, como antes, 206 00:10:15,040 --> 00:10:19,350 mas o último cabeçalho, este tempo, porque eu já estive aqui antes, 207 00:10:19,350 --> 00:10:21,980 é uma apresentação de este selo mão virtual. 208 00:10:21,980 --> 00:10:28,957 >> Biscoito em que essa linha aqui, não definida mas bolinho cólon PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 isso é automático de apenas meu navegador apresentação deste selo mão para que 210 00:10:32,040 --> 00:10:37,910 Agora o servidor, logo que se percebe, ooh, este é usuário 0vlk8t ponto, ponto, ponto, 211 00:10:37,910 --> 00:10:42,010 Agora me lembro que ele ou ela é e associar novamente com que o usuário seja qual for 212 00:10:42,010 --> 00:10:46,450 informações que eu quero, e todos essa informação pode ser armazenada por você, 213 00:10:46,450 --> 00:10:50,130 o programador, em $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Então, para ser claro, se eu abrir bem rápido no gedit o arquivo real, counter.php, 215 00:10:57,170 --> 00:11:02,340 no meu diretório público host local como antes, perceber que, de fato, 216 00:11:02,340 --> 00:11:06,860 Eu estou em última análise, o armazenamento em $ _SESSION Entre aspas "contra", 217 00:11:06,860 --> 00:11:10,110 o valor do contador anterior quais Recebo destas linhas até aqui que nós 218 00:11:10,110 --> 00:11:13,010 olhou para última hora mais um. 219 00:11:13,010 --> 00:11:14,980 Então, debaixo do capô, isso é todos os cookies são. 220 00:11:14,980 --> 00:11:17,563 É exatamente o tipo de digitais selo mão indo e voltando, 221 00:11:17,563 --> 00:11:20,450 e, francamente, se você abrir o Chrome do Inspector em qualquer site 222 00:11:20,450 --> 00:11:22,580 você visita hoje, com Super alta probabilidade, 223 00:11:22,580 --> 00:11:25,450 você vai ver, talvez um, talvez meia dúzia de biscoitos 224 00:11:25,450 --> 00:11:26,650 ser lembrado por você. 225 00:11:26,650 --> 00:11:29,500 >> E pior ainda, se os site que você está visitando 226 00:11:29,500 --> 00:11:32,640 todos os anúncios, que têm é certamente muito comum hoje em dia, 227 00:11:32,640 --> 00:11:36,100 e se esses anúncios estão chegando de algum partido central, alguém 228 00:11:36,100 --> 00:11:39,000 como Google ou AdWords como eles ligue para um de seus produtos 229 00:11:39,000 --> 00:11:42,880 ou outros fornecedores tais que vender anúncios, o que é interessante, 230 00:11:42,880 --> 00:11:46,510 e, francamente, o que é um pouco preocupante, sobre como funciona HTTP, 231 00:11:46,510 --> 00:11:50,855 é que se você tiver um anúncio embutido no Facebook.com e Google.com, 232 00:11:50,855 --> 00:11:54,240 e Harvard.edu, qualquer número de sites, por isso é tão 233 00:11:54,240 --> 00:11:58,130 que há um homem de meia que está servindo acima anúncios para todos os três desses sites, 234 00:11:58,130 --> 00:12:02,110 verifica-se que o os cookies são por domínio. 235 00:12:02,110 --> 00:12:05,910 >> Então se você tem um anúncio que vem do mesma empresa em diferentes sites, 236 00:12:05,910 --> 00:12:11,140 que empresa pode efetivamente controlar quem você está em todos os sites. 237 00:12:11,140 --> 00:12:13,140 Harvard pode não saber você está visitando o Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook pode não saber e você está visitando Harvard. 239 00:12:15,306 --> 00:12:18,160 Mas qualquer que seja serviço de anúncios eles estão usando, se esse domínio é 240 00:12:18,160 --> 00:12:21,710 presente em ambos Harvard.edu web páginas e páginas da web Facebook.com, 241 00:12:21,710 --> 00:12:26,850 este homem médio certamente sabe quem você é porque destes cookies sendo compartilhado 242 00:12:26,850 --> 00:12:30,910 do outro lado, ou em vez de, que o chamado intermediário. 243 00:12:30,910 --> 00:12:33,820 >> Então, vamos voltar a este em implicações de segurança dos mesmos, 244 00:12:33,820 --> 00:12:37,170 mas há uma grande quantidade de informações sendo armazenados sobre você a qualquer momento você 245 00:12:37,170 --> 00:12:40,120 visitar mais qualquer página web em a internet e realmente 246 00:12:40,120 --> 00:12:42,877 reduz a este mecanismo muito simples. 247 00:12:42,877 --> 00:12:44,710 O que acontece, então, se você é super paranóica 248 00:12:44,710 --> 00:12:48,190 e você decide ir em Chrome ou IE ou o que quer e desligar os seus cookies? 249 00:12:48,190 --> 00:12:49,365 O que acontece? 250 00:12:49,365 --> 00:12:50,790 Sim? 251 00:12:50,790 --> 00:12:53,170 Você realmente-- você já fez isso certo? 252 00:12:53,170 --> 00:12:54,350 Está bem. 253 00:12:54,350 --> 00:12:55,994 Não, vá em frente. 254 00:12:55,994 --> 00:12:59,645 >> AUDIÊNCIA: Alguns sites não têm uma função sem ele gosta Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. MALAN: Yeah! 256 00:13:00,520 --> 00:13:02,311 Assim, determinados sites só vai parar de trabalhar. 257 00:13:02,311 --> 00:13:05,520 E na maioria dos sites hoje em dia que, fundamentalmente, confiar em cookies, 258 00:13:05,520 --> 00:13:08,360 especialmente se eles têm que iniciar sessão em, eles estão indo só para quebrar. 259 00:13:08,360 --> 00:13:10,360 Porque a considerar alternativa, se o Web site 260 00:13:10,360 --> 00:13:14,480 não tem forma de lembrar quem você é, e, portanto, seu navegador não é 261 00:13:14,480 --> 00:13:16,949 representando cada com HTTP pedido deste selo lado, 262 00:13:16,949 --> 00:13:18,740 eficazmente um site como ir do Facebook 263 00:13:18,740 --> 00:13:22,050 ter que pedir-lhe para Conecte-se cada vez danado 264 00:13:22,050 --> 00:13:26,200 você mudar de página ou clicar em um link, o que certamente não é particularmente um bom usuário 265 00:13:26,200 --> 00:13:26,920 experiência. 266 00:13:26,920 --> 00:13:30,020 >> De modo que não é, também, entre os trade-offs. 267 00:13:30,020 --> 00:13:34,140 Assim, sem mais delongas, vamos dar por certo que com programação web, 268 00:13:34,140 --> 00:13:37,630 em linguagens como PHP, você pode se lembrar informação como essa no conjunto de problemas 269 00:13:37,630 --> 00:13:41,550 sete quando você implementar seu próprio Site E * Trade, como com o que comprar 270 00:13:41,550 --> 00:13:45,710 e vender ações, você vai se lembrar exatamente o que o usuário tenha comprado e vendido 271 00:13:45,710 --> 00:13:49,110 e que ele ou ela é por meio desta sessão. 272 00:13:49,110 --> 00:13:51,110 Mas nós vamos precisar uma forma mais extravagante do que e-mail 273 00:13:51,110 --> 00:13:52,640 para começar a manter as informações em torno. 274 00:13:52,640 --> 00:13:53,140 Certo? 275 00:13:53,140 --> 00:13:56,780 >> Na segunda-feira, nós conversamos sobre Frosh IMs e como na versão de que um site, 276 00:13:56,780 --> 00:14:00,250 anos atrás, tudo que fizemos foi enviar e-mail a Proctor quem é 277 00:14:00,250 --> 00:14:04,250 encarregado dos esportes internos programa, o nome eo sexo, 278 00:14:04,250 --> 00:14:07,330 e se eles são ou não um capitão, eo dormitório de alguém que é 279 00:14:07,330 --> 00:14:10,136 registrar para um esporte intramural. 280 00:14:10,136 --> 00:14:13,010 Portanto, não é ruim, mas ele ou ela, em seguida, tive que vasculhar através de seu e-mail, 281 00:14:13,010 --> 00:14:16,010 fazer uma planilha ou algo parecido que, para manter tudo organizado. 282 00:14:16,010 --> 00:14:19,750 Então certamente nós como programadores pode fazer isso para que Proctor. 283 00:14:19,750 --> 00:14:22,970 E assim entra em SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 que vai ficar bonita diferente para ambos C e PHP, 285 00:14:26,050 --> 00:14:30,990 e você vai mergulhar muito mais mãos em PHP e conjunto de problemas, mas também sete SQL, 286 00:14:30,990 --> 00:14:35,310 ou SQL, é uma linguagem que que você usa para conversar com um banco de dados. 287 00:14:35,310 --> 00:14:36,480 >> Mas o que é um banco de dados? 288 00:14:36,480 --> 00:14:38,440 Bem você acha de um banco de dados, pelo menos por agora, 289 00:14:38,440 --> 00:14:41,750 como sendo apenas como um arquivo do Excel, ou se você é um arquivo de números de usuário de um Mac, 290 00:14:41,750 --> 00:14:44,400 ou se você é um Google Apps usuário uma planilha do Google, 291 00:14:44,400 --> 00:14:49,120 é efetivamente um banco de dados, ou realmente especificamente um banco de dados relacional. 292 00:14:49,120 --> 00:14:53,070 Um banco de dados relacional é apenas algo que tem linhas e colunas, 293 00:14:53,070 --> 00:14:56,440 e você pode armazenar qualquer tipo de informações nestas linhas ou colunas. 294 00:14:56,440 --> 00:15:00,480 >> Mas o que é agradável sobre SQL, e sobre bancos de dados reais, e não apenas 295 00:15:00,480 --> 00:15:04,910 planilhas ou planilhas do Google, é que você pode usar uma linguagem 296 00:15:04,910 --> 00:15:09,000 para realmente executar consultas para inserir dados, para remover os dados, 297 00:15:09,000 --> 00:15:11,620 de olhar para os dados, mesmo o mais importante, e você 298 00:15:11,620 --> 00:15:16,110 não tem que usá-lo bastante manualmente como você pode tipicamente um Google 299 00:15:16,110 --> 00:15:17,690 planilha como este. 300 00:15:17,690 --> 00:15:22,217 >> Assim, em SQL, há um monte de declarações fundamentais ou peças 301 00:15:22,217 --> 00:15:23,300 de funcionalidade embutida. 302 00:15:23,300 --> 00:15:26,450 Há muitos mais do que estes, mas você pode ir uma enorme distância 303 00:15:26,450 --> 00:15:28,620 apenas por saber que esta linguagem chamada 304 00:15:28,620 --> 00:15:30,840 SQL tem pelo menos quatro declarações que você pode aproveitar. 305 00:15:30,840 --> 00:15:34,420 >> Excluir, para a remoção de dados, Inserir, para adicionar linhas, 306 00:15:34,420 --> 00:15:37,340 Update, para mudar linhas e Seleção, 307 00:15:37,340 --> 00:15:39,860 para voltar linhas e que é de fato o que o SQL faz. 308 00:15:39,860 --> 00:15:43,810 Ele opera inteiramente em linhas para que quando você inserir ou remover, 309 00:15:43,810 --> 00:15:47,470 ou atualização, ou selecionar o que você está ficando para trás como um chamado conjunto de resultados, 310 00:15:47,470 --> 00:15:49,690 como uma matriz de linhas. 311 00:15:49,690 --> 00:15:51,700 Um grupo de linhas de uma tabela. 312 00:15:51,700 --> 00:15:54,050 >> Então, de volta ao dia, e até hoje, 313 00:15:54,050 --> 00:15:56,560 Você pode interagir com o banco de dados usando uma linha de comando, 314 00:15:56,560 --> 00:15:59,691 mas não é particularmente divertido de usar Nesta janela estilo preto e branco 315 00:15:59,691 --> 00:16:02,190 e realmente executar comandos e picar em torno de seu banco de dados. 316 00:16:02,190 --> 00:16:06,054 A interface gráfica do usuário, ou GUI, é muito mais preferível, sem dúvida, 317 00:16:06,054 --> 00:16:08,970 e por isso a ferramenta recomendamos e pré-instalado para você no aparelho 318 00:16:08,970 --> 00:16:10,580 é chamado phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 É uma coincidência total que o nome dessa coisa tem PHP nele, 320 00:16:14,060 --> 00:16:17,430 isso significa apenas que as pessoas que escreveu este programa-se 321 00:16:17,430 --> 00:16:18,670 escreveu ele em PHP. 322 00:16:18,670 --> 00:16:23,740 >> Mas é em última análise, sobre a administração um servidor de banco de dados, como um servidor MySQL 323 00:16:23,740 --> 00:16:26,589 que você pode ter, como você fazer, no aparelho CS50. 324 00:16:26,589 --> 00:16:29,130 Portanto, não há mais detalhes aqui do que nós precisamos nos preocupar com hoje, 325 00:16:29,130 --> 00:16:33,280 mas o que é fundamental é que na esquerda lado está uma lista das bases de dados 326 00:16:33,280 --> 00:16:36,040 que você tem no seu computador, em seu aparelho CS50, 327 00:16:36,040 --> 00:16:40,090 ou vir projetos finais que você pode ter em relação a terceiros, uma empresa de 328 00:16:40,090 --> 00:16:43,415 site ou servidor web, que você pode estar pagando por espaço. 329 00:16:43,415 --> 00:16:45,290 Então, à esquerda é o bases de dados, um dos quais 330 00:16:45,290 --> 00:16:48,750 é pset7 que eu pedi emprestado a partir do próximo pset semanas, e em seguida, no topo 331 00:16:48,750 --> 00:16:51,570 não perceber que há uma monte de abas, uma das quais 332 00:16:51,570 --> 00:16:55,150 é bases de dados, SQL, status, usuários, exportação e assim por diante. 333 00:16:55,150 --> 00:16:56,900 Então você pode ir um longo caminho apenas por perceber 334 00:16:56,900 --> 00:16:59,770 que a maior parte do interface de utilizador está no topo da coluna esquerda 335 00:16:59,770 --> 00:17:02,650 e na parte superior direita lá em cima. 336 00:17:02,650 --> 00:17:04,980 Então o que podemos realmente fazer com isso? 337 00:17:04,980 --> 00:17:08,609 Bem, vamos começar a criar uma bit de informação como se segue. 338 00:17:08,609 --> 00:17:11,760 >> Suponha que o seguinte é o caso, como será em poucos dias, 339 00:17:11,760 --> 00:17:14,440 você deseja implementar um site, chamado CS50 Finanças, 340 00:17:14,440 --> 00:17:17,328 e este site permite que você compre entre aspas e vender ações. 341 00:17:17,328 --> 00:17:19,619 E vai descobrir o preço dessas ações, 342 00:17:19,619 --> 00:17:22,380 em última análise, como você vai ver, conversando com o Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 O que, maravilhosamente, tem um serviço gratuito através do qual você pode passar em um ticker estoque 344 00:17:26,250 --> 00:17:29,830 como GOOG para o Google, e ele vai lhe dar de volta o estoque atual do Google 345 00:17:29,830 --> 00:17:32,250 preços no passado pelo menos alguns minutos. 346 00:17:32,250 --> 00:17:35,080 >> Então você vai usar isso, em última instância, fingir para o usuário 347 00:17:35,080 --> 00:17:37,750 para comprar e vender real ações usando dinheiro virtual, 348 00:17:37,750 --> 00:17:39,750 mas a primeira coisa o usuário vai ver 349 00:17:39,750 --> 00:17:43,850 é esta tela de login que eles pede para o seu nome de usuário e senha. 350 00:17:43,850 --> 00:17:46,540 E, assim, um dos primeiros desafios para você em pset7 351 00:17:46,540 --> 00:17:50,460 vai ser para implementar o back-end banco de dados, a planilha se você, 352 00:17:50,460 --> 00:17:53,369 que vai armazenar nomes de usuários e senhas 353 00:17:53,369 --> 00:17:56,660 e, finalmente, quais ações eles próprios, e quantos e quanto dinheiro eles têm, 354 00:17:56,660 --> 00:18:00,110 por isso um monte de outras coisas em outras tabelas ou planilhas. 355 00:18:00,110 --> 00:18:05,020 >> Então, vamos dar uma olhada em como esta poderia parecer à primeira vista. 356 00:18:05,020 --> 00:18:06,980 Eu vou voltar para o aparelho e eu sou 357 00:18:06,980 --> 00:18:14,102 indo para ir para este URL aqui phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 e você verá que ele me leva a uma interface 359 00:18:16,060 --> 00:18:18,520 exatamente como vimos no captura de tela, e aqui eu 360 00:18:18,520 --> 00:18:21,560 tem um banco de dados adicional chamado palestra para hoje 361 00:18:21,560 --> 00:18:24,280 e deixe-me ir em frente primeiro e clique em pset7. 362 00:18:24,280 --> 00:18:27,940 >> Parece que tenho um par de opções, um para os novos, para a criação de uma nova tabela, 363 00:18:27,940 --> 00:18:30,770 e um link para os usuários, que é uma tabela que já criada. 364 00:18:30,770 --> 00:18:31,790 Então o que é uma tabela? 365 00:18:31,790 --> 00:18:33,740 Então, se você usou o Excel antes, e se você tiver 366 00:18:33,740 --> 00:18:37,110 números usados ​​ou Google Planilhas, você abre uma janela 367 00:18:37,110 --> 00:18:39,350 e você terá um grupo inteiro de linhas e colunas, 368 00:18:39,350 --> 00:18:43,120 mas então você geralmente tem planilhas ao longo do fundo, ou abas separadas. 369 00:18:43,120 --> 00:18:46,140 Você pode pensar de cada planilha como uma tabela 370 00:18:46,140 --> 00:18:51,150 banco de dados, de modo que, em última análise, é uma combinação de uma ou mais tabelas, uma 371 00:18:51,150 --> 00:18:54,064 ou mais planilhas, na mundo de uma planilha normal. 372 00:18:54,064 --> 00:18:55,980 Então deixe-me ir em frente e clique sobre essa planilha 373 00:18:55,980 --> 00:18:59,420 que eu premade, chamados de usuários, a.k.a. 374 00:18:59,420 --> 00:19:00,700 Tabela de banco de dados. 375 00:19:00,700 --> 00:19:04,130 E se eu rolar para baixo aqui, deixe-me afastar um pouco, 376 00:19:04,130 --> 00:19:08,479 isso é o que está dizendo phpMyAdmin nós é dentro deste quadro agora. 377 00:19:08,479 --> 00:19:11,020 É um pouco confuso no início relance, porque a interface do usuário não é 378 00:19:11,020 --> 00:19:15,140 a coisa mais bonita do mundo, mas o que é interessante é esta parte aqui. 379 00:19:15,140 --> 00:19:17,970 ID, nome de usuário e hash. 380 00:19:17,970 --> 00:19:20,510 >> Com antecedência, e você vai ser entregue este problema em definir sete, 381 00:19:20,510 --> 00:19:25,050 nós damos-lhe um arquivo contendo um super tabela de banco pequeno, emprestado realmente 382 00:19:25,050 --> 00:19:27,070 a partir da edição de hackers do conjunto de problemas dois, 383 00:19:27,070 --> 00:19:29,480 no interior dos quais existem seis linhas. 384 00:19:29,480 --> 00:19:32,720 Um para toda a Belinda caminho para um para Zamyla, 385 00:19:32,720 --> 00:19:35,980 e observe à esquerda daqueles usernames são IDs únicas, como um, 386 00:19:35,980 --> 00:19:39,410 dois, três, quatro, cinco, seis, números inteiros, e depois para a direita são hashes. 387 00:19:39,410 --> 00:19:42,780 >> E se, as probabilidades são, você não fez o problema edição hacker de definir dois, 388 00:19:42,780 --> 00:19:46,560 mas um hash é como um criptografado senha com algumas ressalvas. 389 00:19:46,560 --> 00:19:49,470 E assim, o que você vê aqui são as versões criptografadas de todos os seis 390 00:19:49,470 --> 00:19:52,950 de nossas senhas de problema definir edição dois do hacker. 391 00:19:52,950 --> 00:19:56,500 Agora à esquerda é apenas algumas coisas GUI, editando essa linha, copiando esta linha, 392 00:19:56,500 --> 00:19:57,630 apagar esta linha. 393 00:19:57,630 --> 00:19:59,840 >> Mas o que é interessante agora é o seguinte. 394 00:19:59,840 --> 00:20:03,810 Eu posso realmente começar experimentando com esta tabela. 395 00:20:03,810 --> 00:20:07,330 Então, se eu for e clique no SQL guia, eu recebo esta caixa de texto grande. 396 00:20:07,330 --> 00:20:10,190 E não é assim que vamos fazê-lo quando, na verdade, escrever código. 397 00:20:10,190 --> 00:20:12,700 Para ser claro, phpMyAdmin é apenas uma ferramenta que é 398 00:20:12,700 --> 00:20:16,450 vai nos deixar bisbilhotar o banco de dados e deixe-nos experimentar com consultas. 399 00:20:16,450 --> 00:20:19,430 >> Assim, por exemplo, suponha Eu executar exatamente isso. 400 00:20:19,430 --> 00:20:22,820 Select, que é um dos palavras-chave que mencionei anteriormente, estrela, 401 00:20:22,820 --> 00:20:25,900 que representa todos as colunas de uma tabela. 402 00:20:25,900 --> 00:20:26,820 Pelo que a tabela? 403 00:20:26,820 --> 00:20:27,990 Bem, os usuários. 404 00:20:27,990 --> 00:20:29,950 E notem que há esta convenção estranho em SQL 405 00:20:29,950 --> 00:20:32,140 onde você realmente usar volta carrapatos, normalmente, 406 00:20:32,140 --> 00:20:35,940 citações não individuais e citações não duplas quando se fala de nomes de tabelas, 407 00:20:35,940 --> 00:20:38,990 assim a citação de volta é a coisa sobre a superior esquerdo do seu teclado mais 408 00:20:38,990 --> 00:20:39,720 provável. 409 00:20:39,720 --> 00:20:41,850 >> Então deixe-me ir em frente agora e apenas deixar isso quieto 410 00:20:41,850 --> 00:20:46,020 e role a página e clique em Ir, e estamos realmente vai ver a mesma coisa. 411 00:20:46,020 --> 00:20:52,410 Acabamos executada uma consulta SQL dizendo selecione tudo estrela 412 00:20:52,410 --> 00:20:55,610 da tabela chamada usuários e o que você recebe de volta é esta. 413 00:20:55,610 --> 00:20:58,400 Em última análise, nós vamos ser capazes de fazer a mesma coisa em código, 414 00:20:58,400 --> 00:21:02,109 mas por agora tudo o que eu queria que foi vê-lo no meu navegador. 415 00:21:02,109 --> 00:21:03,900 Bem, vamos fazer alguma coisa um pouco diferente. 416 00:21:03,900 --> 00:21:08,330 Deixe-me voltar para a aba SQL, e vamos apenas dizer que o que? 417 00:21:08,330 --> 00:21:11,520 Zamyla perdeu toda a sua dinheiro, e, portanto, é 418 00:21:11,520 --> 00:21:13,190 hora de excluir seu como um usuário. 419 00:21:13,190 --> 00:21:14,630 Ela não está mais login. 420 00:21:14,630 --> 00:21:18,870 >> Então eu vou dizer excluir de-- bem, manter a capitalização 421 00:21:18,870 --> 00:21:23,080 para a consistência, eliminar dos usuários onde. 422 00:21:23,080 --> 00:21:25,430 E assim, podemos ter estes predicados, ou estes 423 00:21:25,430 --> 00:21:31,180 qualificadores, no final da minha declaração onde e como eu poderia apagar Zamyla? 424 00:21:31,180 --> 00:21:34,190 Pelo seu nome Zamyla, de modo que o coluna, uma das colunas 425 00:21:34,190 --> 00:21:37,950 foi nomeado, então onde name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 E aqui eu uso duplo aspas ou aspas simples, 427 00:21:40,000 --> 00:21:42,958 você só pode usar a parte de trás quando carrapatos falando sobre os nomes, por exemplo, 428 00:21:42,958 --> 00:21:45,130 de tabelas ou campos. 429 00:21:45,130 --> 00:21:47,440 E deixe-me clique Aqui. 430 00:21:47,440 --> 00:21:50,400 E agora, a página da web é sendo um pouco tenso. 431 00:21:50,400 --> 00:21:53,620 >> Ou, você realmente deseja executar apagar dos usuários onde o nome é igual Zamyla? 432 00:21:53,620 --> 00:21:54,680 Sim. 433 00:21:54,680 --> 00:22:01,900 Então, agora, se voltar para a minha mesa clicando usuários, observe que Hm. 434 00:22:01,900 --> 00:22:02,530 Eu gozado. 435 00:22:02,530 --> 00:22:04,070 E, na verdade, eu meio que clicado longe tão rápido 436 00:22:04,070 --> 00:22:06,195 você nem sequer ver o mensagem de erro vermelho, talvez. 437 00:22:06,195 --> 00:22:07,649 O que eu fiz de errado? 438 00:22:07,649 --> 00:22:09,690 AUDIÊNCIA: Você não precisa para capitalizar seu nome. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Sim, eu capitalizados seu nome, 440 00:22:11,260 --> 00:22:13,770 mas sua username-- na verdade eu fez um par de erros, certo? 441 00:22:13,770 --> 00:22:16,720 Um deles, seu nome de usuário é zamyla, Z em minúsculas, 442 00:22:16,720 --> 00:22:20,140 eo nome da coluna é nome de usuário, não o nome, então vamos fazer isso de novo. 443 00:22:20,140 --> 00:22:25,750 Deixe-me ir em frente e excluir dos usuários ONDE 444 00:22:25,750 --> 00:22:28,990 nome de usuário é igual entre aspas "Zamyla". 445 00:22:28,990 --> 00:22:29,490 Tudo certo? 446 00:22:29,490 --> 00:22:32,600 Então, isso parece um pouco melhor, vamos me ir role a página e clique em Ir. 447 00:22:32,600 --> 00:22:34,730 Ele ainda vai grite comigo para ter certeza. 448 00:22:34,730 --> 00:22:37,500 Eu clique em Sim, e agora vemos, francamente que isso aconteceu, realmente 449 00:22:37,500 --> 00:22:39,870 rápido, menos de um segundo, certamente, este 450 00:22:39,870 --> 00:22:41,720 é exatamente a consulta que foi executada. 451 00:22:41,720 --> 00:22:45,617 Para confirmar, deixe-me clique usuários e na verdade agora Zamyla está desaparecido. 452 00:22:45,617 --> 00:22:46,700 Agora vamos fazer o contrário. 453 00:22:46,700 --> 00:22:49,320 Suponha-se que quer Gabe se inscrever para o site. 454 00:22:49,320 --> 00:22:52,825 O que é a consulta SQL, que é o comando que eu poderia digitar para adicionar Gabe? 455 00:22:52,825 --> 00:22:54,200 Bem, é bastante simples. 456 00:22:54,200 --> 00:22:58,260 Insira em usuários, e agora fica um pouco enigmática. 457 00:22:58,260 --> 00:23:03,190 Eu preciso especificar, para o servidor, quais campos eu quero atribuir. 458 00:23:03,190 --> 00:23:06,630 Eu realmente não me importo com o que de Gabe ID número é, então eu vou pular essa. 459 00:23:06,630 --> 00:23:11,360 Estou vez vai dizer username, hash e, em seguida, 460 00:23:11,360 --> 00:23:14,960 os valores que eu quero colocar lá vai ser Gabe. 461 00:23:14,960 --> 00:23:16,800 E então sua mistura, eu não sei. 462 00:23:16,800 --> 00:23:19,900 Então, por agora, eu vou deixar isso como um grande para fazer. 463 00:23:19,900 --> 00:23:21,650 Vamos voltar a em que o conjunto de problemas 464 00:23:21,650 --> 00:23:23,390 especificação de como você realmente fazer isso. 465 00:23:23,390 --> 00:23:24,630 >> Assim notar, novamente, a sintaxe. 466 00:23:24,630 --> 00:23:28,430 Insira no nome da tabela, em seguida, uma parêntesis lista dos campos, 467 00:23:28,430 --> 00:23:30,980 as colunas que você deseja adicionar valores e, em seguida apenas 468 00:23:30,980 --> 00:23:34,495 a mesma ordem exacta da esquerda para a direito dos valores que você deseja adicionar, 469 00:23:34,495 --> 00:23:36,870 e é só enrolando porque o texto é um pouco longo. 470 00:23:36,870 --> 00:23:38,520 Então, agora deixe-me clique em Ir. 471 00:23:38,520 --> 00:23:39,830 Uma linha inserida. 472 00:23:39,830 --> 00:23:43,020 E agora, se eu voltar para usuários, o que é interessante 473 00:23:43,020 --> 00:23:48,960 é que não só é Gabe agora na banco de dados, o que é, aparentemente, o seu ID? 474 00:23:48,960 --> 00:23:49,820 >> Bem, é sete. 475 00:23:49,820 --> 00:23:51,479 Por que é sete anos quando eu não adicioná-lo? 476 00:23:51,479 --> 00:23:54,020 Portanto, esta é, também, um dos características que você começa do banco de dados. 477 00:23:54,020 --> 00:23:55,750 Muita construído em funcionalidade. 478 00:23:55,750 --> 00:23:57,950 Acontece que quando criado essa tabela, 479 00:23:57,950 --> 00:24:01,390 I pré-configurado é automaticamente atribua uma ID de tal maneira 480 00:24:01,390 --> 00:24:02,480 que incrementa. 481 00:24:02,480 --> 00:24:05,470 Então, se você já se remexia, e olhou para o seu Facebook ID 482 00:24:05,470 --> 00:24:09,292 número é, nos dias de hoje não é realmente uma coisa a fazer, mas o Facebook como uma API, 483 00:24:09,292 --> 00:24:11,750 Application Interface de Programação, através do qual você pode obter de volta 484 00:24:11,750 --> 00:24:14,430 todo um conjunto de dados sobre si mesmo, sobre seus amigos, 485 00:24:14,430 --> 00:24:15,347 e suas conexões. 486 00:24:15,347 --> 00:24:17,430 E o que costumava ser tipo de legal, de volta ao dia, 487 00:24:17,430 --> 00:24:19,510 estava a olhar para cima que o seu Facebook número de identificação era. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg de, por exemplo, é três 489 00:24:22,390 --> 00:24:23,890 desde que ele era o autor do site. 490 00:24:23,890 --> 00:24:27,610 E como a história vai, ele criou duas contas de teste, os usuários um e dois, 491 00:24:27,610 --> 00:24:28,690 que ele então excluídos. 492 00:24:28,690 --> 00:24:32,780 E assim, Zuck, como é o seu nome de usuário no Facebook, é o número de ID três, 493 00:24:32,780 --> 00:24:36,110 e todos nós temos um número muito maior do que três destes dias. 494 00:24:36,110 --> 00:24:37,980 Na verdade, em algum momento Facebook se afastou 495 00:24:37,980 --> 00:24:42,410 do mesmo usando um int, que é um valor de 32 bits, usando a 496 00:24:42,410 --> 00:24:44,480 o próximo passo, essencialmente um longo tempo para que 497 00:24:44,480 --> 00:24:47,150 que poderiam acomodar até mesmo os usuários mais se registrar. 498 00:24:47,150 --> 00:24:49,420 Assim, um fato histórico pouco divertido. 499 00:24:49,420 --> 00:24:51,660 >> Então, isso é apenas o sintaxe básica com os quais 500 00:24:51,660 --> 00:24:54,470 poderíamos executar um par de consultas, mas podemos, na verdade, 501 00:24:54,470 --> 00:24:56,744 fazer um monte mais coisas com SQL. 502 00:24:56,744 --> 00:24:58,910 E você vai ver, em última instância, no problema de definir sete 503 00:24:58,910 --> 00:25:01,034 que você tem que fazer uma número de decisões de projeto, 504 00:25:01,034 --> 00:25:03,290 entre eles vai ser quais os tipos de dados para usar. 505 00:25:03,290 --> 00:25:08,240 Assim como em C, não há dados tipos em um banco de dados, como MySQL, 506 00:25:08,240 --> 00:25:12,640 e os tipos de dados que você tem que escolher de incluir esses campos aqui. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, Int, grande int, decimal e data e hora, e muitos outros. 508 00:25:17,287 --> 00:25:18,370 Então, vamos realmente fazer isso. 509 00:25:18,370 --> 00:25:21,060 Vamos fingir que nós não mão que você mesa do usuário 510 00:25:21,060 --> 00:25:25,080 e deixe-me ir em frente e criar, por eu, nas palestras database-- 511 00:25:25,080 --> 00:25:31,000 na verdade, deixe-me ir em frente e eliminar a mesa que eu tenho aqui já 512 00:25:31,000 --> 00:25:32,940 para que possamos realmente criar este. 513 00:25:32,940 --> 00:25:33,550 Whoops. 514 00:25:33,550 --> 00:25:35,970 Eu vou deixar cair este mesa, e agora estou 515 00:25:35,970 --> 00:25:38,337 indo para ir novamente para o palestra de banco de dados aqui, 516 00:25:38,337 --> 00:25:40,420 Vou criar uma tabela chamados de usuários e vamos 517 00:25:40,420 --> 00:25:43,010 apenas fazer três colunas inicialmente e clique em Ir. 518 00:25:43,010 --> 00:25:44,990 >> Agora, na sua maior parte, mais uma vez, este é apenas 519 00:25:44,990 --> 00:25:48,570 usando esta ferramenta gráfica chamada phpMyAdmin, eo que nós estamos fazendo agora 520 00:25:48,570 --> 00:25:49,600 é a criação de uma tabela. 521 00:25:49,600 --> 00:25:53,170 Então, isso é como Arquivo indo, Novo, e criar um novo arquivo de Excel. 522 00:25:53,170 --> 00:25:55,440 Então, ele está me pedindo um pouco questões, da esquerda para a direita, 523 00:25:55,440 --> 00:25:58,620 qual é o nome da primeira coluna, e, em seguida, o nome da segunda coluna, 524 00:25:58,620 --> 00:25:59,560 e o nome do terceiro. 525 00:25:59,560 --> 00:26:00,518 Então, vamos recriar isso. 526 00:26:00,518 --> 00:26:05,460 ID, nome de usuário e, em seguida, era um, e depois de hash era outra. 527 00:26:05,460 --> 00:26:08,970 Então, o que deve o tipo de dados ser-se agora para um campo como ID? 528 00:26:08,970 --> 00:26:14,470 >> Aqui está a lista completa de tipos de dados disponíveis para você em um banco de dados, 529 00:26:14,470 --> 00:26:16,070 e por enquanto vamos apenas ir com int. 530 00:26:16,070 --> 00:26:18,160 Valor de 32 bits, eu não pensar de forma realista eu sou 531 00:26:18,160 --> 00:26:21,484 vai ter mais do que 4 bilhões usuários na minha conta, no meu serviço, 532 00:26:21,484 --> 00:26:23,650 então eu vou manter em movimento para a próxima pergunta. 533 00:26:23,650 --> 00:26:25,490 Eu não vou especificar ou um comprimento de valores, 534 00:26:25,490 --> 00:26:28,540 não é aplicável aqui para um int, por si só. 535 00:26:28,540 --> 00:26:30,740 E agora eu posso especificar, aparentemente, um padrão 536 00:26:30,740 --> 00:26:33,970 valor, que eu não vou especificar. 537 00:26:33,970 --> 00:26:36,050 Um agrupamento, eu não sei o que é. 538 00:26:36,050 --> 00:26:37,290 Um atributo. 539 00:26:37,290 --> 00:26:39,455 Agora nós realmente fazer ter uma decisão de projeto. 540 00:26:39,455 --> 00:26:42,580 Portanto, há alguns campos aqui, nem todos de que é aplicável, mas não assinado 541 00:26:42,580 --> 00:26:43,380 apenas significa o quê? 542 00:26:43,380 --> 00:26:45,400 Que o int deve ser? 543 00:26:45,400 --> 00:26:46,210 Só não negativo. 544 00:26:46,210 --> 00:26:48,090 Então isso tem que ser 0 em cima. 545 00:26:48,090 --> 00:26:51,120 Não, eu não estou indo para verificar porque Quero que cada usuário tenha uma identificação, 546 00:26:51,120 --> 00:26:52,470 ele não pode ser nulo. 547 00:26:52,470 --> 00:26:55,949 E então, nós conseguimos um pouco mais decisões de design interessantes como este. 548 00:26:55,949 --> 00:26:58,990 Voltaremos a isso em um momento, mas o que outra característica do banco de dados 549 00:26:58,990 --> 00:27:04,200 é, é que você pode dizer o servidor de banco de dados, vá em frente 550 00:27:04,200 --> 00:27:07,100 e otimizar a si mesmo, sua RAM e espaço no disco rígido, 551 00:27:07,100 --> 00:27:11,770 de modo que seleciona e inserções, e exclusões e atualizações são muito rápidos. 552 00:27:11,770 --> 00:27:13,250 Compare isso com pset5. 553 00:27:13,250 --> 00:27:16,259 >> Se você quiser procurar algo em sua tabela de hash, que 554 00:27:16,259 --> 00:27:18,300 você pensa como um banco de dados, que tinha que fazer todo o 555 00:27:18,300 --> 00:27:21,500 trabalhar para fazer a sua tabela hash rápido. 556 00:27:21,500 --> 00:27:22,840 É como se, obviamente, você. 557 00:27:22,840 --> 00:27:23,060 Certo? 558 00:27:23,060 --> 00:27:26,080 Você tinha que colocar no tempo tudo bem ajustando as coisas, recebendo uma função hash 559 00:27:26,080 --> 00:27:27,820 direita, para descobrir como muitos baldes de ter. 560 00:27:27,820 --> 00:27:29,611 >> Mas o que é bom, mais uma vez, sobre um banco de dados é 561 00:27:29,611 --> 00:27:31,762 você só punt todos isso para outras pessoas 562 00:27:31,762 --> 00:27:33,720 que pensei que este através de você, e que 563 00:27:33,720 --> 00:27:37,170 Eu vou dizer aqui, sob índice é que meu campo ID 564 00:27:37,170 --> 00:27:41,149 vai ser a principal forma de identificação de usuários na base de dados. 565 00:27:41,149 --> 00:27:42,940 Eu não vou pensar de Zamyla como Zamyla, 566 00:27:42,940 --> 00:27:45,800 Vou pensar em ela como o número 6. 567 00:27:45,800 --> 00:27:49,814 >> Por que é, talvez, melhor intuitivamente pensar e modelo 568 00:27:49,814 --> 00:27:52,480 cada uma de suas linhas individuais usando um número em vez de algo 569 00:27:52,480 --> 00:27:56,480 como uma corda, como o Zamyla ou Gabe ou mais corda ainda? 570 00:27:56,480 --> 00:27:57,444 Sim? 571 00:27:57,444 --> 00:28:00,117 >> AUDIÊNCIA: Um ID é único? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: Diga de novo? 573 00:28:01,200 --> 00:28:02,283 AUDIÊNCIA: Um ID é único? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: Um ID é único, mas suppose-- 575 00:28:04,400 --> 00:28:06,320 conforme o caso, em geral, com nomes de usuários, suponha 576 00:28:06,320 --> 00:28:10,110 Eu também disse que só pode haver um Zamyla no mundo, e apenas um Gabe. 577 00:28:10,110 --> 00:28:13,730 Eu poderia impor a singularidade constrangimento em cordas, também, se eu quisesse. 578 00:28:13,730 --> 00:28:15,550 Então, não é um mau pensamento. 579 00:28:15,550 --> 00:28:16,500 >> AUDIÊNCIA: Mais seguro. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Mais seguro, por quê? 581 00:28:17,874 --> 00:28:20,705 AUDIÊNCIA: Você não pode dizer que é que, como no utilizador. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, você não pode dizer que o usuário 583 00:28:22,580 --> 00:28:24,380 é que por isso há uma privacidade aspecto a ele, 584 00:28:24,380 --> 00:28:27,810 especialmente se as identificações talvez aparecendo nas URLs. 585 00:28:27,810 --> 00:28:29,960 Então, com certeza, que poderia tipo de trabalho, também. 586 00:28:29,960 --> 00:28:30,640 Outros pensamentos? 587 00:28:30,640 --> 00:28:31,383 Sim? 588 00:28:31,383 --> 00:28:34,316 >> AUDIÊNCIA: É mais fácil executar operações em um int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. MALAN: Essa é a verdadeira kicker. 590 00:28:35,940 --> 00:28:38,850 É apenas mais eficiente, ou mais fácil para o computador, 591 00:28:38,850 --> 00:28:40,431 para executar operações sobre um número inteiro. 592 00:28:40,431 --> 00:28:40,930 Certo? 593 00:28:40,930 --> 00:28:43,905 Um int é garantido para ser de 32 bits, enquanto que Zamyla 594 00:28:43,905 --> 00:28:47,660 está a poucos caracteres, Gabriel é um pouco mais caracteres, 595 00:28:47,660 --> 00:28:51,930 Davenport é muito longa, e por isso é não é particularmente eficaz para usar 596 00:28:51,930 --> 00:28:55,860 cordas para comparar valores e procurar para os campos e campos de atualização, 597 00:28:55,860 --> 00:28:57,790 se você pode ir longe com apenas um número inteiro. 598 00:28:57,790 --> 00:28:59,090 Apenas 32 bits. 599 00:28:59,090 --> 00:29:02,570 Assim, nomes de usuário, também, desta forma, não tem que ser único, 600 00:29:02,570 --> 00:29:05,040 embora eles provavelmente deveria ser, e mesmo desta forma também 601 00:29:05,040 --> 00:29:07,520 um usuário poderia ser permitido alterar o seu nome de usuário. 602 00:29:07,520 --> 00:29:10,810 >> Então, vamos agora deixar este como o meios primários de identificar o utilizador. 603 00:29:10,810 --> 00:29:13,510 Isto é dizer o banco de dados vá em frente e otimizar-se 604 00:29:13,510 --> 00:29:17,065 de modo que os ups olhar em ID são super rápido. 605 00:29:17,065 --> 00:29:19,620 AI, horrivelmente nomeado, apenas significa auto incremento, 606 00:29:19,620 --> 00:29:21,500 e esta é a verificação caixa é preciso verificar 607 00:29:21,500 --> 00:29:24,614 para especificar que o campo ID para ser atualizado automaticamente para mim, 608 00:29:24,614 --> 00:29:26,530 e então eu vou rolar para a direita aqui 609 00:29:26,530 --> 00:29:29,279 e, sinceramente, eu não estou realmente interessado mais em qualquer um desses campos. 610 00:29:29,279 --> 00:29:30,630 Certamente não é de hoje. 611 00:29:30,630 --> 00:29:33,770 >> Então, eu vou voltar aqui, para a primeira coluna, onde 612 00:29:33,770 --> 00:29:35,830 Eu preciso especificar nome de usuário e haxixe, e vamos 613 00:29:35,830 --> 00:29:38,080 pelo menos no foco segundo para agora. 614 00:29:38,080 --> 00:29:41,498 Int provavelmente não é a escolha certa, Então, o que faz mais sentido, talvez? 615 00:29:41,498 --> 00:29:42,741 >> AUDIÊNCIA: Texto. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: Diga de novo? 617 00:29:43,824 --> 00:29:44,710 AUDIÊNCIA: Texto. 618 00:29:44,710 --> 00:29:44,980 DAVID J. MALAN: Texto? 619 00:29:44,980 --> 00:29:45,590 OK, eu ouvi texto. 620 00:29:45,590 --> 00:29:46,090 O que mais? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Nós meio que tem um monte de opções que são de natureza textual. 623 00:29:53,860 --> 00:29:55,990 Então, quando e por quê, fazer você usa algum destes? 624 00:29:55,990 --> 00:29:59,560 Bem char, ao contrário do que você pode pensar, não é um único caractere. 625 00:29:59,560 --> 00:30:01,550 É um número específico de caracteres. 626 00:30:01,550 --> 00:30:04,600 Então, se nós sabemos que todos os nomes de usuário deve ser como oito caracteres, 627 00:30:04,600 --> 00:30:08,490 como costumava ser comum em idosos sistemas de computador, eu poderia dizer de char 628 00:30:08,490 --> 00:30:09,830 e então eu poderia dizer 8 aqui. 629 00:30:09,830 --> 00:30:12,930 É quando a terceira coluna se torna aplicável ao criar uma tabela. 630 00:30:12,930 --> 00:30:15,450 >> Mas isso é meio chato porque algumas pessoas podem 631 00:30:15,450 --> 00:30:17,660 quero ter um nome de usuário mais de oito caracteres, 632 00:30:17,660 --> 00:30:19,743 algumas pessoas podem querer tem um nome mais curto, 633 00:30:19,743 --> 00:30:22,210 então por que comprometer-me para um número específico? 634 00:30:22,210 --> 00:30:24,710 Por que não ter uma variável número de caracteres e apenas 635 00:30:24,710 --> 00:30:28,580 dizer que o comprimento máximo de um nome é, eu não sei, como 64 caracteres. 636 00:30:28,580 --> 00:30:31,780 Eu não consigo pensar em todos os amigos que têm nomes mais de 64 caracteres, 637 00:30:31,780 --> 00:30:34,810 e mesmo que seja muito curto que você poderia certamente bater-lo arbitrariamente. 638 00:30:34,810 --> 00:30:37,330 >> Então varchar é uma variável número de caracteres. 639 00:30:37,330 --> 00:30:41,010 O texto não é um mau instinto, e francamente que tipo de faz o que diz, 640 00:30:41,010 --> 00:30:45,460 mas um campo de texto pode ser como 65.000 bytes, pelo menos. 641 00:30:45,460 --> 00:30:50,790 Isso é provavelmente um exagero para um campo, e, de fato, sim, 65.535. 642 00:30:50,790 --> 00:30:53,740 Isso é provavelmente um exagero para um nome, então vamos ficar, normalmente, 643 00:30:53,740 --> 00:30:56,910 com varchars para textual campo e haxixe também. 644 00:30:56,910 --> 00:30:59,990 Hash, verifica-se, poderíamos fazer uma varchar bem ou algo parecido, 645 00:30:59,990 --> 00:31:03,080 mas não vamos focar hoje no criptografia lá e os números 646 00:31:03,080 --> 00:31:05,210 que pode, na verdade, pretende utilizar para o seu comprimento. 647 00:31:05,210 --> 00:31:07,430 >> Mas deixe-me rolar para a direita. 648 00:31:07,430 --> 00:31:11,280 Você só pode ter um índice primário de uma tabela, 649 00:31:11,280 --> 00:31:16,380 mas eu gostaria de aplicar qualquer um destes, agora, para nome de usuário, você diria? 650 00:31:16,380 --> 00:31:21,980 O que deve ser nome de usuário baseada em uma vaga compreensão destas quatro opções? 651 00:31:21,980 --> 00:31:23,340 Apenas pelos seus nomes? 652 00:31:23,340 --> 00:31:24,140 >> AUDIÊNCIA: Unique. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. MALAN: tão único, certo? 654 00:31:25,100 --> 00:31:28,190 Assim, verifica-se que não só poderia você diz a um banco de dados, com antecedência, 655 00:31:28,190 --> 00:31:30,380 esta é a principal forma identificação de campos. 656 00:31:30,380 --> 00:31:32,990 Você também pode dizer que este é vai ser um campo exclusivo. 657 00:31:32,990 --> 00:31:34,700 Não vai ser a coisa que eu confiar, 658 00:31:34,700 --> 00:31:38,490 mas eu gostaria que o banco de dados para têm essencialmente que, se condição, de modo 659 00:31:38,490 --> 00:31:42,340 que se eu tentei registrar dois usuários com o mesmo nome, 660 00:31:42,340 --> 00:31:44,360 o flat out banco de dados não vai me deixar. 661 00:31:44,360 --> 00:31:47,490 Eu poderia ter algum código adicional em PHP que impede tanto, 662 00:31:47,490 --> 00:31:50,640 a base de dados, mas, também, pode garantir que isso nunca vai acontecer. 663 00:31:50,640 --> 00:31:53,370 >> Agora, como um aparte, especialmente quanto você pensa sobre projetos finais, 664 00:31:53,370 --> 00:31:57,030 lembre-se de posicioná-lo e cheia texto são realmente muito útil. 665 00:31:57,030 --> 00:32:01,080 Se você tem um banco de dados maior, não com dezenas, mas com centenas ou milhares 666 00:32:01,080 --> 00:32:05,270 ou mesmo milhões de campos, você pode também dizer o banco de dados com antecedência 667 00:32:05,270 --> 00:32:07,980 este é um campo que eu vou estar procurando em um monte. 668 00:32:07,980 --> 00:32:10,520 Talvez o seu nome de usuário, talvez seja bio, se você estiver 669 00:32:10,520 --> 00:32:13,750 fazer um site Facebook, como que tem números que o usuário tem permissão 670 00:32:13,750 --> 00:32:16,799 para salvar, e se você quiser dizer a base de dados de antemão 671 00:32:16,799 --> 00:32:20,090 Eu vou estar à procura neste campo muito, mas não é necessariamente única, 672 00:32:20,090 --> 00:32:22,800 você pode especificar criar me um índice. 673 00:32:22,800 --> 00:32:27,990 Ou, você pode dizer que também me permite fazer tipo de pesquisas arbitrárias como Command 674 00:32:27,990 --> 00:32:30,420 ou Control F, como você poderia, em um processador de texto, 675 00:32:30,420 --> 00:32:34,184 para que você possa olhar cordas arbitrárias ou substrings neste domínio. 676 00:32:34,184 --> 00:32:36,600 Em outras palavras, estamos chegando para o ponto no semestre 677 00:32:36,600 --> 00:32:40,720 onde você não precisa se preocupar com como implementar as coisas de forma eficiente. 678 00:32:40,720 --> 00:32:44,540 Você só precisa saber sobre o que decisões de projeto para fazer de modo que você está 679 00:32:44,540 --> 00:32:48,470 usando as ferramentas certas para o comércio, a fim de alavancar recursos 680 00:32:48,470 --> 00:32:50,380 que outras pessoas construíram para você. 681 00:32:50,380 --> 00:32:54,240 Então, para recapitular, principal só deve tem um, você pode ter apenas um, 682 00:32:54,240 --> 00:32:59,630 e que é a coisa que você está comprometendo-se a utilizando a identificação de campos exclusivamente. 683 00:32:59,630 --> 00:33:02,710 Único é apenas semelhante em espírito, mas você pode apenas ocasionalmente usá-lo, 684 00:33:02,710 --> 00:33:04,530 mas deseja que o banco de dados para impô-la. 685 00:33:04,530 --> 00:33:08,050 Índice significa apenas preventivamente acelerar as coisas no futuro 686 00:33:08,050 --> 00:33:10,230 para que eu possa procurar coisas neste domínio. 687 00:33:10,230 --> 00:33:13,700 E, em seguida, o texto completo é geralmente para parágrafos, ou ensaios, ou organismos grandes 688 00:33:13,700 --> 00:33:16,270 de texto onde você também pode querer ter 689 00:33:16,270 --> 00:33:19,420 curingas como o equivalente de estrelas. 690 00:33:19,420 --> 00:33:19,920 Right. 691 00:33:19,920 --> 00:33:22,580 >> Então, que era uma espécie de muito a todos de uma vez. 692 00:33:22,580 --> 00:33:25,220 Vamos ver se não podemos destilar um par desses recursos 693 00:33:25,220 --> 00:33:29,540 e então construir algo bastante simples, mas poderosa. 694 00:33:29,540 --> 00:33:31,380 Assim, entre a outra decisões de projeto que você está 695 00:33:31,380 --> 00:33:34,005 em última análise, vai ter é ao longo as linhas de mecanismos de armazenamento. 696 00:33:34,005 --> 00:33:37,370 E deixe-me apenas fazer menção a este em antecipação de projetos finais, 697 00:33:37,370 --> 00:33:42,020 e antecipação de deixar de dizer-- não vamos fazer isso. 698 00:33:42,020 --> 00:33:43,820 Vamos construir este pequeno primeira aplicação. 699 00:33:43,820 --> 00:33:48,070 Eu estou indo para ir em meu terminal janela, e aqui não é 700 00:33:48,070 --> 00:33:52,500 só counter.php, que vamos agora para se livrar de como não pertinente, 701 00:33:52,500 --> 00:33:54,570 mas temos um grupo inteiro de diretórios e esta 702 00:33:54,570 --> 00:33:58,080 vai ser muito semelhante em espírito o que você verá no conjunto de problemas sete. 703 00:33:58,080 --> 00:34:00,980 >> Portanto, temos três diretórios inclui público e modelos, que 704 00:34:00,980 --> 00:34:05,040 é exatamente de onde paramos no Segunda-feira com todo o nosso paradigma MVC. 705 00:34:05,040 --> 00:34:09,290 E, para recapitular, em público está indo para ir qualquer arquivo que eu quero que os usuários realmente 706 00:34:09,290 --> 00:34:12,969 v poder visitar em seu navegador via URL. 707 00:34:12,969 --> 00:34:13,502 Modelo. 708 00:34:13,502 --> 00:34:14,710 O que nós colocamos em modelos? 709 00:34:14,710 --> 00:34:17,070 Que tipo de coisas? 710 00:34:17,070 --> 00:34:21,659 Não era muito, mas um casal arquivos, pelo menos, na segunda-feira. 711 00:34:21,659 --> 00:34:22,619 Sim. 712 00:34:22,619 --> 00:34:23,100 >> AUDIÊNCIA: cabeçalho e rodapé? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: Cabeçalho e Rodapé. 714 00:34:24,516 --> 00:34:26,679 Portanto, temos algo similar hoje, também. 715 00:34:26,679 --> 00:34:30,330 Temos mais alguns arquivos, mas Rodapé eu vejo, eu vejo cabeçalho, 716 00:34:30,330 --> 00:34:31,909 e, em seguida, um monte de outros arquivos. 717 00:34:31,909 --> 00:34:35,482 Portanto, este é o equivalente da visão V MVC, que, 718 00:34:35,482 --> 00:34:37,690 mais uma vez, será um pouco mais claro no conjunto de problemas de sete, 719 00:34:37,690 --> 00:34:40,380 mas isto é apenas uma pasta que estou colocando um monte de minha estética. 720 00:34:40,380 --> 00:34:42,840 Muito do meu HTML, muitas das minhas formas. 721 00:34:42,840 --> 00:34:46,899 Enquanto isso, inclui, é outra diretório que tem esses três arquivos 722 00:34:46,899 --> 00:34:48,440 e vamos dar uma olhada rápida para estes. 723 00:34:48,440 --> 00:34:51,699 >> Eu estou indo para ir em frente e abrir config.php. 724 00:34:51,699 --> 00:34:54,610 Como se vê, muito como no início do prazo, 725 00:34:54,610 --> 00:34:57,850 você incluiu afiada CS50 dot h com pset7. 726 00:34:57,850 --> 00:35:00,780 No exemplo de hoje, você vai para fazer o equivalente a de que 727 00:35:00,780 --> 00:35:03,600 com uma declaração requerem que efectivamente 728 00:35:03,600 --> 00:35:05,340 inclui essas várias linhas. 729 00:35:05,340 --> 00:35:08,225 Então, para ser claro, este é um arquivo chamado config.php. 730 00:35:08,225 --> 00:35:09,350 E observe o que está fazendo. 731 00:35:09,350 --> 00:35:11,970 É aparentemente fazendo algo transformando em mensagens enigmáticas, erro 732 00:35:11,970 --> 00:35:13,680 para que você possa vê-los no navegador. 733 00:35:13,680 --> 00:35:15,860 É, então, aparentemente requerendo dois outros arquivos 734 00:35:15,860 --> 00:35:19,530 então isso é como #include em C, e então este que fez ver, 735 00:35:19,530 --> 00:35:22,720 e nós invocados, isso se transforma em que carrinho de compras como a funcionalidade. 736 00:35:22,720 --> 00:35:25,610 >> Isto significa uma vontade de cookie ser enviado de volta e para trás. 737 00:35:25,610 --> 00:35:27,290 Então, por que isso é interessante? 738 00:35:27,290 --> 00:35:32,460 Bem, se voltarmos a este diretório e abrir-se, por exemplo, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Note que o PHP faz constantes de apoio, não é completamente como #define em C. 741 00:35:38,840 --> 00:35:41,290 Em vez disso, você literalmente dizer definido, e aviso 742 00:35:41,290 --> 00:35:44,110 que eu tenho guardado com antecedência quatro constantes neste arquivo. 743 00:35:44,110 --> 00:35:47,020 Um banco de dados para a de hoje, para minha senha para o meu nome de usuário, 744 00:35:47,020 --> 00:35:48,690 e para o nome do servidor. 745 00:35:48,690 --> 00:35:51,644 Então, essas são realmente vai ser bastante semelhante em conjunto de problemas sete. 746 00:35:51,644 --> 00:35:54,560 E por último, e é aí que eu sou indo para obter algumas funcionalidades agradável 747 00:35:54,560 --> 00:35:59,000 da equipe, em functions.php é um monte de código que você escreveu, 748 00:35:59,000 --> 00:36:01,040 e eu roubei algumas dessas do conjunto de problemas de sete 749 00:36:01,040 --> 00:36:05,920 para hoje, que faz um monte de coisas e vamos apenas olhar para um deles 750 00:36:05,920 --> 00:36:07,270 em particular. 751 00:36:07,270 --> 00:36:09,720 Esta função aqui, consulta, vai ser 752 00:36:09,720 --> 00:36:13,600 a função PHP que chamamos a fim de executar SQL. 753 00:36:13,600 --> 00:36:16,070 Um momento atrás, estávamos usando phpMyAdmin, mas isso é apenas 754 00:36:16,070 --> 00:36:18,720 por tipo de efeitos de aprendizagem e fins de diagnóstico 755 00:36:18,720 --> 00:36:20,494 e esquecendo o seu conjunto de dados. 756 00:36:20,494 --> 00:36:22,660 Quando você realmente usar o seu banco de dados, você, o ser humano, 757 00:36:22,660 --> 00:36:24,100 são, obviamente, não vai estar puxando um web 758 00:36:24,100 --> 00:36:25,740 página cada vez que alguém registra. 759 00:36:25,740 --> 00:36:29,870 Você vai escrever um código que inserções e exclui usuários sob demanda, 760 00:36:29,870 --> 00:36:32,490 e nós vamos fazer isso por meio da função de consulta. 761 00:36:32,490 --> 00:36:35,360 Se eu agora vá para baixo, não há vai ser mais algumas funcionalidades. 762 00:36:35,360 --> 00:36:37,170 Redirect vai ser uma função que escrevemos 763 00:36:37,170 --> 00:36:40,160 para você que lhe permite enviar o usuário para outra URL, 764 00:36:40,160 --> 00:36:43,780 e processar é uma função, bem como vimos na segunda-feira, que realmente torna 765 00:36:43,780 --> 00:36:48,000 um molde, mas mais para estes na forma de pset7 da própria caminhada. 766 00:36:48,000 --> 00:36:50,500 Por agora, vamos em frente e fazer isso. 767 00:36:50,500 --> 00:36:54,860 >> Deixe-me ir para a minha mesa de palestras e ver que há atualmente nada 768 00:36:54,860 --> 00:36:59,640 aqui ainda, e deixe-me ir também em meu diretório público, onde 769 00:36:59,640 --> 00:37:02,780 há apenas um arquivo, index.php. 770 00:37:02,780 --> 00:37:06,920 Este arquivo parece ser super simples No momento, ele se parece com isso. 771 00:37:06,920 --> 00:37:09,110 Muito parecido como nós parou na segunda-feira. 772 00:37:09,110 --> 00:37:11,945 Estou exigindo esse arquivo, config.php, que é em 773 00:37:11,945 --> 00:37:15,160 um inclui diretório, que está em dot dot, meus pais, 774 00:37:15,160 --> 00:37:17,650 e depois é só tornar este arquivo. 775 00:37:17,650 --> 00:37:18,960 Então, qual é este arquivo? 776 00:37:18,960 --> 00:37:24,700 >> Vamos abrir em meus modelos form.php, e vamos ver isso. 777 00:37:24,700 --> 00:37:28,500 Super simples, aparentemente, esta forma é vai apresentar, até um $ _GET ou $ _POST. 778 00:37:28,500 --> 00:37:29,320 Verificação de sanidade rápida. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Literalmente visualmente procurar o arquivo. 781 00:37:35,690 --> 00:37:36,610 Método iguala post. 782 00:37:36,610 --> 00:37:39,280 Então, ele não vai usar a URL, como Google faz, que vai classificar de esconder 783 00:37:39,280 --> 00:37:41,030 a informação por trás as cenas e é 784 00:37:41,030 --> 00:37:43,580 vai se submeter a uma arquivo chamado register.php, 785 00:37:43,580 --> 00:37:45,660 e que é o arquivo que ainda não escrevi 786 00:37:45,660 --> 00:37:47,610 mas o que é que isto vai para olhar como é isso. 787 00:37:47,610 --> 00:37:52,670 >> Se eu for para uma página separada Esta é o localhost / index.php parece. 788 00:37:52,670 --> 00:37:56,930 E, novamente, o servidor de apenas assumindo index.php. 789 00:37:56,930 --> 00:37:57,910 Enter. 790 00:37:57,910 --> 00:37:59,870 Então é aí que estamos , eo que eu quero fazer 791 00:37:59,870 --> 00:38:02,450 é ser capaz de escrever coisas como Davi, e depois 792 00:38:02,450 --> 00:38:08,050 meu número de telefone, o que vai dizer 617-555-1212 por enquanto, cadastre 793 00:38:08,050 --> 00:38:09,910 e agora register.php não foi encontrado. 794 00:38:09,910 --> 00:38:11,440 Então eu preciso para implementar isso. 795 00:38:11,440 --> 00:38:13,320 Então, vamos rapidamente chicote algo como isso. 796 00:38:13,320 --> 00:38:18,640 Deixe-me ir para o meu diretório público e fazer gedit de register.php, 797 00:38:18,640 --> 00:38:22,300 e agora eu estou indo para ir em frente e iniciar o modo PHP, como fizemos na segunda-feira, 798 00:38:22,300 --> 00:38:25,430 e tag perto do PHP, e vamos fazer um par de coisas. 799 00:38:25,430 --> 00:38:28,336 >> Então, eu sei, a partir de ter escrito essa forma, 800 00:38:28,336 --> 00:38:29,960 que eu quero para verificar o seguinte. 801 00:38:29,960 --> 00:38:35,670 Se estiver vazia, qualquer que seja o utilizador digitou para o campo de nome e, em seguida 802 00:38:35,670 --> 00:38:39,860 Vou dizer algo como pedir desculpas faltando nome. 803 00:38:39,860 --> 00:38:42,380 Peça desculpas, entretanto, é não é uma coisa construída em PHP, 804 00:38:42,380 --> 00:38:45,970 é uma função que escrevemos em functions.php para pset7 805 00:38:45,970 --> 00:38:47,940 para que você tenha acesso a ele. 806 00:38:47,940 --> 00:38:53,830 Else se o outro campo está vazio, número, então eu sou 807 00:38:53,830 --> 00:38:58,370 vai pedir desculpas ao usuário e dizer o número que falta. 808 00:38:58,370 --> 00:38:59,320 Salve este arquivo. 809 00:38:59,320 --> 00:39:02,640 >> Agora vamos voltar para o meu navegador, voltar ao fórum tente novamente. 810 00:39:02,640 --> 00:39:04,070 Registre-se. 811 00:39:04,070 --> 00:39:05,090 Está bem. 812 00:39:05,090 --> 00:39:06,730 Não aconteceu nada, o que é bom. 813 00:39:06,730 --> 00:39:08,120 Eu não recebi uma mensagem de erro. 814 00:39:08,120 --> 00:39:11,651 Mas se em vez disso, vamos recarregar esta página, e não fornecer qualquer coisa. 815 00:39:11,651 --> 00:39:12,150 Caramba. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Faça isso. 818 00:39:17,140 --> 00:39:18,810 Registre-se. 819 00:39:18,810 --> 00:39:20,350 O que eu fiz de errado? 820 00:39:20,350 --> 00:39:24,860 Se vazio, o nome $ _POST. 821 00:39:24,860 --> 00:39:26,350 Diga de novo? 822 00:39:26,350 --> 00:39:27,670 >> Oh, é claro. 823 00:39:27,670 --> 00:39:30,919 Eu esqueci a parte mais importante, que é require ("../ includes / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Eu preciso ter acesso ao desculpar função, que 826 00:39:36,460 --> 00:39:37,770 É por isso que nada estava acontecendo. 827 00:39:37,770 --> 00:39:39,460 A função não existe realmente. 828 00:39:39,460 --> 00:39:40,640 Então, vamos tentar isso de novo. 829 00:39:40,640 --> 00:39:42,350 Vamos recarregar a página, clique em Register. 830 00:39:42,350 --> 00:39:43,060 Está bem. 831 00:39:43,060 --> 00:39:43,770 Não é. 832 00:39:43,770 --> 00:39:45,700 Assim, a saída que estamos vendo aqui é o resultado 833 00:39:45,700 --> 00:39:47,685 de chamar uma desculpas função, super simples, 834 00:39:47,685 --> 00:39:50,060 e ele simplesmente imprime o que quer Dou-lhe como um argumento. 835 00:39:50,060 --> 00:39:51,370 >> Tudo bem, então vamos cooperar. 836 00:39:51,370 --> 00:39:54,240 Vamos fornecer o meu nome como Davi, registrar, 837 00:39:54,240 --> 00:39:56,890 faltando número Ok, vamos prever que, também. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registre-se. 840 00:39:59,250 --> 00:39:59,750 Está bem. 841 00:39:59,750 --> 00:40:02,760 Então, tudo está bem agora, apenas nada interessante está acontecendo. 842 00:40:02,760 --> 00:40:06,000 Então, agora vamos fazer algo mais interessante acontecer assim. 843 00:40:06,000 --> 00:40:09,980 Deixe-me ir para phpMyAdmin, e vamos realmente criar uma tabela chamada usuários, 844 00:40:09,980 --> 00:40:12,330 Vou dar-lhe três colunas, e eu rapidamente 845 00:40:12,330 --> 00:40:16,250 criar ID, e depois nome, e então o número, 846 00:40:16,250 --> 00:40:18,832 eo campo ID eu sou vai sair como um int. 847 00:40:18,832 --> 00:40:20,790 O campo do nome eu vou para deixar como varchar, 848 00:40:20,790 --> 00:40:23,257 e vamos dizer 64, um tanto arbitrariamente. 849 00:40:23,257 --> 00:40:25,090 O número que eu vou para fazer, você sabe o quê? 850 00:40:25,090 --> 00:40:27,350 Estamos indo para apoiar números norte-americanos aqui, 851 00:40:27,350 --> 00:40:31,510 então eu vou fazer alguma coisa como carvão e, em seguida, 10 caracteres 852 00:40:31,510 --> 00:40:34,540 max para um código de área e em seguida, sete dígitos. 853 00:40:34,540 --> 00:40:37,870 E então para cá, eu vou especificar auto incremento neste campo, 854 00:40:37,870 --> 00:40:40,550 tornar esta uma chave primária, e Eu estou indo para ir em frente e não 855 00:40:40,550 --> 00:40:42,240 verificar qualquer um destes outros caixas. 856 00:40:42,240 --> 00:40:48,030 >> Então, quando eu agora, finalmente, clique em Salvar, e eu voltar para a minha tabela de usuários, 857 00:40:48,030 --> 00:40:52,270 este é o que parece que se eu clique agora uma estrutura New Tab. 858 00:40:52,270 --> 00:40:54,550 Então isso, para ser claro, é apenas uma maneira de phpMyAdmin 859 00:40:54,550 --> 00:40:58,570 de dizer sua tabela de banco de dados tem um ID, um nome e um número 860 00:40:58,570 --> 00:41:02,040 com essas configurações particulares e vamos ignorar o resto dos campos 861 00:41:02,040 --> 00:41:03,140 lá por enquanto. 862 00:41:03,140 --> 00:41:04,810 >> Então agora o que eu quero fazer? 863 00:41:04,810 --> 00:41:09,060 Então, se eu ir agora para o meu código fonte, se está tudo bem 864 00:41:09,060 --> 00:41:11,190 Eu quero executar a consulta seguinte. 865 00:41:11,190 --> 00:41:14,970 Insira em, e eu posso apenas dizem os usuários eu não estritamente 866 00:41:14,970 --> 00:41:18,620 precisa para trás aqueles carrapatos se é nem uma palavra perigosa como usuários. 867 00:41:18,620 --> 00:41:22,810 Eu vou dizer o nome, número, e então aqui estou 868 00:41:22,810 --> 00:41:24,960 não vai codificar a dígitos dos valores ainda. 869 00:41:24,960 --> 00:41:26,760 Eu vou colocar dois pontos de interrogação. 870 00:41:26,760 --> 00:41:29,320 E esta é uma convenção em muitas línguas 871 00:41:29,320 --> 00:41:31,730 em que se você quer ter um espaço reservado para uma string 872 00:41:31,730 --> 00:41:34,105 você vai usar a questão marcas, por razões que vou 873 00:41:34,105 --> 00:41:36,370 voltar a conversar sobre segurança, e aqui 874 00:41:36,370 --> 00:41:39,420 Vou passar naqueles dois campos de publicar o nome, 875 00:41:39,420 --> 00:41:44,850 e, em seguida, publicar o número, e agora salve o arquivo. 876 00:41:44,850 --> 00:41:47,090 >> E agora eu vou descer aqui é um super 877 00:41:47,090 --> 00:41:55,690 simplesmente dizer rendersuccess.php, que vai ser outro modelo. 878 00:41:55,690 --> 00:41:57,380 Eu vou criar muito rápido. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php e eu só vou dizer sucesso H1 nesse arquivo. 880 00:42:06,270 --> 00:42:06,990 Tudo certo. 881 00:42:06,990 --> 00:42:11,312 Então, agora, vamos voltar para o browser, onde visitei antes. 882 00:42:11,312 --> 00:42:14,270 Vamos ir em frente e confirmar que eu escrevi em David, eu escrevi um número de telefone, 883 00:42:14,270 --> 00:42:15,390 registe-se. 884 00:42:15,390 --> 00:42:16,100 Caramba. 885 00:42:16,100 --> 00:42:17,420 O que eu fiz de errado? 886 00:42:17,420 --> 00:42:20,850 Então, eu estou vendo um erro aqui, você tem um erro em sua sintaxe SQL. 887 00:42:20,850 --> 00:42:24,900 Deixe-me saltar de volta para gedit, vamos me voltar para register.php, 888 00:42:24,900 --> 00:42:28,830 eo que eu omitir que Era importante da última vez? 889 00:42:28,830 --> 00:42:29,722 Eu preciso disso. 890 00:42:29,722 --> 00:42:32,930 Você quer saber o que além de ter notado antes, mas eu preciso disso. 891 00:42:32,930 --> 00:42:35,596 >> Então agora vamos voltar, e isso foi útil para ver no navegador 892 00:42:35,596 --> 00:42:37,680 e é por isso que em config.php nós cuspir erros. 893 00:42:37,680 --> 00:42:41,770 Vamos em frente e recarregar, clique em Continuar, o sucesso. 894 00:42:41,770 --> 00:42:47,060 Então, agora deixe-me ir para o meu banco de dados aqui e clique em Usuários, 895 00:42:47,060 --> 00:42:51,680 e navegar, e notar que eu agora David tem no meu banco de dados aqui. 896 00:42:51,680 --> 00:42:55,810 Agora tecnicamente este site é ainda não está na internet pública, 897 00:42:55,810 --> 00:42:57,890 por isso não pode ter outro pessoas em colocar aqui, 898 00:42:57,890 --> 00:43:01,120 mas se eu já quis, por exemplo, me envie uma mensagem de texto. 899 00:43:01,120 --> 00:43:03,920 Vamos sair em um membro aqui e ver se isso realmente funciona. 900 00:43:03,920 --> 00:43:07,331 Eu estou indo para ir em frente e excluir essa linha 901 00:43:07,331 --> 00:43:09,080 e vamos borrar essa no vídeo mais tarde 902 00:43:09,080 --> 00:43:11,900 por isso não temos a toda internet texting me, 903 00:43:11,900 --> 00:43:17,270 e agora vamos ir até o browser e nós falaremos sobre a palestra 904 00:43:17,270 --> 00:43:22,040 e vamos digitar diferente número aqui, registrar o sucesso. 905 00:43:22,040 --> 00:43:25,550 >> Então, agora, o meu próprio número é presumivelmente em o banco de dados, e agora a parte divertida. 906 00:43:25,550 --> 00:43:28,774 Vamos realmente usar o PHP para fazer algo de programação, 907 00:43:28,774 --> 00:43:30,940 ou a partir do comando linha ou de algum outro lugar, 908 00:43:30,940 --> 00:43:32,773 e por enquanto eu sou apenas vai mantê-lo simples 909 00:43:32,773 --> 00:43:36,230 e eu estou indo para ir para o meu diretório aqui e faça o seguinte. 910 00:43:36,230 --> 00:43:44,920 Roteiro Gedit vamos dizer, vamos chamá-lo de texto, #! / user / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 como vimos da última vez. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Agora eu vou exigem inclui config.php, 914 00:43:55,055 --> 00:43:57,360 embora isso possa induzir um pequeno erro. 915 00:43:57,360 --> 00:44:03,960 E agora eu estou indo para ir em frente e dizer linhas, consulta, selecione estrela dos usuários, 916 00:44:03,960 --> 00:44:08,149 e agora aqui eu vou fazer uma técnica da última vez para cada linhas como linha. 917 00:44:08,149 --> 00:44:09,690 E eu vou fazer algo simples. 918 00:44:09,690 --> 00:44:19,090 Printf digamos que nome é esse, eo número é este, barra invertida n. 919 00:44:19,090 --> 00:44:23,320 E agora eu vou passar na linha citar nome unquote, 920 00:44:23,320 --> 00:44:28,140 eo número da linha entre aspas, e agora vamos em frente 921 00:44:28,140 --> 00:44:31,430 ea janela de meu terminal chmod este a + x para fazer 922 00:44:31,430 --> 00:44:33,970 esse script chamado executável texto. 923 00:44:33,970 --> 00:44:36,080 E agora vamos executar texto. 924 00:44:36,080 --> 00:44:37,590 >> OK, então o progresso. 925 00:44:37,590 --> 00:44:39,960 Então, eu tenho uma empresa escrita comando de script de linha, 926 00:44:39,960 --> 00:44:43,300 em uma linguagem chamada PHP, que, devido a que requerem linha, 927 00:44:43,300 --> 00:44:46,380 tem acesso a todos aqueles configuração constantes que eu especificados. 928 00:44:46,380 --> 00:44:48,177 O nome da base de dados e assim por diante. 929 00:44:48,177 --> 00:44:50,260 Na verdade, só para ficar claro que este não é um acaso, 930 00:44:50,260 --> 00:44:54,730 deixe-me ir em frente e se inscrever, muito rápido, alguém como Rob 931 00:44:54,730 --> 00:44:58,890 e vai dar-lhe o número 555-1212. 932 00:44:58,890 --> 00:45:01,557 >> E agora, se eu executar o script novamente, observe o poder 933 00:45:01,557 --> 00:45:03,140 do que estamos fazendo com o banco de dados. 934 00:45:03,140 --> 00:45:07,680 Agora eu imediatamente vi o que o outras duas linhas estão em meu banco de dados. 935 00:45:07,680 --> 00:45:10,699 Então agora vamos tentar fazer alguma coisa ainda mais extravagante dentro de, 936 00:45:10,699 --> 00:45:12,740 e esta é a parte que nós temos Não testada antecipadamente, 937 00:45:12,740 --> 00:45:15,910 por isso a última vez que fiz isso as coisas foram horrivelmente errado, 938 00:45:15,910 --> 00:45:17,120 dispomos de vídeo para esse efeito. 939 00:45:17,120 --> 00:45:18,286 >> Na verdade, sim, engraçado lado. 940 00:45:18,286 --> 00:45:20,480 Então, a última vez, em um palestra como há dois anos, 941 00:45:20,480 --> 00:45:23,230 decidimos, eu decidi, para ser tudo isso seria uma grande idéia 942 00:45:23,230 --> 00:45:28,150 para gerar dinamicamente e-mails em classe, utilizando toda a base de dados CS50 943 00:45:28,150 --> 00:45:33,390 alunos, que nos deram seus números e suas operadoras de telefonia celular que você 944 00:45:33,390 --> 00:45:36,290 pode se lembrar de pset0, como raciocinar, verifica-se 945 00:45:36,290 --> 00:45:40,650 Eu tinha um pequeno bug no meu programa e fez um par de erros em 2012, eu acho. 946 00:45:40,650 --> 00:45:43,997 >> Pelas quais, uma que eu tinha para o laço que fez exatamente esse tipo de coisa, 947 00:45:43,997 --> 00:45:46,580 iteração sobre o banco de dados, a obtenção de um nome do banco de dados, 948 00:45:46,580 --> 00:45:49,940 nome do banco de dados, e em seguida, em cada iteração do laço que eu mandei um e-mail. 949 00:45:49,940 --> 00:45:54,130 Mas em vez de enviar um e-mail, eu enviou um e-mail a primeira iteração, 950 00:45:54,130 --> 00:45:58,200 e dois e-mails de uma segunda iteração, enviado três e-mails de uma segunda iteração, o que 951 00:45:58,200 --> 00:46:01,230 como você pode se lembrar de nossa discussão de notação assintótica 952 00:46:01,230 --> 00:46:06,400 esta grande O de ruim, como n ao quadrado é o número de mensagens que eu enviei, 953 00:46:06,400 --> 00:46:08,560 mas não foi até mesmo e-mails foi mensagens de texto. 954 00:46:08,560 --> 00:46:12,070 >> E como você sabe, o comparecimento não é super em alta até o final do semestre 955 00:46:12,070 --> 00:46:15,360 e então eu pensei que seria bonito em o tempo para dizer: "Por que não está de classe?" 956 00:46:15,360 --> 00:46:17,880 No texto da mensagem I enviado para toda a classe, 957 00:46:17,880 --> 00:46:22,140 e era engraçado como 50% do classe, mas os restantes 50%, alguns dos quais 958 00:46:22,140 --> 00:46:26,102 apavorei, enviei incrivelmente doces notas apologéticas 959 00:46:26,102 --> 00:46:28,560 para a equipe de pedir desculpas por ter perdido a palestra apenas 960 00:46:28,560 --> 00:46:29,530 desta vez, certo? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> De modo que seria horrivelmente errado. 963 00:46:34,030 --> 00:46:37,030 Então, nesse espírito, vamos tentar fazer isso novamente, mas apenas com o meu número. 964 00:46:37,030 --> 00:46:41,940 De antemão, no functions.php, Eu escrevi essa função aqui. 965 00:46:41,940 --> 00:46:44,250 É chamado de texto, e leva em três argumentos. 966 00:46:44,250 --> 00:46:46,360 Um número, um transportador, e uma mensagem. 967 00:46:46,360 --> 00:46:50,390 >> Eu estou usando um switch, que maravilhosamente PHP levar cordas, e não apenas 968 00:46:50,390 --> 00:46:53,350 inteiros, e eu não implementar todo o suporte para isso ainda, 969 00:46:53,350 --> 00:46:55,370 Acabei de fazer AT & T e Verizon. 970 00:46:55,370 --> 00:46:57,610 Pois verifica-se que, com estes transportadores 971 00:46:57,610 --> 00:47:00,570 eles têm e-mail para gateways SMS, através do qual você pode realmente 972 00:47:00,570 --> 00:47:05,529 enviar um e-mail para um endereço como número de telefone no vtext.com 973 00:47:05,529 --> 00:47:08,070 e se o usuário não tiver bloqueado as mensagens, ele vai passar por 974 00:47:08,070 --> 00:47:09,340 é uma mensagem de texto. 975 00:47:09,340 --> 00:47:13,270 >> Agora, para fazer isso, eu vou ter que adicionar um campo muito rápido para o meu banco de dados. 976 00:47:13,270 --> 00:47:15,470 Eu estou indo para ir para minha estrutura, e estou 977 00:47:15,470 --> 00:47:21,880 indo para ir em frente e adicione um campo no fim da tabela. 978 00:47:21,880 --> 00:47:25,227 Vamos clicar Go, e eu sou vai chamar esta transportadora 979 00:47:25,227 --> 00:47:27,310 e por enquanto eu vou deixar isso como um texto da barra, 980 00:47:27,310 --> 00:47:29,320 mas podemos ser mais sofisticado no futuro. 981 00:47:29,320 --> 00:47:31,961 Eu estou indo para ir rapidamente em minha mesa, e eu sou 982 00:47:31,961 --> 00:47:34,210 vai se livrar de Rob, porque isso é um número falso, 983 00:47:34,210 --> 00:47:38,540 Eu estou indo para ir para editar aqui e estou vai mudar a minha operadora manualmente 984 00:47:38,540 --> 00:47:43,410 para ser Verizon, que ele é, e agora aqui. 985 00:47:43,410 --> 00:47:44,980 >> Vamos fazer uma verificação de sanidade rápida. 986 00:47:44,980 --> 00:47:52,730 Vamos abrir o nosso script de texto, que se parece com isso, transportador é% s. 987 00:47:52,730 --> 00:47:58,230 Nós estamos fazendo muito mais erro verificação do que eu fiz em 2012, portador. 988 00:47:58,230 --> 00:48:01,160 E agora, eu estou indo para ir em frente e re-executar o script. 989 00:48:01,160 --> 00:48:01,660 Está bem. 990 00:48:01,660 --> 00:48:06,100 Transportadora é Verizon, o que significa Agora espero que eu possa fazer exatamente isso. 991 00:48:06,100 --> 00:48:08,360 Corretamente este ano, espero, aqui vamos nós. 992 00:48:08,360 --> 00:48:12,200 >> Então, dentro desse loop for, eu sou vai não só tem esse printf, 993 00:48:12,200 --> 00:48:15,990 Eu também vou chamar texto e o uso desta recordação função 994 00:48:15,990 --> 00:48:19,670 era que leva um número, um transportadora, e uma mensagem. 995 00:48:19,670 --> 00:48:23,310 Então vamos ver, o número vai ser linha entre aspas "número", 996 00:48:23,310 --> 00:48:31,660 Citação linha "transportador", fecha aspas ea última foi a mensagem. 997 00:48:31,660 --> 00:48:36,250 Não estrague este ano, ponto e vírgula. 998 00:48:36,250 --> 00:48:36,780 >> Está bem. 999 00:48:36,780 --> 00:48:38,280 Dedos cruzados. 1000 00:48:38,280 --> 00:48:39,970 Vamos ver se isso funciona. 1001 00:48:39,970 --> 00:48:41,720 Tudo bem, então. 1002 00:48:41,720 --> 00:48:43,000 Aqui vamos nós. 1003 00:48:43,000 --> 00:48:47,380 Vamos desbloquear o telefone, cruzar os dedos, maldição. 1004 00:48:47,380 --> 00:48:50,300 May-- variável indefinida oh espere, espere, espere, muito rápido. 1005 00:48:50,300 --> 00:48:51,340 Muito rápido, muito rápido. 1006 00:48:51,340 --> 00:48:53,380 Isso é totalmente vale a pena. 1007 00:48:53,380 --> 00:48:57,710 Deixe-me pegar, deixe-me pegar, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Obrigado, os textos têm iniciado a partir de uma outra pessoa. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Deixe-me ir em frente e abrir reais rápido, dropbox.php / mail aqui. 1011 00:49:11,650 --> 00:49:12,660 Espera. 1012 00:49:12,660 --> 00:49:14,455 Realmente vale a pena. 1013 00:49:14,455 --> 00:49:17,430 Downloads. 1014 00:49:17,430 --> 00:49:18,560 OK, fonte src8m. 1015 00:49:18,560 --> 00:49:19,700 Está bem. 1016 00:49:19,700 --> 00:49:21,380 >> Precisa de mais uma linha aqui. 1017 00:49:21,380 --> 00:49:24,530 Oh lá está, é em Frosh IMs, é no registro em três. 1018 00:49:24,530 --> 00:49:28,820 Oh Olá, Margo, muito obrigado. 1019 00:49:28,820 --> 00:49:31,130 OK, e eu estava faltando essa linha aqui. 1020 00:49:31,130 --> 00:49:33,010 Então deixe-me pegar rapidamente esta linha de código, 1021 00:49:33,010 --> 00:49:36,200 que inclui o e-mail ou biblioteca que eu realmente quero usar, 1022 00:49:36,200 --> 00:49:38,300 Vou rapidamente voltar em funções, 1023 00:49:38,300 --> 00:49:42,337 Eu estou indo para ir para o topo desta arquivo e exigem esse arquivo, bem como, 1024 00:49:42,337 --> 00:49:45,420 e agora eu estou indo realmente cruzar meu dedos quando eu voltar para o comando 1025 00:49:45,420 --> 00:49:49,530 script de linha, o que está dentro de diretório host local de hoje. 1026 00:49:49,530 --> 00:49:50,610 Texto Executar. 1027 00:49:50,610 --> 00:49:52,720 Enter. 1028 00:49:52,720 --> 00:49:53,220 Mail. 1029 00:49:53,220 --> 00:49:53,719 Espera. 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 Espera. 1032 00:49:59,600 --> 00:50:01,680 Mail. 1033 00:50:01,680 --> 00:50:02,290 Oh, OK. 1034 00:50:02,290 --> 00:50:03,870 Aqui vamos nós. 1035 00:50:03,870 --> 00:50:06,880 >> Correio recebe novo mailer PHP. 1036 00:50:06,880 --> 00:50:09,970 Eu fiz esse direito? 1037 00:50:09,970 --> 00:50:11,067 Caramba. 1038 00:50:11,067 --> 00:50:12,150 A-- oh, espere, espere, espere. 1039 00:50:12,150 --> 00:50:12,649 Estar por. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Eu prometo, isto é vai ser assim vale a pena. 1042 00:50:18,630 --> 00:50:20,340 Endereço. 1043 00:50:20,340 --> 00:50:24,390 É por isso que eu não faça o exemplos direita antes da aula. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 Os seguintes destinatários falhou. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Vamos tentar uma última coisa. 1048 00:50:33,040 --> 00:50:40,660 SMTP definir a partir de, adicione o endereço, o endereço é realmente isso. 1049 00:50:40,660 --> 00:50:43,980 Vamos tentar esta última parte de endereço. 1050 00:50:43,980 --> 00:50:47,210 Ah, eu estou realmente triste agora. 1051 00:50:47,210 --> 00:50:47,854 Obrigado. 1052 00:50:47,854 --> 00:50:50,270 Mas eu realmente aprecio tudo os textos que você está enviando. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Você tem este David. 1055 00:50:56,320 --> 00:50:59,310 Você está soprando. 1056 00:50:59,310 --> 00:51:01,720 Vamos deixá-lo lá e vamos corrigi na segunda-feira. 1057 00:51:01,720 --> 00:51:04,290 Veja você, então. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: E agora Profunda Pensamentos por Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 Se uma árvore binária cai numa floresta e ninguém está por perto para C ele-- [rindo]. 1061 00:51:17,590 --> 00:51:18,998