DOUG LLOYD: Do en nia vÃdeo sur PHP sintakso, ni parolis multe pri kiel PHP povas esti uzita Äe la komandlinio kuri programojn en maniero kiu ni povos egale konanta de C. Sed, kiel mi ankaÅ menciis en tiu video, PHP estis disvolvita komence por efektivigu ttt programado, retejoj. Kaj tial en Äi tiu video ni estas tuj parolos pri ni kiel uzi PHP en la ttt disvolviÄo kuntekston. Ni scias, jam, de niaj filmetoj en HTML, ke retejoj estas konstruita el aro de HTML etikedoj ke semantike difini la strukturo de retpaÄo. Sed retejoj kiuj estas konstruita per pura HTML suferas tre, tre seriozan limigon. Kaj por ilustri Äi tiun limigon, ni konsideru la sekvan. Do nun mi volas konstrui retpaÄo ke, kiam ajn la uzanto vizitas Åin, Äi donas al mi la nunan tempo en KembriÄo, Mass., montri Äin al la lasta minuto. Se mi estis faranta Äi tiun rajton nun, Mi povus diri ion kiel tion. Nuna tempo en Cambridge-- tial mi havas HTML etikedoj, kapo etikedoj, titolo etikedoj, korpo tags-- la nuna tempo en Cambridge estas 14:08, presi el milita tempo. Kio okazas se Äi estas nun 2:09 Pm, 14:09? Nu Äis nun, kun HTML, mi havas iri kaj ÅanÄu Äin al 14:09. Kaj tiam unu minuton poste, Mi devos ÅanÄi Äin denove. Kaj tiam unu minuton poste, Mi devos ÅanÄi Äin denove. Kaj kiel vi povas imagi, ke estas probable la plej malbonan laboron iam. Vi estas la retmajstro por retpaÄon, kaj Äiu minuto, 24 horoj tage, Vi bezonas Äisdatigi la nuna tempo de permane malfermante time.html kaj ÅanÄante Nur ke fragmento de kodo diri la nuna tempo en horoj kaj minutoj. Tio probable ne estas tre bona uzo de niaj resursoj, ambaÅ homa kaj komputa. Retejoj kiuj estas Äiuj HTML estas tute statikaj. La sola maniero vi povas Äisdatigi enhavo, kiel ni ĵus vidis, estas permane malfermi tiujn fonto dosierojn, redakti ilin kaj konservi ilin. Kaj tiam kiam la uzanto refreÅigas la paÄo, aÅ vizitas la paÄon por la unua tempo, ili ricevos la lasta enhavo. Sed nur Äar ni permane redaktis Äin. Se ni komencas miksi iuj PHP tien, nia kodo povas akiri multe pli fleksebla. Kaj ni povas havi vojon por nia paÄoj esti dinamika, aÅ Äisdatigi sin, sen postuli nia kompatinda retestro en la antaÅa ekzemplo esti permane Äisdatiganta aferojn. Ili povas fari Äin aÅtomate. Ni ne devas interveni. Ni povas ricevi iun dormon. Kiu estas probable bona afero se vi faras multajn ttt programado. Do en CS50 IDE, ni kuras retservilo nomata Apache. Äi estas tre ofte uzata, malfermita retservilo sistemo. Tiu sistemo havas la kapablo interpreti PHP, kiu tuj estos utila se vi volas fari ajnan PHP programado. Kaj en CS50 IDE, ni havas komandon fari Äi tre facila fari, apache50 komenci. Kaj tiam tiu oblikvo irejo, oblikvo por, oblikvo dir, tio estas nur vere komuna maniero indikante kion vi specifita tie estas vojo al aparta dosierujo kiu vi volas esti la radiko ejo, aÅ la radikon paÄo, aÅ la dosierujo de kiu via retservilo komencos ekzameni dosierojn kaj servi ilin al klientoj kiuj petas ilin. Do ni Pufo al CS50 IDE, nur por montri vin, vere rapida, kiel tio funkcias. Do tie en CS50 IDE, mi estas en dosierujo nomita Semajno Zero Nine. Kaj mi havas two-- mi havas ekzekutis LS komando simple supre por montri al vi, ke mi havas du dosierujojn en tie, PHP, kiu estas la aro de dosieroj kiujn mi uzis en la PHP sintakso vÃdeo, kaj tiam PHP-retejo, kiu estas la aro de dosieroj kiujn mi Åatus uzi en Äi tiu video. Kaj mi Åatus komenci retservilo ekzemple kun la enhavo de la PHP-retejo dosierujo kiel la dosieroj estas estanta servita supren. Do kion mi faru? Mi tuj tajpi apache50 spaco komenci, spaco PHP, haltostreko TTT. Jen la vojo al dosierujo de kie mi nuntempe estas. Tiam mi batis Enter. Äi tuj fari iomete da aĵoj Äi tie. Kaj tiam tuj diri, Apache komenciÄis sukcese. Via retejo estas nun disponebla at-- kaj tiam ekzistas la URL por la ejo. Do kion mi faru? Mi tuj rapide kopiu Äi. Kaj mi tuj malfermos up-- kaj Mi malzomi iomete here-- Mi tuj malfermu nova langeto en Chrome. Kaj mi tuj vizitos tiu URL. Mi tuj batis Enter. Äi tuj ÅarÄas. Kaj mi malzomi denove. Kaj ni povas vidi tie estas la enhavo de mia PHP retejo dosierujo. Do nun kio esence okazanta jen, mia petskribo de CS50 IDE servas tiujn dosierojn iu ajn kiu petas ilin. Super la apartajxo de Äi video, ni ordigi de rigardu faskon de tiuj malsamajn dosierojn en kunteksto. Por testi ke via Apache servilo funkcias, kiu estas Äenerale iranta esti la kazo en CS50 IDE, sed se vi faros tion pli Äenerale, kaj vi komenci konstrui vian propran ttt serviloj, ekzistas vere komuna speco de analoga al, "saluton mondo", te kutime uzita por PHP ttt disvolviÄo. Kio estas havi dosieron konsistanta el nur tiun code-- PHP delimitador inkrustita per PHP info, krampoj, punktokomo intere. Kiu estas esence speciala PHP funkcio kiu informas vin kion versio de PHP vi kuras. Do en CS50 IDE, mi havas ke dosiero disponebla nur montri vin kion Äi aspektus. Do mi rigardis mian indekso de mia PHP ekz. Mia Apache Ekzemple kuras la enhavo de PHP-retejo. Kaj mi havas dosieron tie nomata info.php. Mi tuj klaku Äin, malzomi. Jen kion vi tuj vidi, preskaux. Tiu estas nur diras min ke miaj Apache servilo funkcias. Kaj tiu estas, Åajne, la versio de PHP ke Mi kuras. Mia estas analoga al "saluton mondo." Do mi scias aferojn estas operacional. Do ni estas bone iri. Ni povas procedi de Äi tie. Do ni reviziti ke tempo ekzemplo ni estis parolas kun nia malriÄa retestro kiu devis Äisdatigi la paÄon senÄese. Tio povas esti solvon por kiom Mi volus apliki aferoj por ke la retestro ne devi teni Äisdatigi la tempo. Äi farus nur ia okazos aÅtomate. La malsupre, la HTML, estas bela similaj, kun unu escepto. Sed Äi tie mi mem havigis iuj PHP Äe la supro. Mi, Åajne, nomita tiu funkcio date_default_timezone_set. Kaj ni ne parolas pri Äiuj tiujn funkciojn en CS50, Äar PHP havas probable dekoj da miloj. Tio povus esti iom de troigo, sed eble ne. Oni alvenis multajn funkciojn enkonstruita. Kaj tiel tio estas funkcio Åajne fiksas mian horzonon kiel US / Eastern, kiu estas la horzono ke mi estas aktuale en farante tiun video. Tiam mi faras alvokon al funkcio vokita, dato. Kaj, Åajne, mi stokante la LIA de iu nomita, tempo. Do kio okazas Äi tie? Nu, resume kio estas okazanta estas, mi faras alvokon al iu servilo kiu tuj diru al mi kio tempo aktuale estas. Kaj mi konvertado al formato de horoj, minutoj, sekundoj. Kaj la kialo estas Äefurbo H estas tiu tuj donu al mi 24 hora tempo, ne 12 hora tempo, kiu estus minuskla h. Kaj mi simple stoki ke en variablo vokis, tempo. Do tiu dua linio de PHP ekzistas, la alvoko al la funkcio, dato, estas nur nun iuj kordoj, kiuj estas tuj al mi la dato, kaj la tempo, kaj faskon de aliaj informoj. Kaj la unua argumento tie, ke LIA, Estas Äuste Äerpi la grava parto ke mi zorgas pri Äi tiu ekzemplo, kiu estas la horo, minuto kaj sekundo. Do jen la tuta tiu okazas. Do mi stoki ke en variablo $ tempon. Kaj poste malsupren al la tre fundo tie, mi havas tiun stenografio por presi el la nuna tempo. Do mi simple tuj presi kion la nuna tempo estas. Do ni rigardu tiun en CS50 IDE kaj vidi kiel ni nun savanta ke retestro multajn problemojn. Bone, do jen mi denove reen Äe la radika dosierujo de miaj Apache ekz. Kaj mi havas dosieron tie nomata time.php. Mi simple tuj klaku sur tion. Kaj mi rulumu supren, Äar ni zomis en bela malproksima. La nuna tempo estas 14:20:34. Do mi faras gxin horoj, minutoj kaj sekundoj. Kaj mi povas refreÅigi la paÄo kaj akiri novan tempon. --41. Mi tuj refreÅigi la paÄon kaj akiri novan tempon, 44, 46, 47. Do, mi estas klare ne ÅanÄi ion mem. Mi tie refreÅiga la paÄo. Do mi ne povas esti reen tie redaktante Äin. Kaj mi promesas al vi, mi ne faras havas ajnan aliancanoj kiu redaktas la dosiero por mi sur la flankon. Mi nur uzas ke PHP funkcio, tempo, por generi la tempo por mi aÅtomate. Tiel ke eÄ se mi estas dormanta, kaj mia retservilo kuras, la uzanto kiu vizitas la paÄon estas ankoraÅ tuj ricevas ekzakte la nuna tempo. Tiel ke estas sufiÄe bonaj. Mi jam faris mian retejon pli dinamika kun ne tro multe PHP kodo. Estis nur du linioj de kodo kaj tiam iomete da print komunikaĵo. Kaj jam mi havas multe pli dinamika ejo ol tiu unua ekzemplo ni vidis Äe la komenco de la video. Do, memoras de la video sur PHP sintakso ke kiam la PHP interpretisto kuras nia programo, Äi ignoras Äiu tio ne ene de PHP delimitadores, kracxi Äin. En tiu ekzemplo, kion la afero ke oni kracxis el estis HTML. Kaj tio signifas mi povas nun intersperse HTML kaj PHP kune. Äar la interpretisto simple ignori la HTML kaj laÅvorte eligo Äin. Kio estas bona, Äu ne? Äar supozeble, fine de la tago, Mi Åatus mian retejon al esti konstruitaj de HTML. Tiel ke ajna retumilo povas interpreti Äi, aÅ kompreni la HTML de la paÄo kaj redonu Äin kiel ion, kion ni povas fakte kompreni kiel homoj. Kaj mi povas nur uzi PHP por la partoj de mia retejo la postuli dinamismo, kiuj postulas min havi aĵojn kiuj Äisdatigos senÄese. La statikaj informoj povas resti la sama. Bone, do tio estas bone. Sed kial mi faru tion? Kial mi miksi HTML kaj PHP? Mi povis nur presi Äiujn HTML, uzanta la PHP print funkcio. Kial mi ne faras tion? Pensu pri Äi dum sekundo. Ho, kiam mi povis nur presi fjordon mi povus havi liniojn de PHP ke nur diru, print HTML tag, presi kapo. Kial mi ne faras tion? Kial mi miksante la PHP kaj HTML? Nu, se vi opinias pri Äi dum sekundo. PHP, la interpretisto havas interpreti kion Åi vidas. Kaj tiel Äi tuj devos ekzekuti linion de kodo. Elprinti HTML. Elprinti malfermita kapo etikedo. Elprinti malfermita titolo etikedo. Äi tuj devos ekzekuti kaj interpreti ke Äiu unuopa paÅo de la vojo. Kial ne simple lasu la interpretisto simple forgliti super aferoj ne kompreni kaj faras aÅtomate? Äi tuj savi min multa tempo miksi miajn HTML kaj PHP miaj kune. Kaj do jen kial ni ne nur havi malfermitaj PHP delimitador kaj tiam simple printi la tutan enhavo de nia paÄo kiel unu giganta PHP vokas al la funkcio, Print, kaj tiam proksime PHP delimitador kaj ni faris. Tial do ni miksas ilin kune. Äis nun, ni ne vidis tro diferenco de Äeneralaj PHP sintakso. Äi estas estita sufiÄe simpla. Ni jam vidis la demandosigno, egalaj. Ni vidis paron de novaj funkcio vokoj, sed nenio vere imago okazas. Ni eble fari aferojn iom amatoro. Kio se ni volas pasi informon inter malsamaj PHP dosierojn, tiel ke eble la uzanto povas prezenti informon al mi. Kaj tiam mi povis fari ion per Äi en alia paÄo. Do PHP havas subtenon por iu nomita Super Äenerala Variabloj, kiuj sonas sufiÄe timinda. Ili estas vere Äuste giganto asociaj tabeloj kiu helpas apliki tiun funcionalidad de forpaso informo inter PHP dosierojn kiuj estas ekzistantaj sur nia ttt-servilo. La unua de tiuj super globals nomiÄas $ _GET. Kaj estas probable la simplaj kompreni. Kio okazas kun $ _GET? Nu, resume, la uzanto estas tuj tajpi ekstra informo Äe la fino de nia URLoj. Kaj kion ajn ili tajpu, supozante Äi estas formatita per speciala maniero nomiÄas query string, kiu estas nur aro de Ålosila valoro paroj apartigitaj per ampersands. Tiuj Ålosilaj valoro paroj estos stokitaj en $ _GET asocieca tabelo. Kaj de nia vÃdeo sur PHP sintakso, ni scias kiel labori kun asociaj tabeloj jam. Do tie estas ekzemplo de iuj PHP, kie eble mi estas Äerpi Äiujn la Ålosilo valoro paroj ke la uzanto provizitaj en la URL. Do mi havas mian Malferma PHP delimitador. Mi havas foreach buklo. Mi ripetanta tra la Super Tutmondaj array nomita $ _GET. Kaj mi volas povi rilati al ambaÅ la Ålosilo kaj la valoro. Kaj mi simple videbligi ilin eksteren, Äiu sur Åajne lia propra alineo etikedo tie. Mi presi ekstere kelkajn HTML kaj interpolanta la valoroj de Ålosilo kaj valoron en tiu deklaro. Do ni rigardu kiel tio povus fakte funkcii sur nia IDE. Kaj eble tio helpos ilustri iomete kio GET estas efektive faranta. Do mi estas reen tie en mia ttt radiko. Kaj Mi zomi en iomete montri vin ke mi havas dosieron nomata, get1.php. Do ni alklaku get1.php. Kaj mi ne vidas ajnan enhavon. Tio estas stranga, Äu ne? Nu, ne vere reale. Äar mi ne provizi ion en la URL. Mi tuj get1.php, sed mi ne provizi ajnan Ålosilo valoro paroj kiel parto de mia query string. Do ni aldonu query string kaj vidi kion Äi tiu dosiero povas fari. Komenci query string vi nur tajpu demandosigno. Tiam eble mi diru nomo = & Doug jaro = 2015. Kaj tiam mi batis Enter. Nun rimarki kio okazas. Mi estas ankoraÅ en get1.php. Sed nun mi liveris Ålosilo valoro paroj, kaj mi estas presi ilin ekstere arope paragraph-- nomo, Doug-- jaro, 2015. Tio estas Äuste la kodo ni simple vidis sur la glito antaÅ momento. Kaj se mi volas eble aldoni alian Ålosilo valoro paro, & klaso = CS50. Nun mi havas alian Ålosilon valoro simila kiu estas presita eksteren kiam mi reviziti la URL denove. Nun eble tio ne formatita terure bone. Do mi havas alian version de get.php. Estas get2.php. La diferenco en Äi unu estas mi havas CSS -dosiero, kaj Äi formatojn aferojn iom pli bele por mi. Äi estas eble ne la plej bela CSS en la mondo. Sed estas nur alia maniero fari Äin. Do mi ankoraÅ povas akiri aliron al mia variabloj uzante $ _GET. Kaj en Äi tiu kazo, mi estas nur speco de farante la CSS iom pli eleganta. Kaj se ni pop super al miaj IDE por dua, Mi montros al vi en mia PHP retejo dosierujo tie, get2.php. Ni malfermos Äin, iuj HTML. Åajne mi kunligi ke CSS dosiero mi parolas. Mi malfermu tablo etikedo. Kaj poste jen mia foreach buklo. Jen tio, kion mi montris sur la glito antaÅe. La sola diferenco estas mi havas tiun Ålosilon kaj valoro CSS stiligante ke mi aplikanta al Äi. Sed jen Äio mi faras, estas mi ripetanta trans $ _GET akiri Äiuj de la Ålosilo valoro paroj. Kaj mi presi ilin eksteren kiel la tablo. Kaj, Åajne, mi formati la klavoj unumaniere kun la