DOUG LLOYD: Deci, în nostru video de pe sintaxa PHP, am vorbit foarte mult despre modul în care PHP pot fi folosite la linia de comandă pentru a rula programe într-un mod care suntem destul de familiarizați cu de la C. Dar, așa cum am menționat, de asemenea, în acest video, PHP a fost inițial dezvoltat pentru a punerea în aplicare a programare web, site-uri web. Și astfel, în acest film suntem de gând să vorbesc despre modul în care ne-am utilizați PHP în contextul dezvoltării web. Știm, deja, de la videoclipul nostru pe HTML, că site-urile sunt construite dintr-un set de tag-uri HTML care definesc semantic structura unei pagini web. Dar site-uri care sunt construit cu HTML pur suferă de o foarte, limitare foarte gravă. Și pentru a ilustra această limitare, să ia în considerare următoarele. Deci, acum vreau să construiască o pagină web că, ori de câte ori utilizatorul vizitelor, ea îmi dă curent timp în Cambridge, Mass., afișarea la ultima minut. Dacă am fost a face acest lucru chiar acum, Am putea spune ceva de genul asta. Ora curentă în Cambridge-- așa că am Tag-uri HTML, tag-uri, tag-uri cap titlu, corp tags-- curent timp în Cambridge este 14:08, imprimarea timp militare. Ce se întâmplă dacă e acum 14:09, 14:09? Bine până acum, cu HTML, am pentru a merge în și schimba-l la 14:09. Și într-o minut mai târziu, Trebuie să-l schimbe din nou. Și într-o minut mai târziu, Trebuie să-l schimbe din nou. Și, după cum vă puteți imagina, e probabil cel mai rău loc de muncă vreodată. Tu ești webmaster pentru o pagină web, și în fiecare minut, 24 de ore pe zi, aveți nevoie pentru a actualiza ora curentă de deschiderea manuală a time.html și schimbarea doar că fragment de cod pentru a spune ora curentă în ore și minute. Asta nu e, probabil, o foarte buna utilizare a resurselor noastre, atât umane cât și de calcul. Site-uri, care sunt toate HTML sunt complet statice. Singura modalitate de puteți actualiza conținut, cum tocmai am văzut, este de a deschide manual cele source fișiere, edita le, și să le salvați. Și apoi când utilizatorul reîmprospătează pagina, sau vizitează pagina pentru prima timp, vor primi cel mai recent conținut. Dar numai pentru că ne-am editat manual. Dacă vom începe să se amestecă unele PHP acolo, codul nostru poate obține o mulțime mai flexibil. Si putem avea un mod de paginile noastre să fie dinamică, sau actualiza ei înșiși, fără a necesita săraci nostru webmaster în exemplul anterior pentru a fi manual actualizarea lucruri. Ei pot face acest lucru în mod automat. Noi nu trebuie să intervină. Putem dormi. Care este, probabil, un lucru bun, dacă faci o mulțime de programare web. Deci, în CS50 IDE, vom rula un server web numit Apache. Este un foarte frecvent utilizate, open source sistem server web. Acest sistem are capacitatea de a interpreta PHP, care va fi util dacă vrei sa faci nici o programare PHP. Și în IDE CS50, avem o comandă pentru a face acest lucru foarte ușor de făcut, apache50 începe. Și apoi că slash cale, slash la, slash dir, că e doar un mod foarte comun de indicând ce ai specificat aici este o cale de a un anumit director vă că doresc să fie rădăcină site-ul, sau pagina rădăcină, sau dosarul din care serverul de web va începe să examineze și să servească fișiere le clienților care le solicită. Deci, haideți să pop peste la CS50 IDE, doar pentru a să vă arate, într-adevăr rapid, cum funcționează acest lucru. Deci, aici, în IDE CS50, sunt într-o director numit Săptămâna Zero Nine. Și am two-- am executat o comandă LS doar de mai sus pentru a vă arăta că am două directoare de aici, PHP, care este un set de fișiere care am folosit în video sintaxa PHP, și apoi PHP-web, care este un set de fișiere care am ar dori să folosească în acest film. Și aș dori să încep o instanță de server web cu conținutul folderului PHP-ul ca fișierele sunt servite. Deci, ce am de gând să fac? Am de gând să tastați apache50 spațiu începe, PHP spațiu, linie web. Asta e calea spre directorul de unde am în prezent sunt. Apoi am lovit Enter. Se va face o pic de chestii aici. Și apoi o să spun, Apache pornit cu succes. Site-ul dvs. este acum disponibil și at-- atunci nu e URL-ul pentru site-ul. Deci, ce am de gând să fac? Am de gând să copiați rapid acest lucru. Și am de gând să deschidă up-- și Voi micșora un pic here-- Am de gând să se deschidă o filă nouă în Chrome. Și am de gând să viziteze acel URL. Am de gând să lovi Enter. O să se încarce. Și voi micșora din nou. Și putem vedea aici este conținutul directorul meu web PHP. Deci, acum ce se intampla de fapt aici este, de exemplu mea de CS50 IDE servește până aceste fișiere la cineva care le solicită. Și-a lungul acest videoclip, vom sorta de aruncăm o privire la o grămadă de acestea fișiere diferite în context. Pentru a testa că Apache dvs. server este de lucru, care este, în general, va să fie cazul în CS50 IDE, dar dacă faci acest lucru mai mult, în general, și începe construirea propriul dvs. de web servere, există o foarte un fel comun de analog la, "Hello World", care este de obicei utilizate pentru dezvoltarea PHP web. Care este de a avea un fișier format din doar acest code-- un delimitator PHP set cu info PHP, paranteze, punct și virgulă între. Care este de fapt un deosebit Funcția PHP care vă spune ce versiune de PHP se execută. Deci, în CS50 IDE, am acel fișier disponibil doar să-ți arate ce ar arăta. Deci, mă uit la index mea din exemplu meu PHP. Apache exemplu meu se execută conținutul de PHP-Web. Și am un fișier numit aici info.php. Am de gând să faceți clic pe el, zoom out. Aceasta este ceea ce ai de gând pentru a vedea, destul de mult. Acesta este doar mi-a spus că serverul meu Apache este de lucru. Și acest lucru este, aparent, versiune de PHP pe care am pornit. Acest lucru este analog mea de a "Hello World." Deci, eu știu lucrurile sunt operaționale. Deci, suntem bine să plec. Putem continua de aici. Deci, haideți să reexamineze că exemplu timp am fost vorbesc despre cu webmaster-ul nostru jalnic care a trebuit să actualizeze pagina constant. Acest lucru ar putea fi un remediu pentru modul în care Mi-ar pune în aplicare lucruri astfel încât nu a webmaster trebuie să țină actualizarea timp. Ar fi doar un fel de se întâmplă în mod automat. În jos de mai jos, HTML, e destul de similare, cu o singură excepție. Dar aici am niște PHP în partea de sus. Am, aparent, numit acest Funcția date_default_timezone_set. Și nu vorbim despre toate aceste funcții în CS50, pentru că PHP are, probabil, zeci de mii. Că ar putea fi un pic de o exagerare, dar nu s-ar putea să fie. Are o mulțime de funcții construit în. Și astfel încât acesta este o functie aparent stabilește fusul orar ca SUA / de Est, care este fusul orar pe care eu sunt în prezent în a face acest film. Apoi am face un apel la funcție numită, data. Și, aparent, eu depozitarea Sale de ceva numit, timp. Deci, ce se întâmplă aici? Ei bine, practic ceea ce este întâmplă este, eu sunt efectuarea unui apel la unele server care se va spune-mi ce în prezent este timpul. Și eu l conversia într-un format de ore, minute, secunde. Iar motivul este de capital H este acest este de gând să-mi dea timp 24 de ore, nu 12 timp de ore, ceea ce ar fi h litere mici. Și eu doar stocarea că într-o variabilă numită, timp. Așa că a doua linie de PHP acolo, apelul la funcția, data, este doar obtinerea unele string, care este O să-mi dea data, și timp, și o grămadă de alte informații. Și primul argument acolo, că sa, este doar extragerea parte importantă că îmi pasă de acest exemplu, care este ora, minutul, și de-a doua. Deci asta e tot ceea ce se întâmplă. Așa că am stoca că într-un timp variabil $. Și apoi în jos la foarte jos acolo, am au ca prescurtare pentru imprimarea ora curentă. Așa că am de gând să imprima doar ceea ce este timpul curent. Deci, haideți să aruncăm o privire la acest lucru în IDE CS50 și a vedea cum suntem acum economisire că webmaster o mulțime de probleme. Bine, asa ca aici am din nou înapoi la directorul rădăcină de exemplu meu Apache. Și am un fișier numit aici time.php. Mă duc să faceți clic pe asta. Și voi derula în sus, pentru că suntem mărită destul de departe. Timpul curent este 14:20:34. Deci, Fac o oră, minute si secunde. Și pot actualiza pagină și obține noi timp. --41. Mă duc pentru a actualiza pagina și de a lua noi timp, 44, 46, 47. Deci, eu nu sunt în mod clar schimba nimic eu. Sunt aici să actualizați pagina. Deci, eu nu pot fi acolo editarea ei. Și îți promit, eu nu nici complicii care sunt editarea fișierului în numele meu pe partea. Eu doar folosind această funcție PHP, timp, pentru a genera timpul pentru mine automat. Așa că, chiar dacă am adormit, și serverul meu de web se execută, utilizatorul care vizitează pagina este încă mergi la a lua exact ora curentă. Așa că e destul de bun. Am făcut site-ul meu mai dinamic cu nu prea mult cod PHP. Acesta a fost doar două linii de cod și apoi un pic de o declarație de imprimare. Și deja am un site-ul mult mai dinamic decât că prim exemplu am văzut la începutul videoclipului. Deci, amintesc de video de pe sintaxa PHP că, atunci când interpretul PHP ruleaza programul nostru, ignoră totul asta nu e în interiorul delimitatori PHP, scuipa-l. În acest exemplu, ceea ce lucru că a fost scuipa afară era HTML. Și acest lucru înseamnă că pot acum răspândi HTML și PHP împreună. Deoarece interpretul va doar ignora HTML și literalmente o ieșire. Ceea ce este bine, nu? Pentru că probabil, la sfarsitul zilei, Aș dori să-mi site-ul construite din HTML. Astfel încât orice browser web poate interpreta ea, sau să înțeleagă HTML pe pagina și face ca pe ceva care ne Pot să înțeleg de fapt ca oameni. Și eu pot folosi doar PHP pentru părțile din site-ul meu Se solicită dinamism, care ma solicita de a avea lucruri care se actualizează în mod constant. Informațiile static poate sta la fel. OK, astfel că e bine. Dar de ce aș face acest lucru? De ce aș amesteca HTML și PHP? Aș putea imprima doar din toate HTML, utilizând funcția PHP imprimare. De ce nu am face asta? Gandeste-te pentru un al doilea. De ce, când am putea imprima doar out-- I ar putea avea linii de PHP care spun doar, tag-ul HTML print, cap de imprimare. De ce nu am face asta? De ce am de amestecare PHP și HTML? Ei bine, dacă credeți că cu privire la aceasta pentru o secunda. PHP, interpretul are să interpreteze ceea ce vede. Și așa va avea pentru a executa o linie de cod. Tipăriți HTML. Imprima tag cap deschis. Imprima tag titlu deschis. Va trebui să executa și interpreta că fiecare pas din drum. De ce nu lasa doar interpret doar luciu peste lucrurile nu înțelege și o fac în mod automat? O să-mi salva o mulțime de timp pentru a amesteca HTML mea și PHP mea împreună. Și așa de aceea nu Trebuie doar deschis PHP delimitator și apoi doar imprima întregul Conținutul paginii noastre ca unul PHP gigant apel la funcția, Print, apoi aproape delimitator PHP și am terminat. Deci, de aceea le-am amesteca împreună. Până în prezent, nu am văzut prea mult din o diferență de sintaxa generală PHP. A fost destul de simplu. Am văzut deja semn de întrebare, egal. Am văzut o pereche de noi apeluri de funcții, dar nimic nu într-adevăr de lux întâmplă. Să poate face lucruri un pic crescator. Ce se întâmplă dacă vrem să treci informații între diferite fișiere PHP, astfel ca poate utilizatorul poate prezinte informații pentru mine. Și apoi am putea face ceva cu ea la o altă pagină. Deci, PHP are suport pentru ceva numit Super Global Variabile, care sună destul de minunat. Sunt de fapt doar tablouri asociative gigant că ajuta la implementarea acestui funcționalitatea de trecere informații între fișierele PHP care sunt existente pe serverul nostru web. Prima dintre aceste super- GLOBALS este numit $ _GET. Și este, probabil, mai simplă de a înțelege. Ce se întâmplă cu $ _GET? Ei bine, de fapt, utilizatorul este O să tastați informații suplimentare la sfârșitul URL-uri noastre. Și tot ceea ce tastați, presupunând este formatat într-un mod special numit un șir de interogare, care este doar un set de perechi de valoare cheie separat de and-urile. Aceste perechi de valoare-cheie va fi stocate într-un tablou asociativ $ _GET. Și de la videoclipul nostru pe Sintaxa PHP, știm cum să lucreze cu tablouri asociative deja. Deci, aici este un exemplu de unele PHP, unde poate sunt extragerea toate perechile de valori cheie că utilizatorul furnizate în URL-ul. Deci, am deschiși PHP delimitator. Am o buclă foreach. Mă iterarea peste Super Array Global numit $ _GET. Și vreau să fie în măsură să se refere atât cheia și valoarea. Și eu doar le imprimați out, fiecare pe aparent propriul tag-ul său alineatul aici. Am imprimarea unele HTML și interpolarea valorilor de cheie și valoare în această declarație. Deci, haideți să aruncăm o privire la modul în care acest va lucra efectiv pe IDE nostru. Și poate acest lucru va ajuta ilustrează un pic de ceea ce este, de fapt face GET. Deci, m-am întors aici, în rădăcină mea de web. Și voi mări un pic să-ți arăt că am un fisier numit, get1.php. Deci, haideți să faceți clic pe get1.php. Și nu văd nici un conținut. Asta e ciudat, nu? Ei bine, nu chiar, de fapt. Pentru că nu a furnizat nimic în URL-ul. Am de gând să get1.php, dar eu nu a furnizat nici un perechi de valoare-cheie ca parte a șir meu de interogare. Deci, haideți să adăugați un șir de interogare și să vedem ce se poate face acest fișier. Pentru a începe un șir de interogare te doar de tip semn de întrebare. Atunci poate o să spun name = Doug & an = 2015. Și atunci voi lovi Enter. Acum observați ce se întâmplă. Sunt încă în get1.php. Dar acum am livrat perechi de valoare-cheie, și eu sunt imprimarea ei pe cont propriu Numele paragraph--, an Doug-- 2015. Asta e exact codul tocmai am a văzut pe diapozitiv în urmă cu o clipă. Și dacă doriți să adăugați un alt poate pereche de valoare-cheie, si class = CS50. Acum am o altă valoare cheie pereche care este imprimat când am revizuiască din nou URL-ul. Acum, poate că acest lucru nu este formatat teribil de bine. Deci, am o alta versiune a get.php. E get2.php. Diferența în acest unul este că am fișier CSS, și formate lucrurile o puțin mai mult frumos pentru mine. Nu e poate cel mai mult frumos CSS din lume. Dar e doar un alt mod de a face aceasta. Deci, eu pot obține încă acces a variabilelor meu folosind $ _GET. Și în acest caz, eu sunt doar un fel de face CSS un pic mai mult de lux. Și dacă ne-am pop de peste la IDE mea pentru o secundă, Am să-ți arăt în PHP web mea director aici, get2.php. Vom deschide, unele HTML aici. Se pare că eu sunt de legătură în care CSS fișier Vorbeam despre. Am deschis o etichetă masă. Și apoi aici e bucla foreach mea. Aici este că, ceea ce am a arătat pe diapozitiv înainte. Singura diferenta este ca eu au această cheie și valoare CSS Coafura că am să-l aplica. Dar asta e tot ce fac, este eu sunt iterarea peste $ _GET pentru a obține toate din perechile de valori cheie. Și eu le-imprimarea ca masa. Și, aparent, eu formatare cheile într-un fel, cu clasa de "cheia", a