1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Walkthrough Problem Set 7] 2 00:00:03,000 --> 00:00:04,400 [Zamyla Chan] [Harvard University] 3 00:00:04,400 --> 00:00:07,640 [Dette er CS50] [CS50.TV] 4 00:00:07,640 --> 00:00:12,090 >> Hei alle sammen, og velkommen til Walkthrough 7, CS50 Finance. 5 00:00:12,090 --> 00:00:15,090 Nå er vi offisielt ferdig med alle psets i CS50, 6 00:00:15,090 --> 00:00:19,380 og vi bare igjen med en mer som kommer til å være en morsom implementering 7 00:00:19,380 --> 00:00:23,770 av et nettsted der brukerne kan logge på CS50 Finans 8 00:00:23,770 --> 00:00:25,830 og kjøpe og selge aksjer. 9 00:00:25,830 --> 00:00:32,280 >> I dag, skal vi ha noen verktøy til rådighet. 10 00:00:32,280 --> 00:00:34,320 Vi kommer til å snakke om tillatelser. 11 00:00:34,320 --> 00:00:36,380 Når du har en web-mappe, 12 00:00:36,380 --> 00:00:40,800 du kommer til å ønske å tillate brukere å utføre visse filer 13 00:00:40,800 --> 00:00:42,500 men også bare lese andre seg, 14 00:00:42,500 --> 00:00:45,150 så vi vil se nærmere tillatelser og hvordan du kan sette dem. 15 00:00:45,150 --> 00:00:49,630 Så vi kommer til å se nærmere på PHP, HTML og SQL-kode. 16 00:00:49,630 --> 00:00:51,990 >> Først tillatelser. 17 00:00:51,990 --> 00:00:56,060 Når du er på terminalen i en bestemt katalog, 18 00:00:56,060 --> 00:01:00,430 så hva du ønsker å gjøre er du ønsker å kjøre chmod kommandoen. 19 00:01:00,430 --> 00:01:03,750 Det er etterfulgt av enten bokstaver eller tall 20 00:01:03,750 --> 00:01:08,100 tilsvarende det du i utgangspunktet vil at verden skal se, 21 00:01:08,100 --> 00:01:09,830 deg selv å se, etc. 22 00:01:09,830 --> 00:01:13,350 For eksempel, når du har en mappe, 23 00:01:13,350 --> 00:01:15,560 så du ønsker at mappen skal være kjørbare av alle som ser det, 24 00:01:15,560 --> 00:01:19,500 så hva ville du gjøre er at du kan kjøre kommandoen chmod a + x 25 00:01:19,500 --> 00:01:21,050 og deretter navnet på mappen din. 26 00:01:21,050 --> 00:01:28,110 Når du har en fil som CSS-filer eller bildefiler - 27 00:01:28,110 --> 00:01:33,060 som JPEG og punktgrafikk, ting som det, eller noen JavaScript-kode - 28 00:01:33,060 --> 00:01:36,440 du vil at skal kunne leses av alle, 29 00:01:36,440 --> 00:01:39,880 så da hva du gjør er at du kan bruke wildcard - 30 00:01:39,880 --> 00:01:41,650 som er en stjerne - 31 00:01:41,650 --> 00:01:46,190 i utgangspunktet indikere i CSS-mappen - alt i denne mappen - 32 00:01:46,190 --> 00:01:48,740  Jeg kommer til å si at det kommer til å kunne leses av alle. 33 00:01:48,740 --> 00:01:54,220 Med tillatelser, når vi bruker bokstavene, 34 00:01:54,220 --> 00:01:57,610 Vi kan også bruke tall i stedet. 35 00:01:57,610 --> 00:02:00,900 Så, ser du at til slutt når du vil ha noe å være kjørbare - 36 00:02:00,900 --> 00:02:02,810 som er representert ved tallet 1 - 37 00:02:02,810 --> 00:02:08,340 noe å være lesbar er nummer 4 og deretter - 38 00:02:08,340 --> 00:02:10,590 skrivbar er nummer 2 - 39 00:02:10,590 --> 00:02:13,670 og så egentlig når du vil ha en kombinasjon av disse, så du legger dem til. 40 00:02:13,670 --> 00:02:15,860 Hvis du vil ha noe å være lesbar, skrivbar, og kjørbar, 41 00:02:15,860 --> 00:02:21,970 så ville du legge opp 4, 2 og 1, og som vil gi deg 7, 42 00:02:21,970 --> 00:02:26,230 så når du har en mappe du vil at skal være kjørbare av alle - 43 00:02:26,230 --> 00:02:31,380 samt lesbar og skrivbar - så du gjør at 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Det ville være 7 for deg, så en for andre mennesker. 45 00:02:38,140 --> 00:02:42,870 Når du har spec, vil det faktisk spesifisere hvilke mapper og hvilke filer 46 00:02:42,870 --> 00:02:45,040 må være chmod-ed spesifikt. 47 00:02:45,040 --> 00:02:47,920 For eksempel, når du har mapper - de er 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 når du har bilder eller HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 da de kommer til å være 6, 0, 4 - eller 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 og deretter PHP-filer skal være 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 Tanken bak det er at brukerne ikke skal faktisk se PHP-kode, 52 00:03:04,940 --> 00:03:08,370 men bare være i stand til å se resultatet. 53 00:03:08,370 --> 00:03:11,030 >> Flott! Flytte inn PHP. 54 00:03:11,030 --> 00:03:18,850 Ganske enkelt, når du vil ha en PHP-fil, er filsuffiks. Php. 55 00:03:18,850 --> 00:03:22,000 Du kan også blande HTML med PHP-kode. 56 00:03:22,000 --> 00:03:24,880 Hvis du har en HTML-fil, for eksempel, 57 00:03:24,880 --> 00:03:32,520 så kan du legge den med venstre vinkel, spørsmålstegn, php - 58 00:03:32,520 --> 00:03:39,320 sette php kode - og deretter lukke det med en annen spørsmålstegn og en rett vinkel. 59 00:03:39,320 --> 00:03:45,020 Variabler i PHP er mye lettere å håndtere enn variabler i C. 60 00:03:45,020 --> 00:03:50,310 Enhver variabel starter bare med et dollartegn foran det, og de er svakt skrevet. 61 00:03:50,310 --> 00:03:53,470 Det betyr at du ikke trenger å bekymre deg for å sette noe 62 00:03:53,470 --> 00:03:55,020 lik en streng eller et heltall. 63 00:03:55,020 --> 00:03:57,710 Du kan rett og slett si, dette er mitt navn på variabelen 64 00:03:57,710 --> 00:04:00,390 og så er dette sin verdi, 65 00:04:00,390 --> 00:04:03,280 så det kommer til å bli lettere å håndtere det. 66 00:04:03,280 --> 00:04:08,220 >> En annen ting er at PHP kan du bruke assosiative arrays. 67 00:04:08,220 --> 00:04:11,330 Du kan rett og slett definere en rekke som du ville gjort i C 68 00:04:11,330 --> 00:04:14,900 ved å si, dollar sign-navnet på array-likemenn, 69 00:04:14,900 --> 00:04:22,600 og deretter i hakeparenteser har i utgangspunktet bare en liste over verdier av alle elementene i matrisen. 70 00:04:22,600 --> 00:04:27,160 Men, i PHP hva du kan også gjøre er spesifisere utgangspunktet - 71 00:04:27,160 --> 00:04:31,050 Det er typen som en hash-funksjon. 72 00:04:31,050 --> 00:04:34,410 Du kan angi indeksen - hva du vil kalle det - 73 00:04:34,410 --> 00:04:37,030 og deretter som svarer til en verdi. 74 00:04:37,030 --> 00:04:42,880 Hvis du faktisk passere i en 1 =, b = 2, c = 3, 75 00:04:42,880 --> 00:04:50,820 deretter din matrise på indeksen en vil gi deg en. 76 00:04:50,820 --> 00:04:56,600 Dette pset vil varme deg opp med noen PHP i en del av spørsmålene, 77 00:04:56,600 --> 00:04:59,240 og vi dykke inn CS50 Finance. 78 00:04:59,240 --> 00:05:02,650 >> Vi har et par - har vi noe funksjonalitet, i utgangspunktet, 79 00:05:02,650 --> 00:05:05,130 å gjennomføre i dette nettstedet. 80 00:05:05,130 --> 00:05:10,440 Vi ønsker å tillate brukere å registrere seg i vår nettside med et brukernavn og et passord. 81 00:05:10,440 --> 00:05:13,670 Vi ønsker å tillate dem å slå opp et sitat, 82 00:05:13,670 --> 00:05:19,330 og deretter vil vi skrive ut navnet på dette sitatet, så vel som den nåværende prisen som det er. 83 00:05:19,330 --> 00:05:26,830 Vi ønsker å tillate dem å se en portefølje av alle aksjene som de har kjøpt så langt. 84 00:05:26,830 --> 00:05:34,240 Vi ønsker også å tillate dem å kjøpe aksjer samt selge dem. 85 00:05:34,240 --> 00:05:37,540 Og så til slutt, ønsker vi å tillate dem å se historien 86 00:05:37,540 --> 00:05:39,490 av alle transaksjoner som de har gjort. 87 00:05:39,490 --> 00:05:41,540 Så, til slutt, etter at du har gjennomført alt dette, 88 00:05:41,540 --> 00:05:45,110 da er du fri til å implementere en ekstra funksjon. 89 00:05:45,110 --> 00:05:46,610 Vi vil gå inn i dem. 90 00:05:46,610 --> 00:05:51,330 De kan enten være slik at brukerne kan få ekstra penger ved å deponere ekstra penger, 91 00:05:51,330 --> 00:05:54,550 eller du kan tillate dem å endre passordet, eller noe sånt, 92 00:05:54,550 --> 00:06:00,590 e dem en kvittering når de kjøper eller selger en aksje. 93 00:06:00,590 --> 00:06:05,370 Det er en begrenset liste over funksjoner som du kan implementere selv, 94 00:06:05,370 --> 00:06:08,340 så det er den siste der. 95 00:06:08,340 --> 00:06:13,430 >> Siden dette er et nettsted, dere har også en stor frihet til å tilpasse den. 96 00:06:13,430 --> 00:06:20,960 Vi gjør gi noen CSS-kode, men du er definitivt fri til å finpusse det, 97 00:06:20,960 --> 00:06:26,680 gjør det ser bedre, men underliggende er det en grunnleggende funksjonalitet 98 00:06:26,680 --> 00:06:30,310 så alltid forholde seg til spec om hva du faktisk trenger å inkludere det. 99 00:06:30,310 --> 00:06:39,940 Etter spec, vi skal bruke apparatet som også en server. 100 00:06:39,940 --> 00:06:43,910 Det kommer til å være vertskap for vår hjemmeside for oss, på sin lokale server. 101 00:06:43,910 --> 00:06:49,750 Hvis du følger disse instruksjonene og pakk ut pset 7 distribusjon kode 102 00:06:49,750 --> 00:06:53,500 inn din virtuelle host / lokale verten mappe, 103 00:06:53,500 --> 00:07:02,470  så kan du bare gå http://localhost/ i Google Chrome i apparatet, 104 00:07:02,470 --> 00:07:09,120 og så ville du komme koden som du har skrevet pset 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 kommer med en haug med distribusjon kode, 106 00:07:14,490 --> 00:07:18,330 og forhåpentligvis Vi hare - gjennom alle psets før dette - 107 00:07:18,330 --> 00:07:21,700 vant oss til å lese gjennom distribusjon kode, 108 00:07:21,700 --> 00:07:25,650 forstå hvilke funksjoner er allerede gitt, og hvordan vi kan være i stand til å bruke 109 00:07:25,650 --> 00:07:29,470 disse og de andre funksjonene som vi kommer til å implementere. 110 00:07:29,470 --> 00:07:31,570 I dette tilfellet har vi tre mapper. 111 00:07:31,570 --> 00:07:36,350 Vi har en HTML-mappe, en inkluderer mappe, og en maler-mappen. 112 00:07:36,350 --> 00:07:40,630 Det vi skal gjøre med dette pset er slags skille tenkning - 113 00:07:40,630 --> 00:07:45,580 programmering tenkning - av PHP-koden med den faktiske visuelle aspektet. 114 00:07:45,580 --> 00:07:52,690 Vi vil ha en PHP-fil som gjør alt de tenker, leser inn i databasen, 115 00:07:52,690 --> 00:07:55,620 skriver ut ting, har hvis uttalelser - sånt - 116 00:07:55,620 --> 00:08:02,140 og deretter som vil sende data inn i vår mal fil - eller template.php fil. 117 00:08:02,140 --> 00:08:05,710 Hva som vil gjøre er å lese dataene og deretter vil det skrive den ut. 118 00:08:05,710 --> 00:08:09,550 >> Vi kan behandle maler som "dumme" i at vi ikke egentlig vil ha dem 119 00:08:09,550 --> 00:08:12,370 til å gjøre mye arbeid i å beregne ting. 120 00:08:12,370 --> 00:08:16,330 Vi ønsker at våre kontrollere for å gjøre det. 121 00:08:16,330 --> 00:08:21,610 En liten bit på det - la oss ta en titt på noen av distribusjonen koden. 122 00:08:21,610 --> 00:08:28,250 Her har vi vår index.html fil, og det er ganske tom. 123 00:08:28,250 --> 00:08:34,429 Egentlig hva det gjør - det sier vel, jeg kommer til å kreve configuration.php filen. 124 00:08:34,429 --> 00:08:40,120 Vi ser ikke at akkurat der, men det er i utgangspunktet kalle configuration.php filen, 125 00:08:40,120 --> 00:08:42,240 og gjennomføring som. 126 00:08:42,240 --> 00:08:45,130 Etter det gjør det, kommer det til å gjengi porteføljen. 127 00:08:45,130 --> 00:08:49,310 Rendering er en funksjon, så når vi er i en kontroller, 128 00:08:49,310 --> 00:08:56,490 vi kaller render, vil vi gi den filen og deretter dataene som vi passerer i, 129 00:08:56,490 --> 00:09:04,570 slik at det ringer i portfolio.php--type pass i disse dataene, slik at porteføljen kan håndtere det. 130 00:09:04,570 --> 00:09:10,540 >> Og nå, her har vi vårt login.php form. 131 00:09:10,540 --> 00:09:17,540  Dette er kontrolleren som i utgangspunktet tar seg av logging i. 132 00:09:17,540 --> 00:09:29,090 Her sjekker det hvis en form ble sendt til denne filen og avtaler med å validere underkastelse. 133 00:09:29,090 --> 00:09:31,990 Vi vil se nærmere på dette si unnskyld funksjonen. 134 00:09:31,990 --> 00:09:35,100 Når vi ønsker å skrive ut en feilmelding, 135 00:09:35,100 --> 00:09:39,550 vi bruker beklager og som vil omdirigere brukeren til en bestemt side 136 00:09:39,550 --> 00:09:42,530 som vil skrive ut den aktuelle feilmeldingen som vi viser. 137 00:09:42,530 --> 00:09:47,860 Fortsetter på, vil det søke i databasen - vi vil komme inn mer om det senere. 138 00:09:47,860 --> 00:09:54,180 Så ser du at her nede hvis en form som ikke ble sendt, så det gjør et skjema. 139 00:09:54,180 --> 00:10:01,360 Det betyr at det går til login_form.php, så la oss se på det. 140 00:10:01,360 --> 00:10:09,400 >> Login.php er faktisk der vi ser HTML arbeider med den faktiske visuelle aspektet. 141 00:10:09,400 --> 00:10:15,130 Her har vi en inngang tag for brukernavnet, en inngang for passordet, 142 00:10:15,130 --> 00:10:16,630 samt en sendeknappen. 143 00:10:16,630 --> 00:10:22,660 Det er faktisk der det visuelle aspektet og HTML-skjema kommer til å bli holdt. 144 00:10:22,660 --> 00:10:27,550 Her står det at det kommer til å bli presentert av en bestemt metode, kalt innlegget. 145 00:10:27,550 --> 00:10:30,190 Vi vil komme inn på forskjellene mellom metodene - 146 00:10:30,190 --> 00:10:33,240 poste versus få, det er også noe som heter sagt - 147 00:10:33,240 --> 00:10:36,160 vi får inn disse metodene senere, men for interessen for denne pset, 148 00:10:36,160 --> 00:10:37,810 Jeg vil sterkt oppfordre deg til å bruke innlegget. 149 00:10:37,810 --> 00:10:42,210 >> Vi vet at i utgangspunktet når dette skjemaet er sendt - 150 00:10:42,210 --> 00:10:44,650 fra login_form.php-- 151 00:10:44,650 --> 00:10:50,850 så vil det gå til handling - login.php-- 152 00:10:50,850 --> 00:10:56,070 utgangspunktet passere i alle disse parameterne fra disse skjemaene til login.php. 153 00:10:56,070 --> 00:11:04,900 Resultatene fra det skjemaet er inneholdt i dette innlegget assosiativ array. 154 00:11:04,900 --> 00:11:11,710 Indeksene for de ulike elementene i innlegget rekke 155 00:11:11,710 --> 00:11:15,290 er akkurat hva du angir her. 156 00:11:15,290 --> 00:11:19,240 Du sier at navnet på denne inngangen er brukernavn. Navnet på dette er passordet. 157 00:11:19,240 --> 00:11:26,840 Tilsvarende ser du brukernavnet som indeksen for assosiativ array der. 158 00:11:26,840 --> 00:11:35,110 Hvis vi går til inkluderer mappen, har vi denne funksjoner filen som kommer til å være svært nyttig. 159 00:11:35,110 --> 00:11:37,570 >> Alle disse funksjonene er implementert for deg. 160 00:11:37,570 --> 00:11:41,870 Du trenger ikke å spesifikt implementere noen av disse selv, 161 00:11:41,870 --> 00:11:43,140 men de kommer til å ganske nyttig. 162 00:11:43,140 --> 00:11:49,450 Vi har beklager, som som jeg sa tidligere, vil i utgangspunktet skrive ut en feilmelding 163 00:11:49,450 --> 00:11:52,920 for deg på en bestemt side - apology.php. 164 00:11:52,920 --> 00:11:59,890 Da har vi dump, så hvis du bare ringe dump og deretter passere i variabelen, 165 00:11:59,890 --> 00:12:04,930 så det vil ta deg til en side som viser at variabelen for deg. 166 00:12:04,930 --> 00:12:09,950 Da har vi utlogging, som vil i utgangspunktet avslutte en viss brukers økt. 167 00:12:09,950 --> 00:12:12,240 Lookup kommer til å være nyttig. 168 00:12:12,240 --> 00:12:15,870 Siden vi har å gjøre med sitater og aksjer, vi kommer til å være i stand til - 169 00:12:15,870 --> 00:12:17,650 og det er egentlig sanntid. 170 00:12:17,650 --> 00:12:21,380 Vi trenger å vite hva de som lager verdier er, 171 00:12:21,380 --> 00:12:28,210 så vi har lookup funksjon som omhandler Yahoo dokumentasjon av aksjer. 172 00:12:28,210 --> 00:12:37,700 Når du ser opp en viss symbol på en aksje, vil den gå tilbake til deg aksjesymbolet 173 00:12:37,700 --> 00:12:41,480 samt navn og gjeldende pris på at aksjen. 174 00:12:41,480 --> 00:12:44,330 Det er oppslaget funksjonen. 175 00:12:44,330 --> 00:12:48,350 >> Så vi har å gjøre med MySQL, 176 00:12:48,350 --> 00:12:53,970 så vi kommer til å være som ønsker å utføre visse spørsmål på vår SQL database. 177 00:12:53,970 --> 00:12:58,890 Vi har spørring for å håndtere - til slags abstrakt noe av det ut. 178 00:12:58,890 --> 00:13:03,200 Vi kommer til å være bestått i hele strengen av vår SQL spørring - 179 00:13:03,200 --> 00:13:05,360 og alle variablene som går i det - 180 00:13:05,360 --> 00:13:09,480 og hva dette gjør er faktisk utføre det for oss. 181 00:13:09,480 --> 00:13:15,070 I stedet for å måtte skrive alt dette ut hver gang du ønsker å spørre - 182 00:13:15,070 --> 00:13:21,740 ved å få alle resultatene fra dette søket - 183 00:13:21,740 --> 00:13:24,740 så kan du bare ringe spørringen funksjon, og det vil komme tilbake til deg - 184 00:13:24,740 --> 00:13:28,750 avhengig av hva du bruker for søket - 185 00:13:28,750 --> 00:13:33,000 sannsynligvis en rad av alle resultatene som samsvarer med søket eller lignende. 186 00:13:33,000 --> 00:13:34,690 Mer om det senere skjønt. 187 00:13:34,690 --> 00:13:41,200 >> Endelig har vi omdirigere som, som navnet antyder, omdirigere deg til en annen side. 188 00:13:41,200 --> 00:13:46,280 Og da har vi gjengi, som vi kommer til å kalle et par ganger. 189 00:13:46,280 --> 00:13:51,010 Når du er i en kontroller, kaller du gjengi i malen siden 190 00:13:51,010 --> 00:13:55,390 og deretter passere i de verdiene som malen vil da forholde seg til. 191 00:13:55,390 --> 00:13:59,540 Disse verdiene er sannsynligvis kommer til å være håndtere den type produksjon som du vil 192 00:13:59,540 --> 00:14:01,050 til å bli vist på malen siden. 193 00:14:01,050 --> 00:14:09,370 Okay. De er de funksjonene, og det er mye mer til denne fordelingen koden. 194 00:14:09,370 --> 00:14:12,930 Jeg oppfordrer deg til å gå gjennom dette og utforske det selv. 195 00:14:12,930 --> 00:14:17,050 Dessuten vil spec trolig gå gjennom noen andre elementer av fordelingen koden. 196 00:14:17,050 --> 00:14:27,360 Her er en oppsummering av de funksjoner som finnes i functions.php. 197 00:14:27,360 --> 00:14:31,710 >> Okay. Den første oppgaven er å tillate brukere å registrere seg på nettsiden. 198 00:14:31,710 --> 00:14:34,860 Akkurat nå er det en login form på nettstedet, 199 00:14:34,860 --> 00:14:40,080 og du er utstyrt med noen få brukere med passord. 200 00:14:40,080 --> 00:14:42,130 Du kan bruke disse brukernavn og logger på, 201 00:14:42,130 --> 00:14:45,140 men du vil tillate folk å lage sine egne brukernavn 202 00:14:45,140 --> 00:14:47,390 og legge seg til nettstedet. 203 00:14:47,390 --> 00:14:53,070 Oppsettet for registrering er ganske lik den login form, 204 00:14:53,070 --> 00:14:56,340 bortsett brukernavnet er ikke pre-eksisterende, 205 00:14:56,340 --> 00:14:59,430 og brukeren trenger også å tilveiebringe en ny passord, 206 00:14:59,430 --> 00:15:02,440 og da typisk vi har et passord bekreftelse. 207 00:15:02,440 --> 00:15:06,580 Når brukeren innganger all denne informasjonen, 208 00:15:06,580 --> 00:15:10,620 vi ønsker å legge dem til i vår database av brukere. 209 00:15:10,620 --> 00:15:12,970 Vi kommer til å ha en database - en SQL database - 210 00:15:12,970 --> 00:15:14,470 at vi kommer til å referere til. 211 00:15:14,470 --> 00:15:18,140 I denne databasen, vil vi ha en tabell med alle brukerne 212 00:15:18,140 --> 00:15:23,850 inneholder brukernavn, passordet sitt, og også hvor mye penger de har. 213 00:15:23,850 --> 00:15:28,480 >> I register, ønsker vi å tillate dem å gå inn som informasjon. 214 00:15:28,480 --> 00:15:29,740 Vi ønsker å vise at formen. 215 00:15:29,740 --> 00:15:32,210 Vi ønsker å sørge for at deres passord - 216 00:15:32,210 --> 00:15:37,490 at de kom en, og da også at passordene samsvarer når de kommer inn den to ganger. 217 00:15:37,490 --> 00:15:42,240 Etter alt som er gjort - forutsatt at disse feilene blir sjekket - 218 00:15:42,240 --> 00:15:45,120 så vi ønsker å legge disse brukerne i databasen vår. 219 00:15:45,120 --> 00:15:49,630 Til slutt, når du har registrert deg, det er ganske praktisk hvis du ikke trenger å logge inn på nytt 220 00:15:49,630 --> 00:15:51,000 når du har registrert deg, 221 00:15:51,000 --> 00:15:54,000 så vi kommer til å logge dem på nettsiden hvis de har registrert vellykket. 222 00:15:54,000 --> 00:16:00,360 >> Den første oppgaven er å vise form, og dette er faktisk kommer til å være - 223 00:16:00,360 --> 00:16:04,920 hele denne registreringen skal være modellert ganske tett etter innlogging 224 00:16:04,920 --> 00:16:10,510 unntatt i stedet for login.php har du kanskje register.php. 225 00:16:10,510 --> 00:16:14,300 Istedenfor login_form.php--som er den mal - 226 00:16:14,300 --> 00:16:16,030 vil du ha registrere form. 227 00:16:16,030 --> 00:16:19,680 Det er lurt å legge en mer felt - et passord bekreftelse felt - 228 00:16:19,680 --> 00:16:23,450 i stedet for bare ett brukernavn og ett passord. 229 00:16:23,450 --> 00:16:28,120 Deretter vil vi sjekke om passordene samsvarer eller er tomme. 230 00:16:28,120 --> 00:16:38,560 Vi har kontrolleren - register.php--som kommer til å ta vare på å gjøre disse kontrollene. 231 00:16:38,560 --> 00:16:41,690 Når et skjema sendes via post metoden, 232 00:16:41,690 --> 00:16:47,050 deretter alle disse variablene er inneholdt innenfor innlegget array. 233 00:16:47,050 --> 00:16:52,280 Du ønsker å være sikker på at innlegget rekke verdien på indeksen passord 234 00:16:52,280 --> 00:16:58,080 samsvarer med bekreftelse element. 235 00:16:58,080 --> 00:16:59,410 Du vil være sikker på at de ikke er tomme, 236 00:16:59,410 --> 00:17:01,650 og du vil være sikker på at de er de samme. 237 00:17:01,650 --> 00:17:05,960 >> En praktisk ting om PHP er at vi ikke trenger å bruke streng sammenligne lenger. 238 00:17:05,960 --> 00:17:08,410 Vi kan bruke lik-lik operatør 239 00:17:08,410 --> 00:17:11,470  å sjekke om strenger er lik hverandre. 240 00:17:11,470 --> 00:17:14,960 For feilhåndtering, vil du ønsker å be om unnskyldning. 241 00:17:14,960 --> 00:17:17,150 Å be om unnskyldning, du bare kalle funksjonen 242 00:17:17,150 --> 00:17:21,910  og deretter angi en type melding som du vil utgang. 243 00:17:21,910 --> 00:17:24,630 Du deretter ønsker å legge brukeren til databasen. 244 00:17:24,630 --> 00:17:30,880 Frem til nå, alt vi har gjort bare å gjøre lokalt med resultatene av skjemaet. 245 00:17:30,880 --> 00:17:33,940 Nå, vi faktisk ønsker å legge dem til i vår database. 246 00:17:33,940 --> 00:17:38,890 For dette, må vi først vil være sikker på at brukernavnet ikke er tomt. 247 00:17:38,890 --> 00:17:44,550 Forstå at på en nettside, kan du ikke ha flere brukere med samme brukernavn, 248 00:17:44,550 --> 00:17:50,010 slik at du ønsker å være sikker på at når du setter noe inn i databasen - 249 00:17:50,010 --> 00:17:56,650 sette inn en ny bruker - så du ikke får en kollisjon mellom en pre-eksisterende brukernavn 250 00:17:56,650 --> 00:17:59,150 og brukernavnet som en bruker prøver å sende. 251 00:17:59,150 --> 00:18:02,250 For dette, når du utfører en spørring - 252 00:18:02,250 --> 00:18:08,760 sette inn en bestemt bruker med deres passord og en innledende mengde kontanter - 253 00:18:08,760 --> 00:18:15,140 når du kaller det spørringen, og deretter MySQL vil faktisk return false hvis det mislykkes. 254 00:18:15,140 --> 00:18:21,050 >> Strukturen av brukere er slik at brukernavnet er en unik verdi, 255 00:18:21,050 --> 00:18:22,540 slik at du ikke kan ha mer enn én. 256 00:18:22,540 --> 00:18:30,080 Når du prøver og sette inn en ny rad med et brukernavn som allerede eksisterer, 257 00:18:30,080 --> 00:18:34,470 som kommer til å returnere falsk - som en boolsk-verdi false. 258 00:18:34,470 --> 00:18:45,320 En lur ting her er at du ønsker å sjekke om resultatet er resultatet av søket. 259 00:18:45,320 --> 00:18:52,320 Hvis det mislykkes, så vil du ønsker å sjekke med trippel-lik operatør. 260 00:18:52,320 --> 00:18:55,420 Det er faktisk kommer til å sjekke om det er en feil eller ikke, 261 00:18:55,420 --> 00:19:02,760 mens i bare en enkel lik-lik, ville det være sant hvis raden var tom. 262 00:19:02,760 --> 00:19:06,000 Resultatet av en svikt dersom det er en kollisjon mellom brukernavn 263 00:19:06,000 --> 00:19:10,350 er den faktiske falsk verdi. 264 00:19:10,350 --> 00:19:15,230 >> Her er hvordan du ville sette inn en database. 265 00:19:15,230 --> 00:19:19,220 Her er spørsmålet som du ville kjøre strengt i SQL. 266 00:19:19,220 --> 00:19:25,750 En ting er at du faktisk kan gå til nettsiden som administrerer SQL database 267 00:19:25,750 --> 00:19:31,070 og spille rundt det ved å skrive inn manuelt både verdier og rader. 268 00:19:31,070 --> 00:19:34,540 Det vil produksjonen hva SQL produksjonen er. 269 00:19:34,540 --> 00:19:38,870 Du kan også kjøre SQL-kommandoer i databasen 270 00:19:38,870 --> 00:19:42,200  og deretter se hva syntaksen kan være, 271 00:19:42,200 --> 00:19:46,790 og så oversette det inn i søket funksjon som vi har i pset 7, 272 00:19:46,790 --> 00:19:51,120 som kommer til å være svært lik spørringene som du faktisk kjører. 273 00:19:51,120 --> 00:19:54,570 >> Hvis jeg skulle sette inn en ny rad i min bruker tabell, 274 00:19:54,570 --> 00:20:01,240 så jeg ville spesifisere sette inn i brukere, som er navnet på mitt bord. 275 00:20:01,240 --> 00:20:06,870 Så jeg ville spesifisere kolonnenavnene. 276 00:20:06,870 --> 00:20:13,230 Så jeg ville gi verdiene sammen med passordet mitt. 277 00:20:13,230 --> 00:20:17,080 Passord i våre brukere tabellen lagres ikke som bare strengen. 278 00:20:17,080 --> 00:20:19,440 De er lagret som den krypterte versjonen, 279 00:20:19,440 --> 00:20:24,560 slik at du ønsker å kjøre funksjonen krypten på selve passordet, 280 00:20:24,560 --> 00:20:29,680 og som vil gi deg den riktige typen lagring for brukere array. 281 00:20:29,680 --> 00:20:34,960 Kjører dette vil sette inn en ny rad i din bruker tabell. 282 00:20:34,960 --> 00:20:39,020 >> Å håndtere spørringen funksjon, 283 00:20:39,020 --> 00:20:43,100 før i C brukte vi prosenttegn som plassholder. 284 00:20:43,100 --> 00:20:47,670 Tilsvarende gjelder det samme konseptet med en plassholder her. 285 00:20:47,670 --> 00:20:50,720 Med spørring, angir du hele spørringen, 286 00:20:50,720 --> 00:20:55,510 bortsett når du arbeider med variabler som input din inn i søket, 287 00:20:55,510 --> 00:21:00,490 så i stedet for faktisk å sette dem inne - som når vi hadde printf uttalelser i C. 288 00:21:00,490 --> 00:21:03,740 Vi ville sette strengen og deretter har en plassholder der, og så etter hvert 289 00:21:03,740 --> 00:21:06,990 komma, angi hvilken variabel vi hadde. 290 00:21:06,990 --> 00:21:14,480 Her skal vi bruke spørsmålstegn tegn som plassholder vår 291 00:21:14,480 --> 00:21:21,670 og deretter passere i hver variabel, henholdsvis i orden, for plassholdere - 292 00:21:21,670 --> 00:21:24,420 hvor disse variablene skal gå. 293 00:21:24,420 --> 00:21:29,470 Så her vil det første spørsmålstegn bli erstattet av den faktiske brukernavn 294 00:21:29,470 --> 00:21:33,610 deretter den andre spørsmålstegn ved passord. 295 00:21:33,610 --> 00:21:37,000 >> Så til slutt, når du har registrert dem og lagt dem til databasen, 296 00:21:37,000 --> 00:21:40,510 så du vil logge dem inn på nettstedet. 297 00:21:40,510 --> 00:21:45,320 Vi har en slags super-global variabel kalt økten. 298 00:21:45,320 --> 00:21:48,160 Session tar en viss id, 299 00:21:48,160 --> 00:21:51,750 og at id tilsvarer brukeren som er logget inn 300 00:21:51,750 --> 00:21:56,380 Hva du ønsker å gjøre er å finne hva deres bruker id er 301 00:21:56,380 --> 00:22:03,710 og deretter sette den økten id som den aktuelle brukeren id. 302 00:22:03,710 --> 00:22:07,560 En funksjon som du ønsker å bruke her er en SQL-kommando 303 00:22:07,560 --> 00:22:15,150 som vil hente den siste satt id nummer fra tabellen. 304 00:22:15,150 --> 00:22:24,560 Da rekker vil kalle - it'll ringe id - it'll tildele et navn til nummeret som den returnerer. 305 00:22:24,560 --> 00:22:27,900 Det vil kalle det id. 306 00:22:27,900 --> 00:22:33,370 Nå har vi ferdig registrere, og vi kan gå videre for å sitere. 307 00:22:33,370 --> 00:22:36,610 >> Sitat lar brukeren legge inn navnet på et visst lager, 308 00:22:36,610 --> 00:22:41,940 og da blir det returnere kvaliteter som lager. 309 00:22:41,940 --> 00:22:48,410 Hva du ønsker å gjøre her er å ha en kontroller og noen maler. 310 00:22:48,410 --> 00:22:53,380 I dette tilfellet skal vi ha en kontroller som kommer til å gjøre alt de tenker for oss. 311 00:22:53,380 --> 00:23:01,210 Det kommer til å slå opp symbolet og deretter passere i verdiene til de malene som skal skrive ut. 312 00:23:01,210 --> 00:23:03,060 Vi kommer til å ha to maler her. 313 00:23:03,060 --> 00:23:07,260 Vi kommer til å ha en mal som gir den form som brukerne kommer til å 314 00:23:07,260 --> 00:23:09,920 innspill navnet på lager - navnet på aksjen. 315 00:23:09,920 --> 00:23:16,030 Da vi også kommer til å ønske en annen mal som viser disse verdiene. 316 00:23:16,030 --> 00:23:27,450 Du kan se inn login for et eksempel på hvordan du ville ha en form som godtar inndata, 317 00:23:27,450 --> 00:23:30,060 bortsett fra i her, vi vil bare ha en feltet. 318 00:23:30,060 --> 00:23:31,630 Vi ønsker ikke et brukernavn og et passord-feltet. 319 00:23:31,630 --> 00:23:37,110 Vi vil bare ha en tekstfelt som lar brukeren legge inn navnet på et visst lager. 320 00:23:37,110 --> 00:23:40,110 Så du ønsker å sende dataene - når du har sett opp som lager - 321 00:23:40,110 --> 00:23:45,550 til quote_form.php. 322 00:23:45,550 --> 00:23:50,780 Oppslag vil returnere symbolet på et lager, navnet, og en pris. 323 00:23:50,780 --> 00:23:53,910 De befinner seg innenfor en assosiativ array. 324 00:23:53,910 --> 00:24:01,390 Slå opp oppslagstabellen funksjon i functions.php for mer informasjon 325 00:24:01,390 --> 00:24:04,010 På returen typer av dem. 326 00:24:04,010 --> 00:24:08,520 >> Flott! Så til slutt, vil du ønsker å vise aksjeinformasjon. 327 00:24:08,520 --> 00:24:14,110 Det er lurt å trolig vise - du vil ha tilgang til disse variablene. 328 00:24:14,110 --> 00:24:17,610 Når du har prisen på en variabel - 329 00:24:17,610 --> 00:24:20,860 samt navn og symbol - 330 00:24:20,860 --> 00:24:25,550 så vil du ønsker å vise dem i malen siden. 331 00:24:25,550 --> 00:24:31,540 Malen side kan kalles show_quote.php eller noe. 332 00:24:31,540 --> 00:24:39,660 Din quote.php side ville gjengi showet sitat og deretter passere i alle disse verdiene. 333 00:24:39,660 --> 00:24:47,170 Så i php side, du faktisk skrive ut disse verdiene til HTML aspektet av siden. 334 00:24:47,170 --> 00:24:53,800 Du bare bruker utskriftsfunksjonen og passerer i prisen. 335 00:24:53,800 --> 00:24:57,990 Det er 2 måter - du kan enten sette sammen den med prikken operatør, 336 00:24:57,990 --> 00:25:02,230 eller bruke en plassholder. 337 00:25:07,580 --> 00:25:12,750 >> Brukerne til slutt kommer til å være å kjøpe og selge aksjer. 338 00:25:12,750 --> 00:25:18,450 Vi ønsker å gi dem noen måte å se alle de aksjer som de har for øyeblikket. 339 00:25:18,450 --> 00:25:21,350 Vi kommer til å kalle det sin portefølje. 340 00:25:21,350 --> 00:25:26,180 Portefølje ville, formodentlig for hver bruker, inneholder en haug med rader 341 00:25:26,180 --> 00:25:31,760 notering type aksjer som de har, og deretter hvor mange av dem de har. 342 00:25:31,760 --> 00:25:36,500 Vår eksisterende tabell - akkurat nå har vi en bruker tabell i vår database. 343 00:25:36,500 --> 00:25:41,780 Som inneholder en brukers brukernavn samt deres passord og hvor mye penger de har. 344 00:25:41,780 --> 00:25:50,390 Det er ingen reell måte å lagre alle sine aksjer i det. 345 00:25:50,390 --> 00:25:58,010 Det er ikke som vi kan sette inn nye kolonner for hver aksje. 346 00:25:58,010 --> 00:26:03,650 Det ville være en veldig, veldig lang rad fordi vi har en uendelig mengde 347 00:26:03,650 --> 00:26:06,200 typer aksjer som de kunne ha. 348 00:26:06,200 --> 00:26:09,150 Så er stedet hva vi skal gjøre i løpet av den samme databasen, 349 00:26:09,150 --> 00:26:15,000 Vi vil ha en bruker tabell, men da får vi også en portefølje bord. 350 00:26:15,000 --> 00:26:18,430 Porteføljen tabellen vil bli definitivt knyttet til brukere tabellen, 351 00:26:18,430 --> 00:26:24,600 men i stedet porteføljen tabellstrukturen vil ha informasjon om aksjer, 352 00:26:24,600 --> 00:26:27,780 hvor mange aksjer som lager brukeren har, 353 00:26:27,780 --> 00:26:31,620 så vel som en brukerens spesielle ID-nummer. 354 00:26:31,620 --> 00:26:34,620 Du har brukerne tabellen som har en id samt brukernavn, hash - 355 00:26:34,620 --> 00:26:40,130 som er passordet, den krypterte passord - 356 00:26:40,130 --> 00:26:42,130 og da mengden av kontanter de har. 357 00:26:42,130 --> 00:26:47,900 ID-nummeret vil bli knyttet til id-nummer fra porteføljen. 358 00:26:47,900 --> 00:26:52,490 Porteføljen ville bare ha symbolet på lager samt aksjer - 359 00:26:52,490 --> 00:26:55,410 antall aksjer i denne bestanden som brukeren har. 360 00:26:55,410 --> 00:26:58,520 I den porteføljen tabellen vil du ha i utgangspunktet 361 00:26:58,520 --> 00:27:03,760 alle aksjer besatt av alle brukerne på nettstedet ditt. 362 00:27:03,760 --> 00:27:10,550 Senere vil angi bare en viss brukers aksjer - bare deres portefølje - 363 00:27:10,550 --> 00:27:15,360 du ville hente verdiene fra din portefølje bord slik at 364 00:27:15,360 --> 00:27:19,930 ID-nummeret er spesifikt for denne brukeren. 365 00:27:26,520 --> 00:27:34,890 >> Når du viser porteføljen, vil du ønsker å rapportere hver av aksjene i en brukers portefølje. 366 00:27:34,890 --> 00:27:41,670 Det er lurt å rapportere antall aksjer og den nåværende verdien av disse aksjene. 367 00:27:41,670 --> 00:27:45,950 At dagens verdi av disse aksjene er ikke lagret i porteføljen tabellen 368 00:27:45,950 --> 00:27:51,640 fordi det kommer til å bli oppdatert - minst - hver dag av Yahoo. 369 00:27:51,640 --> 00:27:58,550 Å få den informasjonen, kan du ikke referere at fra SQL-spørring. 370 00:27:58,550 --> 00:28:02,400 Hvilken funksjon gir det oss? Hvilken funksjon vil få prisen? 371 00:28:02,400 --> 00:28:09,110 Det er oppslag, vil så bruke lookup på en bestemt symbol gi deg mye informasjon. 372 00:28:09,110 --> 00:28:13,710 Det vil gi deg 3 stykker av informasjon - navnet, symbolet, samt prisen. 373 00:28:13,710 --> 00:28:17,490 Når du oppslag en viss symbol, så kan du få prisen, 374 00:28:17,490 --> 00:28:20,460 og deretter kan du bruke prisen til å bli vist i din portefølje. 375 00:28:20,460 --> 00:28:26,190 >> Mappen skal også vise brukerens gjeldende kontantbeholdning. 376 00:28:26,190 --> 00:28:30,310 Dette feltet er lagret i din bruker tabell. 377 00:28:30,310 --> 00:28:33,400 Så da huske hvordan vi i utgangspunktet har til - 378 00:28:33,400 --> 00:28:36,850 vi har ulike typer PHP-filer. 379 00:28:36,850 --> 00:28:40,160 Vi kommer til å ha en kontroller som i utgangspunktet gjør all tenkingen for deg. 380 00:28:40,160 --> 00:28:45,940 Og så har vi en mal der malen omhandler gi ut data. 381 00:28:45,940 --> 00:28:50,790 Du må tenke på hva variabler kontrolleren må ta i. 382 00:28:50,790 --> 00:29:01,630 Hvis vi har å gjøre med en portefølje som sender ut alle navn, symbol, og dele nummer, 383 00:29:01,630 --> 00:29:03,730 samt gjeldende pris på en aksje, 384 00:29:03,730 --> 00:29:06,950 så vil du ønsker å finne en måte å utgangspunktet passerer - 385 00:29:06,950 --> 00:29:12,070 du kan passere i en matrise med verdier som samsvarer med dette. 386 00:29:15,250 --> 00:29:24,360 >> La oss gå inn et eksempel på hvordan du kan hente alle aksjene 387 00:29:24,360 --> 00:29:26,210 eid av en bestemt bruker. 388 00:29:26,210 --> 00:29:31,400 Dette er ikke å håndtere - ennå - med prisen på aksjen. 389 00:29:31,400 --> 00:29:33,520 Hva dette ville gjøre er å kjøre en spørring. 390 00:29:33,520 --> 00:29:37,070 Det ville få den symbol så vel som aksjene fra - 391 00:29:37,070 --> 00:29:42,770 Jeg ringer denne tabellen, men i dette tilfellet hva ville det være? 392 00:29:42,770 --> 00:29:49,400 Hva er navnet på tabellen som vi arbeider med som har symbol og aksjer 393 00:29:49,400 --> 00:29:52,280 for en bestemt bruker? 394 00:29:52,280 --> 00:29:56,410 Det er enten brukere eller portefølje. 395 00:29:56,410 --> 00:29:57,820 Porteføljen. 396 00:29:57,820 --> 00:30:03,220 Hva dette ville gjøre er spørring portefølje for symbolene og aksjer 397 00:30:03,220 --> 00:30:04,920 for en bestemt bruker. 398 00:30:04,920 --> 00:30:09,260 Her, sier jeg, (SELECT symbol, aksjer fra TBL - 399 00:30:09,260 --> 00:30:12,280 men i stedet for bord, du kommer til å erstatte den med portefølje. 400 00:30:12,280 --> 00:30:15,220 'Hvor er utgangspunktet mitt tilstand. 401 00:30:15,220 --> 00:30:21,050 Jeg sier jeg bare ønsker å få de assosiative matriser som tilsvarer 402 00:30:21,050 --> 00:30:23,850  til dette følgende betingelse - id lik. 403 00:30:23,850 --> 00:30:27,600  Så jeg setter en plassholder der og da økten id. 404 00:30:27,600 --> 00:30:36,720 Hva dette ville gjøre er å si for hver rad i rader. 405 00:30:36,720 --> 00:30:40,940 Dette er en ryddig måte i stedet for å faktisk måtte sette opp en for loop 406 00:30:40,940 --> 00:30:47,450 som gjentar over alle indeksene, deretter i PHP kan du ha en for-hver loop. 407 00:30:47,450 --> 00:30:53,520 >> Hvis du har en gitt matrise, så du kan si jeg kommer til å ringe hver etterfølgende element - 408 00:30:53,520 --> 00:30:57,930 Jeg kommer til å ringe hver element dette navnet. 409 00:30:57,930 --> 00:31:02,780 Så, for hver og en av disse elementene, kommer jeg til å kalle dem dette, 410 00:31:02,780 --> 00:31:04,500 så jeg kan gjøre dette. 411 00:31:04,500 --> 00:31:10,370 I dette for hver, har du rader som den faktiske array, og hver rad du skal ringe rad. 412 00:31:10,370 --> 00:31:12,420 Hver gang den utfører kroppen, 413 00:31:12,420 --> 00:31:16,960 det vil gå opp og det vil oppdatere rad til neste element i rader. 414 00:31:18,900 --> 00:31:25,260 >> Nå, i form av å kjøpe aksjer, 415 00:31:25,260 --> 00:31:29,500 hva vi ønsker å gjøre er å få aksjen som brukeren ønsker å kjøpe 416 00:31:29,500 --> 00:31:35,300 og mengden av aksjer som brukeren ønsker å kjøpe, og deretter - hvis de vil - 417 00:31:35,300 --> 00:31:38,120 legge til at aksjen til sin portefølje. 418 00:31:38,120 --> 00:31:40,310 Selvfølgelig, hvis de kjøper noe, så det kommer til å redusere 419 00:31:40,310 --> 00:31:43,520 hvor mye penger de har, så det kommer til å redusere sine penger. 420 00:31:43,520 --> 00:31:48,380 Vi kommer til å håndtere oppdatere porteføljen samt brukere tabellen, 421 00:31:48,380 --> 00:31:50,300 som inneholder kontanter. 422 00:31:50,300 --> 00:31:54,920 Men først må du få den faktiske lager og mengden aksjer som brukeren ønsker. 423 00:31:54,920 --> 00:32:00,010 For det, vil du trenge et HTML-skjema som vil be om symbolet på lager 424 00:32:00,010 --> 00:32:03,360 at du ønsker å kjøpe, så vel som antall aksjer. 425 00:32:03,360 --> 00:32:08,300 Så vil du ønsker å legge til. 426 00:32:08,300 --> 00:32:13,750 Det er lurt å velge visse verdier. 427 00:32:13,750 --> 00:32:19,670 Vi har gått gjennom dette litt allerede, men når du prøver å oppnå visse rader - 428 00:32:19,670 --> 00:32:22,020 hente visse rader fra SQL tabellen, 429 00:32:22,020 --> 00:32:24,290 dette er følgende syntaks. 430 00:32:24,290 --> 00:32:28,400 Du har valgt, og hvis du angir en stjerne, 431 00:32:28,400 --> 00:32:31,830 som vil i utgangspunktet returnere hele, hele raden for deg. 432 00:32:31,830 --> 00:32:36,890 Så igjen, har du tilstand der, og så angir - 433 00:32:36,890 --> 00:32:39,990 Jeg vil bare brukernavnet til å være lik post-i, 434 00:32:39,990 --> 00:32:46,660 så det vil bare hente rad brukere som tilsvarer post-i. 435 00:32:46,660 --> 00:32:52,860 >> Når en bruker ønsker å legge en andel i en portefølje, 436 00:32:52,860 --> 00:32:54,400 du må sjekke for noen feil. 437 00:32:54,400 --> 00:32:57,680 Du vil være sikker på at brukeren faktisk kan ha råd aksjen, 438 00:32:57,680 --> 00:33:00,810 slik at du ønsker å sjekke sine penger. 439 00:33:00,810 --> 00:33:05,810 Før brukte vi star å hente en hel rad fra en SQL-tabell. 440 00:33:05,810 --> 00:33:08,930 Men her kan vi faktisk bare spesifisere at jeg bare vil ha 1 verdi - 441 00:33:08,930 --> 00:33:10,080 Jeg vil bare ha penger. 442 00:33:10,080 --> 00:33:17,970 Så her vil det returnere kontanter for brukeren med id nummer 1. 443 00:33:17,970 --> 00:33:25,940 Hvis en bruker har allerede kjøpt et visst lager, men da kjøper mer av denne bestanden, 444 00:33:25,940 --> 00:33:30,440 deretter i porteføljen din - du ikke vil ha en egen linje, 445 00:33:30,440 --> 00:33:34,770 en annen rad som inneholder det nye transaksjonen. 446 00:33:34,770 --> 00:33:37,950 Du faktisk ønsker å oppdatere beløpet. 447 00:33:37,950 --> 00:33:42,530 Alt som endrer egentlig er mengden aksjer som den brukeren eier. 448 00:33:42,530 --> 00:33:47,730 Hvis du bruker innsatsen til spørring - så det er sett bare inn i din portefølje alle disse verdiene - 449 00:33:47,730 --> 00:33:51,710 brukerens id nummer, samt symbolet på lager som de kjøper 450 00:33:51,710 --> 00:33:57,750 og aksjene, så vil du også ønsker å spesifisere, vel, hvis jeg får et duplikat nøkkel - 451 00:33:57,750 --> 00:34:00,750 i dette tilfellet, er den duplisert nøkkelen ikke bare brukerens id, men også aksjesymbolet - 452 00:34:00,750 --> 00:34:08,340 fordi du kan bare ha - Vårt utgangspunkt er at du bare kan ha en rad 453 00:34:08,340 --> 00:34:10,699  som tilsvarer en bestemt symbol. 454 00:34:10,699 --> 00:34:13,659 Så, på duplikatnøkkel - hvis du får en kollisjon der - 455 00:34:13,659 --> 00:34:18,520 du bare kommer til å oppdatere aksjer til sin nye verdien. 456 00:34:18,520 --> 00:34:23,290 Aksjene tilsvarer hva vi hadde før, pluss det antall aksjer som brukeren kjøper. 457 00:34:27,790 --> 00:34:31,090 >> Nå som vi har oppdatert porteføljen tabellen, 458 00:34:31,090 --> 00:34:34,730 vi ønsker å oppdatere brukerens kontanter. 459 00:34:34,730 --> 00:34:40,300 Det er i brukere tabellen, så vi kommer til å bli trekke et bestemt beløp fra kontant. 460 00:34:40,300 --> 00:34:46,270 Antagelig kommer det til å være kontanter tilsvarer kontanter minus - og deretter et visst beløp. 461 00:34:46,270 --> 00:34:50,560 Å oppdatere kontanter, ville du - 462 00:34:50,560 --> 00:34:55,699 hvis jeg ønsket å ta bort penger fra post-i, så jeg ville kjøre dette søket - 463 00:34:55,699 --> 00:35:00,220 'Oppdatere brukernes og deretter sette kontanter kolonnen til kontanter - 464 00:35:00,220 --> 00:35:07,300 >> Jeg ville fjerne 9999 dollar bare hvis brukernavnet er lik post-i. 465 00:35:07,300 --> 00:35:12,020 Men, i dette tilfellet, ønsker vi ikke å trekke 9999 spesielt. 466 00:35:12,020 --> 00:35:17,610 Vi ønsker å spesifisere, vel, ønsker vi å trekke dagens pris på aksjen 467 00:35:17,610 --> 00:35:22,400 multiplisert med antall aksjer som de kjøper. 468 00:35:25,260 --> 00:35:29,910 >> Nå har vi tillot dem å se alle de aksjer som de har, 469 00:35:29,910 --> 00:35:33,080 samt kjøpe flere aksjer. 470 00:35:33,080 --> 00:35:37,430 Vi har også tidligere tillatt dem å slå opp den aktuelle prisen på en aksje. 471 00:35:37,430 --> 00:35:40,030 Her ønsker vi å tillate dem å selge dem. 472 00:35:40,030 --> 00:35:42,160 Først ønsker vi å vise utgangspunktet - 473 00:35:42,160 --> 00:35:45,270 vi ønsker å tillate dem å se alle aksjer som de har, 474 00:35:45,270 --> 00:35:53,170 så her vi ønsker å vise alle radene fra porteføljen. 475 00:35:53,170 --> 00:35:56,650 Hvis de velger å selge en bestemt aksje, 476 00:35:56,650 --> 00:35:59,140 så vi kommer til å anta at de ønsker å selge alt sammen. 477 00:35:59,140 --> 00:36:04,350 De er ikke bare kommer til å selge 50% av sine aksjer, de kommer til å selge 100% av det. 478 00:36:04,350 --> 00:36:08,630 Vi kan bare slette hele raden fra porteføljen. 479 00:36:08,630 --> 00:36:17,520 Vi kan slette gitt brukerens aksjer i visse symbol. 480 00:36:17,520 --> 00:36:21,410 Det er syntaksen for det. 481 00:36:21,410 --> 00:36:22,710 >> Så vi ønsker å oppdatere kontanter. 482 00:36:22,710 --> 00:36:30,930 Vi kommer til å legge i kontanter lik antall aksjer de selger 483 00:36:30,930 --> 00:36:34,640 multiplisert med den gjeldende prisen på aksjen - 484 00:36:34,640 --> 00:36:38,610 ikke prisen som de kjøpte den, men heller den prisen som de er - 485 00:36:38,610 --> 00:36:40,500 dagens pris når de selger det. 486 00:36:40,500 --> 00:36:43,660 Referere til gjeldende pris på en aksje, 487 00:36:43,660 --> 00:36:49,120 vil du ønsker å bruke oppslag, noe som vil gi deg prisen på en aksje 488 00:36:50,030 --> 00:36:52,650 på det nåværende tidspunkt. 489 00:36:52,650 --> 00:36:55,930 >> Nå er vi igjen med historie, 490 00:36:55,930 --> 00:37:00,170 som du vil tillate en bruker å holde styr på alle sine transaksjoner - 491 00:37:00,170 --> 00:37:03,040 ønsker å se når de solgte noe, når de kjøpte en aksje. 492 00:37:03,040 --> 00:37:08,870 Vi ønsker å angi hvor lang tid som de gjorde det, så vel som hvor mange de kjøpte 493 00:37:08,870 --> 00:37:11,650 og hva lager det var. 494 00:37:11,650 --> 00:37:17,800 Har vi noen av de aktuelle, eksisterende struktur som angir det? 495 00:37:17,800 --> 00:37:25,230 Vel, vi har portefølje som viser antall aksjer som en bruker har 496 00:37:25,230 --> 00:37:26,470 for en gitt andel. 497 00:37:26,470 --> 00:37:34,060 Men vi strukturere portefølje på den måten at den oppdaterer når vi kjøper flere, 498 00:37:34,060 --> 00:37:40,190 mens historien bør - hvis du kjøper Apple, 10 aksjer i det, og så senere å selge 5, 499 00:37:40,190 --> 00:37:44,040 så du ønsker å se dem separat som separate handlinger, separate rader. 500 00:37:44,040 --> 00:37:48,520 Mens handlingen å visualisere at i vår portefølje tabellen 501 00:37:48,520 --> 00:37:52,540 ville bare være en oppdatering til den aktuelle raden, 502 00:37:52,540 --> 00:37:55,740  så vi sannsynligvis kommer til å ønske en annen tabell. 503 00:37:55,740 --> 00:38:00,460 I vår database har vi våre brukere bord, har vi vår portefølje bord, 504 00:38:00,460 --> 00:38:04,090 og nå vil vi sannsynligvis ha en historie bord. 505 00:38:04,090 --> 00:38:08,070 At historien tabellen kan holde orden på dagens dato, 506 00:38:08,070 --> 00:38:12,800 så vel som den spesielle aksjesymbol, samt hvor mange aksjer, 507 00:38:12,800 --> 00:38:15,410 og deretter hvilke tiltak det er - 508 00:38:15,410 --> 00:38:18,800 om du skulle kjøpe disse aksjene, eller om du skulle selge dem. 509 00:38:20,660 --> 00:38:25,720 >> Å håndtere date, det er et par måter du kan gjøre dette. 510 00:38:25,720 --> 00:38:28,820 PHP har en måte å holde styr på dato, som du kan se opp selv. 511 00:38:28,820 --> 00:38:33,990 I SQL kan du også bruke enten nå eller nåværende tidsstempel. Det er opp til deg. 512 00:38:33,990 --> 00:38:40,720 Bare sørg for at hver gang en bruker kjøper eller selger, vil du være å oppdatere sine penger 513 00:38:40,720 --> 00:38:46,750 i brukere tabellen, vil du være å oppdatere radene i porteføljene tabellen, 514 00:38:46,750 --> 00:38:50,900 så vil du også oppdatere historien, 515 00:38:50,900 --> 00:38:56,260 så det kommer til å være 3 separate SQL-spørringer som du skal kalle det. 516 00:38:58,640 --> 00:39:01,530 Vi har en haug av funksjonalitet nå. 517 00:39:01,530 --> 00:39:10,600 >> Bare et par påminnelser om at i indeksen fil, vil du ønsker å koble til minst din - 518 00:39:10,600 --> 00:39:15,550 men du ønsker å tillate en bruker til å koble til buy.php siden. 519 00:39:15,550 --> 00:39:23,560 Det kommer til å tillate en bruker - buy.php er kontrolleren, slik det kommer til å enten 520 00:39:23,560 --> 00:39:29,170 sende deg til - som kommer til å sende deg til skjemaet som lar deg se ting opp. 521 00:39:29,170 --> 00:39:34,420 Vi har historie. Vi har logge ut, får et tilbud og deretter selge. 522 00:39:34,420 --> 00:39:37,350 De er på minimum hva du ønsker å vise. 523 00:39:37,350 --> 00:39:43,640 I form av porteføljen, er porteføljen faktisk vist i indeksen siden. 524 00:39:43,640 --> 00:39:52,050 Hvis vi går til indeks, her ser vi at det gjør portfolio.php 525 00:39:52,050 --> 00:40:00,050 og passerer i assosiativ array - i utgangspunktet tittelen lik portefølje. 526 00:40:00,050 --> 00:40:02,610 Så, dette er kontrolleren. 527 00:40:02,610 --> 00:40:08,000 Hvis vi går til malen for portfolio.php, 528 00:40:08,000 --> 00:40:18,060 da alt det har er - viser i utgangspunktet et bilde som sier, oh, er dette nettstedet under bygging. 529 00:40:18,060 --> 00:40:23,810 Senere, når du passerer i - du være bestått i utgangspunktet mer spesifikk informasjon. 530 00:40:23,810 --> 00:40:27,400 I stedet for å bare tittelen, vil du sannsynligvis være bestått i flere ting. 531 00:40:27,400 --> 00:40:32,010 Når du har disse verdiene, så portfolio.php kan håndtere disse verdiene 532 00:40:32,010 --> 00:40:34,490 og skrive dem ut i alle slags orden. 533 00:40:34,490 --> 00:40:41,660 >> Når du har gjennomført alle disse, må du også gjennomføre en mer funksjon. 534 00:40:41,660 --> 00:40:44,890 Dette kan enten være slik at en bruker å endre passordet, 535 00:40:44,890 --> 00:40:50,110 å tilbakestille passordet sitt hvis de har glemt det - så for tilbakestilling av passord, og deretter 536 00:40:50,110 --> 00:40:54,560 du vil sannsynligvis også vil redigere register slik at det tillater dem å angi en e-post, 537 00:40:54,560 --> 00:40:57,910 så hvis de glemmer passordet sitt, så de kan få det. 538 00:40:57,910 --> 00:41:02,870 De kan sikkert gå inn i sitt brukernavn, og deretter en e-post vil bli sendt til dem 539 00:41:02,870 --> 00:41:06,180 med en link for å kunne tilbakestille passordet sitt. 540 00:41:06,180 --> 00:41:10,980 Du kan ha noe som tillater brukere å få kvitteringer 541 00:41:10,980 --> 00:41:12,380 hver gang de kjøper eller selger noe, 542 00:41:12,380 --> 00:41:19,910 og så til slutt, la dem legge penger til deres hjemmeside. 543 00:41:19,910 --> 00:41:24,970 Bare for å gå tilbake til begrepet kontrollere og maler litt. 544 00:41:24,970 --> 00:41:31,170 Du vil ha noe som en - slik at du får en kontroller her. 545 00:41:31,170 --> 00:41:35,080 Akkurat nå ser vi på login.php eksempel. 546 00:41:35,080 --> 00:41:38,220 Når vi har en kontroller, i utgangspunktet det kommer til å ta 2 tilfeller. 547 00:41:38,220 --> 00:41:42,090 Når vi har kontrollerne, er vi i dette stykket som vi er også slags håndtere 548 00:41:42,090 --> 00:41:43,880 når vi har skjemaer også. 549 00:41:43,880 --> 00:41:47,500 Kontrolleren vil i utgangspunktet ha separate handlinger - 550 00:41:47,500 --> 00:41:53,880 en hvis en form allerede er sendt inn, og deretter to hvis brukeren kommer til den siden 551 00:41:53,880 --> 00:41:56,870 for første gang, og fortsatt må innspill som form. 552 00:41:56,870 --> 00:42:02,820 >> Jeg kommer til å gå til det saken først før du går opp til det første tilfellet av å ha form i. 553 00:42:02,820 --> 00:42:12,640 Her sier vi, hvis skjemaet er sendt med metoden post - 554 00:42:12,640 --> 00:42:13,580 ikke bry deg om at litt. 555 00:42:13,580 --> 00:42:19,780 Ikke bry deg om det for mye, men forstår at utgangspunktet denne funksjonen omhandler 556 00:42:19,780 --> 00:42:22,430 om et skjema er sendt inn eller ikke. 557 00:42:22,430 --> 00:42:25,640 Denne tilstanden er sant hvis en bruker har sendt inn skjemaet. 558 00:42:25,640 --> 00:42:45,940 Hvis ikke, så vi kommer til å ønske å ringe render login_form.php, og deretter passere i tittelen. 559 00:42:45,940 --> 00:42:48,010 Denne tittelen er bare utgangspunktet kommer til å vises i overskriften. 560 00:42:48,010 --> 00:42:54,990 Hva dette er i utgangspunktet sier, ok - vel, hvis en bruker går til login.php 561 00:42:54,990 --> 00:43:00,310 og har faktisk ikke logget inn, da vil jeg sende dem til siden som har som danner 562 00:43:00,310 --> 00:43:03,160 som tillater dem å legge inn brukernavn og passord. 563 00:43:03,160 --> 00:43:07,590 Så jeg går til login_form, og deretter som har den faktiske form. 564 00:43:07,590 --> 00:43:13,750 Deretter, når brukeren sender skjemaet, de kommer til å sende den til login.php 565 00:43:13,750 --> 00:43:15,840 med metoden innlegget. 566 00:43:15,840 --> 00:43:21,560 Da jeg faktisk kommer til å gå inn i denne delen av min if-else loop. 567 00:43:21,560 --> 00:43:29,560 Da er det her at vi håndtere verdiene angitt i skjemaet. 568 00:43:29,560 --> 00:43:32,800 Det er her vi håndtere disse. 569 00:43:32,800 --> 00:43:40,860 >> Så når du avtale med disse verdiene - hvis du arbeider med - 570 00:43:40,860 --> 00:43:46,640 sier vi arbeider med quote.php siden der noen kan skrive en aksje som 571 00:43:46,640 --> 00:43:49,950 de ønsker å se opp, og deretter se at skjermen - 572 00:43:49,950 --> 00:43:52,850 det er slags lignende her. 573 00:43:52,850 --> 00:43:56,070 Her har vi en login form - you'd trolig ha et tilbud form - 574 00:43:56,070 --> 00:44:00,290 men da når brukeren har faktisk hevdet at informasjon, 575 00:44:00,290 --> 00:44:04,810 så du vil kontrolleren til å passere inn i en annen mal 576 00:44:04,810 --> 00:44:07,430 som vil vise dem at faktiske opplysninger. 577 00:44:07,430 --> 00:44:11,250 Så da rett rundt her, så vil du sannsynligvis - 578 00:44:11,250 --> 00:44:18,830 rundt slutten av din tilstand her - hvis metoden er lik post - 579 00:44:18,830 --> 00:44:22,520 så vil du sannsynligvis ønske å gjengi en annen side - showet sitat - 580 00:44:22,520 --> 00:44:28,040 som sender deg til den siden - show_quote.php-- 581 00:44:28,040 --> 00:44:34,120 og deretter i den filen vil referere disse verdiene. 582 00:44:34,120 --> 00:44:36,480 Gjør det fornuftig? 583 00:44:36,480 --> 00:44:40,390 >> Vi har en kontroller som i utgangspunktet omhandler 2 tilfeller - 584 00:44:40,390 --> 00:44:42,710 enten du har angitt et skjema eller ikke. 585 00:44:42,710 --> 00:44:43,950 Hvis du ikke har angitt et skjema, 586 00:44:43,950 --> 00:44:47,300 så det vil omdirigere deg til dette skjemaet, som vil sette deg tilbake til den siden. 587 00:44:47,300 --> 00:44:54,020 Deretter, når du har informasjon i kontrolleren, vil den kroppen håndtere det 588 00:44:54,020 --> 00:44:59,750 informasjon som er nødvendig - enten ser opp verdier for lager, 589 00:44:59,750 --> 00:45:04,150 og deretter når den er så opp disse verdiene og har dem i en pent formatert matrise, 590 00:45:04,150 --> 00:45:08,180 da kan passere denne matrisen inn i malen siden 591 00:45:08,180 --> 00:45:10,330  som tar for seg gi ut denne informasjonen. 592 00:45:10,330 --> 00:45:14,680 >> Igjen, siden det er web, det kommer til å bli gøy. 593 00:45:14,680 --> 00:45:20,310 Vi er utenfor C, så vi ikke er begrenset til ASCII og at terminal utgang, 594 00:45:20,310 --> 00:45:21,800 så ha det gøy med dette. 595 00:45:21,800 --> 00:45:24,920 Du kan gjøre det så visuelle som du vil. 596 00:45:24,920 --> 00:45:31,860 Du kan tillate brukere å legge inn millioner av dollar på en gang, 597 00:45:31,860 --> 00:45:34,730 eller begrense dem og bli virkelig mener og la dem bare for å legge inn 1 krone av gangen 598 00:45:34,730 --> 00:45:36,330 eller noe sånt. 599 00:45:36,330 --> 00:45:38,550 Definitivt være sikker på å ha det gøy med dette. 600 00:45:38,550 --> 00:45:47,030 >> PHP-koden er litt enklere i at det er litt lettere å kartlegge din pseudokode 601 00:45:47,030 --> 00:45:50,070 inn i selve gjennomføringen. 602 00:45:50,070 --> 00:45:56,320 Så, definitivt ha det gøy med dette fordi det er faktisk vår siste brikke i CS50. 603 00:45:56,320 --> 00:46:01,150 Med det, var dette Walkthrough 7. 604 00:46:01,150 --> 00:46:04,640 Når du er ferdig med å se på walkthrough og ferdig med pset, 605 00:46:04,640 --> 00:46:09,590 da disse var også psets, og nå er vi på det endelige produktet - 606 00:46:09,590 --> 00:46:12,330 etter at vi får gjennom quiz 1. 607 00:46:12,330 --> 00:46:16,200 Så forhåpentligvis kan du bruke verktøyene som du har lært fra psets - 608 00:46:16,200 --> 00:46:21,980 ikke bare syntaks, men mer abstrakt forestilling om hvordan du kan ta en viss - 609 00:46:21,980 --> 00:46:24,950 liker, jeg ønsker å gjøre dette, og deretter faktisk gjennomføre det. 610 00:46:24,950 --> 00:46:28,740 Lære å slite gjennom syntaks og distribusjon kode. 611 00:46:28,740 --> 00:46:33,020 Lese andres kode, og deretter tolke at bruk eksisterende funksjoner. 612 00:46:33,020 --> 00:46:37,360 >> Så, lykke til med den siste pset. 613 00:46:37,360 --> 00:46:39,930 Det har vært en glede å lede walkthroughs. 614 00:46:39,930 --> 00:46:40,940 Jeg håper de har vært nyttig for deg. 615 00:46:40,940 --> 00:46:46,560 Disse var Walkthroughs, og takker veldig mye. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]