[Musikgengivelse] ROB BOWDEN: Hej. Jeg er Rob, og jeg håber du er klar at sætte lager i denne opløsning. Først, lad os tage et kig på registret. Så husk, at vi her tjekker for at se om en form var indsendt til denne side. Så første ting, vi vil at gøre, er at gå til andet. Og vi kommer til at gengive registeret formularen. Så registeret form går at skrive til register.php. Og hvad det kommer til at sende? Det kommer til at sende et brugernavn, som den brugeren kommer til at udfylde en adgangskode, og en bekræftelse - kodeordet indtastet igen. Så nu når at formularen er indsendt til register.php vi udføre dette, hvis. Ser man på dette, hvis vi først kommer til at validere input. Vi ønsker at sikre, at brugernavnet og adgangskode ikke var tom, og at bekræftelse faktisk svarer til adgangskoden. Når vi har bekræftet, at vi kan faktisk registrere brugeren. Hvad betyder det? Nå, vi ønsker at indsætte bruger i vores database. Og det er, hvordan vi vil gøre det. Så vi kommer til at indsætte i brugerne tabel felterne brugernavn, hash og kontanter. Standardværdien af ​​kontanter vil være 10.000. Og vi kommer til at passere som brugernavn, brugernavn, gennem POST super globalt, der er indgivet fra formularen. Og vi kommer til at kryptere adgangskoden. Så hvis det lykkedes, så resulterer vil være ikke-falsk. Hvis det mislykkedes, så vi vil gerne undskylde. Noget gik galt. Og hvad kunne være gået galt? Nå, der er behov for et unikt brugernavn. Og så forespørgslen kunne have undladt Hvis brugernavnet allerede eksisterede i tabellen. Så under forudsætning af at det var et unikt brugernavn, så vi kommer til at forespørge at få fat i ID brugeren. Husk, at id er auto-inkrementeringen. Og så hvis det sker for at mislykkes for nogle grund, så vi vil gerne undskylde at vi ikke kunne få fat i id. Men under forudsætning af, at det ikke mislykkes, da vi Grib id fra, hvad forespørgslen returneres, gemme det i vores session - så vi ønsker at logge denne bruger i ved lagring af id i sessionen super globalt, og endelig omdirigere til vores portefølje. Og det er det for registeret. Nu vil vi gå videre til citat. Så citat kommer til at have en virkelig lignende sæt op. Vi ser her, at dette er den kode, der vi kommer til at udføre, når en formular er indsendt til denne side. Men først skal vi faktisk har at gøre denne form. Så tage et kig på citat form hvilke felter er der? Vi ser, at al citat har er en enkelt tekstboks med navnet symbol. Og så når citat formular er udstationeret til quote.PHP vi nu kommer til at udføre denne kode. Og den eneste variabel i vores POST super globalt bliver symbol. Vi validere at sørge for, at de faktisk bogført symbolet. Og hvis de ikke gjorde det, siger vi, at du skal give et symbol. Antages de angav et symbol, vi ser op dette symbol. Husk nu at kig op kan have mislykkedes siden, ja, måske var det ikke en gyldigt symbol til at begynde med. Så hvis dette ser op tilbagevenden falsk, vi vil gerne undskylde, at den symbol blev ikke fundet. Når vi har fundet det symbol, vi nu kan gengive quote.PHP skabelon. Hvad betyder det så se ud? Det er bare at udskrive, at en del uanset den bestandene navn var er værd at uanset aktiekursen er. Nu hvorfor vi bruger denne htmlspecialchars fungere? Det er fordi bestanden navn og symbol kan faktisk indeholde særlige tegn, der burde ikke fortolkes som HTML. Okay, så det er det for citat. Nu ønsker vi at se på index.php og portefølje. Men først skal vi faktisk nødt til at konstruere porteføljerne bordet. Her er, hvordan vi kommer til at gøre det. Så lad os tage et kig på strukturen. Og vi ser, at porteføljerne Tabellen vil have et ID. Så det kommer til at være brugerens ID, der er at indsætte aktierne. Vi har et symbol, der kommer til at være symbolet på det selskab, som vi er indsætte aktier. Og så aktier er antallet af aktier, der bliver indsat. Så husk at pr PSET spec, vi præcisere, at id og symbol - vi tjekke indekser, ID og symbol er den primære nøgle. Så en bruger-id og symbol parring bør kun vises et enkelt tid i denne tabel. Lad os nu se på koden. Så nu index.php kommer til at få fat i alle af vores portefølje information og vise det til brugeren. Så det første, vi kommer til at få fat i kontanter at brugeren i øjeblikket har fra cash bord. Husk, at forespørgslen er altid vil at returnere en array af arrays. Så selvom vi kun udvalgte kontanter fra en enkelt række, er vi stadig nødt til at grab, at kontanter ved at indeksere ind nulte indeks af rækker og snuppe den kontant indeks. Så nu er vi ønsker at vælge alle de oplysninger fra porteføljer tabellen der er relevant for den aktuelt indloggede bruger. Vi har naturligvis brug for at validere, at der faktisk lykkedes som vi bør altid gøre, når vi forespørge. Når vi har alle disse oplysninger, den PSET spec informerer os, at vi bør gøre dette for at pænt opbevare alle oplysningerne i dette positioner array. Så vi looping over alle af portefølje information, se op bestand er forbundet med hver række i portefølje, og klik derefter lagring i position array navn, pris, aktier og symbol alle forbundet med denne bestand. Og endelig, vi kommer til at gengive portfolio.PHP, der passerer i mængden af kontanter, vi har i øjeblikket, de positionerne array, vi bare konstrueret, og titlen på dette side, som vil være portefølje. Lad os tage et kig på portfolio.PHP. Og vi ser, at de store interessant del er denne løkke. Så vi looping over positioner matrix, hvilket skaber en tabel, hvor den pågældende tabel - vi befolker hver række med oplysninger, som vi sætter ind i positioner array. Igen, er vi nødt til at bruge htmlspecialchars i tilfælde dette symbol eller navnet indeholde HTML tegn. Og her er vi multiplicere prisen og det antal aktier, som vi har for at få, hvor meget der er øjeblikket værd for brugeren. Og det er det for portefølje. Nu vil vi tage et kig på at sælge. Så sælger kommer til at gå tilbage til det format, som vi havde i register.php. Vi ser, at en formular går at blive udstationeret til denne side. Men først, når vi indlæse siden, vi kommer til at gøre dette. Så hvad er denne gør? Nå, kunne vi bare have sell side have en enkelt tekstboks, som brugeren kommer ind i denne symbol, vi ønsker at sælge. Men vi kommer til at være en smule mere klog og vi kommer til at have en dråbe ned, der tillader brugeren at vælge faktiske symboler, de allerede har. Så vi får brugerens portefølje. Vi kommer til at vælge fra porteføljer alle de symboler, som brugeren har i øjeblikket, den aktuelt indloggede bruger. Sørg for, at der er lykkedes. Og nu vil vi løkken over den returnerede oplysninger, bare snuppe hvert symbol, og lagre den i denne symboler array. Og nu vil vi gengive sælge formularen. Så sælge formularen vil bare være en drop down menu, en udvalgt. Og hver enkelt indstilling i sælge formularen er vil bare udskrive symbolet at vi greb fra porteføljer bordet. Så sælge formularen kommer til indsende tilbage til sell.PHP. Ser man på sell.PHP, dette er den kode, der kommer til at udføre, når vi indsende til denne side. Vi ønsker at validere at brugeren faktisk indtastet et symbol. Nu antage, at de gjorde - så nu vil vi bestemme, hvor mange deler brugeren faktisk sælger og hvor mange penge brugeren bør få for at sælge, at mange aktier. Så vi fat i antallet af aktier, brugeren har med dette symbol. Vi kigger op i porteføljer for given bruger og givet symbol. Nu sørg for, at der rent faktisk returnerede en række. For hvis det ikke gjorde det, at brugeren ikke faktisk har dette symbol til at sælge. Antages de har det symbol, vi ønsker at få fat i antallet af aktier, som de har. Og nu ønsker vi at slå op, hvordan meget hver aktie er værd. Så brugte vi se op funktion. Vi kigger op værdien af symbolet. Antages det, at udseendet op lykkedes nu vi vil faktisk opdatere alle oplysningerne. Så vi ønsker at slette fra porteføljer de aktier, vi sælger. Vi ønsker at opdatere brugerens beløb i kontanter. Og vi opdatere den med aktier gange aktiekursen - så det er hvor mange penge brugeren netop har lavet. Og nu ønsker vi at opdatere vores historie. Så har vi ikke taget et kig på historien tabellen endnu. Så vi vil vende tilbage til dette. Nu vi endelig kommer til at omdirigere tilbage til porteføljen. Lad os nu tage et kig på køb. Så køber bør være temmelig svarer til at sælge. Vi ser, at vi igen kommer til at tjekke for at se, om vi er indsender til denne side. Antages det, at vi ikke er, er vi kommer til at indlæse buy formularen. Så hvad betyder buy formular se ud? Vi ser her, det er bare en almindelig danner der kommer til at indsende tilbage til buy.PHP. Og det kommer til at have et symbol, der brugeren indtaste antallet af aktier, som brugeren ønsker at købe af dette symbol, og det er det. Så når vi indsende tilbage til buy.PHP, er vi nu kommer til at udføre denne kode. Vi igen vil validere, at den brugeren har indtastet noget gyldigt. Så her er vi sikre, at de faktisk indtastet et symbol. Her vil vi sikre, at de faktisk indtastede aktier. Og her er vi sikre, at de indtastet et heltal for aktier, så de prøver ikke at købe ABC aktier. Nu ønsker vi at slå op prisen på symbol, så vi ved, hvor mange penge vi bør trække fra brugeren. Nu vil vi vælge, hvor meget kontant brugeren faktisk har, og sørg for, at det lykkedes. Her vil vi tage fat i kontanter. Og nu her, vi sørge at brugeren har nok kontanter. Så hvis antallet af aktier brugeren ønsker at købe gange prisen for hver af disse aktier er større end kontante beløb, som vi har, så den Brugeren kan ikke råd til det. Antages det, at brugeren har penge nok, nu vil vi indsætte i brugerens portefølje. Nå, vi indsætte i brugerens portefølje, hvis det sker for at være den første gang brugeren køber det pågældende symbol. Men hvad nu, hvis de allerede ske at have nogle Apple lager? Nå, nu vi gør brug af den på duplikere nøgle opdatering erklæring. Så det er derfor tidligere vi angivet, at Id og symbol bør være en fælles primær nøgle, så hvis vi forsøger at indsætte et id og symbol, der er allerede der, vil vi bare opdatere aktier til også at omfatte de nye aktier, brugeren køber. Nu ønsker vi at opdatere mængden af kontanter, som brugeren har, fordi de lige brugt nogle penge på disse aktier. Og endelig, opdaterer vi historietabellen igen. Hvilket igen, ser vi ved i en anden. Og endelig vil vi omdirigere tilbage til portfolio.PHP. Så lad os tage et kig på historie tabellen. Husk nu, at historien tabellen er formodes at holde styr på alle køber og sælger, at alle brugere gør, ikke bare de nuværende antal aktier, som brugere, hvilket er hvad portefølje er for. Så vi holde styr på den bruger, er køber eller sælger, uanset om den pågældende transaktion var et køb eller en sælger, det symbol, der er at være købt eller solgt antallet af aktier at vi køber eller sælger, den prisen for en enkelt aktie, der bliver købt eller solgt, og endelig den tid at dette køb eller salg forekommer. Og det er alle historie oplysninger, som vi har brug for at holde styr på. Så når vi kiggede på at sælge, så vi, at blev vi indsætter i historien sælge, som om vi køber eller sælger, det aktuelle tidsstempel, og den aktuelle bruger, det symbol, der er at være sælges, antallet af aktier, der er der sælges, og prisen på bestanden på dette tidspunkt. Tilsvarende i buy, det vil ser næsten det samme. Den eneste forskel er i stedet sælge, vi køber. Så i at sælge og købe, vi indsættelse i Den historier tabellen alle køber og sælger, der sker. Så alt history.PHP skal gøre er at gribe oplysninger fra historie bord, sørg for at det lykkedes, og gøre disse oplysninger. Så ser på history.PHP skabelon, de interessante oplysninger er lige her. Vi looping over alle af transaktioner, trykning, om denne var en købe eller sælge, formatering dato tid at vi gjorde denne transaktion. Husk vi bruge htmlspecialchars på symbol, just in case. Og endelig, formatering af antallet af aktier, der blev købt, og prisen en enkelt del på det tidspunkt. Og der viser alle historie oplysninger, som vi har brug for. Og det er det for denne PSET. Mit navn er Rob, og dette var CS50 Finance.