DOUG LLOYD: Kaya sa aming video sa PHP syntax, usapan natin ng maraming tungkol sa kung paano PHP ay maaaring gamitin sa command line upang magpatakbo ng mga programa sa isang paraan na kami ay medyo pamilyar sa mula sa C. Ngunit tulad ng nabanggit ko rin in na video, PHP ay unang binuo sa ipatupad web programming, website. At kaya sa video na ito hindi namin pagpunta sa makipag-usap tungkol sa kung paano namin gamitin ang PHP sa context ng web development. Alam namin, na, mula sa aming mga video sa HTML, na ang mga website ay binuo sa labas ng isang hanay ng mga tag na HTML na semantically tukuyin ang istraktura ng isang web page. Ngunit website na binuo na may purong HTML magtiis sa isang tunay, napaka-seryoso limitasyon. At upang ilarawan ito limitasyon, Isaalang-alang natin ang mga sumusunod na ipaalam. Kaya ngayon Gusto kong bumuo ng isang pahina ng web na, kapag pagbisita ng gumagamit nito, nagbibigay ito sa akin ang mga kasalukuyang oras sa Cambridge, Mass., pagpapakita ng mga ito sa pinakabagong minuto. Kung ako ay ang paggawa ng mga ito sa ngayon, Maaaring sabihin ko ng isang bagay na katulad nito. Kasalukuyang oras sa Cambridge-- kaya wala ako Mga tag na HTML, ulo ng mga tag, mga tag ng pamagat, katawan tags-- ang kasalukuyang oras sa Cambridge ay 14:08, pag-print out time militar. Ano ang mangyayari kung ito ay ngayon 02:09, 14:09? Well sa ngayon, na may HTML, mayroon akong upang pumunta sa at baguhin ito sa 14:09. At pagkatapos ng isang minuto ang lumipas, Kailangan ko bang baguhin ang mga ito muli. At pagkatapos ng isang minuto ang lumipas, Kailangan ko bang baguhin ang mga ito muli. At bilang maaari mong isipin, na ang marahil ang pinakamasama trabaho kailanman. Ikaw ang webmaster para sa isang web page, at bawat minuto, 24 na oras sa isang araw, kailangan mong i-update ang kasalukuyang oras sa pamamagitan ng mano-mano ang pagbubukas time.html at pagbabago lamang na snippet ng code upang sabihin ang kasalukuyang oras sa oras at minuto. Iyon ay marahil hindi isang tunay mabuting paggamit ng aming mga mapagkukunan, parehong mga tao at computational. Mga website na ang lahat ng HTML ay ganap na static. Ang tanging paraan na maaari mong i-update nilalaman, katulad lang namin na iyong nakita, ay sa manwal na buksan ang mga pinagmulan mga file, i-edit ang mga ito, at i-save ang mga ito. At pagkatapos ay kapag ang user nagre-refresh ang pahina, o bumisita sa pahina ng para sa unang panahon, ang mga ito ay makuha ang pinakabagong nilalaman. Ngunit dahil lamang hindi namin manu-mano-edit ito. Kung magsisimula kami upang makihalubilo sa ilang PHP sa doon, ang aming mga code ay maaaring makakuha ng higit pang kakayahang umangkop sa isang pulutong. At maaari kaming magkaroon ng isang paraan para sa aming mga pahina upang maging dynamic, o i-update ang kanilang mga sarili, nang hindi kinakailangan sa aming mga mahihirap webmaster sa nakaraang halimbawa upang maging mano-mano ang pag-update ng mga bagay. Maaari silang gawin ito nang awtomatiko. Wala kaming upang mamagitan. Maaari naming makakuha ng ilang pagtulog. Aling ay marahil isang magandang bagay kung ikaw ay gumagawa ng isang pulutong ng mga web programming. Kaya sa CS50 IDE, nagsasagawa kami ng isang web server na tinatawag na Apache. Ito ay isang napaka-karaniwang ginagamit, open source system web server. Ang system na ito ay may mga kapasidad na bigyan ng kahulugan PHP, na kung saan ay magiging kapaki-pakinabang kung na nais mong gawin sa anumang programming PHP. At sa CS50 IDE, kami ay may isang utos upang gumawa ng mga ito tunay na madaling gawin, apache50 magsimula. At pagkatapos na slash landas, slash na, slash dir, ito lamang ay isang tunay na karaniwang paraan ng na nagpapahiwatig kung ano ang iyong tinukoy dito ay isang landas sa isang partikular na direktoryo na kayo gusto na ang mga ugat site, o ang root page, o ang folder kung saan ang iyong mga web server ay magsisimula upang suriin ang mga file at maglingkod ang mga ito hanggang sa mga kliyente na humiling ng mga ito. Kaya sabihin pop higit sa CS50 IDE, para lamang ipakita sa iyo, talagang mabilis, kung paano ito gumagana. Kaya dito sa CS50 IDE, ako sa isang direktoryo na tinatawag Week Zero Siyam. At ako ay may two-- mayroon akong sa pagsubaybay ng isang LS utos lamang sa itaas upang ipakita sa iyo na mayroon akong dalawang direktoryo in dito, PHP, kung saan ay ang hanay ng mga file na ginamit ko sa ang PHP syntax video, at pagkatapos ay PHP-web, kung saan ay ang hanay ng mga file na ako ay nais na gamitin sa video na ito. At Gusto kong magsimula isang halimbawa web server sa mga nilalaman ng PHP-web folder bilang ang file na ito ay nagsilbi up. Kaya kung ano ako pagpunta sa gawin? Ako pagpunta sa uri apache50 space simulan, space PHP, dash web. Iyan ay ang landas sa direktoryo mula kung saan ako kasalukuyang am. Pagkatapos ako pindutin ang Enter. Ito ay pagpunta sa gawin ang isang maliit na piraso ng mga bagay-bagay dito. At pagkatapos ito ay pagpunta sa sabihin, Matagumpay na nagsimula Apache. Ang iyong site ay magagamit na ngayon at-- at pagkatapos ay mayroong mga URL para sa site. Kaya kung ano ako pagpunta sa gawin? Pupunta ako sa mabilis na kopya na ito. At ako pagpunta upang buksan up-- at Kukunin ko mag-zoom out nang kaunti here-- Pupunta ako upang buksan up isang bagong tab sa Chrome. At ako pagpunta upang bisitahin ang URL na iyon. Pupunta ako sa pindutin ang Enter. Ito ay pagpunta upang i-load. At kukunin ko na mag-zoom out muli. At makikita natin dito ay ang mga nilalaman ng aking PHP web directory. Kaya ngayon kung ano talaga nangyayari dito ay, ang aking mga halimbawa ng CS50 IDE ay serving up ang mga file sa kahit sino na ang kahilingan nila. At sa mga kurso ng ang video na ito, makikita namin uri-uriin ng tingnan ang isang kumpol ng mga iba't-ibang mga file sa konteksto. Upang subukan na ang iyong Apache server ay gumagana, na kung saan ay karaniwang pagpunta na ang kaso sa CS50 IDE, ngunit kung gagawin mo ito mas pangkalahatang paraan, at simulan mo ang pagbuo ng iyong sariling mga web server, may isang talagang karaniwang uri ng analog na, "hello mundo," na kadalasan ay ginagamit para sa pag-unlad na PHP web. Aling ay ang magkaroon ng isang file na binubuo ng lamang code-- ito isang delimiter PHP set sa info PHP, panaklong, semicolon sa pagitan. Aling ay isa lamang ng isang espesyal na PHP function na nagsasabi sa iyo ano ang bersyon ng PHP mo ay tumatakbo. Kaya sa CS50 IDE, mayroon akong file na makukuha lamang upang ipakita sa iyo kung ano ang magiging hitsura. Kaya Naghahanap ako sa aking index mula sa aking mga halimbawa PHP. Aking Apache halimbawa ay tumatakbo ang mga nilalaman ng PHP-Web. At mayroon akong isang file dito na tinatawag info.php. Pupunta ako sa i-click ito, mag-zoom out. Ito ay kung ano ang iyong pagpunta upang makita, medyo marami. Ito ay lamang na nagsasabi sa akin na aking Apache server. At ito ay, tila, ang bersyon ng PHP na ako sa pagtakbo. Ito ang aking analog na "hello mundo." Kaya alam ko ang mga bagay ay pagpapatakbo. Kaya hindi namin handa na upang patakbuhin. Maaari naming magpatuloy mula dito. Kaya sabihin bisitahin muli na time halimbawa namin ay pakikipag-usap tungkol sa aming mga mahihirap webmaster na nag-i-update ang mga pahina ang patuloy. Ito ay maaaring maging isang remedyo para sa kung paano Gusto ko ipatupad bagay sa gayon ay hindi ang mga webmaster kailangang panatilihin ang pag-update ng oras. Gagawin ito lamang ang uri ng awtomatikong mangyari. Ang down sa ibaba, ang HTML, ito ay medyo katulad na, na may isang pagbubukod. Ngunit dito Mayroon akong ilang PHP sa itaas. Ako ay, tila, na tinatawag na ito function na date_default_timezone_set. At hindi namin makipag-usap tungkol sa lahat ng mga function sa CS50, dahil PHP ay marahil sampu-sampung libo. Iyon ay maaaring maging isang piraso ng isang pagmamalabis, ngunit hindi ito maaaring maging. Isang pulutong ng mga pag-andar na binuo sa Ito ay nakuha. At kaya ito ay isang function na tila Nagtatakda ang aking time zone bilang US / Eastern, kung saan ay ang time zone na ako kasalukuyang nasa paggawa ng video na ito. Pagkatapos ay gumawa ako ng isang tawag na function na tinatawag na, date. At, tila, ako sa pagtatabi ng mga ANG KANYANG ng isang bagay na tinatawag, oras. Kaya kung ano ang nangyayari sa dito? Well, talaga kung ano ang nangyayari ay, ako ng paggawa ng isang tawag sa ilang mga server na ay pagpunta sa sabihin sa akin kung ano ang oras sa kasalukuyan ay. At ako sa pag-convert ito sa isang format ng mga oras, minuto, segundo. At ang mga dahilan na ito ay capital H ay ito ay pagpunta sa bigyan ako ng 24 na oras na panahon, hindi 12 oras oras, na kung saan ay magiging lowercase h. At ako lamang sa pag-iimbak na sa isang variable na tinatawag na, oras. Kaya na pangalawang linya ng PHP doon, ang tawag sa mga function, petsa, ay lamang sa pagkuha ang ilang mga string, na kung saan ay pagpunta sa bigyan ako ang petsa, at ang mga panahon, at isang bungkos ng iba pang impormasyon. At ang unang argumento doon, na NIYA, ay extract lamang ang mahalagang bahagi pinapahalagahan ko tungkol sa halimbawa na ito, kung saan ay ang oras, minuto, at segundo. Kaya na ang lahat na nangyayari. Kaya mag-imbak ko na sa isang variable $ oras. At pagkatapos ay down sa pinakailalim doon, ako Mayroon na shorthand para sa pag-print out sa kasalukuyang oras. Kaya lang ako pagpunta sa i-print kung ano ang kasalukuyang panahon. Kaya sabihin kumuha ng isang pagtingin sa ito sa CS50 IDE at makita kung paano kami ngayon pag-save ng webmaster na ang isang pulutong ng mga problema. Lahat ng karapatan, kaya dito ako muli bumalik sa root directory ng aking Apache halimbawa. At mayroon akong isang file dito na tinatawag time.php. Lamang ako ng pagpunta sa mag-click sa na. At kukunin ko na mag-scroll pataas, dahil kami ay naka-zoom in medyo malayo. Ang kasalukuyang oras ay 14:20:34. Kaya ako ginagawa ito sa oras, minuto, at segundo. At maaari ko bang i-refresh ang pahina at makakuha ng mga bagong pagkakataon. --41. Pupunta ako upang i-refresh ang pahina at makakuha ng mga bagong pagkakataon, 44, 46, 47. Kaya, ako ay malinaw na hindi pagbabago ng anumang bagay sa aking sarili. Dito ako refresh ang pahina. Kaya hindi ko na bumalik doon pag-edit ito. At pangako ko sa inyo, hindi ako ay may anumang mga kakampi na pag-edit ng file sa ngalan ng aking sa gilid. Lamang ako gamit ang function na PHP, panahon, upang makabuo ng mga oras para sa akin awtomatikong. Kaya na kahit na hindi ako tulog, at ang aking mga web server ay tumatakbo, ang gumagamit na pagbisita na pahina ay pa rin pagpunta upang makakuha ng eksakto sa kasalukuyang oras. Kaya na medyo magandang. Iyong ginawa mas dynamic ang aking site ko may hindi masyadong maraming code na PHP. Ito ay isa lamang ng dalawang linya ng code at pagkatapos ay isang maliit na piraso ng isang pahayag print. At mayroon akong isang mas dynamic site kaysa sa na unang halimbawa nakita natin sa simula ng video. Kaya, isipin ang mula sa mga video sa syntax PHP na kapag tumatakbo ang interpreter PHP aming programa, ipinagwawalang-bahala ng lahat ng bagay iyan ay hindi sa loob ng delimiters PHP, pagdura ito. Sa halimbawa na, kung ano ang mga bagay na ito ay pagdura ay HTML. At ito ay nangangahulugan ako ay maaari na ngayong makalat ang HTML at PHP magkasama. Dahil ang mga interpreter ay lamang huwag pansinin ang mga HTML at literal output ito. Aling ay mabuti, di ba? Dahil siguro, sa pagtatapos ng araw, Gusto ko ang aking site sa ay itinayo ng HTML. Kaya na maaaring bigyang-kahulugan sa anumang web browser ito, o maunawaan ang HTML sa pahina at i-render ito bilang isang bagay na namin talaga maintindihan bilang tao. At ako ay maaari lamang gamitin ang PHP para sa mga bahagi ng aking site ang nangangailangan ng dynamism, na nangangailangan sa akin na magkaroon ng mga bagay-bagay na-update patuloy. Ang mga static na impormasyon maaaring manatili sa parehong. OK, kaya na multa. Ngunit kung bakit ko gagawin ito? Bakit gusto ko bang isama ang HTML at PHP? Maaari ko bang i-print out lamang ang lahat ng HTML, gamit ang function print PHP. Bakit hindi ko ginagawa iyon? Isipin ito para sa isang segundo. Bakit, nang hindi ko i-print lamang out-- ko ay maaaring magkaroon ng mga linya ng PHP na lang sabihin, print tag na HTML, print head. Bakit hindi ko ginagawa iyon? Bakit ako paghahalo ng PHP at HTML? Well, kung sa tingin mo tungkol sa mga ito para sa isang segundo. PHP, ang mga interpreter ay upang bigyang-kahulugan kung ano ang nakikita ng mga ito. At kaya ito ay pagpunta sa may upang magpatakbo ng isang linya ng code. I-print ang HTML. I-print out open head tag. I-print out tag open title. Ito ay pagpunta sa may sa execute at bigyang-kahulugan na ang bawat isang hakbang ng paraan. Bakit hindi lamang hayaan ang interpreter pagtakpan ng higit lamang sa mga bagay na ito ay hindi maunawaan at awtomatiko itong gawin? Ito ay pagpunta sa i-save ako ng maraming oras upang makihalubilo sa aking HTML at ang aking PHP magkasama. At kaya na ang dahilan kung bakit hindi namin lamang magkaroon ng open delimiter PHP at pagkatapos ay i-print lamang ang buong nilalaman ng aming mga pahina bilang isang higanteng PHP tumawag sa function, Print, at pagkatapos ay malapit delimiter PHP at tapos na kami. Kaya na ang dahilan kung bakit namin paghaluin ang mga ito nang magkakasama. Sa ngayon, hindi pa namin masyadong maraming ng nakita ng isang pagkakaiba mula sa mga pangkalahatang syntax PHP. Naging medyo direkta. Nakita na natin na ang tandang pananong, pantay-pantay. Nakita namin ang isang pares ng mga bagong tawag function, ngunit wala talagang magarbong nangyayari. Ni marahil gumawa ng mga bagay-bagay Ipaalam isang maliit na interes. Paano kung gusto naming ipasa ang impormasyon pagitan ng iba't ibang mga file ng PHP, kaya na siguro ang user ay maaaring isumite ang impormasyon sa akin. At pagkatapos ay maaari kong gawin ang isang bagay sa mga ito sa isa pang pahina. Kaya may suporta para sa PHP bagay na tinatawag na Super Global Mga variable, na tunog medyo kasindak-sindak. Ang mga ito ay talagang lamang giant uugnay array na makakatulong sa ipatupad ito pag-andar ng pagpasa impormasyon sa pagitan ng mga file na PHP na ay umiiral na sa aming web server. Ang una sa mga super globals ay tinatawag na $ _GET. At ito ay marahil ang pinakasimpleng upang maunawaan. Ano ang mangyayari sa $ _GET? Well, talaga, ang gumagamit ay pagpunta sa uri ng dagdag na impormasyon sa dulo ng aming mga URL. At kahit anong type nila, sa pag-aakala ito ay na-format sa isang partikular na paraan tinatawag na isang query string, na kung saan ay lamang isang hanay ng mga pangunahing mga pares ng halaga na pinaghihiwalay sa pamamagitan ng mga ampersand. Ang mga pangunahing mga pares ng halaga ay nakatago sa isang $ _GET uugnay array. At mula sa aming mga video sa PHP syntax, alam namin kung paano gumagana sa nag-uugnay array na. Kaya dito ay isang halimbawa ng ilang PHP, kung saan siguro ako extract ang lahat ng mga pangunahing mga pares ng halaga na ang mga user na ibinigay sa URL. Kaya ko ang aking Open delimiter PHP. Mayroon akong isang foreach loop. Ako iterating sa buong Super Global Array tinatawag $ _GET. At gusto ko upang ma-refer sa pareho ng key at ang mga halaga. At tingin lang ako sa pag-print ng mga ito out, ang bawat isa sa malas kanyang sariling talata tag dito. Ako nagpi-print out ang ilang HTML at interpolating ang mga halaga ng susi at halaga sa pahayag na iyon. Kaya sabihin kumuha ng isang pagtingin sa kung paano ito ay talagang gumagana sa aming IDE. At marahil ito ay makakatulong ilarawan ang isang maliit na piraso ng kung ano GET ay aktwal na paggawa. Kaya ako bumalik dito sa aking web root. At kukunin ko na mag-zoom in sa isang ilang sandali upang ipakita sa iyo na mayroon akong isang file na tinatawag na, get1.php. Kaya sabihin-click sa get1.php. At hindi ko na nakikita ang anumang nilalaman. Iyan ay kakaiba, di ba? Well, not really talaga. Dahil hindi ko matustusan anumang bagay sa URL. Pupunta ako sa get1.php, ngunit ako ay hindi magbigay ng anumang key pares ng halaga bilang bahagi ng aking query string. Kaya sabihin magdagdag ng isang query string at makita kung ano ang maaaring gawin ang file na ito. Upang magsimula ng isang query string mo i-type lamang ng tandang pananong. Pagkatapos siguro Sasabihin kong name = Doug & taon = 2015. At pagkatapos ay ako pindutin ang Enter. Ngayon pansinin kung ano ang nangyayari. Ako pa rin sa get1.php. Ngunit ngayon na ibinibigay ko key na mga pares ng halaga, at ako pag-print out ang mga ito sa kanilang sariling paragraph-- name, Doug-- taon, 2015. Iyon ang eksaktong code namin lamang Nakita sa slide ng ilang sandali ang nakalipas. At kung gusto kong marahil magdagdag ng isa pang key halaga pares, at mga class = CS50. Ngayon ay mayroon akong isa pang susi halaga pares na naka-print out kapag muling bisitahin ko ang URL muli. Ngayon marahil ito ay hindi format na masyado rin. Kaya kailangan ko ng isa pang bersyon ng get.php. Ito ay get2.php. Ang pagkakaiba sa mga ito ang isa ay mayroon akong CSS file, at ito format ng mga bagay ng isang maliit na mas mabuti para sa akin. Ito ay hindi na siguro ang pinaka maganda ang CSS sa mundo. Ngunit ito ay isa lamang paraan ng paggawa nito. Kaya maaari ko pa rin makakuha ng access sa aking mga variable na gamit ang $ _GET. At sa kasong ito, ako lamang ang uri ng paggawa ng CSS ng kaunti pa sa pag-iisip. At kung pop higit nating aking IDE para sa isang segundo, Ipapakita ko sa iyo sa aking web PHP directory dito, get2.php. Susubukan naming buksan ito, ang ilang mga HTML dito. Malas ako sa pagli-link sa na CSS file ay pakikipag-usap tungkol sa. Bukas ko ng lamesa tag. At pagkatapos ay narito ang aking foreach loop. Dito ay na, kung ano ang aking nagpakita sa slide bago. Ang pagkakaiba lamang ay ko Mayroon ang key na ito at halaga CSS sa istilo na ako ng nag-aaplay sa mga ito. Ngunit iyon lamang ang lahat ng ako ng paggawa, ay hindi ako iterating kabuuan $ _GET upang makakuha ng lahat sa mga pangunahing mga pares ng halaga. At ako nagpi-print out ang mga ito bilang ang table. At, tila, ako sa pag-format ng mga susi sa isang paraan, na may