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 >> Hej alle, og velkommen til Walkthrough 7, CS50 Finans. 5 00:00:12,090 --> 00:00:15,090 Nu er vi officielt færdig med alle de psets i CS50, 6 00:00:15,090 --> 00:00:19,380 og vi er bare tilbage med endnu et, som vil være en sjov implementering 7 00:00:19,380 --> 00:00:23,770 et websted, hvor brugere kan logge ind på CS50 Finans 8 00:00:23,770 --> 00:00:25,830 og købe og sælge aktier. 9 00:00:25,830 --> 00:00:32,280 >> I dag skal vi have et par værktøjer til vores rådighed. 10 00:00:32,280 --> 00:00:34,320 Vi kommer til at tale om tilladelser. 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 vil ønsker at give brugerne mulighed for at udføre visse filer 13 00:00:40,800 --> 00:00:42,500 men også bare læse andre dem, 14 00:00:42,500 --> 00:00:45,150 så vi vil se på tilladelser, og hvordan du kan indstille dem. 15 00:00:45,150 --> 00:00:49,630 Så vi kommer til at se ind i PHP, HTML og SQL-kode. 16 00:00:49,630 --> 00:00:51,990 >> Første, tilladelser. 17 00:00:51,990 --> 00:00:56,060 Når du er i terminalen i en bestemt mappe, 18 00:00:56,060 --> 00:01:00,430 så hvad du vil gøre, er at du vil køre kommandoen chmod. 19 00:01:00,430 --> 00:01:03,750 Det er efterfulgt af enten bogstaver eller tal 20 00:01:03,750 --> 00:01:08,100 svarende til, hvad du dybest set ønsker verden at se, 21 00:01:08,100 --> 00:01:09,830 du dig selv at se, osv. 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 mappe skal være eksekverbare af alle, der ser det, 24 00:01:15,560 --> 00:01:19,500 så hvad du ville gøre, er at du kan køre kommandoen chmod a + x 25 00:01:19,500 --> 00:01:21,050 og derefter navnet på din mappe. 26 00:01:21,050 --> 00:01:28,110 Når du har en fil, f.eks CSS-filer eller billedfiler - 27 00:01:28,110 --> 00:01:33,060 ligesom JPEG og bitmaps, sådan noget, eller nogen JavaScript-kode - 28 00:01:33,060 --> 00:01:36,440 du ønsker at at kunne læses af alle, 29 00:01:36,440 --> 00:01:39,880 så så hvad du gør, er du kunne bruge det wildcard - 30 00:01:39,880 --> 00:01:41,650 som er en asterisk - 31 00:01:41,650 --> 00:01:46,190 til stort set angive i CSS mappen - alt i denne mappe - 32 00:01:46,190 --> 00:01:48,740  Jeg har tænkt mig at sige, at der kommer til at kunne læses af alle. 33 00:01:48,740 --> 00:01:54,220 Med tilladelser, når vi bruger bogstaverne 34 00:01:54,220 --> 00:01:57,610 Vi kan også bruge tal i stedet. 35 00:01:57,610 --> 00:02:00,900 Så du se, at i sidste ende, når du ønsker noget at være eksekverbar - 36 00:02:00,900 --> 00:02:02,810 der er repræsenteret med tallet 1 - 37 00:02:02,810 --> 00:02:08,340 noget at være læsbart er antallet 4 og derefter - 38 00:02:08,340 --> 00:02:10,590 skrivbar er nummer 2 - 39 00:02:10,590 --> 00:02:13,670 og så væsentlige, når du ønsker en kombination af disse, så du tilføje dem. 40 00:02:13,670 --> 00:02:15,860 Hvis du vil have noget at kunne læses, skrives, og eksekverbare, 41 00:02:15,860 --> 00:02:21,970 så ville du tilføje op 4, 2 og 1 og som vil give dig 7, 42 00:02:21,970 --> 00:02:26,230 så når du har en mappe, som du ønsker at det skal være eksekverbare af alle - 43 00:02:26,230 --> 00:02:31,380 samt læses og skrives - så er du gør, at 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Det ville være 7 for dig, derefter 1 for de andre mennesker. 45 00:02:38,140 --> 00:02:42,870 Når du har spec, vil det faktisk angive, hvilke mapper og hvilke filer 46 00:02:42,870 --> 00:02:45,040 nødt til at være chmod-ed specifikt. 47 00:02:45,040 --> 00:02:47,920 For eksempel, når du har mapper - det er 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 når du har billeder eller HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 dernæst de kommer til at være 6, 0, 4 - eller 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 og derefter PHP-filer kommer til at være 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 Tanken bag det er, at brugerne ikke skal faktisk se din PHP-kode, 52 00:03:04,940 --> 00:03:08,370 men blot være i stand til at se output. 53 00:03:08,370 --> 00:03:11,030 >> Great! Flytning ind i PHP. 54 00:03:11,030 --> 00:03:18,850 Simply, når du ønsker en PHP-fil, den fil endelse er. 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 vedlægge den med venstre vinkel, spørgsmålstegn, php - 58 00:03:32,520 --> 00:03:39,320 sætte din php kode - og så tæt på, at med et andet spørgsmålstegn og en ret vinkel. 59 00:03:39,320 --> 00:03:45,020 Variabler i PHP er meget lettere at håndtere end variabler i C. 60 00:03:45,020 --> 00:03:50,310 Enhver variabel bare starter med et dollartegn foran det, og de er svagt indtastet. 61 00:03:50,310 --> 00:03:53,470 Det betyder, at du ikke behøver at bekymre sig om at sætte noget 62 00:03:53,470 --> 00:03:55,020 svarende til en streng eller et helt tal. 63 00:03:55,020 --> 00:03:57,710 Man kan simpelthen sige, det er mit navn på variablen 64 00:03:57,710 --> 00:04:00,390 og så er dens værdi, 65 00:04:00,390 --> 00:04:03,280 så det vil være nemmere at håndtere dér. 66 00:04:03,280 --> 00:04:08,220 >> En anden ting er, at PHP giver dig mulighed for at bruge associative arrays. 67 00:04:08,220 --> 00:04:11,330 Du kan simpelthen definere et array som du ville i C 68 00:04:11,330 --> 00:04:14,900 ved at sige, dollar sign-navnet på dit array-lig, 69 00:04:14,900 --> 00:04:22,600 og derefter i firkantede parenteser har dybest set bare en liste af værdier af alle elementer i arrayet. 70 00:04:22,600 --> 00:04:27,160 Men i PHP hvad du kan også gøre, er at specificere dybest set den - 71 00:04:27,160 --> 00:04:31,050 det er lidt ligesom en hash-funktionen. 72 00:04:31,050 --> 00:04:34,410 Du kan angive indeks - hvad du vil kalde det - 73 00:04:34,410 --> 00:04:37,030 og derefter som svarer til en værdi. 74 00:04:37,030 --> 00:04:42,880 Hvis man faktisk passerer i a = 1, b = 2, c = 3, 75 00:04:42,880 --> 00:04:50,820 så dit array ved indeks en vil give dig 1. 76 00:04:50,820 --> 00:04:56,600 Denne Pset vil varme dig op med nogle PHP i et afsnit med spørgsmål, 77 00:04:56,600 --> 00:04:59,240 og så må vi dykke ned i CS50 Finance. 78 00:04:59,240 --> 00:05:02,650 >> Vi har et par - vi har nogle funktioner, dybest set, 79 00:05:02,650 --> 00:05:05,130 at gennemføre i denne hjemmeside. 80 00:05:05,130 --> 00:05:10,440 Vi ønsker at give brugerne mulighed for at tilmelde dig vores hjemmeside med et brugernavn og en adgangskode. 81 00:05:10,440 --> 00:05:13,670 Vi ønsker at give dem mulighed for at slå op et citat, 82 00:05:13,670 --> 00:05:19,330 og så ville vi printe ud af navnet på det citat, samt den nuværende pris, at det er på. 83 00:05:19,330 --> 00:05:26,830 Vi ønsker at give dem mulighed for at se en portefølje af alle de aktier, de har købt hidtil. 84 00:05:26,830 --> 00:05:34,240 Vi ønsker også at give dem mulighed for at købe aktier samt sælge dem. 85 00:05:34,240 --> 00:05:37,540 Og så til sidst, vi ønsker at give dem mulighed for at se historie 86 00:05:37,540 --> 00:05:39,490 af alle de transaktioner, som de har lavet. 87 00:05:39,490 --> 00:05:41,540 Så endelig, efter du har implementeret det hele, 88 00:05:41,540 --> 00:05:45,110 så er du velkommen til at implementere en ekstra feature. 89 00:05:45,110 --> 00:05:46,610 Vi vil gå ind i dem. 90 00:05:46,610 --> 00:05:51,330 Dem kan enten være der giver brugerne mulighed for at få ekstra penge ved at deponere ekstra kontanter, 91 00:05:51,330 --> 00:05:54,550 eller du kan give dem mulighed for at ændre deres adgangskode, eller noget lignende, 92 00:05:54,550 --> 00:06:00,590 e-maile dem en kvittering, når de køber eller sælger en aktie. 93 00:06:00,590 --> 00:06:05,370 Der er en begrænset liste over funktioner, som du kunne gennemføre selv, 94 00:06:05,370 --> 00:06:08,340 så det er den sidste der. 95 00:06:08,340 --> 00:06:13,430 >> Da dette er en hjemmeside, gutter har også en masse frihed til at tilpasse den. 96 00:06:13,430 --> 00:06:20,960 Vi gør give nogle CSS kode, men du er helt fri til at nappe det, 97 00:06:20,960 --> 00:06:26,680 gør det ser pænere, men underliggende er det en grundlæggende funktionalitet 98 00:06:26,680 --> 00:06:30,310 så altid henvise til spec om, hvad du rent faktisk har brug for at inkludere dér. 99 00:06:30,310 --> 00:06:39,940 Efter spec, vi skal bruge apparatet som også en server. 100 00:06:39,940 --> 00:06:43,910 Det kommer til at være vært for vores hjemmeside for os, på sin lokale server. 101 00:06:43,910 --> 00:06:49,750 Hvis du følger disse anvisninger og udpak Pset 7 fordeling kode 102 00:06:49,750 --> 00:06:53,500 ind i din virtuelle host / lokal vært mappe, 103 00:06:53,500 --> 00:07:02,470  så kan du bare besøge http://localhost/ i Google Chrome i apparatet, 104 00:07:02,470 --> 00:07:09,120 og derefter du ville nå den kode, som du har skrevet Pset 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 kommer med en masse fordeling kode, 106 00:07:14,490 --> 00:07:18,330 og forhåbentlig we've - gennem alle de psets før dette - 107 00:07:18,330 --> 00:07:21,700 vænnet os til læsning gennem uddeling kode, 108 00:07:21,700 --> 00:07:25,650 at forstå, hvad funktioner er allerede fastsat, og hvordan vi måske kan bruge 109 00:07:25,650 --> 00:07:29,470 dem og de andre funktioner, som vi kommer til at gennemføre. 110 00:07:29,470 --> 00:07:31,570 I dette tilfælde har vi 3 mapper. 111 00:07:31,570 --> 00:07:36,350 Vi har en HTML mappe, en omfatter mappe og en skabeloner mappe. 112 00:07:36,350 --> 00:07:40,630 Hvad vi kommer til at gøre med denne Pset er slags adskille tænkning - 113 00:07:40,630 --> 00:07:45,580 programmeringen tænkning - den PHP-kode med den faktiske visuelle aspekt. 114 00:07:45,580 --> 00:07:52,690 Vi vil gerne have en PHP-fil, der gør alt tænkning, lyder i databasen, 115 00:07:52,690 --> 00:07:55,620 udskriver ting, har if-sætninger - ting - 116 00:07:55,620 --> 00:08:02,140 og så der vil sende data ind i vores skabelon-fil - eller template.php. 117 00:08:02,140 --> 00:08:05,710 Hvad der vil gøre, er at læse data og så vil det udskrive det. 118 00:08:05,710 --> 00:08:09,550 >> Vi kan behandle skabeloner som "dum" i, at vi egentlig ikke ønsker dem 119 00:08:09,550 --> 00:08:12,370 at gøre en masse arbejde ved beregningen ting. 120 00:08:12,370 --> 00:08:16,330 Vi ønsker, at vores controllere til at gøre det. 121 00:08:16,330 --> 00:08:21,610 En lille smule om det - lad os tage et kig på nogle af fordelingen kode. 122 00:08:21,610 --> 00:08:28,250 Her har vi vores index.html fil, og det er temmelig tom. 123 00:08:28,250 --> 00:08:34,429 Hovedsagelig hvad den gør - det siger vel, jeg kommer til at kræve den configuration.php fil. 124 00:08:34,429 --> 00:08:40,120 Vi kan ikke se, at lige der, men det er dybest set kalde configuration.php fil, 125 00:08:40,120 --> 00:08:42,240 og gennemførelsen af ​​dette. 126 00:08:42,240 --> 00:08:45,130 Efter det betyder, at det vil gøre porteføljen. 127 00:08:45,130 --> 00:08:49,310 Rendering er en funktion, så når vi arbejder i en controller, 128 00:08:49,310 --> 00:08:56,490 vi vil kalde render, giver vi det på filen og derefter de data, vi passerer i, 129 00:08:56,490 --> 00:09:04,570 så det ringer i portfolio.php--type identitetskort i disse data, således at porteføljen kan håndtere dette. 130 00:09:04,570 --> 00:09:10,540 >> Og nu, her, vi har vores login.php form. 131 00:09:10,540 --> 00:09:17,540  Det er den controller, der dybest set tager sig af skovhugst i. 132 00:09:17,540 --> 00:09:29,090 Her kontrollerer det, om en formular blev sendt til denne fil og beskæftiger sig med validering af underkastelse. 133 00:09:29,090 --> 00:09:31,990 Vi vil se nærmere på dette undskylder funktion. 134 00:09:31,990 --> 00:09:35,100 Når vi ønsker at udskrive en fejlmeddelelse, 135 00:09:35,100 --> 00:09:39,550 vi bruger undskylder og som vil omdirigere brugeren til en bestemt side 136 00:09:39,550 --> 00:09:42,530 der vil udskrive den specifikke fejlmeddelelse, vi angiver. 137 00:09:42,530 --> 00:09:47,860 Fortsætter den, vil den forespørgsel i databasen - we'll komme ind mere om det senere. 138 00:09:47,860 --> 00:09:54,180 Så kan du se, at hernede hvis en form, der ikke blev sendt, så det gør en formular. 139 00:09:54,180 --> 00:10:01,360 Det betyder, at det går til login_form.php, så lad os se på det. 140 00:10:01,360 --> 00:10:09,400 >> Login.php er faktisk, hvor vi ser HTML beskæftiger sig med den faktiske visuelle aspekt. 141 00:10:09,400 --> 00:10:15,130 Her har vi et input tag for brugernavnet, en indgang til den adgangskode, 142 00:10:15,130 --> 00:10:16,630 samt en submit knap. 143 00:10:16,630 --> 00:10:22,660 Det er faktisk, hvor det visuelle aspekt og HTML-formular vil blive afholdt. 144 00:10:22,660 --> 00:10:27,550 Her står der, at det kommer til at blive indgivet af en bestemt metode, kaldet post. 145 00:10:27,550 --> 00:10:30,190 Vi vil komme ind i forskellene mellem metoder - 146 00:10:30,190 --> 00:10:33,240 sende versus få, er der også noget, der hedder sat - 147 00:10:33,240 --> 00:10:36,160 vi vil komme ind på disse metoder senere, men for den interesse for denne Pset, 148 00:10:36,160 --> 00:10:37,810 Jeg vil stærkt opfordre dig til at bruge post. 149 00:10:37,810 --> 00:10:42,210 >> Vi ved, at stort set når denne formular er indsendt - 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 dybest set passere i alle disse parametre fra disse formularer i login.php. 153 00:10:56,070 --> 00:11:04,900 Resultaterne fra denne form er indeholdt i denne post associative array. 154 00:11:04,900 --> 00:11:11,710 Indekserne for de forskellige elementer i den post-array 155 00:11:11,710 --> 00:11:15,290 er præcis, hvad du angiver her. 156 00:11:15,290 --> 00:11:19,240 De siger, at navnet på denne indgang er brugernavn. Navnet på denne ene er password. 157 00:11:19,240 --> 00:11:26,840 Ligeledes kan du se brugernavnet som indekset for den associative array der. 158 00:11:26,840 --> 00:11:35,110 Hvis vi går til den omfatter mappe, har vi denne funktion fil, som vil være meget nyttig. 159 00:11:35,110 --> 00:11:37,570 >> Alle disse funktioner er implementeret for dig. 160 00:11:37,570 --> 00:11:41,870 Du behøver ikke specifikt at implementere nogle af disse selv, 161 00:11:41,870 --> 00:11:43,140 men de vil ganske nyttigt. 162 00:11:43,140 --> 00:11:49,450 Vi har undskylde, der som jeg sagde før, vil som udgangspunkt udskrive en fejlmeddelelse 163 00:11:49,450 --> 00:11:52,920 for dig på en bestemt side - apology.php. 164 00:11:52,920 --> 00:11:59,890 Så har vi dump, så hvis du bare ringe dump og derefter passere i variablen, 165 00:11:59,890 --> 00:12:04,930 så det vil bringe dig til en side, der vil vise, at variabel for dig. 166 00:12:04,930 --> 00:12:09,950 Så har vi logout, som vil dybest set afslutte et bestemt brugers session. 167 00:12:09,950 --> 00:12:12,240 Lookup vil være nyttig. 168 00:12:12,240 --> 00:12:15,870 Da vi har at gøre med citater og lagre, vi vil være i stand - 169 00:12:15,870 --> 00:12:17,650 og det er det væsentlige realtid. 170 00:12:17,650 --> 00:12:21,380 Vi er nødt til at vide, hvad disse bestand værdier er, 171 00:12:21,380 --> 00:12:28,210 så vi har den lookup funktion, som beskæftiger sig med Yahoos dokumentation af bestandene. 172 00:12:28,210 --> 00:12:37,700 Når du kigger op et bestemt symbol på et lager, vil den vende tilbage til dig aktiesymbolet 173 00:12:37,700 --> 00:12:41,480 samt navn og den aktuelle pris på denne bestand. 174 00:12:41,480 --> 00:12:44,330 Det er den lookup funktion. 175 00:12:44,330 --> 00:12:48,350 >> Så vi har at gøre med MySQL, 176 00:12:48,350 --> 00:12:53,970 så vil vi være der ønsker at udføre visse forespørgsler på vores SQL-database. 177 00:12:53,970 --> 00:12:58,890 Vi har forespørgsel til at håndtere - at slags abstrakt noget af det ud. 178 00:12:58,890 --> 00:13:03,200 Vi kommer til at være forbi i hel perlerække af vores SQL forespørgsel - 179 00:13:03,200 --> 00:13:05,360 og alle de variabler, der går i det - 180 00:13:05,360 --> 00:13:09,480 og hvad den gør, er faktisk at gennemføre det for os. 181 00:13:09,480 --> 00:13:15,070 I stedet for at skulle skrive alt dette ud, hver gang du ønsker at forespørge - 182 00:13:15,070 --> 00:13:21,740 ved at få alle resultaterne fra den pågældende forespørgsel - 183 00:13:21,740 --> 00:13:24,740 så kan du bare kalde den søgefunktion, og det vil vende tilbage til dig - 184 00:13:24,740 --> 00:13:28,750 afhængigt af hvad du bruger til din forespørgsel - 185 00:13:28,750 --> 00:13:33,000 sandsynligvis en række af alle de resultater, der svarer til forespørgslen eller lignende. 186 00:13:33,000 --> 00:13:34,690 Mere om det senere selv. 187 00:13:34,690 --> 00:13:41,200 >> Endelig har vi omdirigere, der, som navnet antyder, omdirigerer dig til en anden side. 188 00:13:41,200 --> 00:13:46,280 Og så har vi render, som vi vil komme til at kalde et par gange. 189 00:13:46,280 --> 00:13:51,010 Når du er i en controller, du kalder gøre i skabelonen siden 190 00:13:51,010 --> 00:13:55,390 og derefter passere i de værdier, som skabelonen så vil beskæftige sig med. 191 00:13:55,390 --> 00:13:59,540 Disse værdier er sandsynligvis vil beskæftige sig med den type output, du vil 192 00:13:59,540 --> 00:14:01,050 til at blive vist på din skabelon side. 193 00:14:01,050 --> 00:14:09,370 Okay. Det er de funktioner, og der er meget mere til denne fordeling kode. 194 00:14:09,370 --> 00:14:12,930 Jeg vil opfordre dig til at gå gennem denne og udforske det selv. 195 00:14:12,930 --> 00:14:17,050 Desuden vil det spec sandsynligvis gå dig gennem nogle andre elementer i distributionen kode. 196 00:14:17,050 --> 00:14:27,360 Her er en oversigt over de funktioner, der findes i functions.php. 197 00:14:27,360 --> 00:14:31,710 >> Okay. Den første opgave er at give brugerne mulighed for at registrere sig på hjemmesiden. 198 00:14:31,710 --> 00:14:34,860 Lige nu er der en login-formular på hjemmesiden, 199 00:14:34,860 --> 00:14:40,080 og du er udstyret med et par brugere med passwords. 200 00:14:40,080 --> 00:14:42,130 Du kan bruge disse brugernavne og logger ind, 201 00:14:42,130 --> 00:14:45,140 men du vil tillade folk at lave deres egne brugernavne 202 00:14:45,140 --> 00:14:47,390 og føje sig til hjemmesiden. 203 00:14:47,390 --> 00:14:53,070 Layoutet for tilmelding er temmelig ens til login formular, 204 00:14:53,070 --> 00:14:56,340 undtagen brugernavnet ikke er allerede eksisterende, 205 00:14:56,340 --> 00:14:59,430 og brugeren skal også give en ny adgangskode, 206 00:14:59,430 --> 00:15:02,440 og så vi typisk har en adgangskode bekræftelse. 207 00:15:02,440 --> 00:15:06,580 Når brugeren indtaster alle af disse oplysninger, 208 00:15:06,580 --> 00:15:10,620 vi ønsker at tilføje dem til vores database af brugere. 209 00:15:10,620 --> 00:15:12,970 Vi kommer til at have en database - en SQL-database - 210 00:15:12,970 --> 00:15:14,470 at vi kommer til at referere til. 211 00:15:14,470 --> 00:15:18,140 I denne database, vil vi have en tabel med alle brugere 212 00:15:18,140 --> 00:15:23,850 indeholdende deres brugernavn, deres password, og også hvor mange penge de har. 213 00:15:23,850 --> 00:15:28,480 >> I register, ønsker vi at give dem mulighed for at indtaste disse oplysninger. 214 00:15:28,480 --> 00:15:29,740 Vi ønsker at vise denne form. 215 00:15:29,740 --> 00:15:32,210 Vi ønsker at sikre, at deres password - 216 00:15:32,210 --> 00:15:37,490 at de kom én, og derefter også at adgangskoderne matcher, når de træder det to gange. 217 00:15:37,490 --> 00:15:42,240 Efter alt dette er gjort - forudsat at disse fejl kontrolleres - 218 00:15:42,240 --> 00:15:45,120 så vi ønsker at tilføje disse brugere til vores database. 219 00:15:45,120 --> 00:15:49,630 Endelig, når du har registreret dig, det er temmelig praktisk, hvis du ikke behøver at logge ind igen 220 00:15:49,630 --> 00:15:51,000 når du har registreret, 221 00:15:51,000 --> 00:15:54,000 så vi kommer til at logge dem ind på hjemmesiden, hvis de har registreret i succes. 222 00:15:54,000 --> 00:16:00,360 >> Den første opgave er at vise den form, og det er faktisk kommer til at være - 223 00:16:00,360 --> 00:16:04,920 hele denne registreringsproces vil blive modelleret temmelig nøje efter login 224 00:16:04,920 --> 00:16:10,510 undtagen i stedet for login.php du måtte have register.php. 225 00:16:10,510 --> 00:16:14,300 I stedet for login_form.php-, som er template - 226 00:16:14,300 --> 00:16:16,030 du har registrere form. 227 00:16:16,030 --> 00:16:19,680 Du ønsker at tilføje endnu en felt - en adgangskode bekræftelse felt - 228 00:16:19,680 --> 00:16:23,450 i stedet for bare den ene brugernavn og en adgangskode. 229 00:16:23,450 --> 00:16:28,120 Dernæst ønsker vi at undersøge, om de passwords matcher eller er tomme. 230 00:16:28,120 --> 00:16:38,560 Vi har controlleren - register.php--som vil tage sig af at gøre disse kontroller. 231 00:16:38,560 --> 00:16:41,690 Når en formular indsendes via post-metoden, 232 00:16:41,690 --> 00:16:47,050 derefter alle disse variable er indeholdt i stillingen array. 233 00:16:47,050 --> 00:16:52,280 Du vil være sikker på, at stillingen array-værdi ved indeks password 234 00:16:52,280 --> 00:16:58,080 svarer til bekræftelse element. 235 00:16:58,080 --> 00:16:59,410 Du ønsker at sikre, at de ikke er tomme, 236 00:16:59,410 --> 00:17:01,650 og du vil være sikker på, at det er den samme. 237 00:17:01,650 --> 00:17:05,960 >> En praktisk ting om PHP er, at vi ikke behøver at bruge streng sammenligne længere. 238 00:17:05,960 --> 00:17:08,410 Vi kan bruge den lig-lig operatør 239 00:17:08,410 --> 00:17:11,470  at kontrollere, om strenge er lig med hinanden. 240 00:17:11,470 --> 00:17:14,960 For fejlhåndtering, vil du ønsker at undskylde. 241 00:17:14,960 --> 00:17:17,150 At undskylde, skal du blot kalde funktionen 242 00:17:17,150 --> 00:17:21,910  og derefter angive en type meddelelse, du ønsker at output. 243 00:17:21,910 --> 00:17:24,630 Du derefter ønsker at føje brugeren til databasen. 244 00:17:24,630 --> 00:17:30,880 Indtil nu er alt hvad vi har gjort bare at handle lokalt med resultaterne af skemaet. 245 00:17:30,880 --> 00:17:33,940 Nu er vi faktisk ønsker at tilføje dem til vores database. 246 00:17:33,940 --> 00:17:38,890 For dette, vi først vil være sikker på, at brugernavnet ikke er tom. 247 00:17:38,890 --> 00:17:44,550 Forstå, at på en hjemmeside, kan du ikke have flere brugere med det samme brugernavn, 248 00:17:44,550 --> 00:17:50,010 så du vil være sikker på, at når du indsætter noget i din database - 249 00:17:50,010 --> 00:17:56,650 indsætte en ny bruger - så du ikke får en kollision mellem en allerede eksisterende brugernavn 250 00:17:56,650 --> 00:17:59,150 og det brugernavn, en bruger forsøger at sende. 251 00:17:59,150 --> 00:18:02,250 For dette, du engang udføre en forespørgsel - 252 00:18:02,250 --> 00:18:08,760 indsætte en bestemt bruger med deres password og et indledende beløb af kontanter - 253 00:18:08,760 --> 00:18:15,140 når du kalder denne forespørgsel, så mySQL reelt vil returnere falsk, hvis det mislykkes. 254 00:18:15,140 --> 00:18:21,050 >> Strukturen af ​​brugerne er således, at brugernavn er en entydig værdi, 255 00:18:21,050 --> 00:18:22,540 så du kan ikke have mere end én. 256 00:18:22,540 --> 00:18:30,080 Når du prøver og indsætte en ny række med et brugernavn, der allerede eksisterer, 257 00:18:30,080 --> 00:18:34,470 der kommer til at returnere falsk - ligesom en boolesk-værdi falsk. 258 00:18:34,470 --> 00:18:45,320 En tricky ting her er, at du ønsker at kontrollere, om resultatet er et resultat af din forespørgsel. 259 00:18:45,320 --> 00:18:52,320 Hvis det mislykkes, så vil du ønsker at tjekke med triple-lig operatør. 260 00:18:52,320 --> 00:18:55,420 Det er faktisk kommer til at kontrollere, om der er en fejl eller ej, 261 00:18:55,420 --> 00:19:02,760 der henviser til, blot en simpel lig-lig, ville det være sandt, hvis rækken var tom. 262 00:19:02,760 --> 00:19:06,000 Resultatet af en fejl, hvis der er en kollision mellem brugernavne 263 00:19:06,000 --> 00:19:10,350 er den faktiske falsk værdi. 264 00:19:10,350 --> 00:19:15,230 >> Her er hvordan du ville indsætte i en database. 265 00:19:15,230 --> 00:19:19,220 Her er den forespørgsel, du ville køre i nøje SQL. 266 00:19:19,220 --> 00:19:25,750 Én ting er, at du rent faktisk kan gå til det websted, der administrerer din SQL database 267 00:19:25,750 --> 00:19:31,070 og lege der ved at indtaste manuelt enten værdier eller rækker. 268 00:19:31,070 --> 00:19:34,540 Det vil output hvad SQL output. 269 00:19:34,540 --> 00:19:38,870 Du kan også køre SQL-kommandoer i din database 270 00:19:38,870 --> 00:19:42,200  og så se, hvad syntaksen måtte være, 271 00:19:42,200 --> 00:19:46,790 og derefter omsætte det til forespørgslen funktion, som vi har i Pset 7, 272 00:19:46,790 --> 00:19:51,120 som vil være meget lig de forespørgsler, du rent faktisk kører. 273 00:19:51,120 --> 00:19:54,570 >> Hvis jeg ønskede at indsætte en ny række i min brugere bord, 274 00:19:54,570 --> 00:20:01,240 så jeg ville specificere insert into brugere, som er navnet på mit bord. 275 00:20:01,240 --> 00:20:06,870 Så ville jeg angive kolonnenavne. 276 00:20:06,870 --> 00:20:13,230 Så ville jeg give de værdier sammen med min adgangskode. 277 00:20:13,230 --> 00:20:17,080 Adgangskoder i vores brugere tabel gemmes ikke som bare strengen. 278 00:20:17,080 --> 00:20:19,440 De lagres som den krypterede version, 279 00:20:19,440 --> 00:20:24,560 så du vil få lyst til at køre funktionen crypt på selve password, 280 00:20:24,560 --> 00:20:29,680 og det vil give dig den rigtige type opbevaring for brugere array. 281 00:20:29,680 --> 00:20:34,960 Løb dette vil indsætte en ny række i din brugere tabel. 282 00:20:34,960 --> 00:20:39,020 >> For at imødegå den søgefunktion, 283 00:20:39,020 --> 00:20:43,100 før i C brugte vi procenttegn som pladsholder. 284 00:20:43,100 --> 00:20:47,670 Ligeledes det samme begreb om en pladsholder gælder her. 285 00:20:47,670 --> 00:20:50,720 Med forespørgsel, angiver du det hele forespørgslen, 286 00:20:50,720 --> 00:20:55,510 undtagen når du har at gøre med variabler som dit input i forespørgslen, 287 00:20:55,510 --> 00:21:00,490 så i stedet for faktisk at sætte dem inde - ligesom når vi havde printf udsagn i C. 288 00:21:00,490 --> 00:21:03,740 Vi ville sætte snoren og derefter har en pladsholder der, og derefter efter hver 289 00:21:03,740 --> 00:21:06,990 komma, angive, hvilke variable, vi havde. 290 00:21:06,990 --> 00:21:14,480 Her vil vi bruge spørgsmålstegnet tegn som vores pladsholder 291 00:21:14,480 --> 00:21:21,670 og derefter passere i hver variabel, henholdsvis i orden, for de pladsholdere - 292 00:21:21,670 --> 00:21:24,420 hvor disse variabler skal gå. 293 00:21:24,420 --> 00:21:29,470 Så her vil den første spørgsmålstegn erstattes af den faktiske brugernavn 294 00:21:29,470 --> 00:21:33,610 så det andet spørgsmålstegn ved password. 295 00:21:33,610 --> 00:21:37,000 >> Så endelig, når du har registreret dem og tilføjede dem til databasen, 296 00:21:37,000 --> 00:21:40,510 så du ønsker at logge dem ind på hjemmesiden. 297 00:21:40,510 --> 00:21:45,320 Vi har sådan en super-global variabel kaldet session. 298 00:21:45,320 --> 00:21:48,160 Session tager en vis id, 299 00:21:48,160 --> 00:21:51,750 og at id svarer til den bruger, der aktuelt er logget ind 300 00:21:51,750 --> 00:21:56,380 Hvad du ønsker at gøre, er at finde, hvad deres bruger-id er 301 00:21:56,380 --> 00:22:03,710 og derefter indstille den pågældende session id som den pågældende brugers id. 302 00:22:03,710 --> 00:22:07,560 En funktion, som du vil få lyst til at bruge her er der en SQL-kommando 303 00:22:07,560 --> 00:22:15,150 der vil hente den sidst indsatte id-nummer fra din tabel. 304 00:22:15,150 --> 00:22:24,560 Så rækker vil kalde - it'll kalder id - it'll tildele et navn til det nummer, den returnerer. 305 00:22:24,560 --> 00:22:27,900 Det vil kalde det id. 306 00:22:27,900 --> 00:22:33,370 Nu vi er færdige registrere, og vi kan gå videre til at citere. 307 00:22:33,370 --> 00:22:36,610 >> Citat giver brugeren mulighed for at indtaste navnet på en bestemt aktie, 308 00:22:36,610 --> 00:22:41,940 og så det vil returnere de kvaliteter af denne bestand. 309 00:22:41,940 --> 00:22:48,410 Hvad du ønsker at gøre her, er at have en controller og nogle skabeloner. 310 00:22:48,410 --> 00:22:53,380 I dette tilfælde vil vi have en controller, som vil gøre alt for at tænke for os. 311 00:22:53,380 --> 00:23:01,210 Det kommer til at kigge op symbolet og derefter passere i værdier til de skabeloner, der vil printe ud. 312 00:23:01,210 --> 00:23:03,060 Vi kommer til at have 2 skabeloner her. 313 00:23:03,060 --> 00:23:07,260 Vi kommer til at have 1 skabelon, der giver den form, hvorunder brugere vil 314 00:23:07,260 --> 00:23:09,920 indtaste navnet på det lager - navnet på aktien. 315 00:23:09,920 --> 00:23:16,030 Så vi vil også have en anden skabelon, der viser disse værdier. 316 00:23:16,030 --> 00:23:27,450 Du kan se på login for et eksempel på, hvordan du ville have en form, der accepterer input, 317 00:23:27,450 --> 00:23:30,060 undtagen i her, vi kun ønsker 1 felt. 318 00:23:30,060 --> 00:23:31,630 Vi ønsker ikke et brugernavn og en adgangskode felt. 319 00:23:31,630 --> 00:23:37,110 Vi ønsker blot 1 tekst felt der giver brugeren mulighed for at indtaste navnet på en bestemt aktie. 320 00:23:37,110 --> 00:23:40,110 Så du ønsker at sende disse data - når du har kigget op den pågældende bestand - 321 00:23:40,110 --> 00:23:45,550 til quote_form.php. 322 00:23:45,550 --> 00:23:50,780 Opslag vil returnere symbolet på en bestand, navn, og en pris. 323 00:23:50,780 --> 00:23:53,910 Disse er indeholdt i en associativ array. 324 00:23:53,910 --> 00:24:01,390 Slå op i lookup funktion inde i functions.php for mere information 325 00:24:01,390 --> 00:24:04,010 om tilbagelevering typer af dem. 326 00:24:04,010 --> 00:24:08,520 >> Great! Så til sidst, vil du ønsker at vise lager oplysninger. 327 00:24:08,520 --> 00:24:14,110 Du ønsker at sandsynligvis vise - du vil have adgang til disse variabler. 328 00:24:14,110 --> 00:24:17,610 Når du har prisen i 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 at vise dem i din skabelon side. 331 00:24:25,550 --> 00:24:31,540 Denne skabelon side kunne kaldes show_quote.php eller noget. 332 00:24:31,540 --> 00:24:39,660 Din quote.php side vil gøre show citerer og derefter passere i alle disse værdier. 333 00:24:39,660 --> 00:24:47,170 Så i din php side, du rent faktisk udskrive disse værdier til HTML aspekt af siden. 334 00:24:47,170 --> 00:24:53,800 Du skal bare bruge printfunktionen og passerer i prisen. 335 00:24:53,800 --> 00:24:57,990 Der er 2 måder - du kan enten sammenkæde det med prik operatør, 336 00:24:57,990 --> 00:25:02,230 eller bruge en pladsholder. 337 00:25:07,580 --> 00:25:12,750 >> Brugerne efterhånden vil blive at købe og sælge aktier. 338 00:25:12,750 --> 00:25:18,450 Vi ønsker at give dem en eller anden måde at se alle de bestande, at de i øjeblikket har. 339 00:25:18,450 --> 00:25:21,350 Vi vil kalde det deres portefølje. 340 00:25:21,350 --> 00:25:26,180 Portefølje ville formentlig for hver bruger, indeholder en masse rækker 341 00:25:26,180 --> 00:25:31,760 angivelse af aktietype at de har og derefter hvor mange af dem, de har. 342 00:25:31,760 --> 00:25:36,500 Vores eksisterende tabel - lige nu har vi en brugere bord i vores database. 343 00:25:36,500 --> 00:25:41,780 Der indeholder en brugers brugernavn og password og hvor mange penge de har. 344 00:25:41,780 --> 00:25:50,390 Der er ingen reel måde at opbevare alle deres lagre inden for denne. 345 00:25:50,390 --> 00:25:58,010 Det er ikke ligesom vi kan indsætte nye kolonner for hver bestand. 346 00:25:58,010 --> 00:26:03,650 Det ville være en meget, meget lang række, fordi vi har en uendelig mængde 347 00:26:03,650 --> 00:26:06,200 af typer af lagre, de kunne have. 348 00:26:06,200 --> 00:26:09,150 Så i stedet, hvad vi vil gøre, er i den samme database, 349 00:26:09,150 --> 00:26:15,000 vi vil have en brugere bord, men så vil vi også have en portefølje bord. 350 00:26:15,000 --> 00:26:18,430 Porteføljen bord vil blive afgjort knyttet til brugernes bordet, 351 00:26:18,430 --> 00:26:24,600 men i stedet porteføljen tabelstruktur vil have lager oplysninger, 352 00:26:24,600 --> 00:26:27,780 hvor mange aktier af denne bestand brugeren har, 353 00:26:27,780 --> 00:26:31,620 samt en brugers bestemt id-nummer. 354 00:26:31,620 --> 00:26:34,620 Du har brugerne tabel, som har en id samt brugernavn, hash - 355 00:26:34,620 --> 00:26:40,130 som er den adgangskode, krypteret adgangskode - 356 00:26:40,130 --> 00:26:42,130 og derefter mængden af ​​kontanter, de har. 357 00:26:42,130 --> 00:26:47,900 Id-nummer vil være forbundet med id-nummer fra porteføljen. 358 00:26:47,900 --> 00:26:52,490 Porteføljen vil bare have symbolet på den bestand samt aktier - 359 00:26:52,490 --> 00:26:55,410 antallet af aktier af denne bestand, som brugeren har. 360 00:26:55,410 --> 00:26:58,520 I denne portefølje bord du ville have stort set 361 00:26:58,520 --> 00:27:03,760 alle aktier i besiddelse af alle de brugere på dit websted. 362 00:27:03,760 --> 00:27:10,550 Senere kun at fastsætte en bestemt brugers aktier - kun deres portefølje - 363 00:27:10,550 --> 00:27:15,360 du ville hente værdierne fra din portefølje bord, således at 364 00:27:15,360 --> 00:27:19,930 ID-nummeret er specifikt for den pågældende bruger. 365 00:27:26,520 --> 00:27:34,890 >> Når du får vist portefølje, vil du ønsker at rapportere hver af de bestande i en brugers portefølje. 366 00:27:34,890 --> 00:27:41,670 Du ønsker at rapportere antallet af aktier og den aktuelle værdi af disse aktier. 367 00:27:41,670 --> 00:27:45,950 Det aktuelle værdi af disse aktier er ikke lagret i porteføljen tabellen 368 00:27:45,950 --> 00:27:51,640 fordi det kommer til at være en opdatering - ved minimum - hver dag af Yahoo. 369 00:27:51,640 --> 00:27:58,550 For at få disse oplysninger, kan du ikke referere det fra din SQL-forespørgsel. 370 00:27:58,550 --> 00:28:02,400 Hvilken funktion giver det os ved? Hvilken funktion vil hente prisen? 371 00:28:02,400 --> 00:28:09,110 Det er opslag, vil så ved hjælp af opslag på en bestemt symbol giver dig en masse oplysninger. 372 00:28:09,110 --> 00:28:13,710 Det vil give dig 3 stykker af oplysninger - navn, symbol, samt prisen. 373 00:28:13,710 --> 00:28:17,490 Når du opslag et bestemt symbol, så kan du hente prisen, 374 00:28:17,490 --> 00:28:20,460 og derefter kan du bruge den pris, der skal vises i din portefølje. 375 00:28:20,460 --> 00:28:26,190 >> Porteføljen skal også vise brugerens aktuelle kassebeholdning. 376 00:28:26,190 --> 00:28:30,310 Dette område er gemt i din brugere tabel. 377 00:28:30,310 --> 00:28:33,400 Så huske, hvordan vi dybest set har til - 378 00:28:33,400 --> 00:28:36,850 vi har forskellige typer PHP-filer. 379 00:28:36,850 --> 00:28:40,160 Vi kommer til at have en controller, som dybest set gør alt tænker for dig. 380 00:28:40,160 --> 00:28:45,940 Og så har vi en skabelon, hvor skabelonen beskæftiger sig med output af data. 381 00:28:45,940 --> 00:28:50,790 Du er nødt til at tænke på, hvad variabler regulatoren bliver nødt til at tage i. 382 00:28:50,790 --> 00:29:01,630 Hvis vi har at gøre med en portefølje, der udsender hvert navn, symbol, og dele nummer, 383 00:29:01,630 --> 00:29:03,730 samt løbende Prisen på en aktie, 384 00:29:03,730 --> 00:29:06,950 så vil du ønsker at finde en måde at stort set passerer i - 385 00:29:06,950 --> 00:29:12,070 du kan passere i en matrix af værdier, der matcher det. 386 00:29:15,250 --> 00:29:24,360 >> Lad os gå ind i et eksempel på, hvordan du kan hente alle de bestande 387 00:29:24,360 --> 00:29:26,210 ejes af en bestemt bruger. 388 00:29:26,210 --> 00:29:31,400 Dette er ikke beskæftiger sig - endnu - med prisen på aktien. 389 00:29:31,400 --> 00:29:33,520 Hvad dette ville gøre, er at køre en forespørgsel. 390 00:29:33,520 --> 00:29:37,070 Det ville opnå symbol såvel som de aktier fra - 391 00:29:37,070 --> 00:29:42,770 Jeg ringer denne tabel, men i dette tilfælde hvad ville det så være? 392 00:29:42,770 --> 00:29:49,400 Hvad er navnet på den tabel, som vi har at gøre med, der har symbol og aktier 393 00:29:49,400 --> 00:29:52,280 for en bestemt bruger? 394 00:29:52,280 --> 00:29:56,410 Det er enten brugere eller portefølje. 395 00:29:56,410 --> 00:29:57,820 Portfolio. 396 00:29:57,820 --> 00:30:03,220 Hvad dette ville gøre, er query portefølje for de symboler og aktier 397 00:30:03,220 --> 00:30:04,920 for en bestemt bruger. 398 00:30:04,920 --> 00:30:09,260 Her vil jeg sige, (SELECT symbol, aktier fra TBL - 399 00:30:09,260 --> 00:30:12,280 men i stedet for tabel, er du nødt til at erstatte det med portefølje. 400 00:30:12,280 --> 00:30:15,220 »Hvor er dybest set min tilstand. 401 00:30:15,220 --> 00:30:21,050 Jeg siger jeg ønsker kun at få de associative arrays, som svarer 402 00:30:21,050 --> 00:30:23,850  til denne følgende betingelse - id ligemænd. 403 00:30:23,850 --> 00:30:27,600  Så jeg lægger en pladsholder der og derefter session id. 404 00:30:27,600 --> 00:30:36,720 Hvad dette vil gøre, er at sige for hver række i rækker. 405 00:30:36,720 --> 00:30:40,940 Dette er en pæn måde i stedet for rent faktisk at skulle oprette en for-løkke 406 00:30:40,940 --> 00:30:47,450 der gentager over alle de indekser, så i PHP du kan have en for-hver loop. 407 00:30:47,450 --> 00:30:53,520 >> Hvis du har en bestemt opstilling, så kan du sige jeg har tænkt mig at kalde hver efterfølgende element - 408 00:30:53,520 --> 00:30:57,930 Jeg har tænkt mig at kalde ethvert element dette navn. 409 00:30:57,930 --> 00:31:02,780 Så for hver enkelt af disse elementer, vil jeg kalde dem det, 410 00:31:02,780 --> 00:31:04,500 så jeg kan gøre dette. 411 00:31:04,500 --> 00:31:10,370 I denne for hver, har du rækker som din faktiske array, og hver række du vil kalde række. 412 00:31:10,370 --> 00:31:12,420 Hver gang det udfører kroppen, 413 00:31:12,420 --> 00:31:16,960 det vil gå op, og det vil opdatere rækken til næste element i rækker. 414 00:31:18,900 --> 00:31:25,260 >> Nu med hensyn til at købe aktier, 415 00:31:25,260 --> 00:31:29,500 hvad vi ønsker at gøre, er at få bestanden, som brugeren ønsker at købe 416 00:31:29,500 --> 00:31:35,300 og det samlede antal aktier, som brugeren ønsker at købe, og derefter - hvis de vil - 417 00:31:35,300 --> 00:31:38,120 tilføje, at materiel til deres portefølje. 418 00:31:38,120 --> 00:31:40,310 Det er klart, hvis de skal købe noget, så der kommer til at falde 419 00:31:40,310 --> 00:31:43,520 mængden af ​​penge, de har, så det kommer til at sænke deres kontanter. 420 00:31:43,520 --> 00:31:48,380 Vi vil beskæftige sig med ajourføring af porteføljen samt brugernes bordet, 421 00:31:48,380 --> 00:31:50,300 som indeholder kontanter. 422 00:31:50,300 --> 00:31:54,920 Men først skal du få den faktiske bestand og antal aktier, som brugeren ønsker. 423 00:31:54,920 --> 00:32:00,010 Til det skal du bruge en HTML-form, der vil bede om symbol af bestanden 424 00:32:00,010 --> 00:32:03,360 at du ønsker at købe, samt antallet af aktier. 425 00:32:03,360 --> 00:32:08,300 Så vil du ønsker at tilføje. 426 00:32:08,300 --> 00:32:13,750 Du ønsker at vælge bestemte værdier. 427 00:32:13,750 --> 00:32:19,670 Vi har været igennem dette lidt i forvejen, men når du forsøger at få bestemte rækker - 428 00:32:19,670 --> 00:32:22,020 hente bestemte rækker fra SQL-tabel, 429 00:32:22,020 --> 00:32:24,290 dette er den følgende syntaks. 430 00:32:24,290 --> 00:32:28,400 Du har markere, og derefter, hvis du angiver en stjerne, 431 00:32:28,400 --> 00:32:31,830 der vil dybest set returnere det hele, hele rækken for dig. 432 00:32:31,830 --> 00:32:36,890 Så igen, du har den tilstand, hvor, og så skal du angive - 433 00:32:36,890 --> 00:32:39,990 Jeg ønsker kun det brugernavn skal være lig med mail-in, 434 00:32:39,990 --> 00:32:46,660 så det vil kun hente den række i brugere, der svarer til mail-in. 435 00:32:46,660 --> 00:32:52,860 >> Når en bruger ønsker at tilføje en aktie til en portefølje, 436 00:32:52,860 --> 00:32:54,400 du nødt til at tjekke et par fejl. 437 00:32:54,400 --> 00:32:57,680 Du vil være sikker på, at brugeren rent faktisk har råd til bestanden, 438 00:32:57,680 --> 00:33:00,810 så vil du ønsker at tjekke deres kontanter. 439 00:33:00,810 --> 00:33:05,810 Før brugte vi stjerne til at hente en hel række fra en SQL-tabel. 440 00:33:05,810 --> 00:33:08,930 Men her kan vi faktisk bare angive, at jeg kun ønsker 1 værdi - 441 00:33:08,930 --> 00:33:10,080 Jeg ønsker kun kontanter. 442 00:33:10,080 --> 00:33:17,970 Så her ville den returnere penge til brugeren med id nummer 1. 443 00:33:17,970 --> 00:33:25,940 Hvis en bruger allerede har købt en bestemt bestand, men derefter køber mere af denne bestand, 444 00:33:25,940 --> 00:33:30,440 så i din portefølje - du ikke ønsker en separat linje, 445 00:33:30,440 --> 00:33:34,770 anden række, der indeholder den nye transaktion. 446 00:33:34,770 --> 00:33:37,950 Du rent faktisk ønsker at opdatere beløbet. 447 00:33:37,950 --> 00:33:42,530 Det eneste, der ændrer virkelig er den mængde aktier, som den pågældende bruger ejer. 448 00:33:42,530 --> 00:33:47,730 Hvis du bruger indsatsen i forespørgslen - så er det bare indsætte i din portefølje alle disse værdier - 449 00:33:47,730 --> 00:33:51,710 brugerens id-nummer samt symbolet på den bestand, de køber 450 00:33:51,710 --> 00:33:57,750 og aktierne, så vil du også ønsker at angive, ja, hvis jeg løber ind i en duplikeret nøgle - 451 00:33:57,750 --> 00:34:00,750 i dette tilfælde er det duplikeret nøgle ikke kun brugerens id, men også aktiesymbolet - 452 00:34:00,750 --> 00:34:08,340 fordi du kun kan have - vores udgangspunkt er, at du kun kan have 1 række 453 00:34:08,340 --> 00:34:10,699  der svarer til 1 bestemt symbol. 454 00:34:10,699 --> 00:34:13,659 Så på den duplikeret nøgle - hvis du løber ind i en kollision der - 455 00:34:13,659 --> 00:34:18,520 du bare at opdatere aktier til sin nye værdi. 456 00:34:18,520 --> 00:34:23,290 Aktier er lig uanset hvad vi havde før plus antallet af aktier, som brugeren køber. 457 00:34:27,790 --> 00:34:31,090 >> Nu, hvor vi har opdateret porteføljen bordet, 458 00:34:31,090 --> 00:34:34,730 vi ønsker at opdatere brugerens kontanter. 459 00:34:34,730 --> 00:34:40,300 Det er i brugernes bordet, så vi kommer til at trække et bestemt beløb fra kontanter. 460 00:34:40,300 --> 00:34:46,270 Formentlig det vil være kontant lig kontante minus - og så et bestemt beløb. 461 00:34:46,270 --> 00:34:50,560 Hvis du vil opdatere kontanter, du ville - 462 00:34:50,560 --> 00:34:55,699 hvis jeg ønskede at tage penge væk fra mail-in, så ville jeg køre denne forespørgsel - 463 00:34:55,699 --> 00:35:00,220 »Opdatere brugernes og derefter indstille cash kolonnen til kontanter - 464 00:35:00,220 --> 00:35:07,300 >> Jeg ville fjerne 9.999 dollars, hvis brugernavn er lig med mail-in. 465 00:35:07,300 --> 00:35:12,020 Men i dette tilfælde, ønsker vi ikke at trække 9.999 specifikt. 466 00:35:12,020 --> 00:35:17,610 Vi ønsker at præcisere, ja, vi ønsker at trække den aktuelle pris på den bestand 467 00:35:17,610 --> 00:35:22,400 ganget med antallet af aktier, de køber. 468 00:35:25,260 --> 00:35:29,910 >> Nu har vi tilladt dem at se alle de lagre, de har, 469 00:35:29,910 --> 00:35:33,080 samt købe flere aktier. 470 00:35:33,080 --> 00:35:37,430 Vi har også tidligere givet dem mulighed for at slå op den aktuelle pris af en bestand. 471 00:35:37,430 --> 00:35:40,030 Her ønsker vi at give dem mulighed for at sælge dem. 472 00:35:40,030 --> 00:35:42,160 Først skal vi ønsker at vise dybest set - 473 00:35:42,160 --> 00:35:45,270 vi ønsker at give dem mulighed for at se alle de lagre, de har, 474 00:35:45,270 --> 00:35:53,170 så her vi ønsker at vise alle rækkerne fra porteføljen. 475 00:35:53,170 --> 00:35:56,650 Hvis de vælger at sælge en bestemt aktie, 476 00:35:56,650 --> 00:35:59,140 så vil vi antage, at de ønsker at sælge det hele. 477 00:35:59,140 --> 00:36:04,350 De er ikke bare kommer til at sælge 50% af deres aktier, kommer de til at sælge 100% af det. 478 00:36:04,350 --> 00:36:08,630 Vi kan bare slette hele rækken fra porteføljen. 479 00:36:08,630 --> 00:36:17,520 Vi kan slette den givne brugerens aktier i bestemte symbol. 480 00:36:17,520 --> 00:36:21,410 Der er syntaksen for det. 481 00:36:21,410 --> 00:36:22,710 >> Så vi ønsker at opdatere kontanter. 482 00:36:22,710 --> 00:36:30,930 Vi vil være at tilføje i kontanter svarende til det samlede antal aktier, de sælger 483 00:36:30,930 --> 00:36:34,640 ganget med den aktuelle pris på den bestand - 484 00:36:34,640 --> 00:36:38,610 ikke den pris, som de købte den, men snarere den pris, som de er - 485 00:36:38,610 --> 00:36:40,500 den aktuelle pris, når de sælger det. 486 00:36:40,500 --> 00:36:43,660 Til at henvise til aktuelle pris på en aktie, 487 00:36:43,660 --> 00:36:49,120 vil du ønsker at bruge opslag, som vil give dig prisen på en aktie 488 00:36:50,030 --> 00:36:52,650 på det aktuelle tidspunkt. 489 00:36:52,650 --> 00:36:55,930 >> Nu er vi tilbage med historie, 490 00:36:55,930 --> 00:37:00,170 som du vil tillade en bruger at holde styr på alle deres transaktioner - 491 00:37:00,170 --> 00:37:03,040 ønsker at se, når de solgte noget, når de købte en bestand. 492 00:37:03,040 --> 00:37:08,870 Vi ønsker at angive det tidspunkt, hvor de gjorde det så godt som hvor mange de har købt 493 00:37:08,870 --> 00:37:11,650 og hvilken status var. 494 00:37:11,650 --> 00:37:17,800 Har vi nogen strøm, eksisterende struktur, der angiver det? 495 00:37:17,800 --> 00:37:25,230 Nuvel, vi har portefølje, som viser det antal aktier, som en bruger har 496 00:37:25,230 --> 00:37:26,470 for en given aktie. 497 00:37:26,470 --> 00:37:34,060 Men vi strukturere portefølje på den måde, den opdaterer, når vi køber flere, 498 00:37:34,060 --> 00:37:40,190 hvorimod historien bør - hvis du køber Apple, 10 aktier i det, og så senere på sælge 5, 499 00:37:40,190 --> 00:37:44,040 så ville du ønsker at se dem separat som separate aktioner, særskilte rækker. 500 00:37:44,040 --> 00:37:48,520 Henviser til, at foranstaltninger til at visualisere det i vores portefølje tabel 501 00:37:48,520 --> 00:37:52,540 ville bare være en opdatering til den pågældende række, 502 00:37:52,540 --> 00:37:55,740  så vi sandsynligvis vil ønsker en anden tabel. 503 00:37:55,740 --> 00:38:00,460 I vores database har vi vores brugere tabel, har vi vores portefølje tabel, 504 00:38:00,460 --> 00:38:04,090 og nu vi vil sikkert gerne en historie bord. 505 00:38:04,090 --> 00:38:08,070 Denne historie bord kan holde styr på den aktuelle dato, 506 00:38:08,070 --> 00:38:12,800 samt den bestand symbol, samt hvor mange aktier, 507 00:38:12,800 --> 00:38:15,410 og så hvad det er - 508 00:38:15,410 --> 00:38:18,800 om du skulle købe disse aktier, eller om du solgte dem. 509 00:38:20,660 --> 00:38:25,720 >> For at håndtere dato, der er et par måder, du kan gøre dette. 510 00:38:25,720 --> 00:38:28,820 PHP har en måde at holde styr på dato, som du kan se dig selv. 511 00:38:28,820 --> 00:38:33,990 I SQL kan du også bruge enten nu eller aktuelle tidsstempel. Det er op til dig. 512 00:38:33,990 --> 00:38:40,720 Bare sørg for, at hver gang en bruger køber eller sælger, vil du blive opdatere deres kontanter 513 00:38:40,720 --> 00:38:46,750 i users tabellen, vil du blive opdatere rækkerne i porteføljer tabellen, 514 00:38:46,750 --> 00:38:50,900 så skal du også være en opdatering af historien, 515 00:38:50,900 --> 00:38:56,260 så der vil være 3 separate SQL-forespørgsler, som du skal ringer der. 516 00:38:58,640 --> 00:39:01,530 Vi har en masse funktionalitet nu. 517 00:39:01,530 --> 00:39:10,600 >> Bare et par påmindelser om, at i dit indeks fil, du ønsker at linke til mindst din - 518 00:39:10,600 --> 00:39:15,550 men du vil få lyst til at give en bruger til at linke til buy.php side. 519 00:39:15,550 --> 00:39:23,560 Det kommer til at give en bruger - buy.php er controlleren, så det kommer til at enten 520 00:39:23,560 --> 00:39:29,170 sende dig til - der kommer til at sende dig til den form, der giver dig mulighed for at se tingene op. 521 00:39:29,170 --> 00:39:34,420 Vi har historie. Vi har logger ud, få et tilbud og derefter sælge. 522 00:39:34,420 --> 00:39:37,350 Det er på minimum, hvad du ønsker at vise. 523 00:39:37,350 --> 00:39:43,640 Med hensyn til porteføljen, er porteføljen faktisk vist i indekset siden. 524 00:39:43,640 --> 00:39:52,050 Hvis vi går til indeks, her ser vi, at den gør portfolio.php 525 00:39:52,050 --> 00:40:00,050 og passerer i det associative array - dybest set titlen lig portefølje. 526 00:40:00,050 --> 00:40:02,610 Så dette er styreenheden. 527 00:40:02,610 --> 00:40:08,000 Hvis vi går til den model for portfolio.php, 528 00:40:08,000 --> 00:40:18,060 så er alt det har, er - viser dybest set et billede, der siger, åh, dette site er under opbygning. 529 00:40:18,060 --> 00:40:23,810 Senere, når du passerer på - du komme forbi i stort set mere specifikke oplysninger. 530 00:40:23,810 --> 00:40:27,400 I stedet for bare titlen, vil du sandsynligvis blive passerer i flere ting. 531 00:40:27,400 --> 00:40:32,010 Når du har disse værdier, så portfolio.php kan håndtere disse værdier 532 00:40:32,010 --> 00:40:34,490 og printe dem ud i nogen form for orden. 533 00:40:34,490 --> 00:40:41,660 >> Når du har gennemført alle dem, du også nødt til at gennemføre 1 mere funktion. 534 00:40:41,660 --> 00:40:44,890 Dette kan enten tillader en bruger at ændre deres password, 535 00:40:44,890 --> 00:40:50,110 at nulstille deres password, hvis de har glemt det - så for nulstilling af adgangskoden, så 536 00:40:50,110 --> 00:40:54,560 du vil sandsynligvis også ønsker at redigere registrere, så det giver dem mulighed for at angive en e-mail, 537 00:40:54,560 --> 00:40:57,910 så hvis de glemmer deres password, så de kan få det. 538 00:40:57,910 --> 00:41:02,870 De kan sikkert komme ind i deres brugernavn, og derefter en e-mail vil blive sendt til dem 539 00:41:02,870 --> 00:41:06,180 med et link til at kunne nulstille deres password. 540 00:41:06,180 --> 00:41:10,980 Du kan få noget, der giver brugerne mulighed for at få kvitteringer 541 00:41:10,980 --> 00:41:12,380 hver gang de køber eller sælger noget, 542 00:41:12,380 --> 00:41:19,910 og så endelig, give dem mulighed for at tilføje kontanter til deres hjemmeside. 543 00:41:19,910 --> 00:41:24,970 Bare for at gå tilbage til begrebet controllere og skabeloner en lille smule. 544 00:41:24,970 --> 00:41:31,170 Du vil have noget som en - så du har en controller her. 545 00:41:31,170 --> 00:41:35,080 Lige nu ser vi på det login.php eksempel. 546 00:41:35,080 --> 00:41:38,220 Når vi har en controller, dybest set det kommer til at tage 2 sager. 547 00:41:38,220 --> 00:41:42,090 Når vi har controllere, vi er i dette stykke, at vi er også slags beskæftiger sig med 548 00:41:42,090 --> 00:41:43,880 når vi har formularer så godt. 549 00:41:43,880 --> 00:41:47,500 Regulatoren vil dybest set have separate aktioner - 550 00:41:47,500 --> 00:41:53,880 en, hvis en formular allerede er indgivet, og derefter to, hvis brugeren kommer til denne side 551 00:41:53,880 --> 00:41:56,870 for første gang og stadig behov for input denne form. 552 00:41:56,870 --> 00:42:02,820 >> Jeg har tænkt mig at hoppe til det pågældende sag først, før går op til det første tilfælde af med formen i. 553 00:42:02,820 --> 00:42:12,640 Her siger vi, hvis formularen er blevet forelagt med metoden post - 554 00:42:12,640 --> 00:42:13,580 ikke bekymre dig om, at en smule. 555 00:42:13,580 --> 00:42:19,780 Må ikke bekymre dig om det for meget, men forstår, at dybest set denne funktion beskæftiger sig med 556 00:42:19,780 --> 00:42:22,430 hvorvidt en form er blevet sendt eller ej. 557 00:42:22,430 --> 00:42:25,640 Denne betingelse gælder, hvis en bruger har indsendt formularen. 558 00:42:25,640 --> 00:42:45,940 Hvis ikke, så vil vi vil ringe Render login_form.php, og derefter passere i titlen. 559 00:42:45,940 --> 00:42:48,010 Denne titel er bare dybest set kommer til at vises i sidehovedet. 560 00:42:48,010 --> 00:42:54,990 Hvad dette gør, er dybest set siger, okay - ja, hvis en bruger går til login.php 561 00:42:54,990 --> 00:43:00,310 og faktisk ikke har logget ind, så jeg vil gerne sende dem til den side, der har denne formular 562 00:43:00,310 --> 00:43:03,160 der giver dem mulighed for at indtaste brugernavn og password. 563 00:43:03,160 --> 00:43:07,590 Så jeg gå til login_form, og så har det den faktiske form. 564 00:43:07,590 --> 00:43:13,750 Så, når brugeren sender denne formular, så vil de sende det til login.php 565 00:43:13,750 --> 00:43:15,840 med fremgangsmåden stilling. 566 00:43:15,840 --> 00:43:21,560 Så jeg faktisk kommer til at gå ind i denne del af min if-else loop. 567 00:43:21,560 --> 00:43:29,560 Så er det her, at vi behandler de værdier, der indtastes i formularen. 568 00:43:29,560 --> 00:43:32,800 Det er her, vi beskæftiger os med dem. 569 00:43:32,800 --> 00:43:40,860 >> Så når du beskæftige sig med disse værdier - hvis du har at gøre med - 570 00:43:40,860 --> 00:43:46,640 siger, at vi har at gøre med den quote.php side, hvor en person kan indtaste en bestand, 571 00:43:46,640 --> 00:43:49,950 de ønsker at slå op, og derefter se, at displayet - 572 00:43:49,950 --> 00:43:52,850 Det er slags ligner her. 573 00:43:52,850 --> 00:43:56,070 Her har vi en login-formular - ville i stedet sandsynligvis have et tilbud formular - 574 00:43:56,070 --> 00:44:00,290 men så når brugeren har faktisk fremlagt disse oplysninger, 575 00:44:00,290 --> 00:44:04,810 så vil du ønsker controlleren til at passere ind i en anden skabelon 576 00:44:04,810 --> 00:44:07,430 som vil vise dem, at faktiske oplysninger. 577 00:44:07,430 --> 00:44:11,250 Så lige her omkring, så vil du sandsynligvis - 578 00:44:11,250 --> 00:44:18,830 omkring slutningen af ​​din tilstand her - hvis metoden er lig post - 579 00:44:18,830 --> 00:44:22,520 så vil du sikkert gerne gøre en anden side - showet citerer - 580 00:44:22,520 --> 00:44:28,040 som sender dig til denne side - show_quote.php-- 581 00:44:28,040 --> 00:44:34,120 og derefter i denne fil vil referere disse værdier. 582 00:44:34,120 --> 00:44:36,480 Giver det mening? 583 00:44:36,480 --> 00:44:40,390 >> Vi har en controller, der dybest set handler de 2 sager - 584 00:44:40,390 --> 00:44:42,710 om du har indtastet en form i eller ej. 585 00:44:42,710 --> 00:44:43,950 Hvis du ikke har indtastet en formular, 586 00:44:43,950 --> 00:44:47,300 så det vil omdirigere dig til den form, som derefter vil sætte dig tilbage til denne side. 587 00:44:47,300 --> 00:44:54,020 Så, når du har oplysninger i regulatoren, vil dette organ beskæftige sig med det 588 00:44:54,020 --> 00:44:59,750 oplysning som nødvendigt - enten kigge op værdier for bestanden, 589 00:44:59,750 --> 00:45:04,150 og så når den er så op disse værdier og har dem i et pænt formateret array, 590 00:45:04,150 --> 00:45:08,180 så kan videregive denne opstilling ind i skabelonen siden 591 00:45:08,180 --> 00:45:10,330  som beskæftiger sig med udsende disse oplysninger. 592 00:45:10,330 --> 00:45:14,680 >> Igen, da det er web, går det at være sjovt. 593 00:45:14,680 --> 00:45:20,310 Vi er uden for C, så vi ikke er begrænset til ASCII og at terminal output, 594 00:45:20,310 --> 00:45:21,800 så have det sjovt med dette. 595 00:45:21,800 --> 00:45:24,920 Du kan gøre det som et visuelt som du ønsker. 596 00:45:24,920 --> 00:45:31,860 Du kan tillade brugere at indtaste millioner af dollars på et tidspunkt, 597 00:45:31,860 --> 00:45:34,730 eller begrænse dem og være virkelig betyder og give dem mulighed for kun at indtaste 1 penny på et tidspunkt 598 00:45:34,730 --> 00:45:36,330 eller noget i den retning. 599 00:45:36,330 --> 00:45:38,550 Absolut være sikker på at have det sjovt med dette. 600 00:45:38,550 --> 00:45:47,030 >> PHP koden er en smule enklere i, at det er en smule nemmere at kortlægge din pseudokode 601 00:45:47,030 --> 00:45:50,070 i selve gennemførelsen. 602 00:45:50,070 --> 00:45:56,320 Så helt sikkert have det sjovt med det, fordi det er faktisk vores sidste brik i CS50. 603 00:45:56,320 --> 00:46:01,150 Med dette, var denne Walkthrough 7. 604 00:46:01,150 --> 00:46:04,640 Når du er færdig med at se walkthrough og færdig med din Pset, 605 00:46:04,640 --> 00:46:09,590 så disse var også psets, og nu er vi videre til det endelige produkt - 606 00:46:09,590 --> 00:46:12,330 efter vi kommer igennem quiz 1. 607 00:46:12,330 --> 00:46:16,200 Så forhåbentlig kan du bruge de værktøjer, du har lært fra psets - 608 00:46:16,200 --> 00:46:21,980 ikke kun syntaksen, men mere det abstrakte begreb hvordan man kan tage en vis - 609 00:46:21,980 --> 00:46:24,950 gerne, jeg ønsker at gøre dette og derefter rent faktisk at gennemføre det. 610 00:46:24,950 --> 00:46:28,740 At lære at kæmpe sig gennem syntaks og distribution kode. 611 00:46:28,740 --> 00:46:33,020 Læse andre folks kode og derefter fortolke denne bruger allerede eksisterende funktioner. 612 00:46:33,020 --> 00:46:37,360 >> Så held og lykke med den sidste Pset. 613 00:46:37,360 --> 00:46:39,930 Det har været en fornøjelse at lede walkthroughs. 614 00:46:39,930 --> 00:46:40,940 Jeg håber, at de har været nyttige for dig. 615 00:46:40,940 --> 00:46:46,560 Disse var Walkthroughs, og takker meget. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]