[Powered by Google Translate] [Tjedan 9] [David J. Malan - Sveučilište Harvard] [Ovo je CS50. - CS50.TV] U redu. Dobrodošao natrag. Ovo je CS50, a to je početak tjedna 9. Danas ćemo se usredotočiti posebno na dizajnu, ne više u kontekstu C ali u kontekstu PHP i malo SQL i malo JavaScripta, osobito prema kraju oba pset 7 i vaš konačni projekt. U stvari, ako ste u tom trenutku u svom završnom projektu gdje je vjerojatno od sat vremena ili tako prije vas barem počeo dati neki mislili do konačnog projekta i vi razmišljate želite surađivati ​​s jednom ili dvije razredu, ako imate problema s povezivanjem s kolegama rekao, slobodno ispunite obrazac na cs50.net/partners/form. To samo vas pita tko ste, kakav projekt razmišljate o tome, gdje živite samo zbog logističkih razloga. A onda, ako želite držati na oku tijekom sljedećeg tjedna ili tako proračunske URL tamo, onda možete vidjeti samo za čitanje verziju Google doc u kojem smo prikupljanje tu informaciju. Dakle, ako želite raditi s nekim, svim sredstvima slobodno doprijeti do ljudi putem tog mehanizma. No, većina ljudi ne rade solo. To je potpuno u redu. Dakle, ne osjećam da je to na bilo koji način obvezno. U petak je bio samo ja i nekoliko momčadi ovdje, prazna kazalište za najveći dio. Tu su tri turista sjedi tamo gore, tako da je malo nespretan. Ono što mi je govorio o bilo baze podataka i razgovarali smo o pset 7 malo. A ako nije dogodilo uhvatiti da na videu samo još, to je u redu. Ja ću pokušati definirati sve pojmove koji bismo inače uzimamo zdravo za gotovo temelji se na petak predavanje. No, danas ćemo pokušati da dođete do točke da ne samo biti u mogućnosti učiniti nešto slično pset 7 ali stvarno razumijevanje što se događa ispod haube, posebno nekih apstrakcija koje smo stavili u mjesto u functions.php datoteku kako bi vaš život malo lakše, ali tako da se u konačnici razumjeti tako da kada trening kotači ispasti u nekoliko tjedana još uvijek možete preživjeti u stvarnom svijetu i učiniti ove stvari bez CS50 okviru ispod vas. Ova $ _SESSION, za one od vas koji su upoznati ili koji su već uhvatili video na petak, što znači SJEDNICA činimo u PHP-based web aplikacija? Ovo je superglobal varijabla, što znači da je sličan u duhu GET i POST i nekoliko drugih, ali ono što je ova stvar korisno za? Što je SJEDNICA koristi za? Da. [Student] Logging in Molim? [Student] Logging in Logging in Doista. U pset 7 smo pomoću ove sjednice superglobal olakšati prijave u. I ono što je lijepo o tome superglobal je da je asocijativni niz. Asocijativna polja, podsjetimo, samo je niz, ali čiji indeksi više ne moraju biti brojevi poput 012. Oni mogu biti brojevi ili oni mogu biti čak i žice. I tako, ako ste zaronili u pset 7 ipak, možda ćete se prisjetiti da smo pohranu ključnu zove ID unutar ovog asocijativnog niza čija vrijednost je nešto poput 123 - god trenutno prijavljeni korisnikov ID je. Motivacija za to je da, čak i nakon što je korisnik posjetio localhost ili moj website općenito, a onda sam prijavljni, čak i ako oni ne kliknete na vezu ili se vratiti na moje web stranice za pet minuta ili čak sat ili čak dan, ali oni ostavljaju preglednik otvoren prozor, putem ovog superglobal mogu se sjetiti da su prijavljeni Drugim riječima, to mi omogućuje da pohraniti nešto dugotrajno ništa želim o korisniku. A možete misliti da je to stvarno kao utjelovljenje u košarici. Mjesta kao što su Amazon očito vam staviti stvari u košaricu, ali HTTP protokol koji pogoni web, je bez državljanstva u smislu da kada posjetite web stranice, za najveći dio nemate neku stalnu vezu s mrežom između Vašeg preglednika i poslužitelja. Čim ste preuzeli HTML i JPEG i GIF i sve to, veza ide dalje i imate samo kopiju HTML i sitnica od poslužitelja. Ali ako poslužitelj želi zapamtiti nešto o vama, Teret je na poslužitelju da se zapravo snimati tu informaciju. I tako ste programer koji imaju kontrolu nad poslužiteljem možete staviti najviše sve što želite unutar ovog superglobal asocijativnog niza i to će biti tamo sljedeći put korisnik ne vrati, da li je minuta ili čak dana kasnije, osim ako oni zatvaraju svoje prozor preglednika, na kojem trenutku SJEDNICA nestaje. Dakle, to je prolazno skladištenje, to je nepostojani, a to je značilo da će otići čim korisnik zatvara njihov preglednik - ne samo da je kartica, često cijeli preglednik, čime učinkovito prijavom korisnika van. Pa kako se ova stvar zapravo provodi? Ajmo uzeti brzo pogledati na jednostavnom primjeru smo gledali u petak. Za one koji nisu upoznati, to je kao jednostavan kao taj. Ovo je web stranica čiji je jedini cilj u životu je da mi reći koliko sam puta posjetio ovu stranicu. Ovo je prvi put ovdje u ponedjeljak da sam ga posjetila, pa kaže 0 puta. Ali, ako sam početak ponovnog ovu stranicu, ona kaže jedan put, dva, tri, četiri, pet, i to će na kraju samo zadržati na brojanje gore, gore, gore, gore, gore za svaki put sam zapravo kliknite Učitajte na njega. Pa kako je to radi? Pusti me unutra ove datoteke pod nazivom counter.php. Gornji dio je sve plave komentara, ali najzanimljiviji dio je ovdje. Na liniji 13 zovemo ovu funkciju session_start, i to je doslovno sve što trebate učiniti ako želite imati pristup da je ovo posebna superglobal zove $ _SESSION. To ga čini sve moguće, pa ćemo vidjeti u jednom trenutku kako da je sve moguće. U liniji 16 obavijesti što radim. Ako ključ, zove brojač - drugim riječima, vrijednost indeksa - "brojač" postoji unutar ovog niza naziva sjednici, što onda radim s njim u liniji ispod? Što je linija 18 radiš? [Nečujno učenik odgovor] Što je to? [Student] Spremanje vrijednost. Dobro. To je spremanje vrijednost koja je u SJEDNICE upravo sada u novom lokalnu privremenu varijablu, $ Brojač u svim malim slovima. Primijetit ćete da PHP već biti malo lijen ovdje. Obavijest nemamo nikakve spominje int ili plovak ili string ili nešto slično jer PHP slabo se upisali, pri čemu ne morate navesti tip varijable, iu ovom slučaju ovdje nisam ni proglašen još. Ja sam ga izjavljujući unutar tih vitičastih zagrada i za razliku od C, to je zapravo dobro. Bez obzira koliko duboko ugniježđeni varijabla deklaraciju u PHP - unutar kovrčave vitice, unutar kovrčave vitice i kao - će u tom trenutku u vremenu postoji za ostatak programa, za bolje ili za lošije. Dakle, to je odmah postaje globalni čim ga definirati kao radimo ovdje. Inače, ako ne nađem da postoji nešto u sjednici superglobal, Ja sam očito inicijalizacije ovu varijablu brojač na 0, time samo pod pretpostavkom da korisnik nikada nije bio ovdje. I onda to naravno se povećavanjem brojač kako? Ja sam ažuriranju vrijednost koja je unutar ovog asocijativnog niza postavljanjem je jednaka bez obzira na brojač trenutno iznosi + 1. Ako sam dođite ovdje dolje na HTML stranici, to je zapravo prilično jednostavna. Sve što imam u tijelu ove stranice je: "Vi ste posjetili ovaj site, tako-i-tako puta." A to je PHP konstrukt. Ako to ne učinite