1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Problema Paso a paso de 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 >> Hola a todos, e ben benvida ao Paso a paso 7, CS50 Finanzas. 5 00:00:12,090 --> 00:00:15,090 Agora estamos oficialmente feito con todos os serie de exercicios en CS50, 6 00:00:15,090 --> 00:00:19,380 e nós estamos só saíu con unha que vai ser unha aplicación divertido 7 00:00:19,380 --> 00:00:23,770 un sitio onde os usuarios poden facer sesión para CS50 Finanzas 8 00:00:23,770 --> 00:00:25,830 e mercar e vender accións. 9 00:00:25,830 --> 00:00:32,280 >> Hoxe, nós imos ter algunhas ferramentas á nosa disposición. 10 00:00:32,280 --> 00:00:34,320 Nós imos falar sobre permisos. 11 00:00:34,320 --> 00:00:36,380 Sempre que ten un cartafol web 12 00:00:36,380 --> 00:00:40,800 vai querer para permitir aos usuarios executar determinados ficheiros 13 00:00:40,800 --> 00:00:42,500 pero tamén acaba de ler os outros, 14 00:00:42,500 --> 00:00:45,150 entón imos ollar para os permisos e como pode definir aqueles. 15 00:00:45,150 --> 00:00:49,630 Entón, imos ollar en PHP, HTML e código SQL. 16 00:00:49,630 --> 00:00:51,990 >> En primeiro lugar, permisos. 17 00:00:51,990 --> 00:00:56,060 Cando estás no terminal dun determinado directorio, 18 00:00:56,060 --> 00:01:00,430 entón o que quere facer é que quere executar o comando chmod. 19 00:01:00,430 --> 00:01:03,750 Isto é seguido por letras ou números 20 00:01:03,750 --> 00:01:08,100 correspondente ao que basicamente quere que o mundo vexa, 21 00:01:08,100 --> 00:01:09,830 vostede mesmo a ver, etc 22 00:01:09,830 --> 00:01:13,350 Por exemplo, sempre que ten un cartafol, 23 00:01:13,350 --> 00:01:15,560 Entón quere que o cartafol sexa executábel por todos que o ve, 24 00:01:15,560 --> 00:01:19,500 Entón, o que faría se pode executar o comando chmod a + x 25 00:01:19,500 --> 00:01:21,050 e logo o nome da carpeta. 26 00:01:21,050 --> 00:01:28,110 Cando ten un arquivo, como arquivos CSS ou arquivos de imaxe - 27 00:01:28,110 --> 00:01:33,060 como JPEGs e bitmaps, cousas así, ou calquera outro código JavaScript - 28 00:01:33,060 --> 00:01:36,440 quere que sexa lexible por todos, 29 00:01:36,440 --> 00:01:39,880 Entón o que fai é que pode utilizar o comodín - 30 00:01:39,880 --> 00:01:41,650 que é un asterisco - 31 00:01:41,650 --> 00:01:46,190 basicamente para indicar o cartafol CSS - todo en que cartafol - 32 00:01:46,190 --> 00:01:48,740  Eu vou dicir que iso vai ser lido por todos. 33 00:01:48,740 --> 00:01:54,220 Coas permisos, cando usamos as letras, 34 00:01:54,220 --> 00:01:57,610 Tamén podemos utilizar números en vez. 35 00:01:57,610 --> 00:02:00,900 Entón, vostede ve que finalmente cando quere algo para ser executábel - 36 00:02:00,900 --> 00:02:02,810 que é representado polo número 1 - 37 00:02:02,810 --> 00:02:08,340 algo para ler é o número 4 e despois - 38 00:02:08,340 --> 00:02:10,590 gravábel é o número 2 - 39 00:02:10,590 --> 00:02:13,670 e así, esencialmente, cando quere unha combinación destes, entón engade-los. 40 00:02:13,670 --> 00:02:15,860 Se queres algo para ler, escribir nel, executable e, 41 00:02:15,860 --> 00:02:21,970 entón quere engadir-se 4, 2 e 1, e que lle daría 7, 42 00:02:21,970 --> 00:02:26,230 entón cada vez que ten un cartafol que quere que sexa executábel por todos - 43 00:02:26,230 --> 00:02:31,380 así como lectura e gravación - entón fai que 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Iso sería 7 para vostede, entón un para as outras persoas. 45 00:02:38,140 --> 00:02:42,870 Cando ten a especificación, que vai realmente especificar que cartafoles e cales arquivos 46 00:02:42,870 --> 00:02:45,040 Debe ser chmod-ed especificamente. 47 00:02:45,040 --> 00:02:47,920 Por exemplo, cando ten cartafoles - son 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 cando ten imaxes ou HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 entón os van ser de 6, 0, 4 - ou 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 e entón os arquivos PHP van ser 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 A idea detrás diso é que os usuarios non deben realmente ver o seu código PHP, 52 00:03:04,940 --> 00:03:08,370 pero só ser capaz de ver a saída. 53 00:03:08,370 --> 00:03:11,030 >> Gran! Movéndose para o PHP. 54 00:03:11,030 --> 00:03:18,850 Simplemente, sempre que sexa un arquivo PHP, o sufixo do ficheiro é. PHP. 55 00:03:18,850 --> 00:03:22,000 Tamén pode mesturar HTML con código PHP. 56 00:03:22,000 --> 00:03:24,880 Se ten un ficheiro HTML, por exemplo, 57 00:03:24,880 --> 00:03:32,520 entón podes poñelas co ángulo esquerdo, punto de interrogación, php - 58 00:03:32,520 --> 00:03:39,320 poñer o seu código PHP - e pecha con outro que punto de interrogación e un ángulo recto. 59 00:03:39,320 --> 00:03:45,020 As variables no PHP son moito máis fáciles de tratar que as variables en C. 60 00:03:45,020 --> 00:03:50,310 Calquera variable só comeza cun cifrão na fronte del, e eles están feblemente ingresaran. 61 00:03:50,310 --> 00:03:53,470 Isto significa que non se preocupe en definir algo 62 00:03:53,470 --> 00:03:55,020 igual a unha cadea ou un enteiro. 63 00:03:55,020 --> 00:03:57,710 Pode simplemente dicir: este é o meu nome da variable 64 00:03:57,710 --> 00:04:00,390 e entón que é o seu valor, 65 00:04:00,390 --> 00:04:03,280 polo que vai ser máis fácil de xestionar a existencia. 66 00:04:03,280 --> 00:04:08,220 >> Outra cousa é que o PHP permite que use arrays asociativos. 67 00:04:08,220 --> 00:04:11,330 Pode simplemente establecer unha matriz, como faría en C 68 00:04:11,330 --> 00:04:14,900 dicindo, cifrão no nome da súa matriz é igual, 69 00:04:14,900 --> 00:04:22,600 e, a continuación, entre parénteses rectos ten basicamente só a lista de valores de todos os elementos da matriz. 70 00:04:22,600 --> 00:04:27,160 Pero, en PHP que tamén pode facer é basicamente a especificar - 71 00:04:27,160 --> 00:04:31,050 É como unha especie de función hash. 72 00:04:31,050 --> 00:04:34,410 Vostede pode especificar o índice - o que vai chamalo - 73 00:04:34,410 --> 00:04:37,030 e, a continuación, que corresponde a un valor. 74 00:04:37,030 --> 00:04:42,880 Se realmente pasar a = 1, b = 2, C = 3, 75 00:04:42,880 --> 00:04:50,820 entón a súa matriz no índice sería darlle un. 76 00:04:50,820 --> 00:04:56,600 Este pset vai quecelo con algún PHP nunha sección de preguntas, 77 00:04:56,600 --> 00:04:59,240 e, entón, mergullo CS50 Finanzas. 78 00:04:59,240 --> 00:05:02,650 >> Temos un par de - temos algunhas funcionalidades, basicamente, 79 00:05:02,650 --> 00:05:05,130 para aplicar neste sitio web. 80 00:05:05,130 --> 00:05:10,440 Queremos permitir que os usuarios se rexistren no noso sitio con un nome de usuario e un contrasinal. 81 00:05:10,440 --> 00:05:13,670 Queremos facer que buscar unha cotización, 82 00:05:13,670 --> 00:05:19,330 e entón nós imprimir o nome do marcador, así como o prezo actual, que está. 83 00:05:19,330 --> 00:05:26,830 Queremos permitir-lles ver un Cartafol de todas as accións que compraron ata agora. 84 00:05:26,830 --> 00:05:34,240 Queremos tamén que lles permitan comprar accións, así como venda-los. 85 00:05:34,240 --> 00:05:37,540 E entón, finalmente, queremos permitir que vexan a historia 86 00:05:37,540 --> 00:05:39,490 de todas as operacións que fixeron. 87 00:05:39,490 --> 00:05:41,540 Entón, finalmente, despois de aplicado de todo isto, 88 00:05:41,540 --> 00:05:45,110 entón é libre para aplicar un recurso extra. 89 00:05:45,110 --> 00:05:46,610 Imos para aqueles. 90 00:05:46,610 --> 00:05:51,330 Aqueles poden ser tanto permitindo aos usuarios obter diñeiro extra, depositando o diñeiro extra, 91 00:05:51,330 --> 00:05:54,550 ou podería permitir-lles cambiar o seu contrasinal, ou algo así, 92 00:05:54,550 --> 00:06:00,590 envialas un recibo cando comprar ou vender unha acción. 93 00:06:00,590 --> 00:06:05,370 Hai unha lista limitada de recursos que pode aplicar-se, 94 00:06:05,370 --> 00:06:08,340 de xeito que é a última. 95 00:06:08,340 --> 00:06:13,430 >> Unha vez que este é un sitio web, vostedes tamén teñen moita liberdade para personalizar-lo. 96 00:06:13,430 --> 00:06:20,960 Nós fornecen un código CSS, pero está sempre libre para axusta-lo, 97 00:06:20,960 --> 00:06:26,680 facela máis agradable, pero que lle está subxacente é unha función básica 98 00:06:26,680 --> 00:06:30,310 por iso sempre consulte a especificación sobre o que realmente precisa incluír alí. 99 00:06:30,310 --> 00:06:39,940 Tras a especificación, imos estar usando o dispositivo como tamén un servidor. 100 00:06:39,940 --> 00:06:43,910 Estará hospedando noso sitio para nós, no seu servidor local. 101 00:06:43,910 --> 00:06:49,750 Se seguir estas instrucións e descompactá o código pset 7 de distribución 102 00:06:49,750 --> 00:06:53,500 na súa carpeta de servidor virtual host / local, 103 00:06:53,500 --> 00:07:02,470  entón podes só visitar http://localhost/ en Google Chrome no aparello, 104 00:07:02,470 --> 00:07:09,120 e entón alcanzar o código que escribiu pset 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 vén con unha morea de código, distribución 106 00:07:14,490 --> 00:07:18,330 e espero que we've - a través de todos os serie de exercicios antes deste - 107 00:07:18,330 --> 00:07:21,700 habituouse-nos a lectura a través de código de distribución, 108 00:07:21,700 --> 00:07:25,650 comprender que as funcións xa son proporcionados, e como podemos ser capaces de utilizar 109 00:07:25,650 --> 00:07:29,470 aqueles e as outras funcións que imos estar aplicando. 110 00:07:29,470 --> 00:07:31,570 Neste caso, temos tres carpetas. 111 00:07:31,570 --> 00:07:36,350 Temos un cartafol HTML, un inclúe carpeta, e un cartafol de modelos. 112 00:07:36,350 --> 00:07:40,630 O que imos facer con este tipo de pset é separar o pensamento - 113 00:07:40,630 --> 00:07:45,580 o pensamento de programación - do código PHP co aspecto visual real. 114 00:07:45,580 --> 00:07:52,690 Nós imos ter un ficheiro PHP que fai todo o pensamento, le na base de datos, 115 00:07:52,690 --> 00:07:55,620 imprime cousas, tense declaracións - cousas así - 116 00:07:55,620 --> 00:08:02,140 e despois que vou pasar os datos para o noso arquivo de modelo - ou ficheiro template.php. 117 00:08:02,140 --> 00:08:05,710 O que vai facer é ler os datos e, a continuación, que vai imprimir lo. 118 00:08:05,710 --> 00:08:09,550 >> Podemos tratar modelos como "burro" en que nós realmente non quero que eles 119 00:08:09,550 --> 00:08:12,370 estar facendo unha morea de traballo para calcular as cousas. 120 00:08:12,370 --> 00:08:16,330 Queremos que os nosos controladores para facelo. 121 00:08:16,330 --> 00:08:21,610 Un pouco sobre iso - imos dar un ollo a algúns dos códigos de distribución. 122 00:08:21,610 --> 00:08:28,250 Aquí temos o noso arquivo index.html, e é moi baleiro. 123 00:08:28,250 --> 00:08:34,429 Esencialmente, o que fai - di, ben, eu vou esixir que o arquivo configuration.php. 124 00:08:34,429 --> 00:08:40,120 Nós non vemos que aí, pero é basicamente chamando o arquivo configuration.php, 125 00:08:40,120 --> 00:08:42,240 e realizar iso. 126 00:08:42,240 --> 00:08:45,130 Despois de que el fai iso, el vai facer a carteira. 127 00:08:45,130 --> 00:08:49,310 Escoitar é unha función, entón sempre que estamos en un controlador, 128 00:08:49,310 --> 00:08:56,490 imos chamar renderse, nós imos dar-lle o ficheiro e, a continuación, os datos que estamos pasando, 129 00:08:56,490 --> 00:09:04,570 de xeito que vai chamar en especie portfolio.php-de paso en que os datos, de xeito que a bolsa pode tratar con isto. 130 00:09:04,570 --> 00:09:10,540 >> E agora, aquí, temos a nosa forma login.php. 131 00:09:10,540 --> 00:09:17,540  Este é o controlador que basicamente coida da explotación madeireira dentro 132 00:09:17,540 --> 00:09:29,090 Aquí, el verifica se un formulario foi enviado a este ficheiro e trata sobre a validación do envío. 133 00:09:29,090 --> 00:09:31,990 Nós imos ollar para esa función desculparse. 134 00:09:31,990 --> 00:09:35,100 Cando queremos imprimir unha mensaxe de erro, 135 00:09:35,100 --> 00:09:39,550 usan desculpas e que pode redireccionar ao usuario a unha páxina específica 136 00:09:39,550 --> 00:09:42,530 que pode imprimir a mensaxe de erro específico que indicamos. 137 00:09:42,530 --> 00:09:47,860 Continuando, el ha consultar a base de datos - nós entrar en máis do que máis tarde. 138 00:09:47,860 --> 00:09:54,180 Entón ve que aquí se un formulario non foi presentado, a continuación, el procesa un formulario. 139 00:09:54,180 --> 00:10:01,360 Isto significa que vai login_form.php, entón imos ollar para iso. 140 00:10:01,360 --> 00:10:09,400 >> Login.php é realmente onde vemos o tráfico de HTML co aspecto visual real. 141 00:10:09,400 --> 00:10:15,130 Aquí temos unha etiqueta de entrada para o nome do usuario, unha entrada para o contrasinal, 142 00:10:15,130 --> 00:10:16,630 así como un botón de envío. 143 00:10:16,630 --> 00:10:22,660 Isto é realmente onde o aspecto visual eo formulario HTML vai ser realizada. 144 00:10:22,660 --> 00:10:27,550 Aquí, el di que vai ser presentada por un método chamado post. 145 00:10:27,550 --> 00:10:30,190 Nós imos para as diferenzas entre os métodos - 146 00:10:30,190 --> 00:10:33,240 publicar contra obter, tamén hai algo chamado poñer - 147 00:10:33,240 --> 00:10:36,160 imos entrar neses métodos máis tarde, pero para o interese deste pset, 148 00:10:36,160 --> 00:10:37,810 Eu altamente incentivos-lo a usar post. 149 00:10:37,810 --> 00:10:42,210 >> Sabemos que, basicamente, unha vez que este formulario é enviado - 150 00:10:42,210 --> 00:10:44,650 de login_form.php - 151 00:10:44,650 --> 00:10:50,850 a continuación, vai para a acción - login.php - 152 00:10:50,850 --> 00:10:56,070 basicamente, pasar todos eses parámetros deses formularios en login.php. 153 00:10:56,070 --> 00:11:04,900 Os resultados de forma que están contidos dentro desa matriz asociativa de post. 154 00:11:04,900 --> 00:11:11,710 Os índices dos diferentes elementos na matriz post 155 00:11:11,710 --> 00:11:15,290 son exactamente o que se especifica aquí. 156 00:11:15,290 --> 00:11:19,240 Vostede di que o nome da entrada é de nome de usuario. O nome desta é unha contrasinal. 157 00:11:19,240 --> 00:11:26,840 Do mesmo xeito, ve o nome de usuario como o índice do array asociativo alí. 158 00:11:26,840 --> 00:11:35,110 Ou tamén a carpeta inclúe, temos este ficheiro funcións que vai ser moi útil. 159 00:11:35,110 --> 00:11:37,570 >> Todas estas funcións son aplicadas para ti. 160 00:11:37,570 --> 00:11:41,870 Non precisa especialmente aplicar calquera destes mesmo, 161 00:11:41,870 --> 00:11:43,140 pero eles van moi útil. 162 00:11:43,140 --> 00:11:49,450 Temos desculpas, que, como eu dixo antes, será, basicamente, imprimir unha mensaxe de erro 163 00:11:49,450 --> 00:11:52,920 para unha páxina específica - apology.php. 164 00:11:52,920 --> 00:11:59,890 Entón, temos de despejo, por iso, se acaba de chamar de despejo e, a continuación, pasar a variable, 165 00:11:59,890 --> 00:12:04,930 a continuación, o levará a unha páxina que ha amosar esta variable para ti. 166 00:12:04,930 --> 00:12:09,950 Entón temos logout, que, basicamente, acabar coa sesión de un determinado usuario. 167 00:12:09,950 --> 00:12:12,240 Busca vai ser útil. 168 00:12:12,240 --> 00:12:15,870 Como estamos lidando con citas e accións, nós imos ser capaces - 169 00:12:15,870 --> 00:12:17,650 e é esencialmente tempo real. 170 00:12:17,650 --> 00:12:21,380 Necesitamos saber o que estes valores das accións son, 171 00:12:21,380 --> 00:12:28,210 por iso temos a función de busca que trata sobre a documentación do Yahoo stocks. 172 00:12:28,210 --> 00:12:37,700 Unha vez que ollar para un determinado símbolo dunha acción, el ha voltar a vostede o símbolo de accións 173 00:12:37,700 --> 00:12:41,480 así como o nome eo prezo actual do stock. 174 00:12:41,480 --> 00:12:44,330 Esa é a función de procura. 175 00:12:44,330 --> 00:12:48,350 >> Entón estamos lidando con MySQL, 176 00:12:48,350 --> 00:12:53,970 entón nós imos estar querendo realizar determinadas consultas no noso banco de datos SQL. 177 00:12:53,970 --> 00:12:58,890 Temos consulta para tratar - a especie de resumo de algúns isto. 178 00:12:58,890 --> 00:13:03,200 Nós imos estar pasando na secuencia de toda a nosa consulta SQL - 179 00:13:03,200 --> 00:13:05,360 e todas as variables que van nel - 180 00:13:05,360 --> 00:13:09,480 eo que este fai realmente executar iso por nós. 181 00:13:09,480 --> 00:13:15,070 En vez de ter que escribir todo isto cada vez que quere consultar - 182 00:13:15,070 --> 00:13:21,740 por obter todos os resultados que a consulta - 183 00:13:21,740 --> 00:13:24,740 entón podes só chamar a función de consulta, e el vai voltar a vostede - 184 00:13:24,740 --> 00:13:28,750 dependendo do que está a usar para a súa consulta - 185 00:13:28,750 --> 00:13:33,000 probablemente unha fileira de todos os resultados que corresponden á consulta ou similar. 186 00:13:33,000 --> 00:13:34,690 Máis sobre iso máis tarde, porén. 187 00:13:34,690 --> 00:13:41,200 >> Finalmente, debemos páxina, que, como o seu nome suxire, redirecciona a unha páxina diferente. 188 00:13:41,200 --> 00:13:46,280 E entón temos render, que nós imos estar chamando un par de veces. 189 00:13:46,280 --> 00:13:51,010 Cando está en un controlador, chama facer na páxina do modelo 190 00:13:51,010 --> 00:13:55,390 e, a continuación, pasar os valores que o modelo pode tratar con eles. 191 00:13:55,390 --> 00:13:59,540 Estes valores son, probablemente, vai ser xestione o tipo de saída que quere 192 00:13:59,540 --> 00:14:01,050 para ser amosado na súa páxina do modelo. 193 00:14:01,050 --> 00:14:09,370 Okay. Aqueles son as funcións, e hai moito máis a este código de distribución. 194 00:14:09,370 --> 00:14:12,930 Convida vostede a pasar por iso e explora-lo vostede mesmo. 195 00:14:12,930 --> 00:14:17,050 Ademais, a especificación probablemente leva-lo a través de algúns outros elementos do código de distribución. 196 00:14:17,050 --> 00:14:27,360 Aquí está un resumo das funcións atopadas en functions.php. 197 00:14:27,360 --> 00:14:31,710 >> Okay. A primeira tarefa é facer que os usuarios se rexistren no sitio web. 198 00:14:31,710 --> 00:14:34,860 Agora, hai un formulario de login no sitio, 199 00:14:34,860 --> 00:14:40,080 e é subministrado con algúns usuarios con contrasinal. 200 00:14:40,080 --> 00:14:42,130 Pode empregar os nomes de usuario e login, 201 00:14:42,130 --> 00:14:45,140 pero quere permitir que as persoas fagan as súas propias usernames 202 00:14:45,140 --> 00:14:47,390 e engade-se ao sitio. 203 00:14:47,390 --> 00:14:53,070 O esquema de rexistro é moi semellante ao formulario de login, 204 00:14:53,070 --> 00:14:56,340 excepto o nome de usuario non é pre-existente, 205 00:14:56,340 --> 00:14:59,430 eo usuario tamén debe proporcionar un novo contrasinal, 206 00:14:59,430 --> 00:15:02,440 e en seguida, normalmente temos unha confirmación de contrasinal. 207 00:15:02,440 --> 00:15:06,580 Unha vez que todas as entradas do usuario que a información, 208 00:15:06,580 --> 00:15:10,620 queremos engadila los ao noso banco de datos de usuarios. 209 00:15:10,620 --> 00:15:12,970 Nós imos ter unha base de datos - unha base de datos SQL - 210 00:15:12,970 --> 00:15:14,470 que imos referenciar. 211 00:15:14,470 --> 00:15:18,140 Nese base de datos, nós imos ter unha táboa con todos os usuarios 212 00:15:18,140 --> 00:15:23,850 contendo o seu nome de usuario, contrasinal, e tamén canto diñeiro eles teñen. 213 00:15:23,850 --> 00:15:28,480 >> No rexistro, queremos permitir que introduce o. 214 00:15:28,480 --> 00:15:29,740 Queremos mostrar que o formulario. 215 00:15:29,740 --> 00:15:32,210 Queremos estar seguro de que o seu contrasinal - 216 00:15:32,210 --> 00:15:37,490 que entraron un, e despois tamén que os contrasinais coinciden cando entraren dúas veces. 217 00:15:37,490 --> 00:15:42,240 Despois de todo isto está feito - asumindo que estes erros son verificados - 218 00:15:42,240 --> 00:15:45,120 entón queremos engadir os usuarios para o noso banco de datos. 219 00:15:45,120 --> 00:15:49,630 Finalmente, despois de rexistrado, é moi cómodo se non se logar novo 220 00:15:49,630 --> 00:15:51,000 Unha vez rexistrado, 221 00:15:51,000 --> 00:15:54,000 por iso estamos indo a rexistro-los na web se rexistraron con éxito. 222 00:15:54,000 --> 00:16:00,360 >> A primeira tarefa é para amosar o formulario, e iso é realmente vai ser - 223 00:16:00,360 --> 00:16:04,920 este proceso de rexistro enteiro vai ser modelado ben de preto despois do login 224 00:16:04,920 --> 00:16:10,510 excepto en vez de login.php pode ter register.php. 225 00:16:10,510 --> 00:16:14,300 En vez de login_form.php-que é o modelo - 226 00:16:14,300 --> 00:16:16,030 terá rexistrar formulario. 227 00:16:16,030 --> 00:16:19,680 Vai querer engadir un campo - un campo de confirmación de contrasinal - 228 00:16:19,680 --> 00:16:23,450 no canto de só un nome de usuario eo contrasinal dun. 229 00:16:23,450 --> 00:16:28,120 A continuación, queremos comprobar as claves coinciden ou están en branco. 230 00:16:28,120 --> 00:16:38,560 Temos o controlador - register.php-que vai coidar de facer esas comprobacións. 231 00:16:38,560 --> 00:16:41,690 Cando un formulario é enviado a través do método post, 232 00:16:41,690 --> 00:16:47,050 a continuación, todas as variables son contidos dentro da matriz de posto. 233 00:16:47,050 --> 00:16:52,280 Quere estar seguro de que o valor da matriz posto no índice de contrasinal 234 00:16:52,280 --> 00:16:58,080 corresponde ao elemento de confirmación. 235 00:16:58,080 --> 00:16:59,410 Quere estar seguro de que eles non están en branco, 236 00:16:59,410 --> 00:17:01,650 e quere estar seguro de que son a mesma cousa. 237 00:17:01,650 --> 00:17:05,960 >> Unha cousa conveniente sobre o PHP é que non precisa usar cadea compare máis. 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 comprobar que as cadeas son iguais un ó outro. 240 00:17:11,470 --> 00:17:14,960 Para o tratamento de erros, vai querer se desculpar. 241 00:17:14,960 --> 00:17:17,150 Para desculparse, simplemente chamar a función 242 00:17:17,150 --> 00:17:21,910  e seleccione un tipo de mensaxe que quere para a saída. 243 00:17:21,910 --> 00:17:24,630 Vostede, entón, quere engadir o usuario para a base de datos. 244 00:17:24,630 --> 00:17:30,880 Ata agora, todo o que teño feito é só tratar localmente cos resultados do formulario. 245 00:17:30,880 --> 00:17:33,940 Agora, nós realmente quere engadila los para o noso banco de datos. 246 00:17:33,940 --> 00:17:38,890 Para iso, primeiro quere estar seguro de que o usuario non está en branco. 247 00:17:38,890 --> 00:17:44,550 Entender que un sitio web, vostede non pode ter varios usuarios co mesmo nome, 248 00:17:44,550 --> 00:17:50,010 así que vai querer estar seguro de que cando inserir algo no seu banco de datos - 249 00:17:50,010 --> 00:17:56,650 introducir un novo usuario - entón non obtén unha colisión entre un nome de usuario pre-existente 250 00:17:56,650 --> 00:17:59,150 eo nome do usuario que o usuario está a tentar enviar. 251 00:17:59,150 --> 00:18:02,250 Para iso, unha vez que realizar unha consulta - 252 00:18:02,250 --> 00:18:08,760 inserción dun determinado usuario con contrasinal e un importe inicial de diñeiro - 253 00:18:08,760 --> 00:18:15,140 unha vez que chama iso de consulta, entón MySQL ha realmente voltar false se falla. 254 00:18:15,140 --> 00:18:21,050 >> A estrutura de usuarios é tal que o nome de usuario é un valor único, 255 00:18:21,050 --> 00:18:22,540 entón non pode ter máis dun. 256 00:18:22,540 --> 00:18:30,080 Cando tentar introducir unha nova liña con un nome que xa existe, 257 00:18:30,080 --> 00:18:34,470 que vai voltar teito - como un falso valor booleano. 258 00:18:34,470 --> 00:18:45,320 Unha cousa complicada aquí é que vai querer comprobar que o resultado é o resultado da súa consulta. 259 00:18:45,320 --> 00:18:52,320 Se falla, entón vai querer comprobar co seu fornecedor triple-iguais. 260 00:18:52,320 --> 00:18:55,420 Iso está realmente a suceder para comprobar se hai un fallo ou non, 261 00:18:55,420 --> 00:19:02,760 Considerando que, en só un simple iguala-iguais, sería certo se a liña estaba baleiro. 262 00:19:02,760 --> 00:19:06,000 O resultado dun fallo, se hai unha colisión entre nomes de usuario 263 00:19:06,000 --> 00:19:10,350 é o valor real falso. 264 00:19:10,350 --> 00:19:15,230 >> Aquí está como ía introducir nun banco de datos. 265 00:19:15,230 --> 00:19:19,220 Aquí é a consulta que ten que executar estrictamente en SQL. 266 00:19:19,220 --> 00:19:25,750 Unha cousa é que realmente pode ir ao sitio web que xestiona a base de datos SQL 267 00:19:25,750 --> 00:19:31,070 e xogar alí escribindo manualmente valores ou liñas. 268 00:19:31,070 --> 00:19:34,540 El ha amosar o que a saída SQL é. 269 00:19:34,540 --> 00:19:38,870 Tamén pode executar comandos SQL dentro do seu banco de datos 270 00:19:38,870 --> 00:19:42,200  e despois ver o que a sintaxe pode ser, 271 00:19:42,200 --> 00:19:46,790 e despois traducir iso en función de consulta que temos en pset 7, 272 00:19:46,790 --> 00:19:51,120 que vai ser moi semellante ao das consultas que realmente executados. 273 00:19:51,120 --> 00:19:54,570 >> Se eu quería introducir unha nova liña na miña táboa de usuarios, 274 00:19:54,570 --> 00:20:01,240 entón quere especificar inserción en usuarios, que é o nome da miña mesa. 275 00:20:01,240 --> 00:20:06,870 Entón quere especificar os nomes das columnas. 276 00:20:06,870 --> 00:20:13,230 Entón eu ía ofrecer os valores xunto con o meu contrasinal. 277 00:20:13,230 --> 00:20:17,080 Contrasinais na nosa táboa de usuarios non son almacenados só como secuencia de caracteres. 278 00:20:17,080 --> 00:20:19,440 Eles son almacenados como a versión cifrada, 279 00:20:19,440 --> 00:20:24,560 de forma que quere executar a función crypt na contrasinal real, 280 00:20:24,560 --> 00:20:29,680 e que lle vai dar o tipo correcta de almacenamento para a matriz usuarios. 281 00:20:29,680 --> 00:20:34,960 Executar este ha inserir unha nova liña na súa táboa de usuarios. 282 00:20:34,960 --> 00:20:39,020 >> Para xestionar a función de consulta, 283 00:20:39,020 --> 00:20:43,100 antes en C usan o sinal de porcentaxe como un espazo reservado. 284 00:20:43,100 --> 00:20:47,670 Do mesmo xeito, o mesmo concepto de un espazo reservado se aplica aquí. 285 00:20:47,670 --> 00:20:50,720 Con consulta, se especifica a consulta enteira, 286 00:20:50,720 --> 00:20:55,510 excepto cando está lidando con variables como a súa contribución para a consulta, 287 00:20:55,510 --> 00:21:00,490 a continuación, en vez de realmente poñer-los dentro - como cando tivemos declaracións printf en C. 288 00:21:00,490 --> 00:21:03,740 Queremos poñer a corda e despois ter un espazo reservado, e entón despois de cada 289 00:21:03,740 --> 00:21:06,990 coma, especificar cal variable que tiñamos. 290 00:21:06,990 --> 00:21:14,480 Aquí, nós estamos indo a usar o sinal de interrogación como o noso espazo reservado 291 00:21:14,480 --> 00:21:21,670 e, a continuación, pasar cada variable, respectivamente, para os espazos reservados - 292 00:21:21,670 --> 00:21:24,420 onde estas variables deben ir. 293 00:21:24,420 --> 00:21:29,470 Entón, aquí, o primeiro punto de interrogación sería substituído polo nome de usuario real 294 00:21:29,470 --> 00:21:33,610 a continuación, o punto de interrogación segunda pola contrasinal. 295 00:21:33,610 --> 00:21:37,000 >> Entón, finalmente, unha vez que rexistrou e engadido á base de datos, 296 00:21:37,000 --> 00:21:40,510 Entón quere rexistro-los no sitio web. 297 00:21:40,510 --> 00:21:45,320 Temos unha especie de super-sesión global variable chamada. 298 00:21:45,320 --> 00:21:48,160 Session leva un certo número de identificación, 299 00:21:48,160 --> 00:21:51,750 e que se corresponde coa ID do usuario que está actualmente conectado Pol 300 00:21:51,750 --> 00:21:56,380 O que quere facer é atopar o seu ID de usuario é 301 00:21:56,380 --> 00:22:03,710 e defina o ID da sesión como ID de que determinado usuario. 302 00:22:03,710 --> 00:22:07,560 Unha función que vai querer usar aquí é un comando SQL 303 00:22:07,560 --> 00:22:15,150 que pode recuperar o número de identificación último inserido na súa mesa. 304 00:22:15,150 --> 00:22:24,560 Entón vai chamar liñas - isto chamar o ID - isto asignar un nome para o número que retorna. 305 00:22:24,560 --> 00:22:27,900 El vai chamar iso de id. 306 00:22:27,900 --> 00:22:33,370 Agora que xa rematou rexistrar, e podemos pasar por citar. 307 00:22:33,370 --> 00:22:36,610 >> Cita permite que un usuario introduza o nome de unha determinada acción, 308 00:22:36,610 --> 00:22:41,940 e entón el vai volver as calidades deste stock. 309 00:22:41,940 --> 00:22:48,410 O que vai querer facer aquí é ter un controlador e algúns modelos. 310 00:22:48,410 --> 00:22:53,380 Neste caso, nós imos ter un controlador que vai facer todo o pensamento para nós. 311 00:22:53,380 --> 00:23:01,210 Vai buscar o símbolo e, a continuación, pasar valores para os modelos que ha imprimir. 312 00:23:01,210 --> 00:23:03,060 Nós imos ter dous modelos aquí. 313 00:23:03,060 --> 00:23:07,260 Nós imos ter un modelo que ofrece a forma en que os usuarios están indo para 314 00:23:07,260 --> 00:23:09,920 nome de entrada do stock - o nome da acción. 315 00:23:09,920 --> 00:23:16,030 Entón nós tamén imos querer outro modelo que exhibe estes valores. 316 00:23:16,030 --> 00:23:27,450 Podes ollar para entrar un exemplo de como tería un formulario que acepta entrada, 317 00:23:27,450 --> 00:23:30,060 excepto aquí, nós só queremos un campo. 318 00:23:30,060 --> 00:23:31,630 Nós non queremos un nome de usuario e un campo de contrasinal. 319 00:23:31,630 --> 00:23:37,110 Nós só queremos un campo de texto que permite ó usuario inserir o nome dun determinado. 320 00:23:37,110 --> 00:23:40,110 Entón quere enviar os datos - unha vez que mirou para que o stock - 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 dunha acción, o nome, e un prezo. 323 00:23:50,780 --> 00:23:53,910 Aqueles están contidos dentro dun array asociativo. 324 00:23:53,910 --> 00:24:01,390 Olle-se a función de busca dentro do functions.php para máis información 325 00:24:01,390 --> 00:24:04,010 sobre os tipos de retorno daqueles. 326 00:24:04,010 --> 00:24:08,520 >> Gran! Entón, finalmente, vai querer amosar a información de stock. 327 00:24:08,520 --> 00:24:14,110 Probablemente vai querer amosar - queres acceder estas variables. 328 00:24:14,110 --> 00:24:17,610 Despois de ter o prezo nunha variable - 329 00:24:17,610 --> 00:24:20,860 , Así como o nome e símbolo - 330 00:24:20,860 --> 00:24:25,550 entón vai querer amosar os na súa páxina do modelo. 331 00:24:25,550 --> 00:24:31,540 Ese modelo de páxina podería ser chamado show_quote.php ou algo así. 332 00:24:31,540 --> 00:24:39,660 A súa páxina quote.php tornaría cita concerto e despois pasar todos eses valores. 333 00:24:39,660 --> 00:24:47,170 Entón, na súa páxina php, realmente imprimir eses valores para o aspecto HTML da páxina. 334 00:24:47,170 --> 00:24:53,800 É só usar a función de impresión e pasar o prezo. 335 00:24:53,800 --> 00:24:57,990 Hai 2 xeitos - pode concatenar co operador punto, 336 00:24:57,990 --> 00:25:02,230 ou usar un espazo reservado. 337 00:25:07,580 --> 00:25:12,750 >> Os usuarios, finalmente, van ser de compra e venda de accións. 338 00:25:12,750 --> 00:25:18,450 Queremos permitir-lles algunha forma de ver todas as accións que teñen actualmente. 339 00:25:18,450 --> 00:25:21,350 Imos chamar iso da súa carteira. 340 00:25:21,350 --> 00:25:26,180 Bolsa sería, presuntamente, para cada usuario, pode ter un monte de liñas 341 00:25:26,180 --> 00:25:31,760 list tipo de acción que teñen e, entón, como moitos dos que teñen. 342 00:25:31,760 --> 00:25:36,500 Nosa mesa existente - agora temos unha táboa de usuarios na nosa base de datos. 343 00:25:36,500 --> 00:25:41,780 Que contén o nome de usuario, así como a súa contrasinal e canto diñeiro eles teñen. 344 00:25:41,780 --> 00:25:50,390 Non hai ningunha maneira real de almacenar todas as súas accións dentro diso. 345 00:25:50,390 --> 00:25:58,010 Non é como podemos inserir novas columnas para cada stock. 346 00:25:58,010 --> 00:26:03,650 Iso sería unha liña moito, moito tempo, porque temos unha cantidade infinita 347 00:26:03,650 --> 00:26:06,200 de tipos de accións que poderían. 348 00:26:06,200 --> 00:26:09,150 Así, en vez que imos facer é dentro do mesmo banco de datos, 349 00:26:09,150 --> 00:26:15,000 imos ter unha táboa de usuarios, pero a continuación, tamén teremos unha táboa carteira. 350 00:26:15,000 --> 00:26:18,430 A táboa a carteira será definitivamente ligada á táboa de usuarios, 351 00:26:18,430 --> 00:26:24,600 pero a estrutura da táboa carteira terá a información sobre accións, 352 00:26:24,600 --> 00:26:27,780 cantas partes de que o stock o usuario ten, 353 00:26:27,780 --> 00:26:31,620 , Así como un número de identificación de usuario particular. 354 00:26:31,620 --> 00:26:34,620 Ten a táboa de usuarios que ten o id, así como o nome de usuario, a suma - 355 00:26:34,620 --> 00:26:40,130 cal é o contrasinal, o contrasinal criptografada - 356 00:26:40,130 --> 00:26:42,130 e, a continuación, a cantidade de diñeiro que eles teñen. 357 00:26:42,130 --> 00:26:47,900 O número de identificación estaría ligado ao número de identificación da carteira. 358 00:26:47,900 --> 00:26:52,490 A carteira tería só o símbolo do stock, así como as accións - 359 00:26:52,490 --> 00:26:55,410 o número de accións que o stock que o usuario ten. 360 00:26:55,410 --> 00:26:58,520 Nesta táboa carteira que tería basicamente 361 00:26:58,520 --> 00:27:03,760 todas as accións posuídas por todos os usuarios do seu sitio. 362 00:27:03,760 --> 00:27:10,550 Máis tarde, especifica partes dun determinado usuario - só a súa carteira - 363 00:27:10,550 --> 00:27:15,360 vostede recuperar os valores da táboa do seu Cartafol de tal xeito que 364 00:27:15,360 --> 00:27:19,930 o número de identificación é específico para ese usuario. 365 00:27:26,520 --> 00:27:34,890 >> Cando mostrar o carné, quere denunciar cada unha das accións en carteira do usuario. 366 00:27:34,890 --> 00:27:41,670 Vai querer saber o número de accións eo valor actual das accións. 367 00:27:41,670 --> 00:27:45,950 Que o valor actual das referidas accións non son almacenados na táboa de carteira 368 00:27:45,950 --> 00:27:51,640 porque iso vai estar a actualizar - como mínimo - cada día polo Yahoo. 369 00:27:51,640 --> 00:27:58,550 Para obter esa información, non pode facer referencia que a partir da súa consulta SQL. 370 00:27:58,550 --> 00:28:02,400 Cal é a función que ofrece para nós? Que función terá o prezo? 371 00:28:02,400 --> 00:28:09,110 Isto é pescuda, polo tanto, usando investigación nun símbolo particular vai dar unha morea de información. 372 00:28:09,110 --> 00:28:13,710 El lle vai dar tres pezas de información - o nome, o símbolo, así como o prezo. 373 00:28:13,710 --> 00:28:17,490 Despois de buscar un determinado símbolo, entón podes obter o prezo, 374 00:28:17,490 --> 00:28:20,460 e entón pode utilizar o prezo a ser exhibido no seu Cartafol. 375 00:28:20,460 --> 00:28:26,190 >> A carteira tamén debe amosar saldo do usuario de caixa actual. 376 00:28:26,190 --> 00:28:30,310 Este campo é almacenada dentro da súa táboa de usuarios. 377 00:28:30,310 --> 00:28:33,400 Entón lembrando como estamos, basicamente, ter que - 378 00:28:33,400 --> 00:28:36,850 Estamos tendo distintos tipos de arquivos PHP. 379 00:28:36,850 --> 00:28:40,160 Nós imos ter un controlador que basicamente fai todo o pensamento para ti. 380 00:28:40,160 --> 00:28:45,940 E entón temos un modelo no que o modelo traballa con saída de datos. 381 00:28:45,940 --> 00:28:50,790 Ten que pensar sobre o que as variables do controlador necesitará tomar polgadas 382 00:28:50,790 --> 00:29:01,630 Se estamos lidando con un Cartafol que xera todo o nome, símbolo e número de partes, 383 00:29:01,630 --> 00:29:03,730 así como o prezo actual dunha acción, 384 00:29:03,730 --> 00:29:06,950 a continuación, vai querer atopar unha forma de, basicamente, pasando - 385 00:29:06,950 --> 00:29:12,070 pode pasar nunha matriz de valores que corresponden a ese. 386 00:29:15,250 --> 00:29:24,360 >> Imos a un exemplo de como pode recuperar todas as accións 387 00:29:24,360 --> 00:29:26,210 propiedade dun usuario en particular. 388 00:29:26,210 --> 00:29:31,400 Isto non está lidando - aínda - o prezo das accións. 389 00:29:31,400 --> 00:29:33,520 O que isto ía facer é realizar unha consulta. 390 00:29:33,520 --> 00:29:37,070 Sería obter o símbolo, así como as partes - 391 00:29:37,070 --> 00:29:42,770 Eu estou chamando esta táboa, pero, neste caso, o que sería? 392 00:29:42,770 --> 00:29:49,400 Cal é o nome da táboa que estamos lidando con que símbolo e partes 393 00:29:49,400 --> 00:29:52,280 para un usuario específico? 394 00:29:52,280 --> 00:29:56,410 É usuarios ou carteira. 395 00:29:56,410 --> 00:29:57,820 Bolsa. 396 00:29:57,820 --> 00:30:03,220 O que isto faría é portfolio de consulta para os símbolos e as partes 397 00:30:03,220 --> 00:30:04,920 para un usuario específico. 398 00:30:04,920 --> 00:30:09,260 Aquí, eu digo, (símbolo SELECT, accións de tbl - 399 00:30:09,260 --> 00:30:12,280 pero en vez de mesa, vostede vai substituír aquel con carteira. 400 00:30:12,280 --> 00:30:15,220 "Onde" é basicamente a miña condición. 401 00:30:15,220 --> 00:30:21,050 Eu estou dicindo que eu só quero obter esas matrices asociativas que corresponden 402 00:30:21,050 --> 00:30:23,850  a esta condición seguinte - Id iguais. 403 00:30:23,850 --> 00:30:27,600  Entón eu estou poñendo un espazo reservado alí e despois ID da sesión. 404 00:30:27,600 --> 00:30:36,720 O que isto ía facer é dicir para cada liña en liñas. 405 00:30:36,720 --> 00:30:40,940 Esta é unha maneira elegante no canto de realmente ter que crear un loop 406 00:30:40,940 --> 00:30:47,450 que itera sobre todos os índices, a continuación, en PHP pode ter un para-cada loop. 407 00:30:47,450 --> 00:30:53,520 >> Se vostede ten unha determinada matriz, entón podes dicir que eu vou chamar a cada elemento sucesivo - 408 00:30:53,520 --> 00:30:57,930 Vou chamar a cada elemento este nome. 409 00:30:57,930 --> 00:31:02,780 Así, para cada un destes elementos, eu vou chamalos de agasallo, 410 00:31:02,780 --> 00:31:04,500 entón eu podo facer iso. 411 00:31:04,500 --> 00:31:10,370 Neste para cada un, ten liñas como a súa matriz real, e cada liña que vai conectar liña. 412 00:31:10,370 --> 00:31:12,420 Cada vez que executa o corpo, 413 00:31:12,420 --> 00:31:16,960 vai subir e vai actualizar a liña para o seguinte elemento liñas. 414 00:31:18,900 --> 00:31:25,260 >> Agora, en termos de compra de stocks, 415 00:31:25,260 --> 00:31:29,500 o que queremos facer é obter o stock que o usuario quere comprar 416 00:31:29,500 --> 00:31:35,300 ea cantidade de accións que o usuario quere mercar, e despois - se quixeren - 417 00:31:35,300 --> 00:31:38,120 engadir que accións para a súa carteira. 418 00:31:38,120 --> 00:31:40,310 Obviamente, se eles están a mercar algo, entón iso vai diminuír 419 00:31:40,310 --> 00:31:43,520 a cantidade de diñeiro que eles teñen, a fin de que vai diminuír o seu diñeiro. 420 00:31:43,520 --> 00:31:48,380 Nós imos estar lidando coa actualización da carteira, así como a táboa de usuarios, 421 00:31:48,380 --> 00:31:50,300 o cal contén o diñeiro. 422 00:31:50,300 --> 00:31:54,920 Pero, primeiro, ten que para obter o stock real ea cantidade de accións que o usuario quere. 423 00:31:54,920 --> 00:32:00,010 Para iso, vai ter un formulario HTML que vai pedir para o símbolo do stock 424 00:32:00,010 --> 00:32:03,360 que quere mercar, así como o número de accións. 425 00:32:03,360 --> 00:32:08,300 Entón quere engadir. 426 00:32:08,300 --> 00:32:13,750 Vai querer escoller valores. 427 00:32:13,750 --> 00:32:19,670 Pasamos por iso un pouco xa, pero cando está intentando obter determinadas liñas - 428 00:32:19,670 --> 00:32:22,020 recuperar determinadas liñas da táboa SQL, 429 00:32:22,020 --> 00:32:24,290 esta é a seguinte sintaxe. 430 00:32:24,290 --> 00:32:28,400 Seleccionar, e en seguida, se especificar unha estrela, 431 00:32:28,400 --> 00:32:31,830 que vai basicamente voltar a liña, todo enteiro para ti. 432 00:32:31,830 --> 00:32:36,890 Entón, de novo, ten a condición en que, e entón se especifica - 433 00:32:36,890 --> 00:32:39,990 Eu só quero o nome de usuario para ser igual-e, 434 00:32:39,990 --> 00:32:46,660 por iso só vai recuperar a liña usuarios que corresponde ao correo-in. 435 00:32:46,660 --> 00:32:52,860 >> Cando un usuario quere engadir un intercambio de unha carteira, 436 00:32:52,860 --> 00:32:54,400 Debe comprobar algúns erros. 437 00:32:54,400 --> 00:32:57,680 Quere estar seguro de que o usuario realmente pode ter recursos para as accións, 438 00:32:57,680 --> 00:33:00,810 así que vai querer comprobar o seu diñeiro. 439 00:33:00,810 --> 00:33:05,810 Antes, costumávamos estrela para recuperar unha liña enteira dunha táboa SQL. 440 00:33:05,810 --> 00:33:08,930 Pero aquí, podemos realmente só especificar que eu só quero un valor - 441 00:33:08,930 --> 00:33:10,080 Eu só quero o diñeiro. 442 00:33:10,080 --> 00:33:17,970 Entón, aquí, sería devolver o diñeiro para o usuario ID de número 1. 443 00:33:17,970 --> 00:33:25,940 Se un usuario xa comprou unha determinada acción, pero despois compra máis que o stock, 444 00:33:25,940 --> 00:33:30,440 a continuación, na súa carteira - non quere unha liña separada, 445 00:33:30,440 --> 00:33:34,770 outra liña que contén esa nova transacción. 446 00:33:34,770 --> 00:33:37,950 Realmente quere actualizar a cantidade. 447 00:33:37,950 --> 00:33:42,530 Todo o que está cambiando é realmente a cantidade de accións que o usuario ten. 448 00:33:42,530 --> 00:33:47,730 Se usar a consulta INSERT INTO - Entón é só introducir o seu Cartafol todos estes valores - 449 00:33:47,730 --> 00:33:51,710 o número de ID de usuario, así como o símbolo da acción que está a mercar 450 00:33:51,710 --> 00:33:57,750 e as partes, entón tamén vai querer especificar, así, se eu me deparou con unha copia da chave - 451 00:33:57,750 --> 00:34:00,750 neste caso, a clave duplicada non é só o ID de usuario, pero tamén o símbolo stock - 452 00:34:00,750 --> 00:34:08,340 porque só pode ter - a nosa premisa é que pode ter só unha liña 453 00:34:08,340 --> 00:34:10,699  que corresponde a un símbolo en particular. 454 00:34:10,699 --> 00:34:13,659 Entón, en clave duplicada - se ten unha colisión alí - 455 00:34:13,659 --> 00:34:18,520 está indo só para actualizar partes do seu novo valor. 456 00:34:18,520 --> 00:34:23,290 Accións iguala todo o que tiña antes de máis o número de accións que o usuario está a mercar. 457 00:34:27,790 --> 00:34:31,090 >> Agora que nós actualizamos a táboa de Cartafol, 458 00:34:31,090 --> 00:34:34,730 imos querer actualizar cartos do usuario. 459 00:34:34,730 --> 00:34:40,300 Que está na táboa de usuarios, polo que estamos indo a ser subtraindo unha certa cantidade de diñeiro. 460 00:34:40,300 --> 00:34:46,270 Presuntamente, que vai ser diñeiro é igual a menos diñeiro - e despois dun determinado importe. 461 00:34:46,270 --> 00:34:50,560 Para actualizar o diñeiro, faría - 462 00:34:50,560 --> 00:34:55,699 se eu quería facer diñeiro correo-e, entón quere realizar esta consulta - 463 00:34:55,699 --> 00:35:00,220 «Usuarios de actualización" e defina a columna de caixa de diñeiro - 464 00:35:00,220 --> 00:35:07,300 >> Quere eliminar dólares 9.999 só o nome de usuario é igual ao correo-in. 465 00:35:07,300 --> 00:35:12,020 Pero, neste caso, non queremos restar 9.999 especificamente. 466 00:35:12,020 --> 00:35:17,610 Queremos indicar, tamén, queremos restar o prezo actual da acción 467 00:35:17,610 --> 00:35:22,400 multiplicado polo número de accións que están a mercar. 468 00:35:25,260 --> 00:35:29,910 >> Agora lles permitiu ver todas as accións que teñen, 469 00:35:29,910 --> 00:35:33,080 así como comprar máis accións. 470 00:35:33,080 --> 00:35:37,430 Tamén xa lles permitiu mirar para arriba o prezo actual de un stock. 471 00:35:37,430 --> 00:35:40,030 Aquí, queremos permitir que venden. 472 00:35:40,030 --> 00:35:42,160 Primeiro queremos amosar basicamente - 473 00:35:42,160 --> 00:35:45,270 queremos permitir que vexan todas as accións que teñen, 474 00:35:45,270 --> 00:35:53,170 Entón, aquí queremos mostrar todas as liñas do Cartafol. 475 00:35:53,170 --> 00:35:56,650 Se decide vender unha determinada acción, 476 00:35:56,650 --> 00:35:59,140 entón imos supor que eles queren vender de todo. 477 00:35:59,140 --> 00:36:04,350 Eles non son só vai vender un 50% das súas accións, eles van vender 100% del. 478 00:36:04,350 --> 00:36:08,630 Podemos simplemente borrar a liña enteira da carteira. 479 00:36:08,630 --> 00:36:17,520 Podemos borrar partes do usuario do símbolo correcto. 480 00:36:17,520 --> 00:36:21,410 Non é a sintaxe para iso. 481 00:36:21,410 --> 00:36:22,710 >> Entón queremos actualizar o diñeiro. 482 00:36:22,710 --> 00:36:30,930 Nós imos estar engadindo o diñeiro igual á cantidade de accións que están a ver 483 00:36:30,930 --> 00:36:34,640 multiplicado polo prezo actual da acción - 484 00:36:34,640 --> 00:36:38,610 non o prezo a que comprou, pero o prezo a que son - 485 00:36:38,610 --> 00:36:40,500 o prezo actual cando eles están a ver. 486 00:36:40,500 --> 00:36:43,660 Para referenciar o prezo actual dunha acción, 487 00:36:43,660 --> 00:36:49,120 vai querer usar de investigación, o que lle dará o prezo dunha acción 488 00:36:50,030 --> 00:36:52,650 no momento actual. 489 00:36:52,650 --> 00:36:55,930 >> Agora ficamos coa historia, 490 00:36:55,930 --> 00:37:00,170 que desexa permitir que un usuario para manter o control de todas as súas operacións - 491 00:37:00,170 --> 00:37:03,040 quere ver sempre que vendeu algo, sempre que compraron un stock. 492 00:37:03,040 --> 00:37:08,870 Queremos indicar o momento en que eles fixeron iso, así como cantos eles compraron 493 00:37:08,870 --> 00:37:11,650 eo que era stock. 494 00:37:11,650 --> 00:37:17,800 Non temos ningún estrutura, actual existente, que especifica que? 495 00:37:17,800 --> 00:37:25,230 Ben, temos carteira que exhibe os stocks número que un usuario ten 496 00:37:25,230 --> 00:37:26,470 por unha parte determinada. 497 00:37:26,470 --> 00:37:34,060 Pero estamos estruturando carteira de xeito que actualiza cando compramos múltiple, 498 00:37:34,060 --> 00:37:40,190 mentres que a historia debe - se mercar de Apple, 10 partes do mesmo, e, posteriormente, vender 5, 499 00:37:40,190 --> 00:37:44,040 entón desexa ver os separadamente como accións separadas, liñas separadas. 500 00:37:44,040 --> 00:37:48,520 Considerando que a acción de ver que na nosa mesa portfolio 501 00:37:48,520 --> 00:37:52,540 sería só unha actualización para que determinada liña, 502 00:37:52,540 --> 00:37:55,740  por iso estamos probablemente vai querer outra táboa. 503 00:37:55,740 --> 00:38:00,460 No noso banco de datos, temos a nosa táboa de usuarios, temos a nosa táboa de Cartafol, 504 00:38:00,460 --> 00:38:04,090 e agora probablemente vai querer unha táboa de histórico. 505 00:38:04,090 --> 00:38:08,070 Esta táboa de histórico pode seguir a data actual, 506 00:38:08,070 --> 00:38:12,800 así como o símbolo de acción particular, así como cantas accións, 507 00:38:12,800 --> 00:38:15,410 e entón o que é acción - 508 00:38:15,410 --> 00:38:18,800 se fose mercar esas accións ou se estaba a ver. 509 00:38:20,660 --> 00:38:25,720 >> Para tratar con data, hai un par de formas que pode facelo. 510 00:38:25,720 --> 00:38:28,820 PHP ten unha forma de manter o control de data, o que pode ollar-se a si mesmo. 511 00:38:28,820 --> 00:38:33,990 En SQL tamén pode usar agora ou timestamp actual. Isto é con vostede. 512 00:38:33,990 --> 00:38:40,720 Só asegúrese de que cada vez que un usuario compra ou vende, vai estar a actualizar o seu diñeiro 513 00:38:40,720 --> 00:38:46,750 na táboa de usuarios, vai estar a actualizar as liñas na táboa de carteiras, 514 00:38:46,750 --> 00:38:50,900 entón tamén vai estar a actualizar a historia, 515 00:38:50,900 --> 00:38:56,260 entón non van ser separados 3 consultas SQL que estará chamando alí. 516 00:38:58,640 --> 00:39:01,530 Temos unha morea de funcionalidade agora. 517 00:39:01,530 --> 00:39:10,600 >> Só un par de recordatorios de que no seu ficheiro de índice, vai querer obrigar a polo menos o - 518 00:39:10,600 --> 00:39:15,550 pero vai querer permitir que un usuario de conexión para a páxina buy.php. 519 00:39:15,550 --> 00:39:23,560 Isto vai permitir que un usuario - buy.php é o controlador, polo que vai, quere 520 00:39:23,560 --> 00:39:29,170 Enviar a - que vai mandalo para a forma que lle permite ollar as cousas. 521 00:39:29,170 --> 00:39:34,420 Temos historia. Temos a sesión, obter unha cotización e despois vender. 522 00:39:34,420 --> 00:39:37,350 Estas son, como mínimo, o que quere amosar. 523 00:39:37,350 --> 00:39:43,640 En termos de carteira, a carteira é realmente mostra na páxina de índice. 524 00:39:43,640 --> 00:39:52,050 Ou tamén ao índice, aquí vemos que fai portfolio.php 525 00:39:52,050 --> 00:40:00,050 e pasa a matriz asociativa - basicamente o título é igual a carteira. 526 00:40:00,050 --> 00:40:02,610 Entón, este é o controlador. 527 00:40:02,610 --> 00:40:08,000 Ou tamén para o modelo de portfolio.php, 528 00:40:08,000 --> 00:40:18,060 entón todo o que ten é - basicamente exhibe unha imaxe que di, oh, este sitio está en construcción. 529 00:40:18,060 --> 00:40:23,810 Máis tarde, unha vez que pasar - vostede estar pasando información basicamente máis específico. 530 00:40:23,810 --> 00:40:27,400 En vez de só o título, probablemente vai estar pasando en máis cousas. 531 00:40:27,400 --> 00:40:32,010 Unha vez que ten eses valores, entón portfolio.php pode tratar con eses valores 532 00:40:32,010 --> 00:40:34,490 e imprimir-los en calquera tipo de orde. 533 00:40:34,490 --> 00:40:41,660 >> Despois de aplicar todo isto, tamén precisa implementar unha característica máis. 534 00:40:41,660 --> 00:40:44,890 Isto pode ser permitir que un usuario cambiar o seu contrasinal, 535 00:40:44,890 --> 00:40:50,110 para axustar o teu contrasinal se esqueceron que - así a redefinición de contrasinal, a continuación, 536 00:40:50,110 --> 00:40:54,560 Probablemente tamén quere editar rexistrar para que lles permite especificar un correo electrónico, 537 00:40:54,560 --> 00:40:57,910 así que asegúrese o seu contrasinal, entón eles poden conseguir isto. 538 00:40:57,910 --> 00:41:02,870 Eles probablemente pode entrar no seu nome de usuario e, a continuación, un correo electrónico será enviado a eles 539 00:41:02,870 --> 00:41:06,180 con un link para poder axustar o teu contrasinal. 540 00:41:06,180 --> 00:41:10,980 Pode ter algo que permite aos usuarios 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-lles para engadir diñeiro para o seu sitio. 543 00:41:19,910 --> 00:41:24,970 Así que volver para o concepto de controladores e modelos un pouco. 544 00:41:24,970 --> 00:41:31,170 Vai ter algo así como un - así vai ter un controlador aquí. 545 00:41:31,170 --> 00:41:35,080 Agora, nós estamos mirando para o exemplo login.php. 546 00:41:35,080 --> 00:41:38,220 Cando temos un controlador, basicamente iso vai levar dous casos. 547 00:41:38,220 --> 00:41:42,090 Cando temos controladores, estamos nesa parte que somos tamén unha especie de xestionar 548 00:41:42,090 --> 00:41:43,880 cando temos formas tamén. 549 00:41:43,880 --> 00:41:47,500 O controlador ten basicamente accións separadas - 550 00:41:47,500 --> 00:41:53,880 unha un formulario xa foi presentado, e despois dous, se o usuario está chegando a esta páxina 551 00:41:53,880 --> 00:41:56,870 , Por primeira vez e aínda que de entrada que forma. 552 00:41:56,870 --> 00:42:02,820 >> Eu estou indo a ir a ese primeiro caso antes de subir ao primeiro caso de ter a forma dentro 553 00:42:02,820 --> 00:42:12,640 Aquí nós dicimos, o formulario foi sometido o post método - 554 00:42:12,640 --> 00:42:13,580 non se preocupe con iso un pouco. 555 00:42:13,580 --> 00:42:19,780 Non te preocupes moito sobre iso, pero entender que esta función, basicamente, trátase 556 00:42:19,780 --> 00:42:22,430 un formulario foi sometido ou non. 557 00:42:22,430 --> 00:42:25,640 Esta condición é verdadeira se o usuario ten presentado o formulario. 558 00:42:25,640 --> 00:42:45,940 Se non, entón imos querer chamar login_form.php renderse, e despois pasar no título. 559 00:42:45,940 --> 00:42:48,010 Este título é basicamente só vai aparecer na cabeceira. 560 00:42:48,010 --> 00:42:54,990 O que isto fai é basicamente di, ok - ben, se un usuario vai para login.php 561 00:42:54,990 --> 00:43:00,310 e non ten realmente conectado, entón eu quero mandalos para a páxina que ten que forman 562 00:43:00,310 --> 00:43:03,160 o que lles permite introducir o nome de usuario e contrasinal. 563 00:43:03,160 --> 00:43:07,590 Entón eu vou para login_form e que ten a forma real. 564 00:43:07,590 --> 00:43:13,750 Entón, unha vez que o usuario alega que forma, eles van enviá-lo para login.php 565 00:43:13,750 --> 00:43:15,840 co método de post. 566 00:43:15,840 --> 00:43:21,560 Entón eu estou indo realmente para entrar nesta sección do meu loop se else. 567 00:43:21,560 --> 00:43:29,560 Entón é aquí que lidamos cos valores inseridos no formulario. 568 00:43:29,560 --> 00:43:32,800 É aquí que temos que tratar con isto. 569 00:43:32,800 --> 00:43:40,860 >> Entón, despois de tratar con estes valores - se está lidando con - 570 00:43:40,860 --> 00:43:46,640 dicir que estamos lidando coa páxina quote.php onde alguén pode introducir un stock que 571 00:43:46,640 --> 00:43:49,950 eles queren mirar para arriba, e despois ver que a exhibición - 572 00:43:49,950 --> 00:43:52,850 ese é o tipo de semellante aquí. 573 00:43:52,850 --> 00:43:56,070 Aquí temos un formulario de login - you'd probablemente ten un formulario de cotización - 574 00:43:56,070 --> 00:44:00,290 pero, a continuación, unha vez que o usuario teña realmente presentado esta información, 575 00:44:00,290 --> 00:44:04,810 entón vai querer o controlador pasar a outro modelo 576 00:44:04,810 --> 00:44:07,430 que debería amosar-lles que a información real. 577 00:44:07,430 --> 00:44:11,250 Entón seguro por aquí, entón probablemente vai - 578 00:44:11,250 --> 00:44:18,830 todo o final da súa condición aquí - se o método é igual a post - 579 00:44:18,830 --> 00:44:22,520 entón probablemente vai querer facer outra páxina - a cita concerto - 580 00:44:22,520 --> 00:44:28,040 que lle envía a esta páxina - show_quote.php - 581 00:44:28,040 --> 00:44:34,120 e despois no arquivo que ha referenciar eses valores. 582 00:44:34,120 --> 00:44:36,480 Isto ten sentido? 583 00:44:36,480 --> 00:44:40,390 >> Temos un controlador que trata basicamente cos dous casos - 584 00:44:40,390 --> 00:44:42,710 se introduciu unha forma ou non. 585 00:44:42,710 --> 00:44:43,950 Se non ten inserido un formulario, 586 00:44:43,950 --> 00:44:47,300 el ha redireccionándoos para esa forma, que, entón, poñer-lo de volta para aquela páxina. 587 00:44:47,300 --> 00:44:54,020 Entón, unha vez que tes a información no controlador, o corpo vai tratar con isto 588 00:44:54,020 --> 00:44:59,750 información necesaria - ou busca-valores para o stock, 589 00:44:59,750 --> 00:45:04,150 e, a continuación, unha vez que é mirou eses valores e los nunha matriz cun formato, 590 00:45:04,150 --> 00:45:08,180 entón pode pasar ese array para a páxina do modelo 591 00:45:08,180 --> 00:45:10,330  que trata sobre a saída desa información. 592 00:45:10,330 --> 00:45:14,680 >> Unha vez máis, unha vez que en Internet, que vai ser divertido. 593 00:45:14,680 --> 00:45:20,310 Estamos fóra do C de xeito que non está limitado ao ASCII e que a saída da terminal, 594 00:45:20,310 --> 00:45:21,800 para divertirse con iso. 595 00:45:21,800 --> 00:45:24,920 Podes facelo tan visual como quere. 596 00:45:24,920 --> 00:45:31,860 Pode permitir que os usuarios de entrada de millóns de dólares en un momento, 597 00:45:31,860 --> 00:45:34,730 ou limitalos los e ser realmente significa e permitir-lles só para entrar nunha moeda de un centavo de cada vez 598 00:45:34,730 --> 00:45:36,330 ou algo así. 599 00:45:36,330 --> 00:45:38,550 Definitivamente non se esqueza de divertirse con iso. 600 00:45:38,550 --> 00:45:47,030 >> PHP código é un pouco máis simple, que é un pouco máis fácil de trazar o seu pseudocódigo 601 00:45:47,030 --> 00:45:50,070 para a implantación real. 602 00:45:50,070 --> 00:45:56,320 Así, con certeza divertirse con iso, porque é realmente a nosa última peza no CS50. 603 00:45:56,320 --> 00:46:01,150 Con iso, este foi Paso a paso 7. 604 00:46:01,150 --> 00:46:04,640 Unha vez que termine de asistir o paso a paso e terminou a súa pset, 605 00:46:04,640 --> 00:46:09,590 a continuación, estes foron tamén serie de exercicios, e agora estamos no o produto final - 606 00:46:09,590 --> 00:46:12,330 despois de pasar por exame 1. 607 00:46:12,330 --> 00:46:16,200 Entón, espero que pode usar as ferramentas que aprendeu coas serie de exercicios - 608 00:46:16,200 --> 00:46:21,980 non só a sintaxe, pero máis a noción abstracta de como tomar un certo - 609 00:46:21,980 --> 00:46:24,950 gusto, quero facer iso e entón realmente implementar isto. 610 00:46:24,950 --> 00:46:28,740 Aprender a loitar pola sintaxe e código de distribución. 611 00:46:28,740 --> 00:46:33,020 Lectura de código de outras persoas, e entón interpretar que o uso de pre-existentes funcións. 612 00:46:33,020 --> 00:46:37,360 >> Entón, boa sorte co pset pasado. 613 00:46:37,360 --> 00:46:39,930 Foi un pracer levar as orientacións. 614 00:46:39,930 --> 00:46:40,940 Espero que sexan útiles para ti. 615 00:46:40,940 --> 00:46:46,560 Estes foron paso a paso, e moitas grazas. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]