DOUG LLOYD: Takže v našej video na syntax PHP, sme sa rozprávali o tom, ako veľa PHP možno použiť na príkazovom riadku spustiť programy spôsobom, ktorý Sme docela oboznámení s od C. Ale ako som sa tiež zmienil V tomto video, PHP bol pôvodne vyvinutý pre implementovať webové programovanie, webové stránky. A tak v tomto videu sme hovoriť o tom, ako použiť PHP v kontexte vývoj webových aplikácií. Vieme už, z naše video na HTML, že webové stránky sú postavené zo súboru HTML tagy že sémanticky definujú štruktúra webovej stránky. Ale webové stránky, ktoré sú postavený s čistým HTML trpí veľmi, veľmi závažné obmedzenia. A pre ilustráciu toto obmedzenie, poďme zvážiť nasledovné. Takže teraz chcem postaviť webovú stránku že vždy, keď používateľ navštívi ju to mi dáva prúd čas v Cambridge, Mass., jeho zobrazenie na poslednú chvíľu. Keby som robil práve teraz, Mohol by som povedať niečo také. Aktuálny čas v Cambridge-- takže mám HTML tagy, tagy hlava, názov značky, Telo tags-- prúd čas v Cambridge je 14:08, vytlačiť vojenskej čas. Čo sa stane, keď je to už 14:09, 14:09? No tak ďaleko, s HTML, mám ísť a zmeniť ju na 14:09. A potom o minútu viac, Musím to opäť zmeniť. A potom o minútu viac, Musím to opäť zmeniť. A ako si dokážete predstaviť, že to Pravdepodobne najhoršie práce vôbec. Si webmaster pre webovú stránku, a každú minútu, 24 hodín denne, budete musieť aktualizovať aktuálny čas Ručné otvorenie time.html a meniace sa len, že fragment kódu hovoriť aktuálny čas v hodinách a minútach. To asi nie je moc dobré využitie našich zdrojov, ľudských a výpočtovej. Webové stránky, ktoré sú všetky HTML sú úplne statické. Jediný spôsob, ako môžete aktualizovať Obsah, ako sme práve videli, je ručne otvoriť tie zdroj súbory, upravovať ich a ukladať ich. A potom, keď sa používateľ obnoví stránku, alebo navštívi stránku pre prvý čas, budú mať najnovšie obsah. Ale len preto, že my máme ručne upravovať ho. Ak začneme miešať nejaké PHP tam, náš kód môže dostať oveľa pružnejšie. A môžeme mať cestu našich stránkach aby boli dynamické, alebo aktualizovať sami, aby bolo nutné naše chudobné webmaster v predchádzajúcom príklade byť manuálne aktualizovať veci. Môžu to urobiť automaticky. Nemáme zasiahnuť. Môžeme sa vyspať. Čo je asi dobrá vec, ak robíte veľa programovanie pre web. Takže CS50 IDE, my spustiť webový server s názvom Apache. Je to veľmi bežne používaný, open source systém webový server. Tento systém má schopnosť interpretovať PHP, ktorý bude užitočné, ak chcete robiť žiadne programovanie v PHP. A v CS50 IDE, máme príkaz aby sa to veľmi ľahké robiť, apache50 začať. A potom, že lomítko cesta, lomítko sa, lomítko dir, to je len naozaj obyčajný spôsob, ako označujúci, čo ste tu zadaný je cesta k určitej adresár, ktorý chcú byť koreň site, alebo koreň stránky, alebo zo zložky, odkiaľ váš webový server začne skúmať súbory a slúžiť je až do klientov, ktorí o ne požiadajú. Takže poďme pop sa k CS50 IDE, len preto, aby ukáže, naozaj rýchlo, ako to funguje. Tak tu v CS50 IDE, že som v adresár s názvom Týždeň Zero Nine. A ja mám two-- mám popravený Príkaz LS len vyššie, aby vám ukázať, že mám dva adresáre sem, PHP, čo je sada súborov, ktoré I používa v PHP syntax video, a potom PHP-web, čo je sada súborov, ktoré som chceli použiť v tomto videu. A ja by som chcel začať inštancie webový server s obsahom PHP-webové zložky pretože súbory sú servírované. Tak čo mám robiť? Budem písať apache50 priestor štart, priestor PHP, pomlčka web. To je cesta k adresáru odkiaľ Aj v súčasnej dobe som. Potom som stlačte Enter. Bude to urobiť trochu vecí tu. A potom sa to bude hovoriť, Apache úspešne spustená. Váš web je teraz k dispozícii a at-- potom je tu adresu URL pre web. Tak čo mám robiť? Chystám sa rýchlo kopírovať to. A ja idem otvoriť a up-- Budem oddialiť trochu here-- Idem otvoriť nová karta v prehliadači Chrome. A ja idem navštíviť túto adresu URL. Budem stlačte Enter. Bude to načítať. A ja budem opäť oddialiť. A vidíme, tu sa Obsah mojej PHP webové adresára. Takže teraz, čo sa v podstate deje tu je, môj inštancia CS50 IDE sa servírujú tieto súbory do Každý, kto žiada o ne. A v priebehu toto video, budeme tak nejako sa pozrieť na veľa z nich rôzne súbory v kontexte. Ak chcete otestovať, že vaše Apache server pracuje, ktorý je všeobecne deje byť v prípade CS50 IDE, ale ak to budete robiť všeobecnejšie, a začať budovať svoj vlastný web servery, tam je naozaj obyčajný druh analógovo, "hello world", ktorá je zvyčajne použité pre vývoj PHP webových aplikácií. Čo je mať súbor skladajúci sa z práve tento code-- PHP oddeľovač set s PHP info, zátvorky, bodkočiarka medzi tým. Čo je v podstate špeciálny PHP funkcia, ktorá vám povie, akú verziu PHP používate. Takže CS50 IDE, mám že súbor k dispozícii len vám ukázať, čo by to vyzerať. Takže som pri pohľade na moje indexu z môjho inštancie PHP. Moje Apache inštancie beží obsah PHP-Web. A ja mám súbor tu info.php. Chystám sa na neho, oddialiť. To je to, čo budete vidieť, celkom veľa. To je len povedať, že môj Apache server pracuje. A to je, zdá sa, že verzia PHP, že bežím. To je môj analógový na "Hello World". Takže viem, čo sú v prevádzke. Takže sme dobré ísť. Môžeme pokračovať odtiaľ. Takže poďme znova, že Doba príklad sme boli hovorí o našej zlú webmasterovi ktorý mal aktualizovať stránku neustále. To by mohlo byť oprava, ako Chcel by som realizovať veci takže webmaster nie mať na aktualizáciu času. Bolo by tak nejako diať automaticky. Nižšie uvedený dole, HTML, je to dosť podobné, s jednou výnimkou. Ale tu mám nejaké PHP v hornej časti. Som sa, zdá sa, že volal túto Funkcie date_default_timezone_set. A nehovoríme o všetkom Tieto funkcie v CS50, preto, že PHP má pravdepodobne desiatky tisíc. To by mohla byť tak trochu nadsázka, ale to nemusí byť. Má to veľa funkcií postavená v roku. A tak to je funkcia zjavne nastaví časové pásmo ako US / Eastern, čo je časové pásmo, že som V súčasnej dobe na výrobu tohto videa. Potom som volať do volanie funkcie, dátum. A zdá sa, že som ukladanie HIS niečo volal, času. Takže to, čo sa tu deje? No, v podstate to, čo je deje sa, robím hovor k nejakému serveru, ktorý sa chystá povedz mi, čo je v súčasnej dobe čas. A ja prevedením do formátu z hodiny, minúty, sekundy. A dôvod, prečo to je kapitál H je to sa chystá dať mi 24 hodín času, nie 12 čas hodina, čo by bolo malými písmenami h. A ja len, že uloženie v premennej nazvanej, čas. Tak, že druhý riadok PHP tam, volanie funkcie, dátum, je len dostať niektoré reťazca, čo je mi dáš dátum, a čas, a veľa ďalších informácií. A prvý argument, tam, že jeho, práve extrakciu dôležitú úlohu že mi záleží, pre tento príklad, čo je hodina, minúty a sekundy. Tak to je všetko, čo sa deje. Tak som obchod, ktorý v premennej $ dobu. A potom sa u tam veľmi dole, ja mať tento skratka pre vytlačiť aktuálny čas. Takže ja som jednoducho ísť do tlače na to, čo je aktuálny čas. Takže poďme sa pozrieť na to v CS50 IDE a uvidíte, ako sme teraz ukladanie, ktoré webmaster veľa problémov. Dobre, tak som tu znova späť v koreňovom adresári môjho inštancie Apache. A mám tu súbor s názvom time.php. Ja som jednoducho ísť kliknite na to. A ja budem posúvať hore, pretože sme priblíženie docela ďaleko. Aktuálny čas je 14:20:34. Takže ja to robím hodín, minútach a sekundách. A môžem obnoviť stránky a získať nový čas. --41. Chystám sa aktualizovať stránku a získať nový čas, 44, 46, 47. Takže, ja som jasne nie nič nemeniť sám. Som tu stránku obnoviť. Takže nemôžem byť späť tam editácie. A sľubujem vám, vôbec sa mi nepáči máte nejaké spojencov ktorí sú úpravou súboru mojím menom na boku. Ja som len pomocou tejto funkcie PHP, čas, generovať čas pre mňa automaticky. Takže aj keď spím, a môj webový server beží, Užívateľ, ktorý navštívi, že stránka je stále dostane presne aktuálny čas. Tak to je celkom dobré. Urobil som môj web dynamickejšie s nie príliš veľa PHP kód. Bolo to len dva riadky kódu a potom trochu tlačové vyhlásenie. A ja už majú oveľa dynamickejšie miesto ako toho prvého príkladu sme videli, Na začiatku videa. Takže, spomínam z videa o syntaxe PHP že keď je interpreter PHP beží náš program, ignoruje všetko to nie je vo vnútri oddeľovača PHP, pľuvať to. V tomto príklade, čo je vec že to bolo pľuvať bol HTML. A to znamená, že môžem teraz premiešať HTML a PHP dohromady. Vzhľadom k tomu, interpret bude len ignorovať HTML a výstupu doslova za to. Čo je dobre, nie? Vzhľadom k tomu, pravdepodobne, na konci dňa, Rád by som svoje stránky do byť zhotovené z HTML. Tak, že ľubovoľného webového prehliadača, môže interpretovať to, alebo pochopiť HTML na stránke a urobiť ju ako niečo, čo my môže skutočne chápať ako ľudia. A môžem použiť iba PHP pre tie časti môjho webu require dynamiku, ktoré vyžadujú ma majú veci, ktoré neustále aktualizovať. Statický Informácie môže zostať rovnaká. OK, tak to je v poriadku. Ale prečo by to robili? Prečo by som mix HTML a PHP? Mohol by som vytlačiť všetky HTML, PHP pomocou funkcie tlače. Prečo nie som robiť, že? Zamyslite sa nad tým na chvíľu. Prečo, keď som mohol len vytlačiť out-- I by mohlo mať riadky PHP, ktorý práve hovoria, print HTML tag, tlačová hlava. Prečo nie som robiť, že? Prečo som zmiešaní PHP a HTML? No, ak si myslíte, o tom na chvíľu. PHP, interpret má interpretovať to, čo vidí. A tak to bude mať vykonať riadok kódu. Vytlačte HTML. Vytlačte otvorené hlavy tag. Vytlačte otvorený názov značky. Bude to musieť vykonávať a interpretovať že každý jednotlivý krok na ceste. Prečo nie len nechať interpret len ​​zakryť veci nerozumie a robiť to automaticky? Bude to mi ušetriť veľa času miešať môjho HTML kódu a moja PHP dohromady. A tak to je dôvod, prečo sme nie Len majú otvorený PHP oddeľovač a potom už len vytlačiť kompletnú Obsah našej strany ako jeden obrie PHP volanie funkcie, tlač, a potom V blízkosti PHP oddeľovač a budeme hotoví. Takže to je dôvod, prečo sme sa miešať dokopy. Zatiaľ sme nevideli príliš veľa rozdiel od všeobecnej syntaxe PHP. Bolo to celkom jednoduché. Už sme videli otáznik, sa rovnať. Videli sme niekoľko nových funkcií volania, ale naozaj nič vymysleného deje. Poďme možná robiť veci trochu milovník. Čo ak chceme odovzdať informácie medzi rôznymi PHP súbory, takže možno užívateľ môže predložiť informácie ku mne. A potom by som mohol niečo urobiť s ním na inej stránke. Keď PHP má podporu pre niečo, čo nazýva Super Global Premenné, ktoré znie celkom úžasné. Sú to naozaj len asociatívne pole obrie ktoré prispejú na vykonanie tohto funkčnosť prechádzanie informácií medzi PHP súbory, ktoré sú existujúce na našom serveri. Prvá z týchto Super globals sa nazýva $ _GET. A je to asi najjednoduchšie pochopiť. Čo sa stane s $ _GET? Tak, v podstate, je používateľ bude písať ďalšie informácie na konci našich URL. A všetko, čo píšete, za predpokladu, že je to vo formáte určitým spôsobom volal reťazec dotazu, ktorý je len sada kľúče a hodnoty oddelené by ampersand. Tieto páry kľúč hodnota bude uložené v $ _GET asociatívne pole. A z nášho videa na Syntax PHP, vieme, ako pracovať s asociatívne pole už. Tu je teda príkladom niektorí PHP, kde som si, že som extrahovania všetkých párov kľúčových hodnôt že užívateľ dodávané v URL. Takže mám Otvoriť PHP oddeľovač. Mám slučky foreach. Som iterácií cez Super Globálne Array s názvom $ _GET. A ja chcem, aby mohli postúpiť ako kľúč a hodnotou. A ja som im len tlač out, každý z nich na zdanlivo vlastný odsek značka tu. Som vytlačenie nejaké HTML a interpoláciu hodnoty kľúče a hodnoty do tohto vyhlásenia. Takže poďme sa pozrieť na to, ako to bude skutočne pracujú na našich IDE. A možno, že to pomôže ilustrujú trochu z toho, čo dostanete, je v skutočnosti robí. Takže som tu v mojej webovej root. A ja budem priblížiť v Trochu vám ukázať že mám súbor s názvom, get1.php. Takže poďme kliknite na get1.php. A nevidím žiadny obsah. To je divný, že jo? No, vlastne nie v skutočnosti. Pretože som neposkytol niečo v URL. Chystám sa get1.php, ale ja neposkytla žiadne kľúče a hodnoty, ako súčasť mojej reťazec dotazu. Takže poďme pridať reťazec dotazu a uvidíme, čo tento súbor môže urobiť. Ak chcete začať reťazec dotazu budete stačí napísať otáznik. Potom možno Poviem name = Doug & rok = 2015. A potom budem stlačte Enter. Teraz si všimnúť, čo sa deje. Som stále v get1.php. Ale teraz som súčasťou dodávky kľúče a hodnoty, a ja som ich tlače na vlastnú päsť paragraph-- meno, Doug-- rok 2015. To je presne ten kód, ktorý sme práve Videl na snímke pred chvíľou. A keď chcem treba pridať ďalšie hodnota dvojice kľúč, a class = CS50. Teraz mám ďalšie hodnota kľúča Dvojica, ktorá je vytlačená Keď som znovu adresu URL znovu. Teraz možno to nie je formátované strašne dobre. Takže mám ďalšiu verziu get.php. Je to get2.php. Rozdiel v tomto jeden je mám CSS súbor, a to formáty vecí, trochu viac pekne pre mňa. To možno nie najviac Krásna CSS na svete. Ale je to len ďalší spôsob, ako robiť to. Tak som sa môže ešte získať prístup mojich premenné pomocou $ _GET. A v tomto prípade, ja som len trochu robiť CSS trochu fantázie. A ak by sme pop sa k môj IDE na sekundu, Ja vám ukážem, v mojej PHP web adresár tu, get2.php. Budeme otvorte ju, trochu HTML tu. Zrejme som spájajúcej v tom, že CSS súbor som hovoril. Otvorím tag tabuľky. A potom tu je môj foreach slučky. Tu je to, že to, čo som ukázal na snímke pred. Jediný rozdiel je, že som majú tento kľúč a hodnoty CSS styling, že som sa na ne vzťahujú. Ale to je všetko, čo robím, je, že som iterácií cez $ _GET dostať všetky párov kľúčových hodnôt. A ja som ich tlač, ako tabuľky. A zdá sa, že som formátovanie kľúče v jednom smere, s