[Powered by Google Translate] [Uge 9] [David J. Malan - Harvard University] [Dette er CS50. - CS50.TV] Ok. Velkommen tilbage. Dette er CS50, og dette er begyndelsen af ​​uge 9. I dag har vi især fokusere på design, ikke længere i forbindelse med C men i forbindelse med PHP og lidt af SQL og lidt af JavaScript, især mod en ende af både Pset 7 og også dit afgangsprojekt. I virkeligheden, hvis du er på det punkt i din endelige projekt hvor formodentlig som af en time eller så siden du i det mindste begyndt at give nogle tanker til din endelige projekt, og du tænker du gerne vil samarbejde med 1 eller 2 klassekammerater, hvis du har problemer med at forbinde med de nævnte klassekammerater, velkommen til at udfylde formularen på cs50.net/partners/form. Det bare spørger dig, hvem du er, hvad slags projekt, du tænker på, hvor du bor bare af logistiske grunde. Og så hvis du ønsker at holde øje med i løbet af den næste uge eller så regnearket URL der, du kan derefter se en skrivebeskyttet version af Google doc hvor vi indsamle disse oplysninger. Så hvis du ønsker at arbejde med nogen, med alle midler velkommen til at nå ud til folk via denne mekanisme. Men flertallet af folk gøre arbejdet solo. Det er helt fint. Så du skal ikke føle, at dette på nogen måde er obligatorisk. På fredag ​​var det bare mig og et par af holdet herinde, tom teater for det meste. Der var 3 turister sidder deroppe, så det var en smule akavet. Hvad vi talte om var databaser og vi talte om Pset 7 en lille smule. Og hvis du ikke tilfældigvis til at fange det på video endnu, det er fint. Jeg vil prøve at definere eventuelle vilkår, som vi ellers ville tage for givet baseret på fredagens foredrag. Men i dag vil vi forsøge at få dig til det punkt, af ikke bare at være i stand til at gøre noget lignende Pset 7 men virkelig at forstå, hvad der foregår under kølerhjelmen, især nogle af de abstraktioner, som vi kommer på plads i functions.php filen til at gøre jeres liv en smule nemmere, men så du i sidste ende forstå så når støttehjul kommer ud i et par uger, kan du stadig overleve i den virkelige verden og gøre det her uden nogen CS50 rammer under dig. Denne $ _SESSION, for dem af jer der kender eller som allerede fanget den video på fredag, hvad SESSION lad os gøre i et PHP-baseret web-applikation? Dette er en superglobal variabel, hvilket betyder, at det er samme ånd at GET og POST og et par andre, men hvad er det her nyttigt for? Hvad er SESSION til? Yeah. [Studerende] Logger ind Undskyld? [Studerende] Logger ind Logger ind Indeed. I Pset 7 vi bruger denne SESSION superglobal at lette logge ind Og hvad er rart om denne superglobal er, at det er et associativt array. Et associativt array, husker, er blot et array, men hvis indekser ikke længere behøver at være tal ligesom 012. De kan være tal eller de kan være selv strenge. Og så hvis du har dykket ned Pset 7 endnu, kan du huske, at vi opbevarer en nøgle kaldet ID indersiden af ​​dette associative array, hvis værdi er noget i retning af 123 - uanset den aktuelt indloggede bruger id er. Motivationen til dette er, at selv efter at brugeren har besøgt localhost eller min hjemmeside mere generelt og derefter de har logget ind, selv om de ikke klikke på et link eller vende tilbage til min hjemmeside i 5 minutter eller endda en time eller endda en dag, men de forlader deres browser vinduet åbent, via denne superglobal kan jeg huske, at de er logget ind Med andre ord giver det mig at gemme lidt længere sigt hvad jeg vil om en bruger. Og du kan tænke på det virkelig som inkarnationen af ​​en indkøbsvogn. Steder som Amazon naturligvis lade dig sætte tingene i en indkøbsvogn, men HTTP, protokollen, der driver nettet, er statsløs i den forstand, at når du besøger en hjemmeside, for det meste, du ikke har nogle konstant netværksforbindelse mellem din browser og serveren. Så snart du har downloadet HTML og JPEG og GIF og alt det, forbindelsen går væk og du bare har en kopi af HTML og whatnot fra serveren. Men hvis serveren ønsker at huske noget om dig, byrden er på serveren til rent faktisk at registrere disse oplysninger. Og så du den programmør, der har kontrol over serveren kan sætte de fleste noget, du ønsker inde i denne superglobal associative array og det vil være der næste gang brugeren kommer tilbage, uanset om det er minutter eller endda dage senere, medmindre de lukker deres browser vindue, på hvilket tidspunkt SESSION forsvinder. Så det er flygtig lagring, det er ikke-vedvarende, og det er meningen at gå væk så snart brugeren lukker deres browser - ikke bare, at fanen, ofte hele browseren, derved effektivt at logge brugeren ud. Så hvordan er denne ting faktisk gennemføres? Lad os tage et hurtigt kig på et simpelt eksempel så vi på fredag. For dem bekendt, var det så simpelt som dette. Dette er en webside, hvis eneste formål i livet er at fortælle mig hvor mange gange jeg har besøgt denne side. Det er første gang her i mandags, at jeg besøgte det, så det siger 0 gange. Men hvis jeg begynder at genindlæse denne side, det siger 1 gang, 2, 3, 4, 5, og det vil i sidste ende bare holde på at tælle op, op, op, op, op for hver gang jeg faktisk Klik på genindlæs på det. Så hvordan er dette arbejde? Lad mig gå inde i denne fil kaldet counter.php. Den øverste del af det er alle blå kommentarer, men den interessante del er her. På linje 13 kalder vi denne funktion session_start, og det er bogstaveligt talt alt hvad du behøver at gøre, hvis du ønsker at have adgang til denne særlige superglobal kaldet $ _SESSION. Det gør det hele muligt, og vi vil se om et øjeblik, hvordan det er alt muligt. I linie 16 varsel hvad jeg gør. Hvis nøglen, kaldet counter - med andre ord indeksværdien - "tæller" eksisterer inde i dette array kaldet SESSION, så hvad gør jeg med det i linjen nedenfor? Hvad er linie 18 laver? [Uhørlig student svar] Hvad er det? [Studerende] Lagring værdien. Godt. Det er lagring af værdi, der er i SESSION lige nu i en ny lokal midlertidig variabel, $ Tæller i alle små bogstaver. Bemærk, at PHP allerede er ved at blive lidt doven her. Bemærk vi har ikke nogen omtale af int eller float eller snor eller noget i den retning fordi PHP svagt er skrevet, hvor du ikke behøver at angive, hvilken type af en variabel, og i dette tilfælde her har jeg ikke engang erklærede det endnu. Jeg erklærer det indersiden af ​​disse krøllede parenteser og i modsætning til C, er det faktisk okay. Ligegyldigt hvor dybt indlejret en variabel erklæring er i PHP - indersiden af ​​klammeparentes, inde i klammeparentes og lignende - Det vil på dette tidspunkt eksisterer for resten af ​​programmet, for bedre eller værre. Så det bliver straks global, så snart du definere det som vi laver her. Ellers, hvis jeg ikke finder, at der er noget i SESSION superglobal, Jeg er åbenbart initialiserer denne variabel tæller til 0, derved blot antager, at brugeren har aldrig været her før. Og så dette naturligvis er inkrementere tælleren hvordan? Jeg opdatere den værdi, der er inde i denne associative array ved at sætte det lig med, hvad tæller i øjeblikket er + 1. Hvis jeg rulle ned her til HTML på siden, det er faktisk ret simpelt. Alt, hvad jeg har i kroppen på denne side er: "Du har besøgt denne hjemmeside, så-og-så gange." Og det er en PHP konstruktion. Hvis du gør