[Powered by Google Translate] [Týždeň 9] [David J. Malan - Harvard University] [To je CS50. - CS50.TV] Dobrá. Vitajte späť. To je CS50, a to je začiatok týždňa 9. Dnes sme sa zamerali najmä na dizajn, už v súvislosti s C ale v kontexte PHP a kúskom SQL a trochu JavaScriptu, najmä ku koncu ako PSet 7 a tiež vaše konečný projekt. V skutočnosti, ak ste v tomto bode v konečnej projektu kde pravdepodobne ako o hodinu alebo tak pred vami aspoň začala zamyslieť do konečného projektu a myslíš si prajete spolupracovať s 1 alebo 2 spolužiakmi, ak máte problémy s pripojením s uvedenou spolužiakmi, neváhajte vyplniť formulár na cs50.net/partners/form. Je to len spýta, kto ste, aké projektu myslíš o tom, kde žijete len pre logistických dôvodov. A potom, ak chcete dávať pozor na v priebehu budúceho týždňa alebo tak tabuľkového URL tam, potom môžete vidieť len na čítanie verzie Google doc , V ktorom sme zberu týchto informácií. Takže ak chcete pracovať s niekým, a to všetkými prostriedkami, neváhajte osloviť ľudí prostredníctvom tohto mechanizmu. Ale väčšina ľudí to práca sólo. To je úplne v poriadku. Takže sa domnievajú, že toto je v žiadnom prípade povinné. V piatok to bol len ja a niekoľko z tímu tu, prázdne divadlo z väčšej časti. Tam boli 3 turistov sedí tam, takže to bolo trochu trápne. O čom sme hovorili bola databáza a hovorili sme o PSet 7 trochu. A ak ste náhodou chytiť, že na videu ešte nie, to je v poriadku. Pokúsim sa definovať všetky pojmy, ktoré by sme inak považujeme za samozrejmé na základe prednášky piatkovej. Ale dnes sa budeme snažiť, aby vám do bodu zo dňa nielen schopný urobiť niečo ako PSet 7 ale naozaj pochopiť, čo sa deje na pod pokrievku, najmä niektoré abstrakcie, ktoré sme zaviedli do functions.php súboru aby vaše životy trochu jednoduchšie, ale tak, že si nakoniec porozumeli tak, že keď sa školenia kolesá zložiť za pár týždňov môžete ešte prežiť v reálnom svete a robiť tie veci bez CS50 rámci pod vami. Tento $ _SESSION, pre tých z vás, ktorí sú oboznámení alebo ktorí už zachytil na video v piatok, čo SESSION, dajte nám to v PHP-založené webové aplikácie? To je superglobal variabilný, čo znamená, že je to podobné ako v duchu GET a POST a pár ďalších, ale to, čo je to za vec užitočná pre? Čo je SESSION používa? Jo. [Študent] prihlásenie Je nám ľúto? [Študent] prihlásenie prihlásenie Naozaj. V PSet 7 sme pomocou tohto SESSION superglobal uľahčiť prihlásenie A čo je pekné o tejto superglobal je, že je asociatívne pole. Asociatívne pole, odvolanie, je len pole, ale ktorých indexov už nemusí byť čísla ako 012. Môžu byť čísla, alebo môžu byť dokonca reťazca. A tak ak ste sa ponorila do PSet 7 ešte, môžu si spomeniete, že sme sa ukladajú kľúč nazvaný ID vnútri tohto asociatívne pole, ktorého hodnota je niečo ako 123 - bez ohľadu na aktuálne prihláseného ID užívateľa je. Motivácia je to, že aj potom, čo užívateľ navštívil localhost alebo moje webové stránky všeobecnejšie a potom sa prihlásite, aj v prípade, že nie sú kliknite na odkaz, alebo sa vrátiť do svojho webu po dobu 5 minút alebo dokonca hodinu, alebo dokonca denne, ale opustiť svoj okno prehliadača otvorené, prostredníctvom tohto superglobal môžem pamätať, že sú prihlásení Inými slovami, mi umožňuje uložiť mierne dlhodobú čo chcem o užívateľovi. A môžete si ju naozaj ako stelesnenie nákupnom košíku. Miesta ako Amazon zrejme vám dať veci do nákupného košíka, ale HTTP, protokol, ktorý poháňa web, je bez štátnej príslušnosti v tom zmysle, že pri návšteve webovej stránky, z väčšej časti nemáte nejakú konštantné pripojenie k sieti medzi prehliadačom a serverom. Akonáhle ste si stiahli HTML a obrázky vo formáte JPEG a GIF a všetko, pripojenie zmizne a vy jednoducho máte kópiu HTML a ktovie čo ešte zo servera. Ale ak server chce mať na pamäti, niečo o sebe, zaťaženie je na serveri skutočne zaznamenať, že informácie. A tak ste programátor, ktorí majú kontrolu nad serverom môže dať najviac, čo chcete v tejto superglobal asociatívneho poľa a to tam bude nabudúce užívateľ príde späť, či už je to minút alebo dokonca dní neskôr, keď zatvoríte svoje okno prehliadača, na ktorom mieste SESSION zmizne. Takže je to pominuteľné skladovanie, je to non-perzistentné, a to znamenalo ísť preč akonáhle užívateľ zavrie svoj prehliadač - nielen, že karta, často na celý prehliadač, čím účinne prihlásenie užívateľa von. Tak, ako je tá vec skutočne realizovaná? Poďme sa rýchlo pozrieť na jednoduchom príklade sme sa pozreli na piatok. Pre tých, ktorí nepoznajú, to bolo tak jednoduché, ako to. Toto je webová stránka, ktorej jediným zmyslom života je mi koľkokrát som navštívil túto stránku. To je prvýkrát, čo tu v pondelok, že som ju navštívil, tak to hovorí 0 krát. Ale keby som začal načítanie tejto stránky hovorí, že 1 čas, 2, 3, 4, 5, a to bude nakoniec len sa udržať na počítanie hore, hore, hore, hore, hore pre každú dobu som vlastne kliknite na tlačidlo Obnoviť na to. Tak, ako je to nefunguje? Nechaj ma ísť dovnútra tohto súboru s názvom counter.php. Horná časť je všetky modré komentáre, ale zaujímavá časť je tu. Na riadku 13 nazývame túto funkciu session_start, a to je doslova všetko, čo musíte urobiť, ak chcete mať prístup k tomu špeciálny superglobal s názvom $ _SESSION. To je to všetko možné, a uvidíme za chvíľu, ako je to vôbec možné. V riadku 16 oznámení, čo robím. Ak bude kľúč, tzv pult - inými slovami, hodnota indexu - "počítadlo" existuje vnútri tohto poľa nazýva SESSION, potom to, čo robím s ňou v súlade nižšie? Čo je linka 18 robí? [Nepočuteľné Študent odpoveď] Čo je to? [Študent] Ukladanie hodnoty. Dobré. Je to ukladanie hodnotu, ktorá je v SESSION teraz v novej miestnej dočasné premenné, $ Counter vo všetkých malými písmenami. Všimnite si, že PHP už bol trochu lenivý tu. Všimnite si, nemáme žiadnu zmienku o int alebo float alebo reťazec alebo niečo také pretože PHP je slabo typovanie, kedy nemusíte špecifikovať typ premennej, a v tomto prípade tu som to dokonca vyhlásil to ešte. Som vyhlásil, že vo vnútri týchto zložených zátvoriek a na rozdiel od C, je to vlastne v poriadku. Bez ohľadu na to, ako hlboko vnorené premenné vyhlásenie je v PHP - vnútri ortézy kučeravé, vnútri ortézy vlnité a ako - že bude v tomto okamihu v dobe existujú pre zvyšok programu, k lepšiemu alebo k horšiemu. Tak to okamžite stáva globálny akonáhle ho definovať ako tu robíme. Inak, keď nemám zistil, že tam je niečo v SESSION superglobal, Som zrejme inicializácii túto premennú čítač na 0, čím len za predpokladu, že používateľ nikdy tu nebola. A potom samozrejme je zvyšovanie counter, ako? Ja som aktualizáciu hodnotu, ktorá je vo vnútri tohto asociatívneho poľa nastavením je rovná čo čítač je v súčasnej dobe + 1. Keby som prejdite sem na HTML stránky, je to vlastne celkom jednoduché. Jediné, čo mám v tele tejto stránky je, "Navštívili ste tieto stránky tak-a-tak čas." A to je pojem PHP. Ak tak urobíte