1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Problema Passo a passo Set 7] 2 00:00:03,000 --> 00:00:04,400 [Zamyla Chan] [Harvard University] 3 00:00:04,400 --> 00:00:07,640 [Esta é CS50] [CS50.TV] 4 00:00:07,640 --> 00:00:12,090 >> Olá a todos, e bem vindo ao Passo a passo 7, CS50 Finanças. 5 00:00:12,090 --> 00:00:15,090 Agora estamos oficialmente feito com todos os Série de Exercícios em CS50, 6 00:00:15,090 --> 00:00:19,380 e nós estamos apenas saiu com mais uma que vai ser uma implementação divertido 7 00:00:19,380 --> 00:00:23,770 de um site onde os usuários podem fazer login para CS50 Finanças 8 00:00:23,770 --> 00:00:25,830 e comprar e vender ações. 9 00:00:25,830 --> 00:00:32,280 >> Hoje, nós vamos ter algumas ferramentas à nossa disposição. 10 00:00:32,280 --> 00:00:34,320 Nós vamos falar sobre permissões. 11 00:00:34,320 --> 00:00:36,380 Sempre que você tem uma pasta web, 12 00:00:36,380 --> 00:00:40,800 você vai querer para permitir aos usuários executar determinados arquivos 13 00:00:40,800 --> 00:00:42,500 mas também acabou de ler os outros, 14 00:00:42,500 --> 00:00:45,150 então vamos olhar para as permissões e como você pode definir aqueles. 15 00:00:45,150 --> 00:00:49,630 Então, vamos olhar em PHP, HTML e código SQL. 16 00:00:49,630 --> 00:00:51,990 >> Primeiro, permissões. 17 00:00:51,990 --> 00:00:56,060 Quando você está no terminal de um determinado diretório, 18 00:00:56,060 --> 00:01:00,430 então o que você quer fazer é que você quer executar o comando chmod. 19 00:01:00,430 --> 00:01:03,750 Isso é seguido por letras ou números 20 00:01:03,750 --> 00:01:08,100 correspondente ao que você basicamente quer que o mundo veja, 21 00:01:08,100 --> 00:01:09,830 você mesmo a ver, etc 22 00:01:09,830 --> 00:01:13,350 Por exemplo, sempre que você tem uma pasta, 23 00:01:13,350 --> 00:01:15,560 então você quer que a pasta seja executável por todos que o vê, 24 00:01:15,560 --> 00:01:19,500 Então, o que você faria se você pode executar o comando chmod a + x 25 00:01:19,500 --> 00:01:21,050 e em seguida o nome da sua pasta. 26 00:01:21,050 --> 00:01:28,110 Quando você tem um arquivo, como arquivos CSS ou arquivos de imagem - 27 00:01:28,110 --> 00:01:33,060 como JPEGs e bitmaps, coisas assim, ou qualquer outro código JavaScript - 28 00:01:33,060 --> 00:01:36,440 você quer que seja legível por todos, 29 00:01:36,440 --> 00:01:39,880 Então o que você faz é que você pode usar o curinga - 30 00:01:39,880 --> 00:01:41,650 que é um asterisco - 31 00:01:41,650 --> 00:01:46,190 basicamente para indicar a pasta CSS - tudo em que pasta - 32 00:01:46,190 --> 00:01:48,740  Eu vou dizer que isso vai ser lido por todos. 33 00:01:48,740 --> 00:01:54,220 Com as permissões, quando usamos as letras, 34 00:01:54,220 --> 00:01:57,610 também podemos usar números em vez. 35 00:01:57,610 --> 00:02:00,900 Então, você vê que, finalmente, quando você quer algo para ser executável - 36 00:02:00,900 --> 00:02:02,810 que é representado pelo número 1 - 37 00:02:02,810 --> 00:02:08,340 algo para ser lido é o número 4 e depois - 38 00:02:08,340 --> 00:02:10,590 gravável é o número 2 - 39 00:02:10,590 --> 00:02:13,670 e assim, essencialmente, quando você quer uma combinação desses, então você adiciona-los. 40 00:02:13,670 --> 00:02:15,860 Se você quer algo para ser lido, gravável, executável e, 41 00:02:15,860 --> 00:02:21,970 então você gostaria de acrescentar-se 4, 2 e 1 e que lhe daria 7, 42 00:02:21,970 --> 00:02:26,230 então sempre que você tem uma pasta que você quer que seja executável por todos - 43 00:02:26,230 --> 00:02:31,380 bem como leitura e gravação - então você faz que 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Isso seria 7 para você, então um para as outras pessoas. 45 00:02:38,140 --> 00:02:42,870 Quando você tem a especificação, ele vai realmente especificar quais pastas e quais arquivos 46 00:02:42,870 --> 00:02:45,040 precisa ser chmod-ed especificamente. 47 00:02:45,040 --> 00:02:47,920 Por exemplo, quando você tiver pastas - são 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 quando você tem imagens ou HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 então aqueles vão ser de 6, 0, 4 - ou 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 e então os arquivos PHP vão ser 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 A idéia por trás disso é que os usuários não devem realmente ver o seu código PHP, 52 00:03:04,940 --> 00:03:08,370 mas apenas ser capaz de ver a saída. 53 00:03:08,370 --> 00:03:11,030 >> Ótimo! Movendo-se para o PHP. 54 00:03:11,030 --> 00:03:18,850 Simplesmente, sempre que você quiser um arquivo PHP, o sufixo do arquivo é. Php. 55 00:03:18,850 --> 00:03:22,000 Você também pode misturar HTML com código PHP. 56 00:03:22,000 --> 00:03:24,880 Se você tem um arquivo HTML, por exemplo, 57 00:03:24,880 --> 00:03:32,520 então você pode colocá-lo com o ângulo esquerdo, ponto de interrogação, php - 58 00:03:32,520 --> 00:03:39,320 colocar o seu código php - e feche com outro que ponto de interrogação e um ângulo reto. 59 00:03:39,320 --> 00:03:45,020 As variáveis ​​no PHP são muito mais fáceis de lidar do que as variáveis ​​em C. 60 00:03:45,020 --> 00:03:50,310 Qualquer variável só começa com um cifrão na frente dele, e eles estão fracamente digitado. 61 00:03:50,310 --> 00:03:53,470 Isso significa que você não precisa se preocupar em definir algo 62 00:03:53,470 --> 00:03:55,020 igual a uma string ou um inteiro. 63 00:03:55,020 --> 00:03:57,710 Você pode simplesmente dizer: este é o meu nome da variável 64 00:03:57,710 --> 00:04:00,390 e então este é o seu valor, 65 00:04:00,390 --> 00:04:03,280 por isso vai ser mais fácil de lidar com a existência. 66 00:04:03,280 --> 00:04:08,220 >> Outra coisa é que o PHP permite que você use arrays associativos. 67 00:04:08,220 --> 00:04:11,330 Você pode simplesmente definir uma matriz, como você faria em C 68 00:04:11,330 --> 00:04:14,900 dizendo, cifrão no nome de sua matriz é igual, 69 00:04:14,900 --> 00:04:22,600 e, em seguida, entre parênteses rectos tem basicamente apenas a lista de valores de todos os elementos da matriz. 70 00:04:22,600 --> 00:04:27,160 Mas, em PHP que você também pode fazer é basicamente a especificar - 71 00:04:27,160 --> 00:04:31,050 É como uma espécie de função hash. 72 00:04:31,050 --> 00:04:34,410 Você pode especificar o índice - o que você vai chamá-lo - 73 00:04:34,410 --> 00:04:37,030 e, em seguida, que corresponde a um valor. 74 00:04:37,030 --> 00:04:42,880 Se realmente passar a = 1, b = 2, c = 3, 75 00:04:42,880 --> 00:04:50,820 então a sua matriz no índice seria dar-lhe um. 76 00:04:50,820 --> 00:04:56,600 Este pset vai aquecê-lo com algum PHP em uma seção de perguntas, 77 00:04:56,600 --> 00:04:59,240 e, então, mergulhar CS50 Finanças. 78 00:04:59,240 --> 00:05:02,650 >> Nós temos um par de - temos algumas funcionalidades, basicamente, 79 00:05:02,650 --> 00:05:05,130 para implementar neste site. 80 00:05:05,130 --> 00:05:10,440 Queremos permitir que os usuários se registrem no nosso site com um nome de usuário e uma senha. 81 00:05:10,440 --> 00:05:13,670 Queremos permitir que procurar uma cotação, 82 00:05:13,670 --> 00:05:19,330 e então nós imprimir o nome da citação, bem como o preço atual, que está. 83 00:05:19,330 --> 00:05:26,830 Queremos permitir-lhes ver um portfólio de todas as ações que eles compraram até agora. 84 00:05:26,830 --> 00:05:34,240 Queremos também que lhes permitam comprar ações, bem como vendê-los. 85 00:05:34,240 --> 00:05:37,540 E então, finalmente, queremos permitir que eles vejam a história 86 00:05:37,540 --> 00:05:39,490 de todas as operações que eles fizeram. 87 00:05:39,490 --> 00:05:41,540 Então, finalmente, depois de ter implementado de tudo isso, 88 00:05:41,540 --> 00:05:45,110 então você é livre para implementar um recurso extra. 89 00:05:45,110 --> 00:05:46,610 Vamos para aqueles. 90 00:05:46,610 --> 00:05:51,330 Aqueles podem ser tanto permitindo aos usuários obter dinheiro extra, depositando o dinheiro extra, 91 00:05:51,330 --> 00:05:54,550 ou você poderia permitir-lhes alterar sua senha, ou algo assim, 92 00:05:54,550 --> 00:06:00,590 enviá-las um recibo quando comprar ou vender uma ação. 93 00:06:00,590 --> 00:06:05,370 Há uma lista limitada de recursos que você pode implementar-se, 94 00:06:05,370 --> 00:06:08,340 de modo que é a última. 95 00:06:08,340 --> 00:06:13,430 >> Uma vez que este é um site, vocês também têm muita liberdade para personalizá-lo. 96 00:06:13,430 --> 00:06:20,960 Nós fornecemos um código CSS, mas você está definitivamente livre para ajustá-lo, 97 00:06:20,960 --> 00:06:26,680 torná-la mais agradável, mas que lhe está subjacente é uma funcionalidade básica 98 00:06:26,680 --> 00:06:30,310 por isso sempre consulte a especificação sobre o que você realmente precisa incluir lá. 99 00:06:30,310 --> 00:06:39,940 Após a especificação, vamos estar usando o aparelho como também um servidor. 100 00:06:39,940 --> 00:06:43,910 Vai estar hospedando nosso site para nós, em seu servidor local. 101 00:06:43,910 --> 00:06:49,750 Se você seguir estas instruções e descompacte o código pset 7 de distribuição 102 00:06:49,750 --> 00:06:53,500 em sua pasta de host virtual host / local, 103 00:06:53,500 --> 00:07:02,470  então você pode apenas visitar http://localhost/ no Google Chrome no aparelho, 104 00:07:02,470 --> 00:07:09,120 e então você atingir o código em que você escreveu pset 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 vem com um monte de código, distribuição 106 00:07:14,490 --> 00:07:18,330 e espero que we've - através de todos os Série de Exercícios antes deste - 107 00:07:18,330 --> 00:07:21,700 habituou-nos a leitura através de código de distribuição, 108 00:07:21,700 --> 00:07:25,650 compreender quais as funções já são fornecidos, e como podemos ser capazes de usar 109 00:07:25,650 --> 00:07:29,470 aqueles e as outras funções que nós vamos estar implementando. 110 00:07:29,470 --> 00:07:31,570 Neste caso, temos três pastas. 111 00:07:31,570 --> 00:07:36,350 Nós temos uma pasta HTML, um inclui pasta, e uma pasta de modelos. 112 00:07:36,350 --> 00:07:40,630 O que vamos fazer com este tipo de pset é separar o pensamento - 113 00:07:40,630 --> 00:07:45,580 o pensamento de programação - do código PHP com o aspecto visual real. 114 00:07:45,580 --> 00:07:52,690 Nós vamos ter um arquivo PHP que faz todo o pensamento, lê no banco de dados, 115 00:07:52,690 --> 00:07:55,620 imprime coisas, tem se declarações - coisas assim - 116 00:07:55,620 --> 00:08:02,140 e depois que vou passar os dados para o nosso arquivo de modelo - ou arquivo template.php. 117 00:08:02,140 --> 00:08:05,710 O que vai fazer é ler os dados e, em seguida, ele vai imprimi-lo. 118 00:08:05,710 --> 00:08:09,550 >> Podemos tratar modelos como "burro" em que nós realmente não quero que eles 119 00:08:09,550 --> 00:08:12,370 estar fazendo um monte de trabalho para calcular as coisas. 120 00:08:12,370 --> 00:08:16,330 Queremos que os nossos controladores para fazer isso. 121 00:08:16,330 --> 00:08:21,610 Um pouco sobre isso - vamos dar uma olhada em alguns dos códigos de distribuição. 122 00:08:21,610 --> 00:08:28,250 Aqui nós temos o nosso arquivo index.html, e é muito vazio. 123 00:08:28,250 --> 00:08:34,429 Essencialmente, o que ele faz - diz, bem, eu vou exigir que o arquivo configuration.php. 124 00:08:34,429 --> 00:08:40,120 Nós não vemos isso aí, mas é basicamente chamando o arquivo configuration.php, 125 00:08:40,120 --> 00:08:42,240 e executar isso. 126 00:08:42,240 --> 00:08:45,130 Depois que ele faz isso, ele vai tornar a carteira. 127 00:08:45,130 --> 00:08:49,310 Escutar é uma função, então sempre que estamos em um controlador, 128 00:08:49,310 --> 00:08:56,490 vamos chamar render, nós vamos dar-lhe o arquivo e, em seguida, os dados que estamos passando em, 129 00:08:56,490 --> 00:09:04,570 de modo que ele vai chamar em espécie portfolio.php-de passagem em que os dados, de modo que a carteira pode lidar com isso. 130 00:09:04,570 --> 00:09:10,540 >> E agora, aqui, temos a nossa forma login.php. 131 00:09:10,540 --> 00:09:17,540  Este é o controlador que basicamente cuida da exploração madeireira dentro 132 00:09:17,540 --> 00:09:29,090 Aqui, ele verifica se um formulário foi enviado a este arquivo e lida com a validação do envio. 133 00:09:29,090 --> 00:09:31,990 Nós vamos olhar para essa função se desculpar. 134 00:09:31,990 --> 00:09:35,100 Quando queremos imprimir uma mensagem de erro, 135 00:09:35,100 --> 00:09:39,550 usamos desculpas e que irá redirecionar o usuário para uma página específica 136 00:09:39,550 --> 00:09:42,530 que irá imprimir a mensagem de erro específica que nós indicamos. 137 00:09:42,530 --> 00:09:47,860 Continuando, ele irá consultar o banco de dados - nós entrar em mais do que mais tarde. 138 00:09:47,860 --> 00:09:54,180 Então você vê que aqui se um formulário não foi apresentado, em seguida, ele processa um formulário. 139 00:09:54,180 --> 00:10:01,360 Isso significa que ele vai para login_form.php, então vamos olhar para isso. 140 00:10:01,360 --> 00:10:09,400 >> Login.php é realmente onde nós vemos o tráfico de HTML com o aspecto visual real. 141 00:10:09,400 --> 00:10:15,130 Aqui temos um tag de entrada para o nome do usuário, uma entrada para a senha, 142 00:10:15,130 --> 00:10:16,630 bem como um botão de envio. 143 00:10:16,630 --> 00:10:22,660 Isso é realmente onde o aspecto visual eo formulário HTML vai ser realizada. 144 00:10:22,660 --> 00:10:27,550 Aqui, ele diz que vai ser apresentada por um determinado método, chamado post. 145 00:10:27,550 --> 00:10:30,190 Nós vamos para as diferenças entre os métodos - 146 00:10:30,190 --> 00:10:33,240 postar contra obter, também há algo chamado colocar - 147 00:10:33,240 --> 00:10:36,160 vamos entrar nesses métodos mais tarde, mas para o interesse deste pset, 148 00:10:36,160 --> 00:10:37,810 Eu altamente incentivá-lo a usar post. 149 00:10:37,810 --> 00:10:42,210 >> Sabemos que, basicamente, uma vez que este formulário é enviado - 150 00:10:42,210 --> 00:10:44,650 de login_form.php - 151 00:10:44,650 --> 00:10:50,850 em seguida, ele vai para a ação - login.php - 152 00:10:50,850 --> 00:10:56,070 basicamente, passar em todos esses parâmetros desses formulários em login.php. 153 00:10:56,070 --> 00:11:04,900 Os resultados de forma que estão contidos dentro dessa matriz associativa de pós. 154 00:11:04,900 --> 00:11:11,710 Os índices dos diferentes elementos na matriz pós 155 00:11:11,710 --> 00:11:15,290 são exatamente o que você especificar aqui. 156 00:11:15,290 --> 00:11:19,240 Você diz que o nome da entrada é de nome de usuário. O nome desta é uma senha. 157 00:11:19,240 --> 00:11:26,840 Da mesma forma, você vê o nome de usuário como o índice do array associativo lá. 158 00:11:26,840 --> 00:11:35,110 Se formos para a pasta inclui, temos este arquivo funções que vai ser muito útil. 159 00:11:35,110 --> 00:11:37,570 >> Todas estas funções são implementadas para você. 160 00:11:37,570 --> 00:11:41,870 Você não precisa especificamente implementar qualquer um desses mesmo, 161 00:11:41,870 --> 00:11:43,140 mas eles vão bastante útil. 162 00:11:43,140 --> 00:11:49,450 Nós temos desculpas, que, como eu disse antes, será, basicamente, imprimir uma mensagem de erro 163 00:11:49,450 --> 00:11:52,920 para você em uma página específica - apology.php. 164 00:11:52,920 --> 00:11:59,890 Então, temos de despejo, por isso, se você acabou de chamar de despejo e, em seguida, passar a variável, 165 00:11:59,890 --> 00:12:04,930 em seguida, ele o levará para uma página que irá exibir essa variável para você. 166 00:12:04,930 --> 00:12:09,950 Então nós temos logout, que, basicamente, acabar com a sessão de um determinado usuário do. 167 00:12:09,950 --> 00:12:12,240 Pesquisa vai ser útil. 168 00:12:12,240 --> 00:12:15,870 Como estamos lidando com citações e ações, nós vamos ser capazes - 169 00:12:15,870 --> 00:12:17,650 e é essencialmente tempo real. 170 00:12:17,650 --> 00:12:21,380 Precisamos saber o que esses valores das ações são, 171 00:12:21,380 --> 00:12:28,210 por isso temos a função de pesquisa que lida com a documentação do Yahoo estoques. 172 00:12:28,210 --> 00:12:37,700 Uma vez que você olhar para um determinado símbolo de uma ação, ele irá retornar para você o símbolo de ações 173 00:12:37,700 --> 00:12:41,480 bem como o nome eo preço atual do estoque. 174 00:12:41,480 --> 00:12:44,330 Essa é a função de pesquisa. 175 00:12:44,330 --> 00:12:48,350 >> Então estamos lidando com o MySQL, 176 00:12:48,350 --> 00:12:53,970 então nós vamos estar querendo executar determinadas consultas em nosso banco de dados SQL. 177 00:12:53,970 --> 00:12:58,890 Temos consulta para lidar - a espécie de resumo de alguns isso. 178 00:12:58,890 --> 00:13:03,200 Nós vamos estar passando na seqüência de toda a nossa consulta SQL - 179 00:13:03,200 --> 00:13:05,360 e todas as variáveis ​​que vão nele - 180 00:13:05,360 --> 00:13:09,480 eo que este faz é realmente executar isso por nós. 181 00:13:09,480 --> 00:13:15,070 Em vez de ter que escrever tudo isso a cada vez que você deseja consultar - 182 00:13:15,070 --> 00:13:21,740 por obter todos os resultados de que a consulta - 183 00:13:21,740 --> 00:13:24,740 então você pode apenas chamar a função de consulta, e ele vai voltar para você - 184 00:13:24,740 --> 00:13:28,750 dependendo do que você está usando para sua consulta - 185 00:13:28,750 --> 00:13:33,000 provavelmente uma fileira de todos os resultados que correspondem a consulta ou similar. 186 00:13:33,000 --> 00:13:34,690 Mais sobre isso mais tarde, porém. 187 00:13:34,690 --> 00:13:41,200 >> Finalmente, temos de redirecionamento, que, como o nome sugere, redireciona para uma página diferente. 188 00:13:41,200 --> 00:13:46,280 E então nós temos render, que nós vamos estar chamando um par de vezes. 189 00:13:46,280 --> 00:13:51,010 Quando você está em um controlador, você chama tornar na página do modelo 190 00:13:51,010 --> 00:13:55,390 e, em seguida, passar os valores que o modelo irá lidar com eles. 191 00:13:55,390 --> 00:13:59,540 Esses valores são, provavelmente, vai ser lidar com o tipo de saída que você deseja 192 00:13:59,540 --> 00:14:01,050 para ser mostrado em sua página do modelo. 193 00:14:01,050 --> 00:14:09,370 Okay. Aqueles são as funções, e há muito mais a este código de distribuição. 194 00:14:09,370 --> 00:14:12,930 Convido você a passar por isso e explorá-lo você mesmo. 195 00:14:12,930 --> 00:14:17,050 Além disso, a especificação provavelmente levá-lo através de alguns outros elementos do código de distribuição. 196 00:14:17,050 --> 00:14:27,360 Aqui está um resumo das funções encontradas em functions.php. 197 00:14:27,360 --> 00:14:31,710 >> Okay. A primeira tarefa é permitir que os usuários se registrem no site. 198 00:14:31,710 --> 00:14:34,860 Agora, há um formulário de login no site, 199 00:14:34,860 --> 00:14:40,080 e você é fornecido com alguns usuários com senhas. 200 00:14:40,080 --> 00:14:42,130 Você pode usar os nomes de usuário e login, 201 00:14:42,130 --> 00:14:45,140 mas você deseja permitir que as pessoas façam suas próprias usernames 202 00:14:45,140 --> 00:14:47,390 e adicione-se ao site. 203 00:14:47,390 --> 00:14:53,070 O layout de registro é bastante semelhante ao formulário de login, 204 00:14:53,070 --> 00:14:56,340 exceto o nome de usuário não é pré-existente, 205 00:14:56,340 --> 00:14:59,430 eo usuário também precisa fornecer uma nova senha, 206 00:14:59,430 --> 00:15:02,440 e em seguida, normalmente temos uma confirmação de senha. 207 00:15:02,440 --> 00:15:06,580 Uma vez que todas as entradas do usuário de que a informação, 208 00:15:06,580 --> 00:15:10,620 queremos adicioná-los ao nosso banco de dados de usuários. 209 00:15:10,620 --> 00:15:12,970 Nós vamos ter um banco de dados - um banco de dados SQL - 210 00:15:12,970 --> 00:15:14,470 que vamos referenciar. 211 00:15:14,470 --> 00:15:18,140 Nesse banco de dados, nós vamos ter uma tabela com todos os usuários 212 00:15:18,140 --> 00:15:23,850 contendo o seu nome de usuário, sua senha, e também quanto dinheiro eles têm. 213 00:15:23,850 --> 00:15:28,480 >> No registo, queremos permitir que insira-o. 214 00:15:28,480 --> 00:15:29,740 Queremos mostrar que o formulário. 215 00:15:29,740 --> 00:15:32,210 Nós queremos ter certeza de que a sua senha - 216 00:15:32,210 --> 00:15:37,490 que eles entraram um, e depois também que as senhas coincidem quando eles entrarem duas vezes. 217 00:15:37,490 --> 00:15:42,240 Depois de tudo isso é feito - assumindo que esses erros são verificados - 218 00:15:42,240 --> 00:15:45,120 então queremos adicionar os usuários para o nosso banco de dados. 219 00:15:45,120 --> 00:15:49,630 Finalmente, depois de ter registado, é muito conveniente se você não precisa se logar novamente 220 00:15:49,630 --> 00:15:51,000 Uma vez registrado, 221 00:15:51,000 --> 00:15:54,000 por isso estamos indo para registrá-los no site se eles registrados com êxito. 222 00:15:54,000 --> 00:16:00,360 >> A primeira tarefa é para exibir o formulário, e isso é realmente vai ser - 223 00:16:00,360 --> 00:16:04,920 esse processo de registro inteiro vai ser modelado bem de perto após o login 224 00:16:04,920 --> 00:16:10,510 exceto em vez de login.php você pode ter register.php. 225 00:16:10,510 --> 00:16:14,300 Em vez de login_form.php-que é o modelo - 226 00:16:14,300 --> 00:16:16,030 você terá registar formulário. 227 00:16:16,030 --> 00:16:19,680 Você vai querer adicionar mais um campo - um campo de confirmação de senha - 228 00:16:19,680 --> 00:16:23,450 em vez de apenas um nome de usuário ea senha de um. 229 00:16:23,450 --> 00:16:28,120 Em seguida, queremos verificar se as senhas coincidem ou estão em branco. 230 00:16:28,120 --> 00:16:38,560 Temos o controlador - register.php-que vai cuidar de fazer essas verificações. 231 00:16:38,560 --> 00:16:41,690 Quando um formulário é enviado através do método post, 232 00:16:41,690 --> 00:16:47,050 em seguida, todas as variáveis ​​são contidos dentro da matriz de posto. 233 00:16:47,050 --> 00:16:52,280 Você quer ter certeza de que o valor da matriz posto no índice de senha 234 00:16:52,280 --> 00:16:58,080 corresponde ao elemento de confirmação. 235 00:16:58,080 --> 00:16:59,410 Você quer ter certeza de que eles não estão em branco, 236 00:16:59,410 --> 00:17:01,650 e você quer ter certeza de que eles são a mesma coisa. 237 00:17:01,650 --> 00:17:05,960 >> Uma coisa conveniente sobre o PHP é que não precisa usar string compare mais. 238 00:17:05,960 --> 00:17:08,410 Podemos usar o operador igual é igual 239 00:17:08,410 --> 00:17:11,470  para verificar se as cadeias são iguais um ao outro. 240 00:17:11,470 --> 00:17:14,960 Para o tratamento de erros, você vai querer se desculpar. 241 00:17:14,960 --> 00:17:17,150 Para se desculpar, você simplesmente chamar a função 242 00:17:17,150 --> 00:17:21,910  e especifique um tipo de mensagem que você deseja para a saída. 243 00:17:21,910 --> 00:17:24,630 Você, então, deseja adicionar o usuário para o banco de dados. 244 00:17:24,630 --> 00:17:30,880 Até agora, tudo o que tenho feito é apenas lidar localmente com os resultados do formulário. 245 00:17:30,880 --> 00:17:33,940 Agora, nós realmente deseja adicioná-los para o nosso banco de dados. 246 00:17:33,940 --> 00:17:38,890 Para isso, primeiro quer ter certeza de que o usuário não está em branco. 247 00:17:38,890 --> 00:17:44,550 Entenda que em um site, você não pode ter vários usuários com o mesmo nome, 248 00:17:44,550 --> 00:17:50,010 assim que você vai querer ter certeza de que quando você inserir algo em seu banco de dados - 249 00:17:50,010 --> 00:17:56,650 inserir um novo usuário - então você não obtiver uma colisão entre um nome de usuário pré-existente 250 00:17:56,650 --> 00:17:59,150 eo nome do usuário que o usuário está tentando enviar. 251 00:17:59,150 --> 00:18:02,250 Para isso, uma vez que você executar uma consulta - 252 00:18:02,250 --> 00:18:08,760 inserção de um determinado usuário com sua senha e um montante inicial de dinheiro - 253 00:18:08,760 --> 00:18:15,140 uma vez que você chama isso de consulta, então o MySQL irá realmente retornar false se ele falhar. 254 00:18:15,140 --> 00:18:21,050 >> A estrutura de usuários é tal que o nome de usuário é um valor único, 255 00:18:21,050 --> 00:18:22,540 então você não pode ter mais de um. 256 00:18:22,540 --> 00:18:30,080 Quando você tentar inserir uma nova linha com um nome que já existe, 257 00:18:30,080 --> 00:18:34,470 que vai retornar falso - como um falso valor booleano. 258 00:18:34,470 --> 00:18:45,320 Uma coisa complicada aqui é que você vai querer verificar se o resultado é o resultado de sua consulta. 259 00:18:45,320 --> 00:18:52,320 Se ele falhar, então você vai querer verificar com o operador triple-iguais. 260 00:18:52,320 --> 00:18:55,420 Isso está realmente acontecendo para verificar se há uma falha ou não, 261 00:18:55,420 --> 00:19:02,760 Considerando que, em apenas um simples iguala-iguais, seria verdadeiro se a linha estava vazio. 262 00:19:02,760 --> 00:19:06,000 O resultado de uma falha, se houver uma colisão entre nomes de usuário 263 00:19:06,000 --> 00:19:10,350 é o valor real falso. 264 00:19:10,350 --> 00:19:15,230 >> Aqui está como você iria inserir em um banco de dados. 265 00:19:15,230 --> 00:19:19,220 Aqui é a consulta que você deve executar estritamente em SQL. 266 00:19:19,220 --> 00:19:25,750 Uma coisa é que você pode realmente ir para o site que gerencia o banco de dados SQL 267 00:19:25,750 --> 00:19:31,070 e brincar lá digitando manualmente valores ou linhas. 268 00:19:31,070 --> 00:19:34,540 Ele irá mostrar o que a saída SQL é. 269 00:19:34,540 --> 00:19:38,870 Você também pode executar comandos SQL dentro de seu banco de dados 270 00:19:38,870 --> 00:19:42,200  e depois ver o que a sintaxe pode ser, 271 00:19:42,200 --> 00:19:46,790 e depois traduzir isso em função de consulta que temos em pset 7, 272 00:19:46,790 --> 00:19:51,120 que vai ser muito semelhante ao das consultas que você realmente executados. 273 00:19:51,120 --> 00:19:54,570 >> Se eu queria inserir uma nova linha em minha tabela de usuários, 274 00:19:54,570 --> 00:20:01,240 então gostaria de especificar inserção em usuários, que é o nome da minha mesa. 275 00:20:01,240 --> 00:20:06,870 Então gostaria de especificar os nomes das colunas. 276 00:20:06,870 --> 00:20:13,230 Então eu iria fornecer os valores junto com a minha senha. 277 00:20:13,230 --> 00:20:17,080 Senhas em nossa tabela de usuários não são armazenados apenas como seqüência de caracteres. 278 00:20:17,080 --> 00:20:19,440 Eles são armazenados como a versão criptografada, 279 00:20:19,440 --> 00:20:24,560 de forma que você deseja executar a função crypt na senha real, 280 00:20:24,560 --> 00:20:29,680 e que vai lhe dar o tipo correto de armazenamento para a matriz usuários. 281 00:20:29,680 --> 00:20:34,960 Executar este irá inserir uma nova linha em sua tabela de usuários. 282 00:20:34,960 --> 00:20:39,020 >> Para lidar com a função de consulta, 283 00:20:39,020 --> 00:20:43,100 antes em C usamos o sinal de porcentagem como um espaço reservado. 284 00:20:43,100 --> 00:20:47,670 Da mesma forma, o mesmo conceito de um espaço reservado se aplica aqui. 285 00:20:47,670 --> 00:20:50,720 Com consulta, você especificar a consulta inteira, 286 00:20:50,720 --> 00:20:55,510 exceto quando você está lidando com variáveis ​​como o seu contributo para a consulta, 287 00:20:55,510 --> 00:21:00,490 em seguida, em vez de realmente colocá-los dentro - como quando tivemos declarações printf em C. 288 00:21:00,490 --> 00:21:03,740 Gostaríamos de colocar a corda e depois ter um espaço reservado, e então após cada 289 00:21:03,740 --> 00:21:06,990 vírgula, especificar qual variável que tínhamos. 290 00:21:06,990 --> 00:21:14,480 Aqui, nós estamos indo para usar o sinal de interrogação como o nosso espaço reservado 291 00:21:14,480 --> 00:21:21,670 e, em seguida, passar em cada variável, respectivamente, de modo, os espaços reservados - 292 00:21:21,670 --> 00:21:24,420 onde essas variáveis ​​devem ir. 293 00:21:24,420 --> 00:21:29,470 Então, aqui, o primeiro ponto de interrogação seria substituído pelo nome de usuário real 294 00:21:29,470 --> 00:21:33,610 em seguida, o ponto de interrogação segunda pela senha. 295 00:21:33,610 --> 00:21:37,000 >> Então, finalmente, uma vez que você registrou e adicionado ao banco de dados, 296 00:21:37,000 --> 00:21:40,510 então você quer registrá-los no site. 297 00:21:40,510 --> 00:21:45,320 Temos uma espécie de super-sessão global variável chamada. 298 00:21:45,320 --> 00:21:48,160 Session leva um certo ID, 299 00:21:48,160 --> 00:21:51,750 e que corresponde à ID do usuário que está atualmente logado pol 300 00:21:51,750 --> 00:21:56,380 O que você quer fazer é encontrar o seu ID de usuário é 301 00:21:56,380 --> 00:22:03,710 e defina que o ID da sessão como ID de que determinado usuário. 302 00:22:03,710 --> 00:22:07,560 Uma função que você vai querer usar aqui é um comando SQL 303 00:22:07,560 --> 00:22:15,150 que irá recuperar o número de identificação último inserido na sua mesa. 304 00:22:15,150 --> 00:22:24,560 Então vai chamar linhas - isto chamar o ID - isto atribuir um nome para o número que ele retorna. 305 00:22:24,560 --> 00:22:27,900 Ele vai chamar isso de id. 306 00:22:27,900 --> 00:22:33,370 Agora que já terminou registar, e podemos passar para citar. 307 00:22:33,370 --> 00:22:36,610 >> Citação permite que um usuário insira o nome de uma determinada ação, 308 00:22:36,610 --> 00:22:41,940 e então ele vai voltar as qualidades desse estoque. 309 00:22:41,940 --> 00:22:48,410 O que você vai querer fazer aqui é ter um controlador e alguns modelos. 310 00:22:48,410 --> 00:22:53,380 Neste caso, nós vamos ter um controlador que vai fazer todo o pensamento para nós. 311 00:22:53,380 --> 00:23:01,210 Vai procurar o símbolo e, em seguida, passar valores para os modelos que irá imprimir. 312 00:23:01,210 --> 00:23:03,060 Nós vamos ter dois modelos aqui. 313 00:23:03,060 --> 00:23:07,260 Nós vamos ter um modelo que fornece a forma em que os usuários estão indo para 314 00:23:07,260 --> 00:23:09,920 nome de entrada do estoque - o nome da ação. 315 00:23:09,920 --> 00:23:16,030 Então nós também vamos querer outro modelo que exibe esses valores. 316 00:23:16,030 --> 00:23:27,450 Você pode olhar para login de um exemplo de como você teria um formulário que aceita entrada, 317 00:23:27,450 --> 00:23:30,060 exceto aqui, nós só queremos um campo. 318 00:23:30,060 --> 00:23:31,630 Nós não queremos um nome de usuário e um campo de senha. 319 00:23:31,630 --> 00:23:37,110 Nós só queremos um campo de texto que permite ao usuário inserir o nome de um determinado. 320 00:23:37,110 --> 00:23:40,110 Então você quer enviar os dados - uma vez que você olhou para que o estoque - 321 00:23:40,110 --> 00:23:45,550 para quote_form.php. 322 00:23:45,550 --> 00:23:50,780 Lookup devolverá o símbolo de uma ação, o nome, e um preço. 323 00:23:50,780 --> 00:23:53,910 Aqueles estão contidos dentro de um array associativo. 324 00:23:53,910 --> 00:24:01,390 Olhe-se a função de pesquisa dentro do functions.php para mais informações 325 00:24:01,390 --> 00:24:04,010 sobre os tipos de retorno daqueles. 326 00:24:04,010 --> 00:24:08,520 >> Ótimo! Então, finalmente, você vai querer exibir as informações de estoque. 327 00:24:08,520 --> 00:24:14,110 Você provavelmente vai querer exibir - você deseja acessar essas variáveis. 328 00:24:14,110 --> 00:24:17,610 Depois de ter o preço em uma variável - 329 00:24:17,610 --> 00:24:20,860 , bem como o nome e o símbolo - 330 00:24:20,860 --> 00:24:25,550 então você vai querer exibir aqueles em sua página do modelo. 331 00:24:25,550 --> 00:24:31,540 Esse modelo de página poderia ser chamado show_quote.php ou algo assim. 332 00:24:31,540 --> 00:24:39,660 Sua página quote.php tornaria citação show e depois passar em todos esses valores. 333 00:24:39,660 --> 00:24:47,170 Então, em sua página php, você realmente imprimir esses valores para o aspecto HTML da página. 334 00:24:47,170 --> 00:24:53,800 É só usar a função de impressão e passar no preço. 335 00:24:53,800 --> 00:24:57,990 Existem 2 maneiras - você pode concatenar com o operador ponto, 336 00:24:57,990 --> 00:25:02,230 ou usar um espaço reservado. 337 00:25:07,580 --> 00:25:12,750 >> Os usuários, eventualmente, vão ser de compra e venda de ações. 338 00:25:12,750 --> 00:25:18,450 Queremos permitir-lhes alguma forma de ver todas as ações que têm actualmente. 339 00:25:18,450 --> 00:25:21,350 Vamos chamar isso de sua carteira. 340 00:25:21,350 --> 00:25:26,180 Carteira seria, presumivelmente, para cada usuário, conter um monte de linhas 341 00:25:26,180 --> 00:25:31,760 listando o tipo de ação que eles têm e, então, como muitos daqueles que têm. 342 00:25:31,760 --> 00:25:36,500 Nossa mesa existente - agora temos uma tabela de usuários em nosso banco de dados. 343 00:25:36,500 --> 00:25:41,780 Que contém o nome de usuário, assim como sua senha e quanto dinheiro eles têm. 344 00:25:41,780 --> 00:25:50,390 Não há nenhuma maneira real de armazenar todas as suas ações dentro disso. 345 00:25:50,390 --> 00:25:58,010 Não é como podemos inserir novas colunas para cada estoque. 346 00:25:58,010 --> 00:26:03,650 Isso seria uma linha muito, muito tempo, porque temos uma quantidade infinita 347 00:26:03,650 --> 00:26:06,200 de tipos de ações que poderiam ter. 348 00:26:06,200 --> 00:26:09,150 Assim, em vez que nós vamos fazer é dentro do mesmo banco de dados, 349 00:26:09,150 --> 00:26:15,000 vamos ter uma tabela de usuários, mas em seguida, também teremos uma tabela carteira. 350 00:26:15,000 --> 00:26:18,430 A tabela a carteira será definitivamente ligada à tabela de usuários, 351 00:26:18,430 --> 00:26:24,600 mas a estrutura da tabela carteira terá as informações sobre ações, 352 00:26:24,600 --> 00:26:27,780 quantas partes de que o estoque o usuário tem, 353 00:26:27,780 --> 00:26:31,620 , bem como um número de ID de utilizador particular. 354 00:26:31,620 --> 00:26:34,620 Você tem a tabela de usuários que tem o id, bem como o nome de usuário, o hash - 355 00:26:34,620 --> 00:26:40,130 qual é a senha, a senha criptografada - 356 00:26:40,130 --> 00:26:42,130 e, em seguida, a quantidade de dinheiro que eles têm. 357 00:26:42,130 --> 00:26:47,900 O número de identificação estaria ligado ao número de identificação da carteira. 358 00:26:47,900 --> 00:26:52,490 A carteira teria apenas o símbolo do estoque, bem como as ações - 359 00:26:52,490 --> 00:26:55,410 o número de ações de que o estoque que o usuário tem. 360 00:26:55,410 --> 00:26:58,520 Nesta tabela portfolio você teria basicamente 361 00:26:58,520 --> 00:27:03,760 todas as ações possuídas por todos os usuários do seu site. 362 00:27:03,760 --> 00:27:10,550 Mais tarde, especificar apenas partes de um determinado usuário - somente sua carteira - 363 00:27:10,550 --> 00:27:15,360 você recuperar os valores da tabela de seu portfólio de tal modo que 364 00:27:15,360 --> 00:27:19,930 o número de identificação é específico para esse usuário. 365 00:27:26,520 --> 00:27:34,890 >> Quando você exibir a carteira, você quer denunciar cada uma das ações em carteira do usuário. 366 00:27:34,890 --> 00:27:41,670 Você vai querer informar o número de ações eo valor atual das ações. 367 00:27:41,670 --> 00:27:45,950 Que o valor actual das referidas acções não são armazenados na tabela de carteira 368 00:27:45,950 --> 00:27:51,640 porque isso vai estar atualizando - no mínimo - a cada dia pelo Yahoo. 369 00:27:51,640 --> 00:27:58,550 Para obter essa informação, você não pode fazer referência que a partir de sua consulta SQL. 370 00:27:58,550 --> 00:28:02,400 Qual a função que fornece para nós? Que função terá o preço? 371 00:28:02,400 --> 00:28:09,110 Isso é pesquisa, portanto, usando pesquisa em um símbolo particular vai lhe dar um monte de informações. 372 00:28:09,110 --> 00:28:13,710 Ele vai lhe dar três peças de informação - o nome, o símbolo, assim como o preço. 373 00:28:13,710 --> 00:28:17,490 Depois de procurar um determinado símbolo, então você pode obter o preço, 374 00:28:17,490 --> 00:28:20,460 e então você pode usar o preço a ser exibido em seu portfólio. 375 00:28:20,460 --> 00:28:26,190 >> A carteira também deve exibir saldo do usuário de caixa atual. 376 00:28:26,190 --> 00:28:30,310 Esse campo é armazenada dentro de sua tabela de usuários. 377 00:28:30,310 --> 00:28:33,400 Então lembrando de como estamos, basicamente, ter que - 378 00:28:33,400 --> 00:28:36,850 estamos tendo diferentes tipos de arquivos PHP. 379 00:28:36,850 --> 00:28:40,160 Nós vamos ter um controlador que basicamente faz todo o pensamento para você. 380 00:28:40,160 --> 00:28:45,940 E então nós temos um modelo no qual o modelo lida com saída de dados. 381 00:28:45,940 --> 00:28:50,790 Você tem que pensar no que as variáveis ​​do controlador precisará tomar polegadas 382 00:28:50,790 --> 00:29:01,630 Se estamos lidando com um portfólio que gera todo o nome, símbolo e número de partes, 383 00:29:01,630 --> 00:29:03,730 bem como o preço atual de uma ação, 384 00:29:03,730 --> 00:29:06,950 em seguida, você vai querer encontrar uma forma de, basicamente, passando - 385 00:29:06,950 --> 00:29:12,070 você pode passar em uma matriz de valores que correspondem a esse. 386 00:29:15,250 --> 00:29:24,360 >> Vamos para um exemplo de como você pode recuperar todas as ações 387 00:29:24,360 --> 00:29:26,210 propriedade de um usuário em particular. 388 00:29:26,210 --> 00:29:31,400 Isto não está lidando - ainda - com o preço das ações. 389 00:29:31,400 --> 00:29:33,520 O que isto iria fazer é executar uma consulta. 390 00:29:33,520 --> 00:29:37,070 Seria obter o símbolo, bem como as partes de - 391 00:29:37,070 --> 00:29:42,770 Eu estou chamando esta tabela, mas, neste caso, o que seria? 392 00:29:42,770 --> 00:29:49,400 Qual é o nome da tabela que estamos lidando com que tem símbolo e partes 393 00:29:49,400 --> 00:29:52,280 para um usuário específico? 394 00:29:52,280 --> 00:29:56,410 É usuários ou carteira. 395 00:29:56,410 --> 00:29:57,820 Carteira. 396 00:29:57,820 --> 00:30:03,220 O que isso faria é portfolio de consulta para os símbolos e as partes 397 00:30:03,220 --> 00:30:04,920 para um usuário específico. 398 00:30:04,920 --> 00:30:09,260 Aqui, eu digo, (símbolo SELECT, ações de tbl - 399 00:30:09,260 --> 00:30:12,280 mas em vez de mesa, você vai substituir aquele com carteira. 400 00:30:12,280 --> 00:30:15,220 "Onde" é basicamente a minha condição. 401 00:30:15,220 --> 00:30:21,050 Eu estou dizendo que eu só quero obter essas matrizes associativas que correspondem 402 00:30:21,050 --> 00:30:23,850  a esta condição seguinte - id iguais. 403 00:30:23,850 --> 00:30:27,600  Então eu estou colocando um espaço reservado lá e depois id da sessão. 404 00:30:27,600 --> 00:30:36,720 O que isso iria fazer é dizer para cada linha em linhas. 405 00:30:36,720 --> 00:30:40,940 Esta é uma maneira elegante em vez de realmente ter de criar um loop 406 00:30:40,940 --> 00:30:47,450 que itera sobre todos os índices, em seguida, em PHP você pode ter um para-cada loop. 407 00:30:47,450 --> 00:30:53,520 >> Se você tem uma determinada matriz, então você pode dizer que eu vou ligar para cada elemento sucessivo - 408 00:30:53,520 --> 00:30:57,930 Eu vou ligar para cada elemento este nome. 409 00:30:57,930 --> 00:31:02,780 Assim, para cada um destes elementos, eu vou chamá-los de presente, 410 00:31:02,780 --> 00:31:04,500 então eu posso fazer isso. 411 00:31:04,500 --> 00:31:10,370 Neste para cada um, você tem linhas como sua matriz real, e cada linha que vai ligar linha. 412 00:31:10,370 --> 00:31:12,420 Toda vez que ele executa o corpo, 413 00:31:12,420 --> 00:31:16,960 ele vai subir e vai atualizar a linha para o próximo elemento em linhas. 414 00:31:18,900 --> 00:31:25,260 >> Agora, em termos de compra de stocks, 415 00:31:25,260 --> 00:31:29,500 o que nós queremos fazer é obter o estoque que o usuário quer comprar 416 00:31:29,500 --> 00:31:35,300 ea quantidade de ações que o usuário quer comprar, e depois - se quiserem - 417 00:31:35,300 --> 00:31:38,120 acrescentar que ações para sua carteira. 418 00:31:38,120 --> 00:31:40,310 Obviamente, se eles estão comprando algo, então isso vai diminuir 419 00:31:40,310 --> 00:31:43,520 a quantidade de dinheiro que eles têm, a fim de que vai diminuir o seu dinheiro. 420 00:31:43,520 --> 00:31:48,380 Nós vamos estar lidando com a atualização da carteira, bem como a tabela de usuários, 421 00:31:48,380 --> 00:31:50,300 o qual contém o dinheiro. 422 00:31:50,300 --> 00:31:54,920 Mas, primeiro, você precisa para obter o estoque real ea quantidade de ações que o usuário quer. 423 00:31:54,920 --> 00:32:00,010 Para isso, você vai precisar de um formulário HTML que vai pedir para o símbolo do estoque 424 00:32:00,010 --> 00:32:03,360 que deseja comprar, bem como o número de ações. 425 00:32:03,360 --> 00:32:08,300 Então você quer adicionar. 426 00:32:08,300 --> 00:32:13,750 Você vai querer selecionar determinados valores. 427 00:32:13,750 --> 00:32:19,670 Passamos por isso um pouco já, mas quando você está tentando obter determinadas linhas - 428 00:32:19,670 --> 00:32:22,020 recuperar determinadas linhas da tabela SQL, 429 00:32:22,020 --> 00:32:24,290 esta é a seguinte sintaxe. 430 00:32:24,290 --> 00:32:28,400 Você selecionar, e em seguida, se você especificar uma estrela, 431 00:32:28,400 --> 00:32:31,830 que vai basicamente retornar a linha, todo inteiro para você. 432 00:32:31,830 --> 00:32:36,890 Então, novamente, você tem a condição em que, e então você especificar - 433 00:32:36,890 --> 00:32:39,990 Eu só quero o nome de usuário para ser igual-mail em, 434 00:32:39,990 --> 00:32:46,660 por isso só vai recuperar a linha usuários que corresponde ao correio-in. 435 00:32:46,660 --> 00:32:52,860 >> Quando um usuário deseja adicionar um compartilhamento de uma carteira, 436 00:32:52,860 --> 00:32:54,400 você precisa verificar alguns erros. 437 00:32:54,400 --> 00:32:57,680 Você quer ter certeza de que o usuário pode realmente ter recursos para as ações, 438 00:32:57,680 --> 00:33:00,810 assim que você vai querer verificar o seu dinheiro. 439 00:33:00,810 --> 00:33:05,810 Antes, costumávamos estrela para recuperar uma linha inteira de uma tabela SQL. 440 00:33:05,810 --> 00:33:08,930 Mas aqui, nós podemos realmente apenas especificar que eu só quero um valor - 441 00:33:08,930 --> 00:33:10,080 Eu só quero o dinheiro. 442 00:33:10,080 --> 00:33:17,970 Então, aqui, seria devolver o dinheiro para o usuário com ID de número 1. 443 00:33:17,970 --> 00:33:25,940 Se um usuário já comprou uma determinada ação, mas depois compra mais do que o estoque, 444 00:33:25,940 --> 00:33:30,440 em seguida, em sua carteira - você não quer uma linha separada, 445 00:33:30,440 --> 00:33:34,770 outra linha que contém essa nova transação. 446 00:33:34,770 --> 00:33:37,950 Você realmente quer atualizar a quantidade. 447 00:33:37,950 --> 00:33:42,530 Tudo o que está mudando é realmente a quantidade de ações que o usuário possui. 448 00:33:42,530 --> 00:33:47,730 Se você usar a consulta INSERT INTO - Então é só inserir no seu portfólio todos esses valores - 449 00:33:47,730 --> 00:33:51,710 o número do ID do usuário, bem como o símbolo da ação que eles estão comprando 450 00:33:51,710 --> 00:33:57,750 e as partes, então você também vai querer especificar, bem, se eu me deparo com uma cópia da chave - 451 00:33:57,750 --> 00:34:00,750 neste caso, a chave duplicada não é apenas o ID de utilizador, mas também o símbolo estoque - 452 00:34:00,750 --> 00:34:08,340 porque você só pode ter - a nossa premissa é que você pode ter apenas uma linha 453 00:34:08,340 --> 00:34:10,699  que corresponde a um símbolo específico. 454 00:34:10,699 --> 00:34:13,659 Então, na chave duplicada - se você tiver uma colisão lá - 455 00:34:13,659 --> 00:34:18,520 você está indo só para atualizar partes de seu novo valor. 456 00:34:18,520 --> 00:34:23,290 Ações iguala tudo o que tinha antes de mais o número de ações que o usuário está comprando. 457 00:34:27,790 --> 00:34:31,090 >> Agora que nós atualizamos a tabela de portfólio, 458 00:34:31,090 --> 00:34:34,730 vamos querer atualizar dinheiro do usuário. 459 00:34:34,730 --> 00:34:40,300 Que está na tabela de usuários, por isso estamos indo para ser subtraindo uma certa quantidade de dinheiro. 460 00:34:40,300 --> 00:34:46,270 Presumivelmente, ele vai ser dinheiro é igual a menos dinheiro - e depois um determinado montante. 461 00:34:46,270 --> 00:34:50,560 Para atualizar o dinheiro, você faria - 462 00:34:50,560 --> 00:34:55,699 se eu queria tirar dinheiro de e-mail em, então gostaria de executar esta consulta - 463 00:34:55,699 --> 00:35:00,220 «Utilizadores de atualização" e defina a coluna de caixa em dinheiro - 464 00:35:00,220 --> 00:35:07,300 >> Gostaria de remover dólares 9.999 somente se o nome de usuário é igual ao correio-in. 465 00:35:07,300 --> 00:35:12,020 Mas, neste caso, não queremos subtrair 9.999 especificamente. 466 00:35:12,020 --> 00:35:17,610 Queremos especificar, também, queremos subtrair o preço atual da ação 467 00:35:17,610 --> 00:35:22,400 multiplicado pelo número de ações que eles estão comprando. 468 00:35:25,260 --> 00:35:29,910 >> Agora nós lhes permitiu ver todas as ações que eles têm, 469 00:35:29,910 --> 00:35:33,080 bem como comprar mais ações. 470 00:35:33,080 --> 00:35:37,430 Nós também já lhes permitiu olhar para cima o preço atual de um estoque. 471 00:35:37,430 --> 00:35:40,030 Aqui, queremos permitir que eles vendem. 472 00:35:40,030 --> 00:35:42,160 Primeiro queremos mostrar basicamente - 473 00:35:42,160 --> 00:35:45,270 queremos permitir que eles vejam todas as ações que eles têm, 474 00:35:45,270 --> 00:35:53,170 Então, aqui queremos mostrar todas as linhas do portfólio. 475 00:35:53,170 --> 00:35:56,650 Se optar por vender uma determinada ação, 476 00:35:56,650 --> 00:35:59,140 então vamos supor que eles querem vender de tudo. 477 00:35:59,140 --> 00:36:04,350 Eles não são apenas vai vender 50% de suas ações, eles vão vender 100% dele. 478 00:36:04,350 --> 00:36:08,630 Nós podemos simplesmente apagar a linha inteira da carteira. 479 00:36:08,630 --> 00:36:17,520 Podemos apagar partes do determinado usuário do símbolo certo. 480 00:36:17,520 --> 00:36:21,410 Não é a sintaxe para isso. 481 00:36:21,410 --> 00:36:22,710 >> Então queremos atualizar o dinheiro. 482 00:36:22,710 --> 00:36:30,930 Nós vamos estar adicionando no dinheiro igual à quantidade de ações que estão vendendo 483 00:36:30,930 --> 00:36:34,640 multiplicado pelo preço atual da ação - 484 00:36:34,640 --> 00:36:38,610 não o preço a que comprou, mas o preço a que são - 485 00:36:38,610 --> 00:36:40,500 o preço atual quando eles estão vendendo. 486 00:36:40,500 --> 00:36:43,660 Para referenciar o preço atual de uma ação, 487 00:36:43,660 --> 00:36:49,120 você vai querer usar de pesquisa, o que lhe dará o preço de uma ação 488 00:36:50,030 --> 00:36:52,650 no momento atual. 489 00:36:52,650 --> 00:36:55,930 >> Agora ficamos com a história, 490 00:36:55,930 --> 00:37:00,170 qual pretende permitir que um usuário para manter o controle de todas as suas operações - 491 00:37:00,170 --> 00:37:03,040 quer ver sempre que vendeu algo, sempre que eles compraram um estoque. 492 00:37:03,040 --> 00:37:08,870 Nós queremos especificar o momento em que eles fizeram isso, assim como quantos eles compraram 493 00:37:08,870 --> 00:37:11,650 eo que era estoque. 494 00:37:11,650 --> 00:37:17,800 Não temos qualquer estrutura, atual existente, que especifica que? 495 00:37:17,800 --> 00:37:25,230 Bem, temos carteira que exibe os estoques número que um usuário tem 496 00:37:25,230 --> 00:37:26,470 por uma parte determinada. 497 00:37:26,470 --> 00:37:34,060 Mas estamos estruturando portfolio da maneira que ele atualiza quando compramos múltipla, 498 00:37:34,060 --> 00:37:40,190 enquanto que a história deveria - se você comprar da Apple, 10 partes do mesmo, e, posteriormente, vender 5, 499 00:37:40,190 --> 00:37:44,040 então você gostaria de ver aqueles separadamente como ações separadas, linhas separadas. 500 00:37:44,040 --> 00:37:48,520 Considerando que a ação de visualizar que em nossa mesa portfolio 501 00:37:48,520 --> 00:37:52,540 seria apenas uma atualização para que determinada linha, 502 00:37:52,540 --> 00:37:55,740  por isso estamos provavelmente vai querer outra tabela. 503 00:37:55,740 --> 00:38:00,460 Em nosso banco de dados, temos a nossa tabela de usuários, temos a nossa tabela de portfólio, 504 00:38:00,460 --> 00:38:04,090 e agora provavelmente vai querer uma tabela de histórico. 505 00:38:04,090 --> 00:38:08,070 Essa tabela de histórico pode acompanhar a data atual, 506 00:38:08,070 --> 00:38:12,800 bem como o símbolo de ação particular, bem como quantas ações, 507 00:38:12,800 --> 00:38:15,410 e então o que é ação - 508 00:38:15,410 --> 00:38:18,800 se você fosse comprar essas acções ou se você estava vendendo. 509 00:38:20,660 --> 00:38:25,720 >> Para lidar com data, há um par de maneiras que você pode fazer isso. 510 00:38:25,720 --> 00:38:28,820 PHP tem uma maneira de manter o controle de data, o que você pode olhar-se a si mesmo. 511 00:38:28,820 --> 00:38:33,990 Em SQL você também pode usar agora ou timestamp atual. Isso é com você. 512 00:38:33,990 --> 00:38:40,720 Apenas certifique-se de que cada vez que um usuário compra ou vende, você vai estar atualizando seu dinheiro 513 00:38:40,720 --> 00:38:46,750 na tabela de usuários, você vai estar atualizando as linhas na tabela de carteiras, 514 00:38:46,750 --> 00:38:50,900 então você também vai estar atualizando a história, 515 00:38:50,900 --> 00:38:56,260 então não vão ser separados 3 consultas SQL que você estará chamando lá. 516 00:38:58,640 --> 00:39:01,530 Nós temos um monte de funcionalidade agora. 517 00:39:01,530 --> 00:39:10,600 >> Apenas um par de lembretes de que em seu arquivo de índice, você vai querer vincular a pelo menos o seu - 518 00:39:10,600 --> 00:39:15,550 mas você vai querer permitir que um usuário de ligação para a página buy.php. 519 00:39:15,550 --> 00:39:23,560 Isso vai permitir que um usuário - buy.php é o controlador, de modo que vai, quer 520 00:39:23,560 --> 00:39:29,170 enviar para - que vai mandá-lo para a forma que lhe permite olhar as coisas. 521 00:39:29,170 --> 00:39:34,420 Nós temos história. Temos a sessão, obter uma cotação e depois vender. 522 00:39:34,420 --> 00:39:37,350 Essas são, no mínimo, o que você deseja mostrar. 523 00:39:37,350 --> 00:39:43,640 Em termos de carteira, a carteira é realmente mostrado na página do índice. 524 00:39:43,640 --> 00:39:52,050 Se formos ao índice, aqui vemos que torna portfolio.php 525 00:39:52,050 --> 00:40:00,050 e passa a matriz associativa - basicamente o título é igual a carteira. 526 00:40:00,050 --> 00:40:02,610 Então, este é o controlador. 527 00:40:02,610 --> 00:40:08,000 Se formos para o modelo de portfolio.php, 528 00:40:08,000 --> 00:40:18,060 então tudo o que tem é - basicamente exibe uma imagem que diz, oh, este site está em construção. 529 00:40:18,060 --> 00:40:23,810 Mais tarde, uma vez que você passar - você estar passando em informações basicamente mais específico. 530 00:40:23,810 --> 00:40:27,400 Em vez de apenas o título, você provavelmente vai estar passando em mais coisas. 531 00:40:27,400 --> 00:40:32,010 Uma vez que você tem esses valores, então portfolio.php pode lidar com esses valores 532 00:40:32,010 --> 00:40:34,490 e imprimi-los em qualquer tipo de ordem. 533 00:40:34,490 --> 00:40:41,660 >> Depois de implementar tudo isso, você também precisa implementar uma característica mais. 534 00:40:41,660 --> 00:40:44,890 Isto pode ser permitir que um usuário alterar sua senha, 535 00:40:44,890 --> 00:40:50,110 para redefinir sua senha se eles esqueceram que - assim para a redefinição de senha, em seguida, 536 00:40:50,110 --> 00:40:54,560 Provavelmente você também quiser editar registrar para que lhes permite especificar um e-mail, 537 00:40:54,560 --> 00:40:57,910 assim que se esqueça sua senha, então eles podem conseguir isso. 538 00:40:57,910 --> 00:41:02,870 Eles provavelmente pode entrar em seu nome de usuário e, em seguida, um email será enviado para eles 539 00:41:02,870 --> 00:41:06,180 com um link para ser capaz de redefinir sua senha. 540 00:41:06,180 --> 00:41:10,980 Você pode ter algo que permite aos usuários obter recibos 541 00:41:10,980 --> 00:41:12,380 cada vez que comprar ou vender algo, 542 00:41:12,380 --> 00:41:19,910 e, finalmente, permitir-lhes para adicionar dinheiro para seu site. 543 00:41:19,910 --> 00:41:24,970 Assim que voltar para o conceito de controladores e modelos um pouco. 544 00:41:24,970 --> 00:41:31,170 Você vai ter algo como um - assim você vai ter um controlador aqui. 545 00:41:31,170 --> 00:41:35,080 Agora, nós estamos olhando para o exemplo login.php. 546 00:41:35,080 --> 00:41:38,220 Quando temos um controlador, basicamente isso vai levar dois casos. 547 00:41:38,220 --> 00:41:42,090 Quando temos controladores, estamos nessa parte que nós somos também uma espécie de lidar com 548 00:41:42,090 --> 00:41:43,880 quando temos formas também. 549 00:41:43,880 --> 00:41:47,500 O controlador tem basicamente ações separadas - 550 00:41:47,500 --> 00:41:53,880 uma se um formulário já foi apresentado, e depois dois, se o usuário está chegando a essa página 551 00:41:53,880 --> 00:41:56,870 , pela primeira vez e ainda precisa de entrada que forma. 552 00:41:56,870 --> 00:42:02,820 >> Eu estou indo para ir para esse primeiro caso antes de subir para o primeiro caso de ter a forma dentro 553 00:42:02,820 --> 00:42:12,640 Aqui nós dizemos, se o formulário foi submetido com o post método - 554 00:42:12,640 --> 00:42:13,580 não se preocupe com isso um pouco. 555 00:42:13,580 --> 00:42:19,780 Não se preocupe muito sobre isso, mas entender que esta função, basicamente, trata 556 00:42:19,780 --> 00:42:22,430 se um formulário foi submetido ou não. 557 00:42:22,430 --> 00:42:25,640 Esta condição é verdadeira se o usuário tiver apresentado o formulário. 558 00:42:25,640 --> 00:42:45,940 Se não, então vamos querer chamar login_form.php render, e depois passar no título. 559 00:42:45,940 --> 00:42:48,010 Este título é basicamente só vai aparecer no cabeçalho. 560 00:42:48,010 --> 00:42:54,990 O que isso faz é basicamente diz, ok - bem, se um usuário vai para login.php 561 00:42:54,990 --> 00:43:00,310 e não tem realmente conectado, então eu quero mandá-los para a página que tem que se formam 562 00:43:00,310 --> 00:43:03,160 o que lhes permite introduzir o nome de utilizador e palavra-passe. 563 00:43:03,160 --> 00:43:07,590 Então eu vou para login_form e que tem a forma real. 564 00:43:07,590 --> 00:43:13,750 Então, uma vez que o usuário alega que forma, eles vão enviá-lo para login.php 565 00:43:13,750 --> 00:43:15,840 com o método de pós. 566 00:43:15,840 --> 00:43:21,560 Então eu estou indo realmente para entrar nesta seção do meu loop se-else. 567 00:43:21,560 --> 00:43:29,560 Então é aqui que lidamos com os valores inseridos no formulário. 568 00:43:29,560 --> 00:43:32,800 É aqui que temos que lidar com isso. 569 00:43:32,800 --> 00:43:40,860 >> Então, depois de lidar com esses valores - se você está lidando com - 570 00:43:40,860 --> 00:43:46,640 dizer que estamos lidando com a página quote.php onde alguém pode introduzir um estoque que 571 00:43:46,640 --> 00:43:49,950 eles querem olhar para cima, e depois ver que a exibição - 572 00:43:49,950 --> 00:43:52,850 esse é o tipo de semelhante aqui. 573 00:43:52,850 --> 00:43:56,070 Aqui temos um formulário de login - you'd provavelmente tem um formulário de cotação - 574 00:43:56,070 --> 00:44:00,290 mas, em seguida, uma vez que o usuário tenha realmente apresentado essa informação, 575 00:44:00,290 --> 00:44:04,810 então você vai querer o controlador passar para outro modelo 576 00:44:04,810 --> 00:44:07,430 que irá mostrar-lhes que a informação real. 577 00:44:07,430 --> 00:44:11,250 Então certo por aqui, então você provavelmente vai - 578 00:44:11,250 --> 00:44:18,830 todo o final de sua condição aqui - o se o método é igual a pós - 579 00:44:18,830 --> 00:44:22,520 então você provavelmente vai querer tornar outra página - a citação show - 580 00:44:22,520 --> 00:44:28,040 que lhe envia a essa página - show_quote.php - 581 00:44:28,040 --> 00:44:34,120 e depois no arquivo que irá referenciar esses valores. 582 00:44:34,120 --> 00:44:36,480 Isso faz sentido? 583 00:44:36,480 --> 00:44:40,390 >> Temos um controlador que trata basicamente com os dois casos - 584 00:44:40,390 --> 00:44:42,710 se você digitou uma forma ou não. 585 00:44:42,710 --> 00:44:43,950 Se você não tiver inserido um formulário, 586 00:44:43,950 --> 00:44:47,300 então ele irá redirecioná-lo para essa forma, que, então, colocá-lo de volta para aquela página. 587 00:44:47,300 --> 00:44:54,020 Então, uma vez que você tem a informação no controlador, que o corpo vai lidar com isso 588 00:44:54,020 --> 00:44:59,750 informações necessárias - ou procura-se valores para o estoque, 589 00:44:59,750 --> 00:45:04,150 e, em seguida, uma vez que é olhou esses valores e tem-los em uma matriz bem formatado, 590 00:45:04,150 --> 00:45:08,180 então pode passar esse array para a página do modelo 591 00:45:08,180 --> 00:45:10,330  que lida com a saída dessa informação. 592 00:45:10,330 --> 00:45:14,680 >> Mais uma vez, uma vez que na Internet, que vai ser divertido. 593 00:45:14,680 --> 00:45:20,310 Estamos fora do C de modo que não está limitado ao ASCII e que a saída do terminal, 594 00:45:20,310 --> 00:45:21,800 para se divertir com isso. 595 00:45:21,800 --> 00:45:24,920 Você pode torná-lo tão visual como você quer. 596 00:45:24,920 --> 00:45:31,860 Você pode permitir que os usuários de entrada de milhões de dólares em um momento, 597 00:45:31,860 --> 00:45:34,730 ou limitá-los e ser realmente significa e permitir-lhes apenas para entrar uma moeda de um centavo de cada vez 598 00:45:34,730 --> 00:45:36,330 ou algo assim. 599 00:45:36,330 --> 00:45:38,550 Definitivamente não se esqueça de se divertir com isso. 600 00:45:38,550 --> 00:45:47,030 >> PHP código é um pouco mais simples, que é um pouco mais fácil de traçar seu pseudocódigo 601 00:45:47,030 --> 00:45:50,070 para a implementação real. 602 00:45:50,070 --> 00:45:56,320 Assim, com certeza se divertir com isso, porque é realmente a nossa última peça no CS50. 603 00:45:56,320 --> 00:46:01,150 Com isso, este foi Passo a passo 7. 604 00:46:01,150 --> 00:46:04,640 Uma vez que você terminar de assistir o passo a passo e terminou sua pset, 605 00:46:04,640 --> 00:46:09,590 em seguida, estes foram também Série de Exercícios, e agora estamos no ao produto final - 606 00:46:09,590 --> 00:46:12,330 depois de passar por teste 1. 607 00:46:12,330 --> 00:46:16,200 Então, espero que você pode usar as ferramentas que você aprendeu com as Série de Exercícios - 608 00:46:16,200 --> 00:46:21,980 não apenas a sintaxe, mas mais a noção abstrata de como tomar um certo - 609 00:46:21,980 --> 00:46:24,950 gosto, eu quero fazer isso e então realmente implementar isso. 610 00:46:24,950 --> 00:46:28,740 Aprender a lutar pela sintaxe e código de distribuição. 611 00:46:28,740 --> 00:46:33,020 Leitura de código de outras pessoas, e então interpretar que o uso de pré-existentes funções. 612 00:46:33,020 --> 00:46:37,360 >> Então, boa sorte com o pset passado. 613 00:46:37,360 --> 00:46:39,930 Tem sido um prazer levar as orientações. 614 00:46:39,930 --> 00:46:40,940 Espero que tenham sido úteis para você. 615 00:46:40,940 --> 00:46:46,560 Estes foram passo a passo, e muito obrigado. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]