[Powered by Google Translate] [8. týždeň, pokračovanie] [David J. Malan] [Harvard University] [To je CS50.] [CS50.TV] To je CS50, takže to je koniec týždňa 8 tu. Samozrejme sme mali trochu hurikánu na začiatku tohto týždňa, takže teraz to je naozaj len ty a ja v tomto prednáškovej sále, ale dnes budeme pokračovať v rozhovore o PHP a asi programovanie pre web všeobecne, a tiež predstaviť myšlienku databáz, obzvlášť jeden nazvaný MySQL, ktorá je veľmi populárny v týchto dňoch, z veľkej časti preto, že jeho škálovateľnosti, rovnako ako preto, že jeho bytia zadarmo a open source. Ale najprv, pohľad na to, kde sme skončili minule. Pripomeňme si, že sme sa pozerali na niekoľkých príkladoch Frosh Chatu, a to bol ohavný formulár, ktorý som prišiel s asi 15 + rokov aby mal študentov na akademickej pôde registra pre šport prvák intramurálních bez toho aby ste museli trek už cez dvor k Wigglesworth posuňte fyzickej kus papiera pod nejaké Proctor dverám. Namiesto toho sme sa presťahovali všetko on-line, ale k tomu, že sme potrebovali využiť niekoľkých technológií, tak jeden, sme potrebovali HTML, Hypertext Markup Language, čo je opäť to značkovací jazyk, s ktorým si urobíte webové stránky štrukturálne. Pomocou trochu CSS v týchto dňoch, kaskádové štýly, kedy používame stylizations webové stránky pomocou mierne odlišnú syntax, vzhľadom k tomu, HTML bolo o štruktúre ich. Musíme tiež zaviesť webový programovací jazyk. V tomto prípade budeme používať PHP, a PHP bude, aby nám pre dynamické výstupné obsah rovnako ako tomu programové veci, ako je odosielanie e-mailov, ako tomu bolo v prípade poznámku sme nechali minulý týždeň. Pripomeňme si, že kód pre tento bol na 2 časti. Jeden sme mali froshims3.php, a toto bolo veľmi značky s HTML formulármi vnútri nej, trošku CSS tu v štýle atribúty takže by forma sám sa sústredil na stránke, ale okrem toho sme mali nejaké reprezentatívny formulára vstupy, textové pole, začiarkavacie políčko, nejaké rádio tlačidla, zvoľte menu, a tlačidlo Odoslať. A prostredníctvom tohto formulára, sme podali na súbore, ktorý bol zrejme volal register3.php, ktorá sama o sebe vyzerala trochu niečo takého. Teraz, väčšina kódu v register3.php, odvolanie, bolo o e-mailu. Je predsa trochu validácie na formulári, ktorý bol predložený, aby sa ubezpečil že pole bolo skutočne za predpokladu, že boli očakávané. Potom sme zavolali niektoré PHP funkcie pomocou mierne novú syntax, aj keď to požičal si od C. Táto šípka operátor nám umožňuje využiť niečo, čo nazýva objektovo orientované programovanie. Nepôjdeme do toho v každom detaile tu, ale viem teraz je to spôsob, ako mať funkcie spojené s objektmi, ktoré sú špeciálny typ štruktúry, ako sme videli v C. Ale teraz, len sa na viere, že je to správna syntax pre použitie Pri použití knižnice sa páči táto knižnica PHPMailer. A potom na konci tohto súboru sme dynamicky generované e-mail ktoré poslali na môj jharvard@cs50.net účet z môjho jharvard@cs50.net účtu, a sme informovali užívateľov spôsobom, že bolo zapísané pre tento šport. To je presne to, čo Frosh IM stránku, kde bolo pred rokmi keď som implementoval, poskytnuté v inom jazyku, ale to vám ukáže snáď moc, že ​​máte teraz, že sa môžete vyjadriť nielen programovo na nízkej úrovni v jazyku ako C, ale na oveľa vyššej úrovni s týmito veľmi reálnych aplikáciách, ako je e-mail, aby skutočne riešiť niektoré skutočné svetové problémy. Teraz, samozrejme, aj keď tento skript použiť pre generovanie niektorých e-maily dynamicky z jharvard@cs50.net, čo je naozaj účet že mám prístup k to byť docela opatrní na odoslanie e-mail iba z účtov, ktoré sú v skutočnosti vlastné, lesť veci vám v trochu teplej vody v živote. Vďaka, že povedal, poďme sa teraz prechod na riešenie iný problém úplne, že oporných štátov. A teraz, čo to vlastne znamená? HTTP, táto hypertext transfer protocol, je vlastne bez štátnej príslušnosti protokol, a čo to znamená, že keď vytiahnuť niečo ako Google.com a potom stlačte kláves Enter obvykle Váš prehliadač má nejaký pradenia ikony, ktoré potom vyústi v určitej webovej stránky sú stiahnuté, a potom že sa malá ikona zastaví spinning, a že skutočne naznačuje, že HTTP dokončil nejaké pripojenie k serveru a je to. HTTP je bez štátnej príslušnosti v tom zmysle, že neudržiava trvalé pripojenie k serveru rovnakým spôsobom Skype robí alebo Gchat robí preto, že s HTTP Predpokladom je, že potom, čo ste priniesol webovú stránku, ktorá je to. Teraz, v skutočnosti v týchto dňoch na weby ako Facebook a Google Maps a Twitter a ako by to oveľa viac dynamiky, kedy aj potom, ikona prestane točiť, môžete v skutočnosti získať ďalšie aktualizácie zo servera, viac tweety, viac o stave aktualizácie na Facebooku a podobne. Ale aj to je použitie techniky, ktoré budeme hovoriť o za týždeň alebo dva známy ako Ajax pomocou jazyka s názvom JavaScript, ale na konci dňa, HTTP je stále nestavové. A napriek tomu, ak chcete, aby nejako spomenúť, čo o užívateľovi aj potom, čo som odpojený od servera PHP sa Vám poskytnú prostriedky, ako to dosiahnuť pretože, ako sme videli minule, PHP má rad superglobála, a superglobal je opäť špeciálny globálne premenné , Ktorý je odovzdaný pre Vás webový server a samotným PHP. Nemusíte robiť nič, aby hodnoty v ňom, a medzi superglobála sme videli doteraz, sú get a post, ktoré je miesto, kde sú polia formulára umiestniť automaticky za vás, rovnako ako pár ďalších, ktoré sme ešte nevideli. Vnútri $ _SERVER sú niektoré špeciálne premenné vzťahujúce sa k serveru samotnom. Čo je to IP adresa, aký protokol, HTTP alebo HTTPS ste používali, Čo žiadosť metódu ste a podobne, takže je tu niečo zaujímavé, šťavnaté podrobnosti o serveri, a v skutočnosti, že používateľ sa tam tiež. Tam je $ _cookie, čo je miesto, kde sa tieto veci tzv cookies sú uložené. Nebudeme tráviť čas na cookies seba dnes, ale viem, že teraz cookie je len malý kúsok informácií že webový server môže zasadiť vo webovom prehliadači a následne jeho RAM alebo svojho počítača pevný disk za účelom uloženia informácií o používateľovi, napríklad, ich užívateľského mena tak, aby nemuseli písať to zakaždým, keď sa prihláste alebo nejaký jedinečné číslo alebo identifikátor pre tohto užívateľa takže nemusíte obťažovať im rovnaké druhy otázok o preferencie v budúcnosti, ale väčšina z úrokov Práve teraz je $ _SESSION. Tento superglobal, ktoré, rovnako ako ostatné, je odovzdaný k vám automaticky PHP keď píšete PHP-založené webové stránky môžete uložiť všetko, čo chcete, reťazce, celé čísla, plávajúce body, hodnoty, polia, objekty, Naozaj čokoľvek, čo chcete, a to vám umožní uložiť takým spôsobom, , Že aj v prípade, že užívateľ navštívi ťa tu a tam vráti minútu od teraz, alebo 5 minút od teraz, pretože berú svoj čas pred kliknutím na nejaký iný odkaz PHP zabezpečí, že čokoľvek, čo dať do tej relácie superglobal O minútu alebo 5 minút pred bude ešte keď užívateľ vráti. A pod kapotou je to superglobal vykonávané pomocou tieto veci tzv cookies, ale teraz, je to len abstrakcia kedy je to niečo ako programové ekvivalentu nákupného košíka. Či už ste, programátor, dal v tom, že superglobal asociatívne pole tam bude nejaké číslo z minúty neskôr kým ju neodstránite, alebo kým užívateľ ukončí svoj prehliadač dohromady. Poďme sa pozrieť na príklad toho, ako sa tá vec skutočne použitá. V counter.php medzi dnešnými kusy kódu máme nasledujúci riadok. Na začiatku tohto súboru máme veľa modrých pripomienky, ktoré sú nezaujímavých pre túto chvíľu. Ale v riadku 13 máme nový riadok, session_start, a že vlastne robí presne to, čo hovorí. Začína zasadnutí. To vám umožní používať túto veľkú superglobal $ _SESSION, a je to tak jednoduché. Teraz, keď budeme pokračovať sa pozrieť na riadku 16, skúsme zistiť, čo táto internetová stránka bude robiť. If (isset ($ _SESSION ["counter"]) potom choďte do toho a obchod v boji premenné, malá čítač, $ _SESSION ["Counter"]. To sa zdá byť deklarovaní lokálnu premennú pomenovanú counter vnútri ktorej je uvedenie kópiu, čo je vo vnútri superglobal volal zasadnutí v umiestnení "pultu". Else, zdá sa, že tento malý lokálny premenná čítač inicializovaný na 0. Ale potom o pár riadkov neskôr v 26 oznámenia, že zasadnutie je kópia čítače, jeho kľúč, má novú hodnotu priradenú, ktorý je jeho aktuálna hodnota plus 1. Stručne povedané, tento súbor sa zdá byť aktualizácia čítač, ktorý je uložený vo vnútri zasadnutí superglobal podľa zvyšovanie to o 1, ale najprv udrží kópiu predchádzajúcej hodnoty uložením do lokálnej premennej s názvom $ counter, a potom sem sa pozrime, čo zostáva. Ukázalo sa, že je to skoro len HTML. V dolnej časti tejto stránky vidíme v súlade 37, ktoré som navštívil tieto stránky číslo čítača časov, takže je tu pár zaujímavých funkcií tu. Jeden, to je jasne variabilný, ale to nestačí len dať $ Counter v tele vášho HTML, pretože samozrejme ak je to len tam medzi vaše PHP HTML sa bude predpokladať, že je to práve HTML. Tie doslova Chcete $ counter ktoré majú byť vytlačené na obrazovke. Ale namiesto toho tým, že upustí do režimu PHP s týmto kusom syntaxe môžeme dynamicky vložiť hodnotu tu veľmi podobné v duchu toho, čo sme minule s vkladanie hodnôt do reťazcov. V skutočnosti, to je len skrátený zápis pre ostatných niečo také doslova, print ($ counter), alebo aj niečo ako printf (% s, pult), alebo dokonca, ako ste možno videli on-line alebo v učebniciach, je tu funkcia v PHP nazýva echo ktorý robí to isté, a všetky z nich sú len dlhšie vinuté spôsoby povedať