DOUG Lloyd: Pra, në tonë video mbi PHP sintaksë, kemi biseduar shumë rreth asaj se si PHP mund të përdoret në rreshtin e komandave për të drejtuar programet në një mënyrë që ne jemi mjaft të njohur me nga C. Por siç kam përmendur edhe në këtë video, PHP është zhvilluar fillimisht për zbatimin e programimit web, faqet e internetit. Dhe kështu në këtë video ne jemi do të flasim se si ne përdorin PHP në kontekstin e zhvillimit web. Ne e dimë, tashmë, nga Video ynë mbi HTML, se faqet e internetit janë ndërtuar nga një grup i HTML tags që semantike të përcaktuar struktura e një web faqe. Por faqet e internetit që janë të ndërtuar me HTML të pastër vuajnë nga një shumë, kufizim shumë serioze. Dhe për të ilustruar këtë kufizim, le të konsiderojmë në vijim. Kështu që tani unë dua të ndërtuar një faqe interneti se, sa herë që përdorues viziton ajo, kjo më jep aktual kohë në Kembrixh, Mass., shfaqur atë në minutën e fundit. Në qoftë se unë kam qenë duke e bërë këtë të drejtë tani, Unë mund të them diçka si kjo. Kohën e tanishme në Cambridge-- kështu që unë kam HTML tags, tags kokë, tags titullin, Trupi tags-- e tanishme kohë në Kembrixh është 14:08, shtypjen nga koha ushtarak. Çfarë ndodh në qoftë se është tani 02:09, 14:09? Mirë deri më tani, me HTML, unë kam për të shkuar në dhe për të ndryshuar atë në 14:09. Dhe pastaj një minutë më vonë, Unë kam për të ndryshuar atë përsëri. Dhe pastaj një minutë më vonë, Unë kam për të ndryshuar atë përsëri. Dhe si ju mund të imagjinoni, kjo është ndoshta puna më e keqja ndonjëherë. Ju jeni webmasteri për një faqe web, dhe çdo minutë, 24 orë në ditë, ju keni nevojë për të rinovuar kohën e tanishme nga dorë hapjes time.html dhe ndryshimin vetëm se copë e kodit për të thënë Koha në orë dhe minuta. Kjo ndoshta nuk është një shumë përdorim i mirë i burimeve tona, njerëzore dhe kompjuterike. Faqet e internetit që janë të gjitha HTML janë krejtësisht statike. E vetmja mënyrë ju mund update përmbajtje, siç e kemi parë vetëm, është për të hapur me dorë ato burim fotografi, modifikoni ato, dhe për të shpëtuar ata. Dhe atëherë kur përdoruesi freskon faqe, ose viziton faqen për të parë kohë, ata do të merrni përmbajtjen e fundit. Por vetëm për shkak se ne kemi redaktuar me dorë atë. Në qoftë se ne fillojmë të përzierje disa PHP në atje, Kodi ynë mund të merrni një shumë më fleksibël. Dhe ne mund të kemi një mënyrë për faqet tona të jetë dinamike, ose update veten e tyre, pa kërkuar varfër ynë webmaster në shembullin e mëparshëm të jetë me dorë përditësimin gjëra. Ata mund ta bëjë këtë automatikisht. Ne nuk duhet të ndërhyjnë. Ne mund të merrni disa fle. E cila është ndoshta një gjë e mirë nëse ju jeni duke bërë një shumë të programimit web. Pra, në CS50 IDE, kemi drejtuar një web server quajtur Apache. Kjo është një shumë e përdorur gjerësisht, burim të hapur të sistemit web server. Ky sistem ka të Kapaciteti për të interpretuar PHP, e cila do të jetë e dobishme në qoftë ju doni të bëni ndonjë programimit PHP. Dhe në CS50 IDE, ne kemi një komandë për të bërë këtë shumë e lehtë për të bërë, apache50 filloni. Dhe pastaj kjo slash rrugë, çaj të, çaj dir, kjo është vetëm një mënyrë me të vërtetë e zakonshme e duke treguar atë që ju keni specifikuar këtu është një rrugë për një të veçantë Lista që ju duan të jetë rrënja vend, ose faqja rrënjë, ose dosje nga e cila web serveri juaj do të fillojë të shqyrtojë dosjet dhe për të shërbyer ato për klientët që kërkojnë ato. Pra, le të pop mbi të CS50 IDE, vetëm për të të ju tregojnë se, me të vërtetë të shpejtë, se si punon kjo. Kështu që këtu në CS50 IDE, unë jam në një Lista quajtur Java Zero Nine. Dhe unë kam two-- kam ekzekutuar një komandë LS vetëm më lart për të treguar se unë kam dy directories në këtu, PHP, që është grup i dosjeve që kam përdorur në Sintaksa Video PHP, dhe pastaj PHP-web, që është grup i dosjeve që unë do të donte për të përdorur në këtë video. Dhe unë do të doja të fillojë një shembull web server me përmbajtjen e PHP-web dosje si fotografi janë duke u shërbyer deri. Pra, çfarë jam unë do të bëj? Unë do të tipit apache50 hapësirë të fillojë, PHP hapësirë, dash web. Kjo është rruga për të directory nga ku unë aktualisht jam. Pastaj unë hit Enter. Ajo do të bëjë një pak e gjëra këtu. Dhe atëherë ajo do të thotë, Apache filluar me sukses. Site juaj tani është në dispozicion at-- dhe atëherë nuk është URL për këtë faqe interneti. Pra, çfarë jam unë do të bëj? Unë jam duke shkuar për të shpejt të kopje këtë. Dhe unë jam duke shkuar për të hapur up-- dhe Unë do të zoom out pak here-- Unë jam duke shkuar për të hapur një skedë të re në Chrome. Dhe unë jam duke shkuar për të vizituar këtë URL. Unë jam duke shkuar për të goditur Enter. Ajo do të ngarkesës. Dhe unë do të zoom jashtë përsëri. Dhe ne mund të shohim këtu është përmbajtja e web directory tim PHP. Pra, tani çfarë po ndodh në thelb këtu është, shembull im i CS50 IDE është duke shërbyer deri në këto fotografi kushdo që kërkon ato. Dhe gjatë rrjedhës së kjo video, ne do lloj hidhini një sy në një bandë e këtyre Fotografi të ndryshme në kontekst. Për të testuar se Apache tuaj server është duke punuar, e cila në përgjithësi është duke shkuar të jetë rasti në CS50 IDE, por në qoftë se ju bëni këtë më në përgjithësi, dhe ju të fillojë ndërtimin e vetë web tuaj servers, ka një të vërtetë lloj i zakonshëm i analog në, "botë Hello", që është zakonisht përdoret për zhvillimin PHP web. E cila është që të kemi një fotografi i përbërë nga vetëm këtë code-- një kufizues PHP vendosur me info PHP, kllapa, pikëpresja në mes. E cila është në thelb një të veçantë Funksioni PHP që ju tregon çfarë version i PHP ju do të vrapojnë. Pra, në CS50 IDE, unë kam se dosja në dispozicion vetëm për të treguar se çfarë kjo do të duken si. Kështu që unë jam duke kërkuar në indeksin e mia nga PHP shembull ime. Shembull Apache im po kandidon përmbajtja e PHP-Web. Dhe unë kam një file i quajtur këtu info.php. Unë jam duke shkuar për të klikoni atë, zoom out. Kjo është ajo që ju do të jeni për të parë, shumë e shumë. Ky është vetëm duke u thënë mua se serverin tim Apache është duke punuar. Dhe kjo është, me sa duket, version i PHP që unë jam running. Kjo është analog ime për "Hello World". Kështu që unë e di se gjërat janë funksionale. Pra, ne jemi të mirë për të shkuar. Ne mund të vazhdojë nga këtu. Pra, le të rishqyrtojnë se Shembulli kohë ne ishim duke folur në lidhje me webmaster tonë të varfër i cili kishte për të rinovuar faqen vazhdimisht. Kjo mund të jetë një fix për sa Unë do të zbatojë gjëra kështu që webmasteri nuk ka duhet të mbani përditësimin kohën. Ajo do vetëm lloj i ndodh automatikisht. Poshtë nën, HTML, është mjaft të ngjashme, me një përjashtim. Por këtu unë kam marrë disa PHP në krye. Unë kam, me sa duket, e quajti këtë date_default_timezone_set funksion. Dhe ne nuk flasim për të gjithë këto funksione në CS50, sepse PHP ka ndoshta dhjetëra mijëra. Kjo mund të jetë pak e një ekzagjerim, por kjo nuk mund të jetë. Atë e mori një shumë të funksioneve të ndërtuara në. Dhe kështu kjo është një funksion me sa duket cakton Zona ime orare si SHBA / Lindore, cila është koha zona që unë jam aktualisht në marrjen këtë video. Pastaj unë të bëjë një telefonatë me funksion të quajtur, datë. Dhe, me sa duket, unë jam ruajtjen E tij diçka që quhet, koha. Pra, çfarë po ndodh këtu? E pra, në thelb ajo që është ndodh është, unë jam duke e bërë një telefonatë në një server që do të më tregoni se çfarë koha është aktualisht. Dhe unë jam konvertimin e tij në një format orë, minuta, sekonda. Dhe arsyeja është e H kapital është kjo do të më jepni 24 orë kohë, jo 12 kohë orë, e cila do të jetë h vogle. Dhe unë jam vetëm ruajtjen që në një ndryshore të quajtur, kohë. Kështu që linja e dytë e PHP atje, thirrja me funksionin, data, është vetëm duke u disa varg, që është do të më jepni datën, dhe kohë, dhe një bandë e informacioneve të tjera. Dhe argumenti i parë atje, që e Tij, është vetëm nxjerrjen pjesë të rëndësishme që më intereson për këtë shembull, që është orë, minuta, dhe të dytë. Pra, kjo është gjithçka që po ndodh. Kështu që unë të ruajtur atë në një kohë të ndryshueshme $. Dhe pastaj poshtë në shumë fund atje, unë kanë atë stenografi për shtypjen nga kohën e tanishme. Kështu që unë jam vetëm duke shkuar për të shtypur se çfarë koha e tanishme është. Pra, le të marrin një vështrim në këtë në IDE CS50 dhe të shohim se si ne jemi tani kursim që Webmaster një shumë probleme. Të gjithë të drejtë, kështu që këtu unë jam përsëri përsëri në directory rrënjë e shkallës sime Apache. Dhe unë kam një fotografi këtu të quajtur time.php. Unë jam vetëm duke shkuar për të klikoni mbi atë. Dhe unë do të lëvizni lart, sepse ne jemi zoomed në mjaft larg. Koha e tanishme është 14:20:34. Kështu që unë jam duke bërë atë orë, minuta, dhe sekonda. Dhe unë mund të rifreskoni faqe dhe për të marrë kohë të re. --41. Unë jam duke shkuar për të rifreskoni faqen dhe për të marrë kohë të re, 44, 46, 47. Pra, unë nuk jam në mënyrë të qartë ndryshuar asgjë veten. Jam këtu freskuese faqe. Kështu që unë nuk mund të kthehem atje redaktimi atë. Dhe unë ju premtoj, unë nuk e bëj keni ndonjë aleatët të cilët janë duke redaktimi file në emrin tim në anën. Unë jam vetëm duke përdorur këtë funksion PHP, kohë, për të gjeneruar kohë për mua automatikisht. Kështu që edhe në qoftë se unë jam në gjumë, dhe web server im po kandidon, përdorues që viziton atë faqe është ende duke shkuar për të marrë saktësisht kohën e tanishme. Pra, kjo është goxha e mirë. Unë e kam bërë faqen time më dinamike me jo shumë kodi PHP. Ajo ishte vetëm dy rreshta të kodit dhe pastaj pak e një deklarate të shtypura. Dhe tashmë unë kam një vend shumë më dinamike se se shembulli i parë pamë ne fillim te videos. Pra, kujtojnë nga video në PHP sintaksë se kur përkthyesi PHP shkon Programi ynë, ai injoron gjithçka kjo nuk është brenda përndarësit PHP, pështyrë atë. Në këtë shembull, çfarë gjë se ajo ishte pështyrë jashtë ishte HTML. Dhe kjo do të thotë unë mund të tani shpërndaj HTML dhe PHP së bashku. Sepse përkthyesi do të vetëm injorojnë HTML dhe fjalë për fjalë prodhimit ajo. Që është e mirë, e drejtë? Sepse me sa duket, ne fund te ditës, Unë do të doja faqen time për të ndërtohet i HTML. Në mënyrë që çdo shfletues web mund të interpretojë ajo, apo kuptojnë HTML në faqen dhe bëjnë atë si diçka që ne në fakt mund të kuptoni si njerëz. Dhe unë mund të përdorin vetëm PHP për pjesët e web faqen time Çfarë kërkon dinamizëm, që kërkojnë më të ketë gjëra që përditësojnë vazhdimisht. Informacioni statike mund të qëndrojnë të njëjta. OK, kështu që kjo është në rregull. Por pse do ta bëjë këtë? Pse duhet ta përzierje HTML dhe PHP? Unë mund vetëm të shtypura nga të gjitha HTML, duke përdorur funksionin PHP shkruar. Pse nuk jam unë duke bërë atë? Mendoni se ajo për një të dytë. Pse, kur unë mund vetëm të shtypura out-- unë mund të ketë linja të PHP që vetëm thonë, print HTML tag, kreu të shtypura. Pse nuk jam unë duke bërë atë? Pse jam unë përzierjen PHP dhe HTML? E pra, në qoftë se ju mendoni se në lidhje me atë për një të dytë. PHP, përkthyesi ka për të interpretuar atë që e sheh. Dhe kështu ajo do të ketë për të ekzekutuar një linjë të kodit. Shtypura nga HTML. Shtypura nga tag kokë hapur. Shtypura nga tag titullin hapur. Ajo do të duhet të ekzekutuar dhe interpretuar që çdo hap të vetme të rrugës. Pse jo vetëm le Përkthyesi vetëm lustroj gjëra ajo nuk e kupton dhe të bëjë atë automatikisht? Ajo do të kurseni më shumë kohë për përzierje HTML tim dhe PHP tim së bashku. Dhe kështu kjo është arsyeja pse ne nuk e bëjmë vetëm duhet të hapur decimetrin PHP dhe vetëm pastaj të shtypura nga të gjithë Përmbajtja e faqes tonë si një PHP gjigand thirrje për funksionit, Print, dhe pastaj kufizues afër PHP dhe ne jemi duke bërë. Pra, kjo është arsyeja pse ne përzierje e tyre së bashku. Deri tani, ne nuk kemi parë shumë nga një ndryshim prej sintaksës përgjithshme PHP. Ka qenë shumë i thjeshtë. Ne kemi parë tashmë pikëpyetje, të barabartë. Ne pamë një çift të thirrjeve të reja funksion, por asgjë të vërtetë dashuroj ndodh. Le të ndoshta të bëjë gjëra pak njohës. Çfarë ndodh nëse ne duam të kalojë informacion mes fotografi të ndryshme PHP, kështu që ndoshta përdoruesi mund të të paraqesë informacion për mua. Dhe atëherë unë mund të bëjë diçka me atë në një tjetër faqe. Pra, PHP ka mbështetje për diçka që quhet Super Global Variablat, e cila tingëllon shumë e awesome. Ata janë me të vërtetë vetëm vargjeve gjigant asociative që ndihmojnë në zbatimin e këtij funksionalitetin e kalimit informacionit midis PHP fotografi që janë ekzistuese në web server tonë. I pari i këtyre super Globals quhet $ _GET. Dhe kjo është ndoshta më e thjeshtë për të kuptuar. Çfarë ndodh me $ _GET? E pra, në thelb, përdoruesi është do të tipit informacion shtesë ne fund te URLs tanë. Dhe çdo gjë që ata të tipit, duke supozuar ajo është formatuar në mënyrë të veçantë quhet një varg pyetje, e cila është vetëm një grup i çifte kyçe me vlerë të ndara nga ampersands. Këto palë kryesore me vlerë do të jetë të ruhet në një $ _GET array associative. Dhe nga video tonë në PHP sintaksë, ne e dimë se si të punojnë me vargjeve associative tashmë. Kështu që këtu është një shembull i disa PHP, ku ndoshta unë jam nxjerrjen gjitha palë kryesore me vlerë që përdoruesit furnizuar në URL. Pra, unë kam time Open decimetrin PHP. Unë kam një lak foreach. Unë jam iterating nëpër Super Array Global quajtur $ _GET. Dhe unë dua të jem në gjendje për t'iu referuar te dyja çelësit dhe vlerës. Dhe unë jam vetëm shtypjen e tyre jashtë, secili në dukje vetë paragrafi tag saj këtu. Unë jam shtypje nga disa HTML dhe interpolating vlerat e çelësit dhe vlerës në atë deklaratë. Pra, le të marrin një sy se si kjo në fakt do të punojnë në IDE tonë. Dhe ndoshta kjo do të ndihmojë ilustruar pak e asaj që merrni është të vërtetë duke bërë. Kështu që unë jam kthyer këtu në rrënjë tim web. Dhe unë do të zoom në një pak për të treguar se se unë kam një skedar të quajtur, get1.php. Pra, le të klikoni mbi get1.php. Dhe unë nuk jam duke parë ndonjë përmbajtje. Kjo është e çuditshme, e drejtë? E pra, jo të vërtetë në fakt. Sepse unë nuk e furnizimit asgjë në URL. Unë jam duke shkuar për get1.php, por unë nuk ka të ofrojë ndonjë palë kryesore me vlerë si pjesë e vargut tim pyetje. Pra, le të shtoni një rresht query dhe të shohim se çfarë kjo skedë mund të bëjë. Për të filluar një varg pyetje ju vetëm lloji pikëpyetje. Atëherë ndoshta unë do të them name = Doug & viti = 2015. Dhe atëherë unë do të goditur Enter. Tani vini re se çfarë po ndodh. Unë jam ende në get1.php. Por tani unë kam furnizuar palë kryesore me vlerë, dhe unë jam i shtypjen e tyre nga vetë Emri paragraph--, vit Doug--, 2015. Kjo është pikërisht kodi ne vetëm panë në rrëshqitje një moment më parë. Dhe në qoftë se unë dua të shtoj ndoshta një tjetër palë vlera kryesore, dhe class = CS50. Tani unë kam një tjetër vlerë kyçe palë që është shtypur jashtë kur unë sërish URL përsëri. Tani ndoshta kjo nuk është e formatuar tmerrësisht mirë. Kështu që unë kam një tjetër version të get.php. Është get2.php. Dallimi në këtë një është që unë kam CSS fotografi, dhe kjo Formatet gjërat pak më shumë bukur për mua. Kjo nuk është ndoshta më e CSS bukur në botë. Por kjo është vetëm një tjetër mënyrë për të bërë atë. Kështu që unë ende mund të merrni qasje për variablat e mia duke përdorur $ _GET. Dhe në këtë rast, unë jam vetëm lloji i duke e bërë CSS pak më shumë i sofistikuar. Dhe në qoftë se ne të pop mbi të IDE tim për një të dytë, Unë do të ju tregojnë se në PHP web tim Lista këtu, get2.php. Ne do të hapur atë, disa HTML këtu. Me sa duket unë jam lidh në atë CSS skedar Unë kam qenë duke folur rreth. Kam hapur një tag tavolinë. Dhe pastaj këtu është lak foreach ime. Këtu është se, ajo që unë tregoi në rrëshqitje përpara. Dallimi i vetëm është I kanë këtë çelës dhe vlera CSS styling që unë jam duke aplikuar për të. Por kjo është e gjitha unë jam duke bërë, po unë jam iterating nëpër $ _GET të marrë të gjitha nga palë kryesore me vlerë. Dhe unë jam shtypjen e tyre jashtë si tryezë. Dhe, me sa duket, unë jam formatimit çelësat në një mënyrë, me