[Powered by Google Translate] [Týden 9] [David J. Malan - Harvard University] [To je CS50. - CS50.TV] Dobrá. Vítejte zpět. To je CS50, a to je začátek týdne 9. Dnes jsme se zaměřili zejména na design, již v souvislosti s C ale v kontextu PHP a kouskem SQL a trochu JavaScriptu, zejména ke konci jak PSet 7 a také vaše konečný projekt. Ve skutečnosti, pokud jste v tomto bodě v konečné projektu kde pravděpodobně jako o hodinu nebo tak před vámi alespoň začala zamyslet do konečného projektu a myslíš si přejete spolupracovat s 1 nebo 2 spolužáky, pokud máte potíže s připojením s uvedenou spolužáky, neváhejte vyplnit formulář na cs50.net/partners/form. Je to jen zeptá, kdo jste, jaké projektu myslíš o tom, kde žijete jen pro logistických důvodů. A pak, pokud chcete sledovat v průběhu příštího týdne nebo tak tabulkového URL tam, pak můžete vidět jen pro čtení verze Google doc , ve kterém jsme shromažďování těchto informací. Takže pokud chcete pracovat s někým, a to všemi prostředky, neváhejte oslovit lidi prostřednictvím tohoto mechanismu. Ale většina lidí to práce sólo. To je naprosto v pořádku. Takže se domnívají, že toto je v žádném případě povinné. V pátek to byl jen já a několik z týmu tady, prázdné divadlo z větší části. Tam byly 3 turistů sedí tam, takže to bylo trochu trapné. O čem jsme mluvili byla databáze a mluvili jsme o PSet 7 trochu. A pokud jste náhodou chytit, že na videu ještě ne, to je v pořádku. Pokusím se definovat všechny pojmy, které bychom jinak považujeme za samozřejmé na základě přednášky páteční. Ale dnes se budeme snažit, aby vám do bodu ze dne nejen schopen udělat něco jako PSet 7 ale opravdu pochopit, co se děje na pod pokličku, zejména některé abstrakce, které jsme zavedeny do functions.php souboru aby vaše životy trochu jednodušší, ale tak, že si nakonec porozuměli tak, že když se školení kola sundat za pár týdnů můžete ještě přežít v reálném světě a dělat ty věci bez CS50 rámci pod vámi. Tento $ _SESSION, pro ty z vás, kteří jsou obeznámeni nebo kteří již zachytil na video v pátek, co SESSION, dejte nám to v PHP-založené webové aplikace? To je superglobal variabilní, což znamená, že je to podobné jako v duchu GET a POST a pár dalších, ale to, co je to za věc užitečná pro? Co je SESSION používá? Jo. [Student] přihlášení Je nám líto? [Student] přihlášení přihlášení Opravdu. V PSet 7 jsme pomocí tohoto SESSION superglobal usnadnit přihlášení A co je hezké o této superglobal je, že je asociativní pole. Asociativní pole, odvolání, je jen pole, ale jejichž indexů již nemusí být čísla jako 012. Mohou být čísla, nebo mohou být dokonce řetězce. A tak pokud jste se ponořila do PSet 7 ještě, mohou si vzpomenete, že jsme se ukládají klíč nazvaný ID uvnitř tohoto asociativní pole, jehož hodnota je něco jako 123 - bez ohledu na aktuálně přihlášeného ID uživatele je. Motivace je to, že i poté, co uživatel navštívil localhost nebo moje webové stránky obecněji a pak se přihlásíte, i v případě, že nejsou klikněte na odkaz, nebo se vrátit do svého webu po dobu 5 minut nebo dokonce hodinu, nebo dokonce denně, ale opustit svůj okno prohlížeče otevřené, prostřednictvím tohoto superglobal mohu pamatovat, že jsou přihlášeni Jinými slovy, mi umožňuje uložit mírně dlouhodobou co chci o uživateli. A můžete si ji opravdu jako ztělesnění nákupním košíku. Místa jako Amazon zřejmě vám dát věci do nákupního košíku, ale HTTP, protokol, který pohání web, je bez státní příslušnosti v tom smyslu, že při návštěvě webové stránky, z větší části nemáte nějakou konstantní připojení k síti mezi prohlížečem a serverem. Jakmile jste si stáhli HTML a obrázky ve formátu JPEG a GIF a všechno, připojení zmizí a vy prostě máte kopii HTML a kdoví co ještě ze serveru. Ale pokud server chce mít na paměti, něco o sobě, zatížení je na serveru skutečně zaznamenat, že informace. A tak jste programátor, kteří mají kontrolu nad serverem může dát nejvíce, co chcete v této superglobal asociativního pole a to tam bude příště uživatel přijde zpět, ať už je to minut nebo dokonce dní později, pokud zavřete své okno prohlížeče, na kterém místě SESSION zmizí. Takže je to pomíjivé skladování, je to non-perzistentní, a to znamenalo jít pryč jakmile uživatel zavře svůj prohlížeč - nejen, že karta, často na celý prohlížeč, čímž účinně přihlášení uživatele ven. Tak, jak je ta věc skutečně realizována? Pojďme se rychle podívat na jednoduchém příkladě jsme se podívali na pátek. Pro ty, kteří neznají, to bylo tak jednoduché, jak to. Toto je webová stránka, jejímž jediným smyslem života je mi kolikrát jsem navštívil tuto stránku. To je poprvé, co tady v pondělí, že jsem ji navštívil, tak to říká 0 krát. Ale kdybych začal načtení této stránky říká, že 1 čas, 2, 3, 4, 5, a to bude nakonec jen se udržet na čítání nahoru, nahoru, nahoru, nahoru, nahoru pro každou dobu jsem vlastně klepněte na tlačítko Obnovit na to. Tak, jak je to nefunguje? Nech mě jít dovnitř tohoto souboru s názvem counter.php. Horní část je všechny modré komentáře, ale zajímavá část je tady. Na řádku 13 nazýváme tuto funkci session_start, a to je doslova vše, co musíte udělat, pokud chcete mít přístup k tomu speciální superglobal s názvem $ _SESSION. To je to všechno možné, a uvidíme za chvíli, jak je to vůbec možné. V řádku 16 oznámení, co dělám. Pokud je klíč, tzv. pult - jinými slovy, hodnota indexu - "počítadlo" existuje uvnitř tohoto pole nazývá SESSION, pak to, co dělám s ní v souladu níže? Co je linka 18 dělá? [Neslyšitelné Student odpověď] Co je to? [Student] Ukládání hodnoty. Dobré. Je to ukládání hodnotu, která je v SESSION teď v nové místní dočasné proměnné, $ Counter ve všech malými písmeny. Všimněte si, že PHP už byl trochu líný zde. Všimněte si, nemáme žádnou zmínku o int nebo float nebo řetězec nebo něco takového protože PHP je slabě typovaný, kdy nemusíte specifikovat typ proměnné, a v tomto případě tady jsem to dokonce prohlásil to ještě. Jsem prohlásil, že uvnitř těchto složených závorek a na rozdíl od C, je to vlastně v pořádku. Bez ohledu na to, jak hluboce vnořené proměnné prohlášení je v PHP - uvnitř ortézy kudrnaté, uvnitř ortézy vlnité a jako - že bude v tomto okamžiku v době existují pro zbytek programu, k lepšímu nebo k horšímu. Tak to okamžitě stává globální jakmile jej definovat jako tady děláme. Jinak, když nemám zjistil, že tam je něco v SESSION superglobal, Jsem zřejmě inicializaci tuto proměnnou čítač na 0, čímž jen za předpokladu, že uživatel nikdy tu nebyla. A pak samozřejmě je zvyšování counter, jak? Já jsem aktualizaci hodnotu, která je uvnitř tohoto asociativního pole nastavením je rovna co čítač je v současné době + 1. Kdybych přejděte sem na HTML stránky, je to vlastně docela jednoduché. Jediné, co mám v těle této stránky je: "Vy jste navštívili tyto stránky tak-a-tak čas." A to je pojem PHP. Pokud tak učiníte