DOUG LLOYD: SÃ¥ i vÃ¥r video pÃ¥ PHP syntax, Vi pratade mycket om hur PHP kan användas pÃ¥ kommandoraden att köra program pÃ¥ ett sätt som vi är ganska bekant med frÃ¥n C. Men som jag nämnde ocksÃ¥ i att video, PHP utvecklades frÃ¥n början till genomföra webbprogrammering, webbplatser. Och sÃ¥ i den här videon är vi kommer att tala om hur vi använda PHP i webbutveckling sammanhang. Vi vet redan, frÃ¥n vÃ¥r video pÃ¥ HTML, att webbplatser är byggda ut ur en uppsättning HTML-taggar som semantiskt definiera strukturen för en webbsida. Men webbplatser som är byggd med ren HTML lider av en mycket, mycket allvarlig begränsning. Och för att illustrera denna begränsning, lÃ¥t oss betrakta följande. SÃ¥ nu vill jag bygga en webbsida att när användaren besöker det, det ger mig den nuvarande tid i Cambridge, Mass., visar det till den senaste minuten. Om jag gjorde detta just nu, Jag kan säga ungefär sÃ¥ här. Tiden i Cambridge-- sÃ¥ jag har HTML-taggar, huvud taggar, rubriktaggar, kropp tags-- strömmen tid i Cambridge är 14:08, utskrift av militära tid. Vad händer om det nu 2:09, 14:09? Bra hittills, med HTML, har jag att gÃ¥ in och ändra det till 14:09. Och sedan en minut senare, Jag mÃ¥ste ändra det igen. Och sedan en minut senare, Jag mÃ¥ste ändra det igen. Och som ni kan föreställa er, det är troligen den värsta jobbet nÃ¥gonsin. Du är webmaster för en webbsida, och varje minut, 24 timmar om dygnet, Du behöver uppdatera den aktuella tiden med manuellt öppna time.html och ändra bara att kodsträng att säga aktuell tid i timmar och minuter. Det är förmodligen inte en mycket bra användning av vÃ¥ra resurser, bÃ¥de mänskliga och beräknings. Webbplatser som alla är HTML är helt statisk. Det enda sättet du kan uppdatera innehÃ¥ll, som vi just har sett, är att öppna dem källa manuellt filer, redigera dem, och spara dem. Och sedan när användaren uppdaterar sidan, eller besöker sidan för första tid, kommer de att fÃ¥ det senaste innehÃ¥llet. Men bara för att vi har redigeras manuellt det. Om vi ââbörjar blanda lite PHP där, vÃ¥r kod kan fÃ¥ en mycket mer flexibel. Och vi kan ha ett sätt för vÃ¥ra sidor att vara dynamisk, eller uppdatera sig, utan att kräva vÃ¥ra fattiga webmaster i föregÃ¥ende exempel att manuellt uppdatera saker. De kan göra det automatiskt. Vi behöver inte ingripa. Vi kan fÃ¥ lite sömn. Vilket förmodligen är en bra sak om du gör en hel del webbprogrammering. SÃ¥ i CS50 IDE, vi kör en webbserver som heter Apache. Det är ett mycket vanligt, open source web server system. Detta system har kapacitet att tolka PHP, som kommer att vara användbart om du vill göra nÃ¥got PHP-programmering. Och i CS50 IDE, har vi ett kommando för att göra detta mycket lätt att göra, apache50 starta. Och dÃ¥ snedstreck bana, snedstreck till snedstreck dir, det är bara ett riktigt vanligt sätt att anger vad du har angett här är en väg till en viss katalog som du vill vara roten webbplats, eller rotsidan, eller mapp som din webbserver kommer att börja undersöka filer och servera dem till kunder som efterfrÃ¥gar dem. SÃ¥ lÃ¥t oss pop över till CS50 IDE, bara för att visa, verkligen snabb, hur det fungerar. SÃ¥ här i CS50 IDE, jag befinner mig i en katalog som heter Vecka Zero Nine. Och jag har two-- jag har avrättades en LS kommandot bara ovan för att visa er att jag har tvÃ¥ kataloger i här, PHP, vilket är den uppsättning filer som jag använde i PHP syntax video, och sedan PHP-bana, som är den uppsättning filer som jag skulle vilja använda i den här videon. Och jag skulle vilja börja en webbserver instans med innehÃ¥llet i PHP-webbmappen eftersom filerna som serveras upp. SÃ¥ vad ska jag göra? Jag kommer att skriva apache50 utrymme start, utrymme PHP, streck banan. Det är vägen till katalogen frÃ¥n där jag är för närvarande. DÃ¥ jag trycker pÃ¥ Retur. Det kommer att göra en lite saker här. Och sedan kommer att säga, Apache startats. Din webbplats är nu tillgänglig at-- och sedan finns det webbadressen till sajten. SÃ¥ vad ska jag göra? Jag kommer att snabbt kopiera detta. Och jag kommer att öppna up-- och Jag zooma ut lite här-- Jag kommer att öppna upp en ny flik i Chrome. Och jag kommer att besöka denna URL. Jag kommer att slÃ¥ Enter. Det kommer att läsa in. Och jag ska zooma ut igen. Och vi kan se här är innehÃ¥llet i min PHP webbkatalog. SÃ¥ nu vad som i grund och botten händer här är min instans av CS50 IDE tjänar upp dessa filer till vem som helst som begär dem. Och under loppet av den här videon kommer vi sorterar av ta en titt pÃ¥ ett gäng av dessa olika filer i sitt sammanhang. För att testa att din Apache servern fungerar, som i allmänhet kommer vara fallet i CS50 IDE, men om du gör det mer allmänt, och du börjar bygga din egen webb servrar, det är en riktigt vanligaste typen av analog till "Hej världen", som vanligtvis används för PHP webbutveckling. Vilket är att ha en fil bestÃ¥ende av just detta code-- en PHP avgränsare set med PHP info, parenteser, semikolon emellan. Vilket egentligen är en speciell PHP-funktionen som talar om vilken version av PHP du kör. SÃ¥ i CS50 IDE, har jag filen finns bara att visa dig vad det skulle se ut. SÃ¥ jag ser pÃ¥ mitt index frÃ¥n min PHP instans. Min Apache-instansen körs innehÃ¥llet i PHP-Web. Och jag har en fil här kallas info.php. Jag kommer att klicka pÃ¥ det, zooma ut. Detta är vad du tänker att se, ganska mycket. Detta är bara talar om för mig att min Apache servern fungerar. Och detta är, tydligen, version av PHP som jag kör. Detta är min analog till "Hej världen." SÃ¥ jag vet saker är i drift. SÃ¥ vi är bra att gÃ¥. Vi kan gÃ¥ härifrÃ¥n. SÃ¥ lÃ¥t oss Ã¥terkomma som tids exempel vi var talar om med vÃ¥ra fattiga webmaster som var tvungen att uppdatera sidan hela tiden. Detta kan vara en fix för hur Jag skulle genomföra saker sÃ¥ att webmaster inte mÃ¥ste hÃ¥lla uppdatera tiden. Det skulle bara typ av ske automatiskt. Den nere, HTML, är det ganska likartade, med ett undantag. Men här har jag fÃ¥tt lite PHP pÃ¥ toppen. Jag har, som synes, kallade detta funktion date_default_timezone_set. Och vi talar inte om alla dessa funktioner i CS50, eftersom PHP har förmodligen tiotusentals. Det kan vara lite av en överdrift, men det kanske inte. Det har fÃ¥tt en hel del funktioner inbyggda i. Och sÃ¥ detta är en funktion som synes sätter min tidszon som US / Eastern, vilket är den tidszon som jag är närvarande för att göra den här videon. DÃ¥ ska jag ringa ett samtal till Funktionen kallas, datum. Och, uppenbarligen, jag lagra HANS av nÃ¥got som kallas, tid. SÃ¥ vad är det som händer här? Tja, i princip vad är händer är, jag ringer ett samtal till viss server som kommer att berätta vad tiden är närvarande. Och jag omvandla den till ett format timmar, minuter, sekunder. Och anledningen till det är kapital H är detta kommer att ge mig 24 timmars tid, inte 12 timmars tid, vilket skulle vara gemener tim. Och jag bara lagra att i en variabel som kallas, tid. SÃ¥ att den andra raden av PHP där, anrop till funktionen, Hittills är bara fÃ¥ vissa sträng, som är kommer att ge mig den dag, och tid, och en massa annan information. Och det första argumentet där, att HIS, bara extrahera viktig del att jag bryr mig om i det här exemplet, vilket är en timme, minut och sekund. SÃ¥ det är allt som händer. SÃ¥ jag lagra den i en variabel $ tid. Och sedan ner pÃ¥ längst ned där, jag har det förkortning för skriva ut den aktuella tiden. SÃ¥ jag ska bara skriva ut reda pÃ¥ vad klockan är. SÃ¥ lÃ¥t oss ta en titt pÃ¥ detta CS50 IDE och se hur vi är nu spara som webmaster en massa problem. Okej, sÃ¥ här är jag igen tillbaka i rotkatalogen min Apache instans. Och jag har en fil här kallas time.php. Jag kommer bara att klicka pÃ¥ den. Och jag ska rulla upp, eftersom vi zoomat in ganska lÃ¥ngt. Den aktuella tiden är 14:20:34. SÃ¥ jag gör det timmar, minuter och sekunder. Och jag kan uppdatera och fÃ¥ ny tid. --41. Jag kommer att uppdatera sidan och fÃ¥ ny tid, 44, 46, 47. SÃ¥ jag är uppenbarligen inte ändra nÃ¥gonting själv. Jag här uppdatera sidan. SÃ¥ jag kan inte vara tillbaka där redigera den. Och jag lovar dig, jag vet inte har nÃ¥gra förbunds som redigerar filen för min räkning pÃ¥ sidan. Jag bara använda det PHP-funktionen, tid, för att generera tid för mig automatiskt. SÃ¥ att även om jag sover, och min webbserver körs, användaren som besöker den sidan är fortfarande kommer att fÃ¥ exakt den aktuella tiden. SÃ¥ det är ganska bra. Jag har gjort min webbplats mer dynamisk med inte alltför mycket PHP-kod. Det var bara tvÃ¥ rader kod och sedan en liten bit av en utskrifts uttalande. Och redan jag har en mycket mer dynamisk webbplats än det första exemplet vi sÃ¥g i början av videon. SÃ¥ minns frÃ¥n videon pÃ¥ PHP syntax att när PHP tolken körs vÃ¥rt program, ignorerar det allt det är inte inne i PHP avgränsare, spotta ut det. I detta exempel, vad den saken att det var spotta ut var HTML. Och det betyder att jag kan nu blanda HTML och PHP tillsammans. Eftersom tolken kommer bara ignorera HTML och bokstavligen utsignal. Vilket är bra, eller hur? Eftersom förmodligen, Vid slutet av dagen, Jag vill att min webbplats till vara konstruerad av HTML. SÃ¥ att alla webbläsare kan tolka det eller förstÃ¥ HTML pÃ¥ sidan och göra det som nÃ¥got som vi kan faktiskt förstÃ¥ som människor. Och jag kan bara använda PHP för de delar av min webbplats det kräver dynamik, som kräver mig att ha saker som uppdateras hela tiden. Den statiska informationen kan förbli densamma. OK, sÃ¥ det är bra. Men varför skulle jag göra det? Varför skulle jag blandar HTML och PHP? Jag kan bara skriva ut alla HTML, med hjälp av PHP utskriftsfunktionen. Varför fÃ¥r jag inte göra det? Tänk pÃ¥ det för en sekund. Varför, när jag kunde bara skriva out-- jag kunde ha rader av PHP som bara säga, utskrifts HTML-tagg, skrivhuvudet. Varför fÃ¥r jag inte göra det? Varför jag blanda PHP och HTML? Tja, om du tror om det för en sekund. PHP, har tolken att tolka vad den ser. Och sÃ¥ det kommer att ha att utföra en rad kod. Skriv ut HTML. Skriv ut öppna huvud tag. Skriv ut öppna rubriktaggen. Det kommer att behöva genomföra och tolka att varje enskild steg pÃ¥ vägen. Varför inte bara lÃ¥ta tolk bara släta över saker man inte förstÃ¥r och göra det automatiskt? Det kommer att spara mig en hel del tid att blanda min HTML och min PHP tillsammans. Och sÃ¥ det är därför vi inte bara öppna PHP avgränsare och sedan bara skriva ut hela innehÃ¥llet pÃ¥ vÃ¥r sida som en gigantisk PHP Ring till funktionen, Print, och sedan nära PHP avgränsare och vi är klara. SÃ¥ det är därför vi blandar upp dem tillsammans. Hittills har vi inte sett alltför mycket av skillnad frÃ¥n allmän PHP syntax. Det har varit ganska enkelt. Vi har redan sett frÃ¥getecken, lika. Vi sÃ¥g ett par nya funktionsanrop, men ingenting riktigt snygga händer. LÃ¥t oss kanske göra saker lite snyggare. Vad händer om vi vill överföra information mellan olika PHP-filer, sÃ¥ att kanske kan användaren lämna information till mig. Och dÃ¥ kunde jag göra nÃ¥got med det pÃ¥ en annan sida. SÃ¥ PHP har stöd för nÃ¥got som kallas Super Global Variabler, vilket lÃ¥ter ganska häftigt. De är egentligen bara jätte associativa arrayer som hjälper genomföra detta funktionalitet passerar information mellan PHP-filer som är befintliga pÃ¥ vÃ¥r webbserver. Den första av dessa super globals kallas $ _GET. Och det är förmodligen enklaste att förstÃ¥. Vad händer med $ _GET? Tja, i princip, är användaren kommer att skriva till extra information i slutet av URL: er. Och vad de skriver, förutsatt det är formaterad pÃ¥ ett visst sätt kallas en frÃ¥gesträng, som är bara en uppsättning av nyckelpar värde separeras av et-tecken. Dessa nyckelpar värde kommer att vara lagras i en $ _GET associativ array. Och frÃ¥n vÃ¥r video pÃ¥ PHP syntax, vi vet hur man arbetar med associativa arrayer redan. SÃ¥ här är ett exempel pÃ¥ vissa PHP, där kanske jag extrahera alla nyckelpar värde att användaren levereras i webbadressen. SÃ¥ jag har min öppet PHP avgränsare. Jag har en foreach slinga. Jag iterera över Super Globalt Array kallas $ _GET. Och jag vill kunna hänvisa till bÃ¥de nyckeln och värdet. Och jag bara skriva ut dem ut, var och en pÃ¥ till synes sin egen punkt tag här. Jag skriva ut nÃ¥gra HTML och interpolering av värdena av nyckel och värde i det uttalandet. SÃ¥ lÃ¥t oss ta en titt pÃ¥ hur detta skulle faktiskt arbetar pÃ¥ vÃ¥r IDE. Och kanske detta kommer att hjälpa illustrerar en liten bit vad GET faktiskt gör. SÃ¥ jag är tillbaka här i min webbroten. Och jag kommer att zooma in ett lite att visa dig att jag har en fil som heter, get1.php. SÃ¥ lÃ¥t oss titta pÃ¥ get1.php. Och jag ser inte nÃ¥got innehÃ¥ll. Det är konstigt, eller hur? Tja, inte riktigt faktiskt. Eftersom jag inte har lämnat nÃ¥got i webbadressen. Jag ska get1.php, men jag inte levererar nÃ¥gra nyckelpar värde som en del av mitt frÃ¥gesträng. SÃ¥ lÃ¥t oss lägga till en frÃ¥gesträng och se vad den här filen kan göra. Till att börja en frÃ¥gesträng du skriv bara frÃ¥getecken. DÃ¥ kanske jag ska säga name = Doug & Ã¥r = 2015. Och dÃ¥ kommer jag trycker pÃ¥ Retur. Nu märker vad som händer. Jag är fortfarande i get1.php. Men nu har jag levererat nyckelpar värde, och jag är skriva ut dem pÃ¥ egen hand paragraph-- namn, Doug-- Ã¥r 2015. Det är precis den kod vi bara sÃ¥g pÃ¥ bilden för en stund sedan. Och om jag vill kanske lägga till en annan nyckelvärdet paret, och class = CS50. Nu har jag en annan nyckelvärde par som är utskrivna När jag Ã¥terkomma webbadressen igen. Nu kanske detta inte är formaterad fruktansvärt bra. SÃ¥ jag har en annan version av get.php. Det är get2.php. Skillnaden i detta en är att jag har CSS-fil, och det format saker lite mer bra för mig. Det är kanske inte den mest vackra CSS i världen. Men det är bara ett annat sätt att göra det. SÃ¥ jag kan fortfarande fÃ¥ tillgÃ¥ng till mina variabler med hjälp av $ _GET. Och i detta fall, jag är bara typ av gör CSS lite mer fantasi. Och om vi pop över till min IDE för en sekund, Jag ska visa dig i min PHP katalog här, get2.php. Vi kommer att öppna upp, en del HTML här. Tydligen jag bindning i det CSS-fil jag pratade om. Jag öppnar ett bord tag. Och sÃ¥ här är min foreach loop. Här är det, vad jag visade pÃ¥ bilden innan. Den enda skillnaden är att jag har denna nyckel och värde CSS styling att jag söker det. Men det är allt jag gör är jag iterera över $ _GET att fÃ¥ alla av nyckelparen value. Och jag skriva ut dem som tabellen. Och, uppenbarligen, jag formatering nycklarna i ett sätt, med