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Ä"