Doug LLOYD: Znači u našoj Video o PHP sintaksu, smo puno razgovarali o tome kako PHP može se koristiti u naredbenom retku za pokretanje programa na način da se mi smo prilično upoznati s iz C. No, kao što sam spomenuo u tom video, PHP je u početku razvijen za implementirati web programiranje, web stranice. I tako je u ovom videu smo će govoriti o tome kako koristiti PHP u web razvoj kontekstu. Znamo, već od Naš video na HTML, da su web stranice izgrađena iz niza HTML oznake da semantički definira struktura web stranice. No, web stranice koje su izgrađen s čistim HTML pate od vrlo, vrlo ozbiljna ograničenja. A za ilustraciju ovo ograničenje, Razmotrimo sljedeće. Dakle, sada želim izgraditi web stranicu da, kad god korisnik posjeti to, to mi daje struju Vrijeme u Cambridgeu, Massachusetts., prikazujući ga na najnoviju minute. Ako sam što upravo sada, Možda sam reći nešto poput ovoga. Trenutno vrijeme na Cambridge-- pa moram HTML oznake, oznake za glavu, tagova, Tijelo tags-- struje Vrijeme u Cambridgeu je 14:08, ispis vojnu vrijeme. Što će se dogoditi ako je sad 14:09, 14:09? Pa sada, s HTML, imam otići i to promijeniti 14:09. A onda jednu minutu kasnije, Moram ga ponovno ne promijenite. A onda jednu minutu kasnije, Moram ga ponovno ne promijenite. I kao što možete zamisliti, to je vjerojatno najgori posao ikad. Vi ste webmaster za web stranicu, a svake minute, 24 sata dnevno, trebate ažurirati trenutni vrijeme Ručno otvaranje time.html i mijenja samo da je isječak koda za reći trenutno vrijeme u satima i minutama. To vjerojatno nije jako dobar korištenje naših resursa, i ljudske i računalne. Web stranice koje su sve HTML potpuno statična. Jedini način na koji možete ažurirati sadržaja, kao što smo upravo vidjeli, je ručno otvaranje tih izvora datoteke, urediti ih, te ih spasiti. I onda kada korisnik osvježava stranicu ili posjeti stranicu za prvi Vrijeme, oni će dobiti najnovije sadržaje. Ali samo zato što smo ručno ga uredio. Ako počnemo miješati neke PHP tamo, naš broj može dobiti puno fleksibilniji. I mi možemo imati način za naše stranice biti dinamičan, ili se ažurirati, bez potrebe za naše siromašne mrežnog u prethodnom primjeru se ručno ažuriranje stvari. Oni to mogu učiniti automatski. Nemamo intervenirati. Možemo naspavati. Što je vjerojatno dobra stvar, ako radite puno web programiranja. Tako je u CS50 IDE smo pokrenuti web poslužitelj zove Apache. To je vrlo često koristi, open source web server sustava. Ovaj sustav ima sposobnost da tumači PHP, što će biti korisno ako želite učiniti bilo PHP programiranje. A u CS50 IDE, imamo naredbu da bi to vrlo lako za napraviti, apache50 početi. I onda da slash Put, smanjiti se, smanjiti dir, to je samo jako čest način ukazuje na ono što ste ovdje navedeno je put do određenog katalog vam da želim biti korijen stranica ili stranica korijena, ili mapa iz koje web poslužitelj počet će ispitati datoteke i služiti ih do klijenata koji ih zatraže. Tako ćemo pop preko CS50 IDE, samo da pokazati vam, stvarno brzo, kako se to radi. Dakle, ovdje u CS50 IDE, ja sam u katalog naziva Tjedan nula devet. I ja imam two-- imam pogubili LS naredba jednostavno gore ti pokazati da imam dvije direktorije ovdje, PHP, koji je skup datoteka koje sam koristio u PHP sintaksa videa, a zatim PHP-web, koji je skup datoteka koje sam Željeli bismo iskoristiti u ovom videu. I ja bih za početak web poslužitelj instanca sa sadržajem PHP-web folder kao i datoteke se služio. Pa što ću učiniti? Ja ću upisati apache50 prostor početi, prostor PHP, crtica web. To je put do imenika odakle Ja sam trenutno. Tada sam pritisnite Enter. To će učiniti malo stvari ovdje. I onda će reći, Apache je uspješno započeo. Vaša stranica je sada dostupan at-- i onda je URL web stranice. Pa što ću učiniti? Idem da brzo kopiranje ovo. A ja ću otvoriti up-- i Ja ću smanjivanje malo here-- Idem otvoriti novu karticu u pregledniku Chrome. I ja ću posjetiti taj URL. Idem pritisnite Enter. To će učitati. A ja ću opet udaljili. I što možemo vidjeti ovdje je Sadržaj moje PHP web imenik. I što sada zapravo događa evo, moj slučaj CS50 IDE je služeći se te datoteke svatko tko ih traži. I tijekom ovaj video, mi ćemo vrsta pogledajte hrpa njih različite datoteke u kontekstu. Za testiranje da vaš Apache poslužitelj radi, koji se obično događa da je to slučaj u CS50 IDE, ali ako to učinite općenito, a vi početi izgradnju svoje vlastite web poslužitelji, tu je stvarno česta vrsta analognog na, "Hello World", koji je obično koristiti za PHP web razvoj. Koji je imati datoteku koji se sastoji od samo ovaj code-- PHP graničnik postavljen s PHP info, zagrade, točka-zarez između. Koji je zapravo poseban PHP funkcija koja vam govori što inačici PHP radite. Tako je u CS50 IDE, imam koji datoteka dostupna samo da vam pokazati što bi to izgledati. Pa gledam moje indeksa iz mog PHP primjer. Moj Apache instanca radi sadržaj PHP-Web. I ja imam datoteka ovdje se zove info.php. Idem klik, zoom out. To je ono što se događa vidjeti, prilično mnogo. To me samo reći da je moja Apache poslužitelj radi. A to je, očito, verzija PHP da bježim. Ovo je moj analogni na "Hello World". Tako da znam stvari rade. Tako smo si dobar to ići. Možemo nastaviti odavde. Tako ćemo ponovo da Vrijeme primjer smo pričaju s našim lošem webmastera koji je morao ažurirati stranicu stalno. To bi moglo biti škripac za koliko Ja bih provesti stvari tako da webmaster nije morate držati ažuriranju vrijeme. To bi samo vrsta dogoditi automatski. Na dolje ispod, HTML, to je prilično sličan, s jednom iznimkom. Ali ovdje imam neke PHP na vrhu. Ja sam, očito, nazvao Funkcija date_default_timezone_set. A mi ne govorimo o svemu ove funkcije u CS50, jer PHP ima vjerojatno nekoliko desetaka tisuća. To bi moglo biti malo od pretjerivanje, ali to ne može biti. Ona ima mnogo funkcija izgrađen u. I tako je to funkcija očito postavlja moju vremensku zonu kao SAD / istočni, što je vremenska zona koja sam Trenutno je u izradi ovog videa. Onda sam upućivanje poziva funkcija zove, datum. I, očito, ja pohranjivanjem HIS nešto zove, vrijeme. Dakle, ono što se ovdje događa? Pa, zapravo ono što je događa se, ja sam upućivanja poziva na neki poslužitelj koji će reci mi što je vrijeme trenutno. I ja sam ga pretvoriti u format sati, minute, sekunde. A razlog je glavni H je to će mi dati 24 sata vremena, a ne 12 sat vremena, što će biti mala h. A ja sam samo pohranjivanje da u varijablu naziva, vrijeme. Tako da drugi redak PHP postoji, poziv na funkciju, Datum, samo je sve neki string, što je će mi dati datum, a vrijeme, i hrpa drugih informacija. I prvi argument postoji, da je njegova, je samo vađenje važnu ulogu da mi je stalo na ovom primjeru, što je sat, minute i sekunde. Dakle, to je sve što se događa. Tako sam pohraniti da u promjenjivom vremenu $. A onda dolje na Vrlo dno tamo, ja imati taj stenogram za ispis trenutnog vremena. Tako Samo ću ispisati što je trenutno vrijeme. Tako ćemo pogledati ovo CS50 IDE i vidjeti kako smo se sada Ušteda koje webmaster puno problema. U redu, ovdje sam ponovno natrag na korijenski direktorij moje Apache primjer. I ja imam sliku ovdje zove time.php. Samo ću kliknuti na to. A ja ću pomičite se gore, jer mi smo zumira prilično daleko. Trenutno vrijeme je 14:20:34. Pa ja sam to vrijeme, minute i sekunde. I možete osvježiti stranica i dobiti novo vrijeme. --41. Idem osvježiti stranicu i dobiti novo vrijeme, 44, 46, 47. Dakle, ja sam očito ne ništa promijeniti sebe. Ja sam ovdje osvježiti stranicu. Pa ja ne mogu biti tamo ga uredite. I obećajem ti, ja ne Za sva urotnike koji uređujete datoteku na moje ime na strani. Ja samo koristiti taj PHP funkcije, Vrijeme, generirati vremena za mene automatski. Tako da, čak i ako sam zaspao, a moj web poslužitelj je trčanje, korisnik koji posjećuje ta stranica i dalje će dobiti točno trenutno vrijeme. Dakle, to je prilično dobro. Ja sam napravio moj site dinamičniji s ne previše PHP koda. To je bio samo dvije linije koda, a zatim malo priopćenju ispisa. I već imam puno dinamičniji stranica od tog prvog primjera smo vidjeli na početku videa. Dakle, podsjećaju iz video na PHP sintaksu da kada PHP tumač radi naš program, to ignorira sve to nije unutar PHP razdvojnike, to pljuvanje van. U tom primjeru, što je stvar da je pljuvanje van je HTML. A to znači da ja mogu sada poprskati HTML i PHP zajedno. Budući da je tumač će samo ignorirati HTML i doslovno izlaz je. Što je dobro, zar ne? Jer vjerojatno, na kraju dana, Želim moje stranice na biti izgrađen HTML. Tako da je bilo koji web preglednik može protumačiti da, ili ne razumiju HTML na stranici i učiniti ga kao nešto što smo zapravo može razumjeti kao ljudi. A ja mogu samo koristiti PHP za dijelove mom mjestu zahtijevaju dinamizam, koji me zahtijevaju da su stvari koje se stalno ažurirati. Statički informacije može ostati isti. OK, to je u redu. Ali zašto bih to učinio? Zašto bih miješati HTML i PHP? Upravo sam mogao ispisati sve HTML, pomoću funkcije PHP ispis. Zašto mi ne radi? Razmislite o tome na sekundu. Zašto, kad sam samo mogao ispisati out-- sam mogao linije PHP da samo reći, ispis HTML oznake, ispisna glava. Zašto mi ne radi? Zašto sam miješanjem PHP i HTML? Pa, ako mislite o tome na sekundu. PHP, tumač mora interpretirati ono što vidi. I tako će imati izvršiti liniju koda. Ispiši HTML. Ispiši otvoren glavu oznaku. Ispiši otvoren više oznaka. To će morati izvršiti i tumače da svaki korak na putu. Zašto ne samo neka Tumač samo zagladiti stvari ne razumiju i to učiniti automatski? To će mi uštedjeti puno vremena miješati moju HTML i PHP moju zajedno. I tako to je razlog zašto mi ne samo otvoren PHP razdvojnik i onda samo ispisati cjelokupnog Sadržaj naše stranice kao jedan divovski PHP poziv na funkcije, Ispis, a zatim u blizini PHP graničnik i mi smo učinili. Dakle, to je razlog zašto smo ih miješati zajedno. Do sada nismo vidjeli previše razlika između općeg PHP sintaksu. Prošlo je prilično jednostavan. Već smo vidjeli upitnika, jednaki. Vidjeli smo nekoliko novih funkcija poziva, ali ništa stvarno sviđa događa. Idemo možda bi stvari malo ljubitelj. Što ako želimo proći podatke između različitih PHP datoteke, tako da možda korisnik može dostaviti podatke za mene. A onda sam mogla učiniti nešto s njom na drugoj stranici. Dakle, PHP ima podršku za nešto što se zove super Global Varijable, što zvuči prilično strašan. Oni su zapravo samo div asocijativne polja da pomognu provesti taj funkcionalnost prolazu informacija između PHP datoteka koje su postojeći na našem web poslužitelju. Prva od ovih super globals naziva $ _GET. I to je vjerojatno najjednostavnije shvatiti. Što se događa s $ _GET? Pa, u osnovi, korisnik je će upisati dodatne informacije na kraju naše URL-ova. A ono što oni tipa, uz pretpostavku to je formatiran na poseban način naziva niza upita, što je samo set ključnih parova vrijednosti razdvojene znakom. Ti ključni parova vrijednost biti pohranjeni u $ _GET asocijativni niz. A iz našeg videa na PHP sintaksa, znamo kako raditi s asocijativne polja već. Dakle ovdje je primjer neke PHP, gdje možda sam vađenje svih ključnih parova vrijednosti koje korisniku isporučuje u URL. Dakle, imam Otvorite PHP graničnik. Imam foreach petlju. Ja iterating preko Super Globalna Array zove _GET $. I ja želim biti u mogućnosti da se odnosi na oba ključa i vrijednost. A ja sam samo ih ispisa van, svaki na naizgled vlastiti stav tag ovdje. Ja sam ispis neke HTML i interpolacijom vrijednosti ključeva i vrijednosti u toj izjavi. Tako ćemo pogledati kako se to zapravo bi raditi na našem IDE. A možda će to pomoći ilustriraju malo onoga GET zapravo radi. Zato sam ovdje u mom web korijena. A ja ću zumiranje u malo vam pokazati da imam datoteku pod nazivom, get1.php. Tako ćemo kliknite na get1.php. I ne vidim nikakav sadržaj. To je čudno, zar ne? Pa, zapravo i nije zapravo. Jer nisam dostaviti ništa u URL. Idem get1.php, ali ja nije dostaviti sve ključne parova vrijednosti kao dio mog upitom. Tako ćemo dodati niz upita i vidjeti što je ova datoteka može učiniti. Za početak niza upita što samo upišite upitnik. Onda ću možda reći name = Doug & godina = 2015.. A onda ću pritisnite Enter. Sada primijetite što se događa. Ja sam još uvijek u get1.php. Ali sada sam isporučen Ključni parova vrijednost, a ja sam ih ispisa na vlastitu paragraph-- ime, Doug-- godine 2015. To je upravo kod nas samo Vidio na slajdu maloprije. A ako želim, možda dodati još Ključ vrijednost par, & class = CS50. Sada imam još jednu ključnu vrijednost Par koji je ispisati kad sam opet ponovo URL. Sada možda to nije formatiran strašno dobro. Dakle, imam još jednu verziju get.php. To je get2.php. Razlika u ovom jedan je imam CSS datoteku, i to formata stvari malo više lijepo za mene. To možda i nije najviše lijepo CSS na svijetu. Ali to je samo još jedan način da to radi. Tako sam i dalje mogu dobiti pristup moje varijabli pomoću $ _GET. I u ovom slučaju, ja sam samo vrsta izradu CSS malo više sviđa. I ako mi pop preko moj IDE za drugi, Ja ću vam pokazati u mom PHP webu katalog ovdje get2.php. Mi ćemo ga otvoriti, neke HTML ovdje. Očito sam povezivanja u tome CSS datoteku sam govorio. Otvaram stol oznaku. A onda tu je moj foreach petlje. Ovdje je to, što ja pokazao na slajd prije. Jedina razlika je sam ima tu tipku i vrijednost CSS styling da sam se primjenjuju na njega. No, to je sve što radim, je sam iterating preko _GET $ dobiti sve od ključnih parova vrijednosti. I ja sam ih ispišete kao stol. I, očito, ja formatiranja ključeve na jedan način, s class = "ključ"