[Powered by Google Translate] [8. týden, pokračování] [David J. Malan] [Harvard University] [To je CS50.] [CS50.TV] To je CS50, takže to je konec týdne 8 zde. Samozřejmě jsme měli trochu hurikánu na počátku tohoto týdne, takže teď to je opravdu jen ty a já v tomto přednáškovém sále, ale dnes budeme pokračovat v rozhovoru o PHP a asi programování pro web obecně, a také představit myšlenku databází, zvláště jeden nazvaný MySQL, která je velmi populární v těchto dnech, z velké části proto, že jeho škálovatelnosti, stejně jako proto, že jeho bytí zdarma a open source. Ale nejdřív, pohled na to, kde jsme skončili minule. Připomeňme si, že jsme se dívali na několika příkladech Frosh Chatu, a to byl ohavný formulář, který jsem přišel s asi 15 + let aby měl studenty na akademické půdě rejstříku pro sport prváka intramurálních aniž byste museli trek už přes dvůr k Wigglesworth posuňte fyzické kus papíru pod nějaké Proctor dveřím. Místo toho jsme se přestěhovali všechno on-line, ale k tomu, že jsme potřebovali využít několika technologií, tak jeden, jsme potřebovali HTML, Hypertext Markup Language, což je opět to značkovací jazyk, s nímž si uděláte webové stránky strukturálně. Pomocí trochu CSS v těchto dnech, kaskádové styly, kdy používáme stylizations webové stránky pomocí mírně odlišnou syntaxi, vzhledem k tomu, HTML bylo o struktuře jejich. Musíme také zavést webový programovací jazyk. V tomto případě budeme používat PHP, a PHP bude, aby nám pro dynamické výstupní obsah stejně jako tomu programové věci, jako je odesílání e-mailů, jako tomu bylo v případě poznámku jsme nechali minulý týden. Připomeňme si, že kód pro tento byl na 2 části. Jeden jsme měli froshims3.php, a toto bylo velmi značky s HTML formuláři uvnitř ní, trošku CSS tady v stylu atributy takže by forma sám se soustředil na stránce, ale kromě toho jsme měli nějaké reprezentativní formuláře vstupy, textové pole, zaškrtávací políčko, nějaké rádio tlačítka, zvolte menu, a tlačítko Odeslat. A prostřednictvím tohoto formuláře, jsme podali na souboru, který byl zřejmě volal register3.php, která sama o sobě vypadala trochu něco takového. Nyní, většina kódu v register3.php, odvolání, bylo o e-mailu. Je přece trochu validace na formuláři, který byl předložen, aby se ujistil že pole bylo skutečně za předpokladu, že byly očekávány. Pak jsme zavolali některé PHP funkce pomocí mírně novou syntaxi, i když to půjčil si od C. Tato šipka operátor nám umožňuje využít něco, co nazývá objektově orientované programování. Nepůjdeme do toho v každém detailu zde, ale vím teď je to způsob, jak mít funkce spojené s objekty, které jsou speciální typ struktury, jak jsme viděli v C. Ale teď, jen se na víře, že je to správná syntaxe pro použití Při použití knihovny se líbí tato knihovna PHPMailer. A pak na konci tohoto souboru jsme dynamicky generované e-mail které poslali na můj jharvard@cs50.net účet z mého jharvard@cs50.net účtu, a jsme informovali uživatele způsobem, že bylo zapsáno pro tento sport. To je přesně to, co Frosh IM stránku, kde bylo před lety když jsem implementoval, poskytnuté v jiném jazyce, ale to vám ukáže snad moc, že ​​máte teď, že se můžete vyjádřit nejen programově na nízké úrovni v jazyce jako C, ale na mnohem vyšší úrovni s těmito velmi reálných aplikacích, jako je e-mail, aby skutečně řešit některé skutečné světové problémy. Nyní, samozřejmě, i když tento skript použít pro generování některých e-maily dynamicky z jharvard@cs50.net, což je opravdu účet že mám přístup k to být docela opatrní k odeslání e-mail pouze z účtů, které jsou ve skutečnosti vlastní, lest věci vám v trochu teplé vody v životě. Díky, že řekl, pojďme se teď přechod na řešení jiný problém úplně, že opěrných států. A teď, co to vlastně znamená? HTTP, tato hypertext transfer protocol, je vlastně bez státní příslušnosti protokol, a co to znamená, že když vytáhnout něco jako Google.com a poté stiskněte klávesu Enter obvykle Váš prohlížeč má nějaký předení ikony, které pak vyústí v určité webové stránky jsou staženy, a pak že se malá ikona zastaví spinning, a že skutečně naznačuje, že HTTP dokončil nějaké připojení k serveru a je to. HTTP je bez státní příslušnosti v tom smyslu, že neudržuje trvalé připojení k serveru stejným způsobem Skype dělá nebo Gchat dělá proto, že s HTTP Předpokladem je, že poté, co jste přinesl webovou stránku, která je to. Nyní, ve skutečnosti v těchto dnech na weby jako Facebook a Google Maps a Twitter a jako by to mnohem více dynamiky, kdy i poté, ikona přestane točit, můžete ve skutečnosti získat další aktualizace ze serveru, více tweety, více o stavu aktualizace na Facebooku a podobně. Ale i to je použití techniky, které budeme mluvit o za týden nebo dva známý jako Ajax pomocí jazyka s názvem JavaScript, ale na konci dne, HTTP je stále nestavové. A přesto, pokud chcete, aby nějak vzpomenout, co o uživateli i poté, co jsem odpojen od serveru PHP se Vám poskytnou prostředky, jak toho dosáhnout protože, jak jsme viděli minule, PHP má řadu superglobálních, a superglobal je opět speciální globální proměnné , který je předán pro Vás webový server a samotným PHP. Nemusíte dělat nic, aby hodnoty v něm, a mezi superglobálních jsme viděli doposud, jsou get a post, které je místo, kde jsou pole formuláře umístit automaticky za vás, stejně jako pár dalších, které jsme ještě neviděli. Uvnitř $ _SERVER jsou některé speciální proměnné vztahující se k serveru samotném. Co je to IP adresa, jaký protokol, HTTP nebo HTTPS jste používali, Co žádost metodu jste a podobně, takže je tu něco zajímavého, šťavnaté podrobnosti o serveru, a ve skutečnosti, že uživatel se tam také. Tam je $ _cookie, což je místo, kde se tyto věci tzv. cookies jsou uloženy. Nebudeme trávit čas na cookies sebe dnes, ale vím, že teď cookie je jen malý kousek informací že webový server může zasadit ve webovém prohlížeči a následně jeho RAM nebo svého počítače pevný disk za účelem uložení informací o uživateli, například, jejich uživatelského jména tak, aby nemuseli psát to pokaždé, když se přihlaste nebo nějaký jedinečné číslo nebo identifikátor pro tohoto uživatele takže nemusíte obtěžovat jim stejné druhy otázek o preference v budoucnosti, ale většina z úroků Právě teď je $ _SESSION. Tento superglobal, které, stejně jako ostatní, je předán k vám automaticky PHP když píšete PHP-založené webové stránky můžete uložit vše, co chcete, řetězce, celá čísla, plovoucí body, hodnoty, pole, objekty, Opravdu cokoliv, co chcete, a to vám umožní uložit takovým způsobem, , že i v případě, že uživatel navštíví tě tu a tam vrátí minutu od teď, nebo 5 minut od teď, protože berou svůj čas před kliknutím na nějaký jiný odkaz PHP zajistí, že cokoliv, co dát do té relace superglobal O minutu nebo 5 minut před bude ještě když uživatel vrátí. A pod kapotou je to superglobal prováděny pomocí tyto věci tzv. cookies, ale teď, je to jen abstrakce kdy je to něco jako programové ekvivalentu nákupního košíku. Ať už jste, programátor, dal v tom, že superglobal asociativní pole tam bude nějaké číslo z minuty později dokud ji neodstraníte nebo dokud uživatel ukončí svůj prohlížeč dohromady. Pojďme se podívat na příklad toho, jak se ta věc skutečně použita. V counter.php mezi dnešními kusy kódu máme následující řádek. Na začátku tohoto souboru máme spoustu modrých připomínky, které jsou nezajímavých pro tuto chvíli. Ale v řádku 13 máme nový řádek, session_start, a že vlastně dělá přesně to, co říká. Začíná zasedání. To vám umožní používat tuto velkou superglobal $ _SESSION, a je to tak jednoduché. Teď, když budeme pokračovat se podívat na řádku 16, zkusme zjistit, co tato internetová stránka bude dělat. If (isset ($ _SESSION ["counter"]) pak jděte do toho a obchod v boji proměnné, malá čítač, $ _SESSION ["Counter"]. To se zdá být deklarování lokální proměnnou pojmenovanou counter uvnitř které je uvedení kopii, co je uvnitř superglobal volal zasedání v umístění "pultu". Else, zdá se, že tento malý lokální proměnná čítač inicializován na 0. Ale pak o pár řádků později v 26 oznámení, že zasedání je kopie čítače, jeho klíč, má novou hodnotu přiřazenou, který je jeho aktuální hodnota plus 1. Stručně řečeno, tento soubor se zdá být aktualizace čítač, který je uložen uvnitř zasedání superglobal podle zvyšování to o 1, ale nejprve udrží kopii předchozí hodnoty uložením do lokální proměnné s názvem $ counter, a pak sem se podívejme, co zůstává. Ukázalo se, že je to skoro jen HTML. V dolní části této stránky vidíme v souladu 37, které jsem navštívil tyto stránky číslo čítače časů, takže je tu pár zajímavých funkcí zde. Jeden, to je jasně variabilní, ale to nestačí jen dát $ Counter v těle vašeho HTML, protože samozřejmě pokud je to jen tam mezi vaše PHP HTML se bude předpokládat, že je to právě HTML. Ty doslova Chcete $ counter které mají být vytištěny na obrazovce. Ale místo toho tím, že upustí do režimu PHP s tímto kusem syntaxe můžeme dynamicky vložit hodnotu zde velmi podobné v duchu toho, co jsme minule s vkládání hodnot do řetězců. Ve skutečnosti, to je jen zkrácený zápis pro ostatní něco takového doslova, print ($ counter), nebo i něco jako printf (% s, pult), nebo dokonce, jak jste možná viděli on-line nebo v učebnicích, je tu funkce v PHP nazývá echo který dělá totéž, a všechny z nich jsou jen delší vinuté způsoby říct