SAM LEVATICH: Bine ati venit la secțiune pentru această săptămână. Eu nu sunt Andi. Andi a căzut bolnav această zi, și eu au fost un fel de numit în ultimul moment a prelua. E sezon de gripa, astfel asigurați-vă că stau curat, spălat mâinile tale, și mănâncă sănătos, astfel încât tu, de asemenea, nu sunt tintuit la pat. Dar fără alte ADO, să începem. Astăzi, vom vorbi despre PHP un pic bit-- cum PHP se referă la HTML, cum se referă la CSS, iar unele dintre web chestii ai făcut pe ultima alocare. Vom vorbi pic despre SQL și modul în care se poate lucra cu baze de date, care este o componentă cheie a P destul de set 8-- P set 7. P set 7. Și apoi vom vorbi un pic bit despre cum funcționează vedere controlere și de ce asta e o filosofie în spatele unele pagini web moderne și design diferit. Destul de mult, o mulțime de tipuri de aplicații și aplicații s-ar putea livra folosesc acest model, vedere cadru regulator, că veți fi utilizați în P set 7, așa că voi vorbesc un pic despre de ce a devenit popular, de ce este important și frumos. Și apoi voi muta în cele din urmă la câteva sfaturi despre abordarea P set 7. Și dacă avem timp stânga peste la sfârșitul anului, putem face de fapt, unele lucra la asta împreună. Deci, PHP. De fapt, este posibil să fi observat asta: nu au avut cu adevărat să se scufunde în it-- dar P set 6 a avut unele PHP cod care se întâmplă. Și pentru că PHP este un C-cum ar fi limbă, PHP, spre deosebire de HTML și CSS, este un limbaj de programare, întrucât HTML si CSS sunt statice. Sunt limbaje de markup care se ocupă cu stil și aspect vizual. PHP este o adevarata afacere. PHP are bucle, are conditions-- toate chestiile asta e distractiv despre C. Ea are o serie de lucruri care sunt un pic pic mai bine decât C, care vom vedea, dar cred că cel mai simplu mod de a vorbi despre PHP este doar să se scufunde în. Deci, am de gând să merg dreapta în IDE în acest moment. Primul lucru pe care vom să faceți este să se uite de fapt un pic la unele dintre Cod PHP care a fost în P set 6. Deci felul în care facem that-- înainte, modul în care am fost difuzate serverul pentru aparat a fost ca ne-ar trebui să type-- fie utilizați punerea în aplicare dvs. sau punerea în aplicare a personalului de server.c de a intra în director și să fie difuzate server.c fie cu nici o arguments-- astfel doar apel la gazdă locală, care este ceea ce, probabil, a făcut cele mai multe time-- și apoi să le introducă un directory-- cu care să utilizeze ca root sale în cazul în care site-ul ar fi rula, practic. În această săptămână pentru P setat 7, ca mare ca codul nostru pentru server.c este, există oameni care au deja scris aceste lucruri frumoase pe la CS50 care au un pic mai multă funcționalitate, un program server care este capabil de a face cu un pic mai mult de complexitatea pe care le vom vezi în ambele P set 7 și P set 8. Și modul în care ați pornirea server este de doar tastând ", apache50." Și înainte de a face ceva, doriți să vă asigurați că Apache 50 nu este deja rulează ca este pe masina mea, pe care am făcut-o pentru ao testa. Și tu faci asta prin apel apache50. Opri, și veți vedea că este oprirea serverul de web, dacă vă puteți uita acolo în partea de jos a ferestrei terminalului. Și apoi doar pentru a începe, suntem O să sun, "apache50 începe." Și apoi vom merge să-l hrănească un director. Acum, pentru că vrem să se uite la unele dintre P set 6 cod că ne-am pus în aplicare, am de fapt copiat un pic de P set 6 cod în propria mea dosar, pe care o puteți vedea pe stânga acolo. Se numește "SECTION8" în toate majuscule pentru că eu sunt doar atat de emotionat să fie sub tensiune transmise-azi. Deci, dacă vom rula aceasta, ar trebui toate lucrează destul de eficient. Se spune, OK, site-ul nostru este acum disponibil la adresa de IDE, Practic, care este ceea ce ați folosit exact așa cum a fost în P set 7-- P set 6. Toate indexurile mele sunt un index astăzi. Deci, putem merge la acea adresa, dacă îți vei aminti, doar prin clic pe această mică Butonul din dreapta sus. Și vei aminti acest cod, care sa întâmplat când te-ai dus în hello.php. Și ce codul este proiectat pentru a faci este atunci când ați tastat un nume here-- dacă spui Sam pentru că asta e name-- mea și am faceți clic salut, atunci când ne-am dus la pagina următoare, acest nume a fost trebuia să fie afișate. Ar spune, "Bună ziua, Sam" sau "Salut," indiferent ce nume pus în ea, chiar dacă ne-am dus la o pagină web cu totul nou. Și aceasta este un fel de lucru că PHP poate face pentru tine. PHP este capabil de a trece de date între două pagini de web. Aceasta este o pagină cu totul diferit. Veți vedea titlul este "hello" aici. De fapt, ei au același titlu, dar am promit acestea sunt diferite de web Pagini dacă ne uităm la sursa. Și puteți trece datele care este înscrise la acest câmp de text, îl prezintă la alta Pagina care fiind chemat, și apoi că datele sunt în măsură să fi acolo, în forma sa actuală. Acum, nu am încă puse în aplicare acest noi, care este ceea ce am de gând să faci acum la obține un fel o aromă de cum funcționează PHP, dar ideea cheie este că puteți PHP-- un fel de cred că de ea ca o funcție. Ceva ce PHP puteți să vă lăsați nu este poate dura parametri pe care le de intrare într-o pagină HTML prin utilizarea de PHP și forme, si se poate trece pe cei ca parametrii la pagina următoare, care se încarcă în sus. În acest caz, vom încărcare de până acest pagina cu butonul "Salută". Dar pentru acum, am de fapt eliminat o parte din acest cod în hello.php care era rula care a fost de fapt afișarea "Bună ziua, lumea "sau" Bună ziua, Sam "sau "Bună ziua," orice a fost doar de intrare. Deci, pentru moment, suntem de gând să faci asta, de fapt. Vom recrea că și De asemenea, adăuga unele mai multe funcționalități, face un pic mai mult cu el, vezi ceea ce este cu adevarat PHP capabil. Deci în primul rând, hai sa vorbim despre acest fișier, hello.php. Deci, dacă am mări-o puțin bit-- și acum eu sunt un fel de a încerca pentru a defila toate modul around-- acolo mergem. Veți vedea se numeste hello.php, dar sintaxa de ea arata ca un fișier HTML. Aceasta se datorează faptului că PHP reală în acest dosar este blocat toate acestea între Intrebare blocuri mark-caret. Totul aici este considerat cod PHP. Și veți observa că atunci când am făcut un comentariu, veți vedea familiar două înainte slash. Și dacă vei aminti, în HTML, dacă aș introduceți un comentariu, se pare ceva mai aproape de acest, care este un comentariu in HTML. Deci, într-adevăr tot ceea ce între aceste două paranteze unghiulare este acum cod PHP, care se reflectă în faptul că acest mic simbol comentariu este transformat într-un comentariu. Deci de fiecare dată când scrie cod PHP, chiar dacă nu există nici o Codul HTML in afara de ea, este întotdeauna o să fie închise în aceste paranteze unghiulare cu semne de întrebare. Puteți un fel de cred despre it-- cum toate din codul care a fugit în programele dumneavoastră C a fost închis într-un int principal, void, bretele buclat, scop declarație bretele buclat. Și veți vedea acolade în PHP, de asemenea, dar acest lucru este un fel de ca principala metodă de PHP. Deci, acum, cum facem ceva in PHP? Acum, PHP este un programare limbă pe care este foarte-C cum ar fi, dar funcționează pe web. Deci, un lucru pe care vei immediately-- unul din primele lucruri pe care le făcut într-adevăr cu C a fost ați imprimat lucruri, nu? Deci, în C am făcut asta cu o funcție printf. Am dat un șir de caractere, probabil cu o nouă linie, și apoi ne-am terminat cu punct și virgulă. Deci modul în care vom face acest lucru în PHP-- pentru ca nu este destul de printf. E un pic de sintaxă diferită. Modul în care ne imprima lucrurile în PHP este spunem, "ecou salut" sau "echo" orice cuvânt. Și că are efectul de a face printf cu un șir de caractere, "salut". Și se adaugă noua linie la ea. Deci, haideți să chiar acum face sure-- Voi micșora din nou un pic bit-- să asigurați-vă că codul este de lucru pentru că nu ar putea foarte bine să fie un bug în acest cod că va trebui să abordeze. Deci, serverul este deja în execuție. Deci, dacă ne-am derulați înapoi la partea de jos, Da, serverul este încă în desfășurare. Deci, dacă ne-am atingeți acest pic dreapta here-- welcome-- ar trebui să get-- mare. Noi încă sunt având familiar "Salută" dialog, dar când am tastați în "hi", vom vedea că textul "Hello" era într-adevăr imprimate, care este exact ca ne-am așteptat că ecou în PHP este la fel ca o declarație printf. Deci, înapoi la codul, cum în P set 6 a facut codul de distribuție vă sunt oferite face în așa fel încât ar fi PHP ieșire lucru care te tastat de pe ecranul anterior? Și la fel de a examina de ce se întâmplă acest lucru, suntem de gând să meargă în index.html, care este fișierul original, fișierul pe care apare pe acest ecran cu butonul "Salută". Ai observat că nu există toate lucrurile clasice am ajuns să ne așteptăm de la HTML, cum ar ca aceste lucruri, aceste tag-uri închise în paranteze unghiulare, cum ar fi PHP dar fără semnele de întrebare, ceea ce indică un lucru special pentru HTML. Avem titlu, care este "Hello". Și veți observa că așa cum am văzut, titlul este "hello" în ambele cazuri. Să schimbăm asta la "spune" așa ne-am ne putem distinge unde suntem. Dar avem un corp. Și apoi interesant pic, bit care apare în HTML, este acest element formă. Și astfel avem o formă. Și aceasta este cheia. Acesta este modul în care lucrăm cu PHP. Parametrul acțiune de Formularul spune că hello.php este ceea ce am de gând să trimită valorile din acest formular pentru a. Acest lucru este în cazul în care vom trece parametrii, ca să spunem așa. Veți observa un alt lucru aici este că metoda este "get". Există două primar metode prin care va fie folosind PHP pentru a trece de date între paginile web websites--, rather-- în această misiune. Și aceste metode sunt "get" și "post." Există unele subtile diferențele dintre get și post că vom primi into-- noi va "primi" în, dacă vrei. Dar pentru toate punctele de scopuri, pentru a primi și post sunt ambele doar moduri care treci parametrii cu ușor diferite executii. Pentru moment, vom folosi obține deoarece obține a fost ceea ce a fost folosit inițial în dosarul PHP P set 6. Și, de fapt, dacă mergem și uite înainte de a ne-am editat nimic altceva, Am de gând să te salut sa-- care e numele tău? Audiența: Elliot. SAM LEVATICH: Oh, Doamne. Nu știu cum se scrie asta. Ai putea să scrie asta pentru mine? Audiența: E-L-L-I-O-T. SAM LEVATICH: I-O-T? Audiența: Da. SAM LEVATICH: Perfect. BINE. Cred că am știut cum să scrie asta. Îmi pare rău pentru asta. Dar dacă spunem "salut," nu este nu va să apară pe ecran dar pentru că am modificat codul un pic. Dar dacă facem "Salută" - OK, deci "salut" este aici. Dar dacă luăm o mai strânsă uita-te la URL-ul în sine, vom vedea că se termină cu hello.php? name = Elliot. Deci, aceasta este o modalitate de comunicarea la pagina web următoare parametrii care le-am trecut. Am spus name = Elliot. Și asta e în cele din urmă modul în care P set 6 accesat variabila care am trecut în prin forma. Și acest lucru este ceva ce este specific la o cerere get. O cerere get face parametrii cunoscut în adresa URL a site-ului. Și veți aminti, de asemenea, în P set 6 pe care le a trebuit să scrie o funcție care sa ocupat de faptul că acest șir de interogare ar putea exista după un fișier. S-ar putea fi un semn de întrebare, urmată prin practic orice număr de caractere. Și asta este exact ceea ce se întâmplă aici. Și motivul pentru care a trebuit să analiza care în punerea în aplicare a dvs. server.c în P set 6 este astfel încât ai putea spune codul PHP care name = Elliot. Trebuia să fie în măsură să analiza că din URL-ul astfel încât fișierul PHP în cauză știa ce-a face cu. Deci sperăm că acest lucru dă motivația de a server.c Acum, că ne mișcăm pe in afara de C în PHP. Deci, haideți să se concentreze de fapt, pe accesarea lucrurile trecut printr-o cerere te acum in acest punct. Am de gând pentru a salva acest lucru. Nu am schimbat nimic. Se pare că avem un câmp de introducere. Ne stabilirea unor proprietăți, cum putem face o HTML. Acestea sunt lucruri simple. Nu avem nevoie de astea. Dar avem automată off, care, practic, says-- știți, atunci când tastați lucruri în web, uneori încearcă să umple că, în pentru tine. Deci, este un lucru frumos. Vrem să-l opriți în acest scop. Asta a fost o decizie CS50. Deci, putem sterge că, dacă ne-am dorit. Autofocus bastoane doar cursorul în formă dreapta de la început. Din nou, nu prea important. Dar name = "nume" - e un pic dificil, pentru că numele și numele. Dar am putea-am schimbat acest lucru altceva. Și, de fapt, asta e ceea ce vom face acum. Vom spune "persoană", care este un fel de cum ar fi numele Dacă o persoană este definită de numele lor. Așa că haideți să închidă acest lucru, redeschide up site-ul nostru deoarece serverul nostru este încă în desfășurare Apache 50, și vom spune, salut, aici este Elliot din nou. De ce nu? Alo. Și dacă mergem aici, vom vedea apoi în loc de numele = Elliot, se spune persoana = Elliot. Și că este un rezultat direct al faptului că ne-am schimbat doar numele = "persoană." Deci, într-un element de intrare a un formular HTML, câmpul Nume este identificatorul pentru parametru care a fi trecut. E ca și cum, dacă sunteți crearea unei funcții "add", care a avut, în două numere întregi și ai spus Int o și Int b. Asta ar fi un nume de, și în cazul în care ai vrut o altă formă, care putem face doar prin copierea și lipire, atunci am avea nume b. Deci, acum vom avea doi parametri care sunt transmise prin ajunge la website-- următor pagina web următoare, hello.php. Și putem vedea de fapt, că din nou, dacă vrem. Acesta este cel mai simplu mod de a face cu codul web în IDE, practic. Începi serverul, l de funcționare, iar apoi de fiecare dată când face unele modificări, doar aproape acest fișier doar pentru a fi în siguranță. Apăsarea butonului din spate este un pic cam complicat pentru că s-ar putea încărca un mai devreme versiune, nu cel mai actualizat. Și apoi doar să faceți clic butonul din nou, pop dreapta up-- oh, iar acum există două forme. Și astfel, dacă tastați un singur lucru în fiecare Unu "Hirshhorn Jason," pentru instance-- am salut. Ne uităm în sus la parametrii noastre. Se pare că avem, ca era de așteptat, a = b = Jason și Hirshhorn, care reprezintă cei doi parametri că am trecut la această funcție. Deci, acum sa trecem de fapt la punere în aplicare a funcționalitatea pe care le a avut în P set 6. Deci, acum suntem doar un ecou salut. Și asta nu e foarte util. Vrem să ecou unele variabile care a fost trecut la noi. Și știm numele acestei variabile. Avem o și am b. Deci, am putea alege să ecou nici unul. Dar cum putem accesa? Ei bine, există anumite variabile globale în PHP. Și am de gând să scrie le în comentariile de aici. Cele două cele mai importante sunt get și post pentru scopurile noastre, chiar acum. Acestea sunt tablouri sau, punct de vedere tehnic, dicționarele în cazul în care variabilele care suntem trecerea la următoarea pagină web live. Și vom vedea în curând cum să le folosească. Un alt notă scurtă despre codul PHP și unele specificul it-- în C, să declare o variabilă sau de a folosi variabile, ai avut mai întâi să le declare. Și ceea ce trebuia să faci, atunci când a declarat ei a fost spune int a sau char b. Trebuia să declare tipurile de acestea variabile înainte de a le crea. PHP-- nu aveți nevoie pentru a face orice de asta. PHP nu cere tipul de variabile. Și modul în care că a crea un variable-- destul de decât a spune Int, char, string-- care este într-adevăr char *, așa cum am know-- mai degrabă decât a face toate că, pentru că totul este de același tip, typeless, putem doar utiliza un caracter, care este semnul dolar. Și veți vedea că deja popping up, mici lucruri completare automată. Și se spune că _GET și _POST sunt două opțiuni pe care le au la dispoziție mie. Unele dintre aceste alte lucruri sunt alte variabile globale în PHP pe care le veți folosi pe cursul P set 7. Pentru moment vom se concentreze pe get și post. Dar aceasta este o util lucru pe care nu IDE în cazul în care odată ce ați tastat în acest semn dolar, acesta va începe completarea variabile globale sau variabile ai definit deja. Deci, dacă ai vrut să definiți o variabilă numită "string" ați putea stabili doar egal cu "hi". Și este practic la fel de simplu ca asta. Și apoi am putea face ceva de genul "$ string ecou." IDE ar trebui să fie aruncat unele erori dacă fac ceva greșit, deci sperăm că fac totul bine. Dar bug-uri sunt întotdeauna apar. Un alt lucru complicat despre PHP este că nu este compilat. Deci, cu programe C, v-ar face rutina de zi cu zi de-- practic, v-ar face modificări la codul, ai o salvați, și apoi v-ar face, în cazul în care marca a fost pasul care a chemat compilator, zăngăni, pentru a face codul, acest text fișier, într-un executabil. PHP este-C cum ar fi, dar este executat pe zbor de browser-ul Web. Deci, nu există nici o modalitate de a ști. Asigurați-ar arunca pe cei erori de ajutor, nu? Ar fi ca și cum, tu nu a declarat această variabilă înainte de ai încercat să-l folosească. Ai făcut toate astea segfault stuff-- rău, segfault, toate la fel de bine ori distracție care a venit cu make. PHP este un sabie cu două tăișuri pentru că nu va primi aceste erori, dar asta înseamnă și că nu veți ști într-adevăr ceea ce e în neregulă cu programul dacă doar a alerga și nu este de lucru. Dar depanatorul ar trebui să arate unele lucruri sperăm utile mici sintactic pe care le puteți repara. Deci, acum, dacă vom trece peste sa-- spun, să închide. Redeschide. Și ne-am întors aici. Deci avem o variabilă și o variabilă b. Și acestea nu vor în cele din urmă conta. Le vom suna h și g pentru nici un motiv special. Și am salut. Acum se pare ca șir nostru "hi" este într-adevăr de imprimare. Am creat o variabilă numită "string", a pus-o egală cu "hi". Observați că nu au de a face malloc sau să facă o matrice de caractere. În PHP, deoarece variabilele sunt typeless, un șir este la fel ca un char de toate punctele de vedere. Acest lucru ar putea fi "hi". Acest lucru ar putea fi doar caracterul k. Acest lucru poate fi un număr de 1. Și nu-i pasă. PHP nu-i pasă tipul de variabila. Sau, o face de ingrijire. Acesta îi pasă atunci când încercați și de a face lucruri cu el, dar nu-i pasa în etapa declarație. Și la fel ca tine poate în C, puteți declara siruri de caractere pe stiva ca aceasta deși spune "stack" este un pic bit de un potențial termen impropriu atunci când vorbim despre PHP. Dar noi nu trebuie să vă faceți griji despre asta. Deci ne-am string nostru "hi", și ne-am ecou șir. Deci, acum am discutat variabile. Deci, acum trebuie să vorbim despre get și posta și de a efectua lucrul final care este necesare pentru a obține într-adevăr această înapoi la funcționalitatea P set 6. Deci, acum suntem ecou șir, dar am au aceste variabile obține și post. Și pentru că suntem folosind metoda GET, aceasta pare firesc ca variabilă noastră că suntem interesati de, atât A și B, va fi amplasat în matrice sau dicționar, tehnic primi. Deci, dacă am înființat obține ca acest cu groups-- tău am apăsat intra și nu-i plăcea it-- dar aici avem minim. Și așa a obține există deja. Astfel încât să putem începe deja pentru a accesa unele dintre elementele de get. Dacă vom obține, această sintaxă pentru matrice în PHP este foarte-C cum ar fi. Avem cele două paranteze pătrate. Deci, dacă spunem obține într-o normală matrice, am putea avea acces la indicele zero, primul indice. PHP este indicele zero. Am putea spune zero, unu, chestii de genul asta two--. Și am spus că obține este punct de vedere tehnic un dicționar. Deci, ceea ce PHP face sub capota, care este un pic mai frumos decât C, este deja este oferindu-vă unele funcționalitate dicționar, care este într-adevăr tabele de dispersie, sau incearca sa, se presupune. Sau, punct de vedere tehnic ar putea fi o încercare, de asemenea. Dar PHP este punerea în aplicare a unui tabel hash, care formează un dicționar eficient. Și astfel noi știm numele variabilei noastre, nu? Este a fi trecut în șirul de interogare de PHP. Avem o = h și b = g în cazul în care și b sunt numele variabilelor. Deci modul în care putem accesa valoare care corespunde cheii în dicționarul nostru este doar prin a spune _GET_GET ["a"]. Deci, acum avem _GET ["a"]. Și dacă ne-am înlocui în interiorul ecou nostru, dacă ne-am echo _GET_GET ["a"] - și vom vedea dacă debugger aruncă orice erori despre asta: vom salva ca și închideți asta. Deschide-l. Deci, vom face doar un drept acum, asa ca nu ar trebui să conteze b. "ei" și "el" - "zumzet." "ei" și "hum". Suna bine. Și ea imprimate "ei", care este nebun. Dar asta este exact ceea ce se întâmpla în P set 6. Practic, ceea ce P set 6 a fost doing-- ecou salut, name-- unde a avut o nume de variabilă și doar vă cere să tastați în pic de text. Nu a fost, de asemenea, unele Cod adițional în cazul în care a inclus în cazul în declarații, pe care le putem face acum. Putem spune dacă există, care este o funcționalitate în PHP, _GET Cu subliniere, "nume" - care este, în principiu spune, "în cazul în care numele a fost completat", deoarece am fi putut pur și simplu clic pe butonul să prezinte formularul fără tastând ceva în acest domeniu. Și noi înveliți că în nostru acolade prietenos. Putem avea o declarație altceva. Și asta e tot în unghiul PHP suport, semn de întrebare, suport unghi, dacă vrei. Și acum vom vedea dacă funcționează. Tot de așteptare pentru ea pentru a depana și prostiile pe mine, practic, dar nu a fost încă. Poate că va acum pentru că am vorbit despre. Da. A făcut, de fapt,. Deci, nimic nu se afișează. Asta pentru că de ceva în neregulă că am scris în codul PHP. Și am menționat depanare este dificil, deoarece în PHP, am nu l-am compila în prealabil iar compilatorul nu a fost ca, aici e în cazul în care erorile sunt. Dar ce putem face este-- face oamenii isi amintesc cum sa se uite la diferite rețeaua solicită ca PHP-- sau site-uri web care trimite? [? Malin?] A făcut acest lucru în prelegere o dată sau de două ori. Îți amintești unde mergem pentru a găsi diferite datoriile și 200 OKS, toate aceste coduri care sunt trimise prin HTTP de pe pagina web la pagina web? Are cineva aminte în cazul în care mergem să facem asta? Audiența: Page Source. SAM LEVATICH: sursă Page. Exact. Dacă te duci la pagina Source-- perfect. Deci Page Source trage în sus inspectorul. Și eu sunt, folosind Safari. O mulțime dintre voi, probabil, va fi fie folosind Chrome sau Firefox. Dar, atâta timp cât ești în orice browser-- modernă și nu ezitați să urmeze de-a lungul, dacă doriți. Aveți posibilitatea să tastați această cod sau doar uita-te in interiorul setului P 6 director pentru unele chestii similare. hello.php este ceea ce suntem lucrează în prezent la emularea. Deci, există o varietate de file. Ne putem uita la toate resursele. Putem vedea codul sursă. Deci, se pare ca nu a obține corpul trecut în cele din urmă. Aceasta a constatat o eroare în PHP și oprit încărcarea paginii de web întreg. Noi nici măcar nu au un scop tag-ul pentru HTML sau ceva. Și dacă ne uităm la rețea, putem vedea că suntem a trimis o cerere. Acesta este domeniul. Aceasta este adresa. Este un document. Suntem folosind metoda get. Și e roșu. Sau, a fost roșu atunci când am nu a fost o selecție. Cum îl deselecta? Ei bine, a fost roșu. Lasă-mă să refresh. Acolo este. Acum e roșu. Deci e roșu, ceea ce înseamnă nu a reușit, ceea ce este rău. Așa că haideți să examinăm de ce a eșuat. Deci tot ce Page source poate practic vă spun este pe placul dvs. nu au de lucru, pe care putem vedea deja. Deci, în mod ideal, ar exista fi un instrument mai util. Și există unele extensii de browser care vă permit pentru a depana PHP, dar nu suntem de gând să fi scris o tona de PHP, așa că este, probabil, cel mai bun doar să se uite prin codul atenție și asigurați-vă doar că nu face nimic altceva. Deci, haideți să vedem dacă formatul acestui if este în cazul în care este problema. Vreau să încărcați înapoi aici. Salut bună. Deci, există o problemă acolo. Deci, pentru sintaxa corectă de PHP, PHP va să fi-C ca in că veți vedea bucle. Veți vedea dacă declarațiile. Veți vedea toate aceste prieteni că ai devenit familiar cu de-a lungul din acest semestru CS50. Dar cel mai bun mod de a da seama cum să face ceva în PHP este să-l pe Google sau să se uite la câteva exemple de cod PHP pentru că știi funcționalitatea. Știi ce poți face cu programul. Puteți buclă. Puteți buclă de câte ori doriți. Puteți buclă în toate felul de moduri diferite. Puteți crea funcții. Puteți crea funcții care apel alte funcții, funcții care se numesc. Și aveți nume pentru aceste concepte. Ai recursivitate, bucle, dacă, alte fluxuri de control. Și așa Google este cel mai bun prieten. Chiar spune, "în cazul în care PHP declarație "și nu va mai fi de tone de posturi cu răspunsuri la alte persoane care au avut întrebări similare cu tine, care sunt doar incepand cu PHP si sunt curiosi un lucru sintaxă. Pentru că avem luxul de a fi capabil să se uite la codul P set 6, am de fapt trage în sus și văd că OK, aici e ceva interesant. Deci, asta este ceea ce este de fapt arăta ca în P set 6. Deci, dacă trecem prin asta, putem vedea că ne-am Trebuie mai multe dintre aceste mici -PHP ca biți semn de întrebare. Și nu sunt acolade. Există două puncte. Și acolo sunt buclat bretele în PHP, dar acest lucru este un format și un mod de a face PHP, care funcționează bine cu HTML pentru că așa cum veți vedea, suntem de închidere off acestea PHP bits-- elses și IFS și toate that-- și apoi suntem interspersing HTML în interiorul lor în timp ce încă în urma fluxului de control stabilite de PHP. Deci, eu sunt doar de gând să plimbare rapida prin acest pentru că este o mulțime de aceeași concepte care făceam înainte. Avem dacă nu gol, paranteze, _GET_GET ["name"]. Acest lucru este cu aceleasi lucruri. Suntem folosind dicționarul _GET care PHP trimite la cerere de forme, deoarece este parametrii acțiune, iar metoda este minim. Și apoi care se termină asta. Colonul este un semnificant de a face acest lucru doar în cazul în care if se evaluează la true. E ca o acoladă. Și, de fapt, acesta este un bretele cret în alte limbi, cum ar fi Python, care s-ar putea întâlni, dacă doar face acest lucru pentru proiectul final. Și apoi această linie, salut. Apoi ne-am luat chestia asta ciudată. Avem mai multe paranteze. Nu e nici HTTP there-- sau PHP, îmi pare rău. Dar nu e un semn de egalitate. Și apoi ne-am o funcție, htmlspecialchars (_GEThtmlspecialchars (_GET ["name"]). Acest lucru este ca un fel de mai versiune avansată de ecou. Ca și cum am avut ecou, ​​ca o modalitate pentru a imprima lucruri în PHP. Aceasta este o funcție care este definite în PHP care se va ocupa de ceva mai mult urât caractere și valori octet care le-ar putea trece. Este întotdeauna mai sigur de a utiliza acest lucru. Dar ecou va face treaba bine dacă nu suntem care se ocupă cu ceva prea urât. Și așa mai departe acest lucru are același efect de practic, aceste lucruri în între întrebare mărci este evaluată de PHP. htmlspecialchars returnează un HTML frumos Valoarea imprimată a _GET_GET ["name"], adică orice am tastat in forma. Și apoi o să spun salut, spațiu virgulă, și apoi asta. Că toată chestia între paranteze unghiulare va fi înlocuit cu orice htmlspecialchars pune afară. Deci asta e, practic similare la ceea ce facem. Și avem o declarație altceva care este Bună ziua lume, ceea ce face sens. Deci, acum să ne întoarcem la nostru Codul și a vedea exactly-- oh. Am spus exista, care nu este un lucru pe care am vrut să facem. Am vrut să spun, nu gol. Și așa ar trebui să funcționeze această un pic pic mai bine, nu _GET_GET gol ["name"]. Și că bretele creț Meciuri că bretele creț. Avem acolade noastre buclat aici. ecou salut _GET ["name"]. Să vedem dacă funcționează un pic mai bine. Nu mai avem încă serverul nostru. Buna ziua Jason. Buna ziua Jason. Și a funcționat de data asta. Și așa că e o dovadă că, într-adevăr puteți utilizați acolade pe care le cunosc și dragoste în codul PHP în HTML. Codul PHP furnizate te în PSET 6-- PSET 6-- prevede o altă modalitate de face același lucru. Deci, acum avem puterea. Avem o functionalitate a pune în aplicare codul PHP pe care am văzut-o în PSET 6 de noi înșine, de fapt. Înainte de a muta pe, care sunt unele dintre cele mai întrebări pe care le au în acest moment? Da [neauzit]. Audiența: Deci, în versiunea în pset6, atunci când îl rulați, există un spațiu. Și pot vedea în cazul în care spațiul este după virgulă. [Inaudibil] start suportul deschis. Cum vă includă spațiul în modul în care a scris propriile coduri? SPEAKER: Aceasta este o întrebare bună. Și Să dai seama. Deci asta este o întrebare foarte bună și una care nu am lua în considerare. Dar să-l facem împreună. Deci primul rând, ceea ce Fac cu ecou este atunci când ne-am ecou salut, să emită salut. Dacă am ecou acum această ajunge pe o separat line, să examinăm ceea ce se întâmplă. Așa că am faceți clic pe acest lucru. Am tot spun, hi Jason. Deci, din nou, nu avem acest spațiu. Și asta pentru că, în PHP, atunci când ne-am ecou, indiferent cât de multe spaces-- nope, nu V-- indiferent cât de multe locuri de am pus în here-- dacă ne încărca acum că din nou, hi Jason. Da, vezi, toți cei spații fost mâncat. Și asta e ceva care funcția ecou face. Deci, pentru a avea grijă de în spațiul respectiv și acest lucru este unul dintre motivele de ce nu folosiți echo și utilizați htmlspecialchars loc. Sunt curios ce ar fi întâmpla dacă am făcut acest lucru în cazul în care ne-am închis un spațiu într-un șir. Nu sunt sigur ce sincer se va întâmpla atunci când fac acest lucru. Deci asta e un fel. Asta e un mod de a avea grijă de ea. Dacă ați înfășurați spațiul în un șir, apoi spațiul va fi redat bine de ecou. Cel mai sigur lucru de făcut este pentru a face htmlspecialchars. Asta e întotdeauna pariu sigur. Dar acum avem un mod de a face cu ecou, ​​dacă este necesar. Și într-un mod similar, putem ecou noi linii, toate fel de lucruri esti familiarizat faci în PHP. Oricine altcineva, care sunt mai întrebări pe care alte persoane au în acest moment despre PHP? Dacă oamenii au venit un pic mai târziu, Sunt fericit să rămână după un pic și vorbesc despre unele dintre început. Și este, de asemenea, toate livestreamed, și arhivate, care este nebun. Oricum, asa ca acum să facem unele mai multe lucruri avansate cu PHP. Și unul dintre cele mai vechi lucruri pe care le au fost introduse în C a fost pentru bucle. Și PHP are o mult mai puternic pentru buclă numit bucla foreach. Si se pare ca asta: pentru fiecare gol ca paranteze goale, buclat, face ceea ce trebuie. Deci, aceasta este de fapt o prescurtare. Vezi, FOR bucla ca un construcție sintactică a fost conceput în C și în asamblare limbă și alte lucruri asemănătoare. Conceput în C, exact, ca o prescurtare pentru o mulțime de tipuri de bucle că oamenii ar vedea. Ca atunci când ai scris o buclă, acolo fost de multe ori un pas de inițializare executat chiar de la început, A stare în care bucla ar stop-- și asta e caracteristica că e doar într-o buclă în timp ce, sau că un timp are exact doar că feature-- și apoi un pas incrementare la sfârșitul anului. Și așa te-ai găsi de multe ori te scrierea de cod, cum ar fi următoarele. Am de gând să șteargă o parte din aceasta. Dar dacă suntem iterarea prin caractere într-o matrice, de exemplu, cum ar fi ne-am primit o serie de caractere. Îmi pare rău pentru a aduce înapoi C. Știu, ai crezut că ai terminat. Dar e numai în scopul de PHP învățare, promit. Deci, dacă ai o Str char de lungime 8, și să spun că spune Hellooo cu un nul la final. Mare, așa că e șir nostru. Și apoi am avut o buclă pentru. Avem int i este egal cu 0. Și vrem să ieși când str I nu este egal egal cu NULL, pentru că am ieși atunci când este egal cu zero. Și apoi vom face i ++ la fiecare punct din bucla for. A face ceva cu str de i. Deci, formula de bază a fost, am avut această matrice pe care le a vrut să trateze ca elemente separate. Dar ceea ce am avut de a face este de a trebuit să de fapt a crea un întreg separat variabilă care a fost de numărare în fiecare timp am trecut prin bucla. Și apoi ne-ar trebui apoi să sunați strstr [i], atunci când ceea ce ne vrut să fac este doar du-te de caractere de caracter, nu? Noi nu vrem să incrementa un întreg și apoi utilizați ca întreg pentru a accesa fiecare caracter individual. Ne dorim cu adevărat caracter cu caracter. Și astfel pentru fiecare inteligent calculează că pentru noi. Dacă avem o matrice, care putem declara în PHP ca și doar-- dacă avem o variabilă numit, să o numim matrice. Miracolele nu dactilografiere, e la fel ca orice altă variabilă. E doar o serie. Și avem un pic de [neauzit] ca 1, 2, 3, doar un fel de matrice inițializată. E în regulă, nu-i place foreach meu. Dar dacă facem foreach-- de fapt Am scris că un pic greșit. Există două moduri de a face o buclă foreach. Nu e sintaxa în și ca sintaxa. Și am de gând să faci în primul sintaxă, nu ca. Asta e greșeala mea. Num Deci foreach în matrice, ecou num. Și PHP este striga la mă pentru un motiv oarecare. E găsirea unui neașteptat în ceva, care este un pic de o deranjez. Dar vom da seama de ce este într-un moment. Deci, nu așa. Să încercați să utilizați ca. Preferă SA sintaxa este pare. Deci, hai sa facem matrice foreach ca num. Deci, un pic explicație de ce sa întâmplat este ca sintaxa este saying-- bine în primul rând, să ne uităm la ceea ce imprimă asta. Așa că ne-am deschide IDE nostru. Mergem aici. Noi spunem, Buna ziua Jason. Și a făcut-123, care au fost conținutul din matrice pe care am creat până sus. Deci, scufundări în această buclă foreach, avem o gamă variabilă numită care este o matrice de trei numere. Și apoi facem foreach matrice ca num, ecou num. Și asta e mai mult intuitiv decât un pentru lop. Noi spunem, tratarea fiecare lucrurile din matrice ca num, Vreau să-mi dai num. Și asta e exact ceea ce face. PHP este calcularea atunci când spui foreach matrice, și ai de a face cu o serie, ce ai de gând să doriți să repeta peste este personajele din care matrice, este int în care matrice, este elementele din care matrice. Și este permițându-vă să stocați aceste variabile ca num, și num apoi doar de ieșire imediat, mai degrabă decât a spune, Am o variabilă numită I, și apoi vreau să ieșire strstr [i]. Și pentru ca ne permite de a face lucruri interesante. Ca practic nu avem de a crea aceste variabile, cum ar fi i lui și de a face toate chestia asta incrementare la sfârșitul anului. PHP are grija de toate acestea pentru tine. Deci, acum hai sa vorbim despre foreach ca se aplică dicționarul nostru _GET. Deci, vom comenta asta repede. Deci avem oferta noastră _GET. Avem această variabilă. Și are niște chestii în ea. Chiar acum, avem doar o variabilă fiind trecut la acesta, care este numele. Dar dacă ne apăsați Enter, acum putem avea două variabile. Putem avea nume și vârstă, de exemplu, dacă vrem să ajungem la vârsta și, de asemenea numele unei persoane, destul de umor. Deci, acum _GET va fi un Dicționar cu două elemente, cu două perechi de valori-cheie. Și primul key-- am de gând să scrie aceasta pe placa prea. Avem dicționarul nostru este _GET. Îmi pare rău, e un pic mai greu este de a vedea. Dar în interior dicționarul nostru avem nume, care va fi ceva că suntem dat. Și vom avea de vârstă, care este de asemenea O să fie ceva ce ne dat. Și aceasta este în întregime de dicționarul nostru. Așa că are două elemente în ea. Și așa că foreach bucle sunt inteligente, ne-am ar putea crede, și în mod corect ar putea crede că foreach poate repeta prin această Dicționar, imprimarea Valorile date de nume și vârstă. Deci, hai sa, de fapt, a face doar asta. Să construi o buclă foreach. Și am de gând să fac pentru ca _GET. Și am de gând să facă următoarele. Deci, haideți să vedem ce se întâmplă dacă am de tip doar cuvânt, și apoi spuneți cuvântul ecou. Vom de asemenea, va ecou o nouă linie doar pentru a face un pic mai clar, ce se intampla. Deci, să vedem. Nu mă da orice erori. Și vom închide această. Pe site-ul nostru, ai de gând să face o mulțime de care pe parcursul pset7. Deci, noi spunem numele meu este Sam. Varsta mea este de 45. Nu e. Dar se imprimă în, cum era de așteptat, Sam 45. Și așa veți observa că ce bucla foreach did-- aici, să ne întoarcem la faptul că atât este de până pe board-- ne _GET ca cuvânt. Și erau patru lucruri în _GET. Dar imprimate doar două lucruri. foreach, fiind de sine sa inteligență, presupus că ceea ce ne-am dorit cu adevarat a fost valorile, nu cheile. Dar există o modalitate pe care am putea imprima în cheile la fel de bine, în cazul în care am vrut să. Dacă am vrut să știu, de asemenea, ceea ce Aceste variabile au fost numite, există o cale pe care le pot accesa aceasta, de asemenea. Și modul de a fel de face acest lucru, astfel încât putem spune, într-adevăr vă permite împărțit-o în perechi valoare-cheie. Deci, haideți să vedem ce se întâmplă acum. Deci avem cheie. Avem valoare. Avem un alt nou linie pentru lizibilitate. Și să vedem ce se întâmplă atunci când facem acest lucru acum. Nu știu câți ani Jason este. Jason 15. Deci avem nume Jason, vârsta de 15 ani. Asa ca am fost capabili de a accesa cheia și perechi de valori al acestui dicționar doar prin a spune puncte-cheie pentru a valoare. Și asta e un sintactic foreach bit de zahăr care permite te pentru a accesa lucrurile în dicționar. Deci sperăm că acest tip de subliniază puterea bucla foreach. Puteți destul de mult aruncare ceva care iterable pare, ca ceva care are mai multe elemente precum un tablou, ca un dictionary-- cele două lucruri primare veți fi de lucru cu atât în ​​viața și în PSET 7. Astfel încât să puteți arunca lucrurile care la ea, și va da seama ceea ce vrei sa faci cu ea. Va spun, OK, am de gând pentru a obține aceste lucruri de la datele pe care a fost trecut la mine. Și asta e ceva ce esti va fi folosind o mulțime de în PSET 7. Am de gând pentru a defila rapid jos doar pentru a vedea în cazul în care eu sunt la. Oamenii au întrebări în acest moment? Întrebări la toate? Da? Audiența: Deci, cu cheia și valoarea, ai putea numi o altceva și ar lucra în continuare? Vorbitor: Hopa. Wow, am șters totul întreaga linie. Buna treaba. Deci, un, un. Cheie și valoare nu este doar o convenție. Este util. V-ar lua unele de design puncte, poate unele puncte de stil pentru a face asta, pentru că transmite într-adevăr intenția. Dar noi spunem o și yarp. Audiența: Nu trebuie să schimba nimic în fișierul HTML în scopul de a reflecta faptul că? Vorbitor: Deloc. Audiența: Și doar știe că din cauza egali mare than-- Vorbitor: Da. Audiența: indicator --that care that's-- Vorbitor: Da. Aceasta este o sintaxă foreach, dar da. Audiența: Nu sunt tipuri. Și ce dacă ai vrut vârstă pentru a fi doar un număr? Există o modalitate de a face asta? Vorbitor: Există modalități de a verifica dacă variabile sunt conforme cu anumite tipuri. Deci, PHP solicită un pic mai mult de la vă că nu există tipuri în. Unele moduri se cere mai puțin. În unele feluri cere mai mult. Pentru că, dacă aveți doar ceva într-o variabilă, nu ai nici o idee despre ce tip este. Dar dacă sunteți inteligent despre variabilele pe care le atribui tipuri de și asigurați-vă care funcționează numai tu return-- doresc funcții numai de retur un singur tip de valoare, astfel pe care le puteți practic se așteaptă ca variabila te întorci dintr-o funcție va fi de tipul care credeți că va fi, practic. Dar există unele metode prin care puteți verifica. Nu-mi amintesc să le pe partea de sus a capului meu. Sunt de așteptare pentru ea pentru a porni albastru. isint? isstr? Există metode construit în PHP care poate verificați tipul de variabile pentru tine. Dar, dacă atribuiți variabile inteligent, nu ar trebui Trebuie să faci asta prea mult în PSET 7. Dar există aceste metode. Și asta e ceva care este în limba sine. Și nu-mi amintesc sintaxa exactă. Chiar am putea privi în sus. Dar timpul este de esenta. au Are altcineva aveți orice întrebări? Da. Audiența: Am doar una mai mult. Deci ați menționat metoda GET, dar nu a menționat metoda POST. Ne întoarce la asta? Vorbitor: Da, vom se întoarce la asta. Asta e exact ceea ce căutam la telefonul meu, care acum a adormit, dar voi găsi. Doar asigurându-vă am lovit toate notele PHP. Da, nu e nici o versiune de depanare. Da, avem câteva mai multe lucruri pe care vrem să facem acum în acest moment. Deci, vorbim despre POST, care le-ați menționat, singura diferență între GET și POST este că, atunci când ne-am uitat amintesc la acest URL și am văzut, oh, Numele este egal cu un egal și de vârstă yarp sunt chiar în URL-ul acolo pentru noi. POST este un pic mai secretos cu trecerea sa de informații. Deci, dacă nu doriți un utilizator să știe, de exemplu, ai nu a vrut numele de utilizator și parola persoanei conectat în prezent în a fi afișate în URL-ul, care este un lucru rezonabil nu vrea în URL-ul, pentru că cineva poate vedea. În cazul în care link-ul pe cineva să o pagină, Nu vreau URL lor tencuite acolo, pentru că ar permite oamenilor să te autentifici doar cu lipire de un URL în loc de fapt, completarea unui formular. POST este un pic mai mult secretos. Și singurele lucruri pe care va trebui să se schimbe sunt această metodă, schimbare de la a ajunge la posta. Și apoi în interiorul HTTP, în loc de accesare a _GET matrice, vom accesa _POST matrice. Și vom observa că, în cazul în care ne deschide acest înapoi din nou, Jason scade încet în vârstă. nume Jason, varsta de 14 ani. Aceleasi lucruri apare. Dar noi mergem la URL-ul și aceste variabile nu sunt acolo. Și modul în care POST passes-- astfel amintesc cum sa se uite la sursa unei pagini. Mergem la rețea. Am refresh. Și acesta este un alt lucru care POST va da avertismente despre. S-ar putea fi văzut o cutie, un text caseta așa în browser. Ești sigur ca vrei pentru a trimite un formular nou? POST este ce se trimite aceste forme. Pentru că, practic, în cazul în care te-a trimis dvs. informațiile cărții de credit cu cineva, că nu se va afișa în URL-ul. Asta va fi o cerere POST. Deci, atunci când încărcarea paginii, este retrimiterea acestei cereri post. Deci, acum vrem să trimiteți forma din nou, pentru că nu va pentru a crea orice achiziții duplicat. Și vom observa că aici, metoda folosim este POST. Și a făcut-transfere într-adevăr bytes. Se transferă 401 dintre ele. Programul destul de mici. Dar există nicăieri pe care putem vedea valorile care sunt trecute. Paginile web se pot vedea, dar noi, ca utilizatorii nu sunt capabili de a vedea, daca nu esti un hacker. Daca esti un hacker bun, poti sa te uiti. Dacă știți de bază formatul HTML, valorile vor face cunoscute în paginile. Veți putea vedea. Valorile vor fi acolo, sunt doar un pic mai puțin evidente pentru tine de acces, de fapt. Avem mai întrebări despre GET, POST before-- ce vom face în continuare este, de fapt uita-te la o parte din codul pe care le dai în PSET 7, vorbesc despre modul în care folosește unele dintre aceste concepte, și vorbesc despre lucruri pe care aveți de gând pentru a avea de a face un pic de PSET 7. Orice mai multe întrebări înainte de asta? Mai multe întrebări voi avea? Grozav. Bine, să ne uităm un pic la PSET 7, fără îndoială ceea ce ești toate mai entuziasmat. Adică, acest lucru este ceva care David trece printr-un pic. Dar vom avea trei directoare de la top, precum și un fișier de configurare. Asta e pentru baze de date, pe care le vom vorbesc despre în aproximativ cinci minute. Include, niciodată nu trebuie să se uite în acest director dacă nu doriți să, dar e frumos să știu că există tot felul de ajutoare. Helpers este ca funcții utile. Și apoi ne-am config, care stabilește niște chestii. Există unele funcții care CS50 are scris că sunt în ajutor și de configurare. Și o parte din PHP care iese deja în fișiere va face o mulțime de mai fel munca picior de obtuz pentru tine. Cum ar fi dacă vom merge în publice login.php, care este ceea ce apare drept atunci când te duci în PSET 7. Vom vedea că nu există acest necesită declarație. Și la fel de bine ca un ascuțit includ, hashtag includ dacă ești dintr-o generație mai nouă. Dar acest principiu spune că am nevoie de acces pentru toate funcțiile din config.php. Și ai putea avea o cere pentru tot felul de alte lucruri. config cere de fapt ajutoare. Deci ori de câte ori aveți nevoie de config, esti, de asemenea, inclusiv sau care necesită ajutoare de asemenea. Deci, care vă oferă acces la toate funcții misto că vom utiliza, de lucruri ca face. Sunt de fapt de gând să ușura acest jos un pic. Deci funcția atunci suntem de gând să meargă prin chiar înainte de a trece la SQL un pic bit este funcția login.php, doar deoarece foloseste unele dintre subiectele care tocmai am vorbit despre în PHP. Veți vedea primul lucru este în cazul în care $ _SERVER. Aceasta este o altă variabilă globală, care ai de gând să se ocupe cu. E ca si cum _GET și _POST, dar ceea ce serverul conține este aceasta puteți lăsa știu dacă metoda cerere a fost un GET sau POST un. Ca anterior ce făceam este doar în codul nostru că am scris, am fost doar schimbarea să fie GET și POST în funcție de ceea ce are HTML. Dar există pagini care pot fi accesate cu ambele tipuri de cereri. Și s-ar putea doriți să faceți lucruri diferite, în funcție de tipul de solicitare, la fel ca de conectare nu. Astfel încât să puteți verifica această cerere Metoda prin chei accesarea, prin utilizarea unei chei și obtinerea de Valoarea de ceva în dicționar _SERVER. Deci asta e altă global variabila ca _GET și _POST. În cazul în care mergem, vrem să face formularul de conectare. Render este o funcție care, practic, doar pune până corespunzător HTML și trece-l unor parametri. Acest titlu este un parametru care este folosit în afișarea, destul de ciudat, titlul paginii în întrebare, lucru aici, spune sau salut în exemplul anterior. Acum avem un lucru diferit. Altfel, dacă e POST, am face alte lucruri. Suntem folosind această metodă gol. Nu e exista, e gol. Și am văzut mai înainte, PHP are o valoare justă de construit în metode care David will--, dacă există sunt metode care sunt utile pentru tine, acestea vor fi avertizate cu privire la tine în plimbare prin care David dă la imaginea de ansamblu început, și, de asemenea, de biți utile Zamyla lui. Sa întors toată lumea. Ne putem bucura toți. cer scuze este o funcție bună dreptate numit care tocmai practic imprimă unele mesaje de eroare, pentru că CS50 este foarte politicos. Și acum aceasta, acest lucru este o pic dificil, deoarece aceasta este locul unde ne interogarea bazei de date. Acum, nu am vorbit despre baze de date. Și vom în următorul cinci minute sau cam asa ceva, maxim. Dar aceasta este o funcție care a scris CS50 pentru a obține o masă de fapt de la o bază de date că lucrăm cu în PSET 7. Sunt foarte rău cu meu zero, indexare astăzi. Dar da, este de 7. Deci interogare se va returna o matrice, practic este bitul cheie. Și pentru că aceste lucruri nu au dactilografiere, astfel încât rândurile este o serie de tablouri. Pentru că atunci când ne gândim despre o masă, ceea ce am de gând să faci este, așa cum ați învățat în psets cum ar fi jocul de 15, oricum în cazul în care ați avut de a utiliza un dublu matrice, noi practic au serie de alte matrice face o masă. Și le-ați luat rânduri și coloane. Și apoi le puteți accesa ca [0] [1], veți obține [0] [1]. Chestii de bază de genul asta. Deci ce facem aici, în această funcție, cerem în baza de date în cazul în care utilizatorul care este încercând să login, care va fi trimise prin metoda POST. Vom vedea primim numele de utilizator de la _POST. Vor au trimis, utilizatorul sau, va trimite o valoare printr-un formular prin POST, deoarece este numele de utilizator și parola chestii. Verificăm numele de utilizator pentru a vedea, este acest lucru în masă? Pentru că dacă un utilizator este de logare în, apoi numele de utilizator ar trebui să fie stocate în tabelul de Utilizatorii care există pentru site-ul. Deci, practic, dacă utilizator este în baza de date, interogare este de gând să se întoarcă că rând, ceea ce este o matrice. Dar partea complicat este că, dacă chiar dacă dublu matrice este doar de un singur rând, chiar dacă este un rând unul array-- ca ai basically-- dacă ai o dimensiune un singur element care ține o altă matrice, sunteți cu adevărat de-a face cu o coloană. Dar este încă tratată ca o gamă dublu. Și acest lucru este în cazul în care se poate obține uneori complicat, pentru că avem rânduri aici. Variabila noastră este rânduri. Și apoi vom crea o variabilă numită nou rând și stabilirea egală cu primul rând de rânduri. Și veți observa că în comentariu spune că e prima si singura rând. Deci, acesta este complicat Partea unde acum funcții poate reveni tablouri foarte usor. Nu e mallocs. Nu veți vedea mallocs. Astfel încât nu veți vedea greșelile SEG. Dar funcții vor fi în continuare trece în jurul valorii de tablouri și date în grupuri. Și trebuie să se abtine de la ceea ce exact funcțiile vor reveni. Și chiar dacă e un coloană de acest fel, interogare este încă de gând să se întoarcă o gamă dublu. Deci, pentru a acces pe care column-- sau puteți gândi la toate acestea ca inversat deoarece vorbim despre rânduri. Dar pentru a accesa un rând, nu se poate spune doar rânduri. Chiar dacă este un singur rând, trebuie să Nu rowsrows [0] pentru a elimina acest tip de bit exterior de matrice și au doar dvs. un rând. Face alte lucruri. Există o funcție de numit password_verify care verifică parolă care a fost postat. Și apoi vom vedea un alt nivel mondial variabilă aici, _SESSION. Practic id sesiune este modul în care să urmăriți de cazul în care cineva este logat sau nu. Deci, chiar acum cu login.php, suntem logare utilizator în. Deci, ceea ce vrem să facem este să ne-o dorim spune id-ul de sesiune este egal cu rândul id, ceea ce face sens, deoarece doar fiecare rând va avea un ID diferit Numărul ca parte a mesei. Vom intra în SQL într-un în al doilea rând, așa că, dacă toate astea pare un pic ca bla, atunci totul va fi clarificat. Dar vom pentru a seta ID-ul egal cu lucrul propriu-zis, de logare utilizator în. Cer scuze dacă ceva nu merge bine. Și acesta este scopul în datele de conectare viata ca profesor Malan ar spune. Astfel că a fost login.php. Și o mulțime de cod PHP a scrie în PSET 7, vor fi un pic. Nu uitați să chmod la permisiunile corespunzătoare. Nu va fi un pic despre că la începutul spec. Dar PHP ca esti scris va fi face lucruri care este similară cu aceasta. Vei fi accesarea unele lucruri care sunt date pentru a tine in variabile globale de PHP care de-a face cu curent autentificat de utilizare, dacă există au cereri fost trimisa la aceasta pagină, lucruri diferite, cum ar fi asta. Și va fi, de asemenea, potențial iterarea prin rânduri de chestia asta. Într-o funcție diferită, de interogare se întoarce această matrice dublu. Și dacă există mai multe mult de un rânduri în ea, Dacă există are-- Da, dacă există sunt mai mult de un rânduri în ea, atunci acesta va fi un tabel. Și s-ar putea dori să repeta prin rândurile de această matrice folosind bucla foreach care am descris. Deci, dacă tu a face foreach pe un dublu matrice, ceea ce va word-- aici, Voi scrie de fapt. Voi scrie repede aici. Dacă avem o foreach de rânduri ca rând, ceea ce este tipul de rând? Stie cineva? Ai inteles? Deci rânduri este o matrice dublu. Deci, ceea ce se va deduce foreach pe care le doresc de la această matrice dublă dacă suntem iterarea peste ea? Putem presupune că practic se va fi fie elemente, sau rânduri, sau coloane, practic. Și astfel rânduri și coloane noi poate trata ca acelasi lucru. Practic ceea ce bucla foreach se întâmplă să faci este sa mergi pentru a reveni rânduri. rând va fi de tip rând, întrucât rânduri este o matrice dublu. Deci, dacă da foreach o gamă dublu, e nu se va repeta mai mult de un nivel profund. Care este de fapt de a spune dacă există sunt opt ​​celule în acest table-- 1,2, 3 4, 5, 6, 7, 8-- foreach bucla nu este va trece prin fiecare dintre aceste celule. Ce bucla foreach va face a fost ea va trece prin acest rând, vă dau acest rând întreg. Și apoi o să treacă prin acel rând. Așa că reiterează un singur nivel profund. Dacă adăugați un imbricate foreach bucla, atunci poate trata fiecare rând sa întors de la rânduri, faceți foreach rând ca element de, sa spunem. Și atunci ai putea ecou elementul. Așa că e un scurt puțin de perfecționare cu privire la modul s-ar putea să utilizați foreach buclele în contextul de interogare. Există întrebări cu privire PHP? Orice de la toate înainte de a ne trece la a vorbi despre SQL și de distracție de baze de date? Senzație de bine? Senzație de bine. In regula. Să trecem mai departe înapoi la PowerPoint, care, probabil, ți-e dor. SQL, yay. Oamenii care sunt în secțiunea mea de obicei va ști că subpozițiile de acronime sunt întotdeauna doar primele cuvinte Cred că de meci care algorithm-- că acronim. Nu este un algoritm. Deci, SQL este o bază de date. Este un limbaj care lucreaza cu baze de date. Și toate bazele de date sunt este mese, cel puțin în modul care SQL le reprezintă. Un alt mod de a gândi despre baze de date este bazele de date sunt un set de chei și valori practic. Vă puteți gândi la o bază de date ca un dicționar și, de asemenea, ca o masă. Practic e un mod de a asocia diferite date cu alte date, de multe ori prin rânduri și coloane. Și asta este modul în care asta e SQL funcționează cel mai bine. Deci aceasta este un exemplu de tabelă. Am câteva exemple de oameni din secțiunea mea, care Nu am avut timp pentru a schimba. Dar avem lucruri, cum ar fi ID-ul, Numele, superputere, și orașul natal. Nu știu unde e cineva din punctul meu, așa că am de gând să-și asume doar toată lumea e de la New York Oraș pentru că am o mare statistic probabilitatea de a fi corecte. SQL va avea în mod automat de îngrijire a coloanei de identitate pentru tine. Dacă introduceți un rând nou într-o bază de date SQL, se va incrementa că Număr de identificare și doar practic lipi ca cinci nume, superputere, orașul natal, oricine pe capătul a tabelului. Deci, ID este o coloană vei nu trebuie să vă faceți griji cu privire la. Dar, ca și în cazul de login.php, atunci când am au fost obtinerea de ID-ul de sesiune de la o masă și folosind doar ID-ul, ID-ul este o modalitate de a identifica în mod unic un element de o bază de date. Deci, dacă am avut două Sams, atât de care a învățat CS50, și atât de care au fost de la Milwaukee, acestea ar încă mai au numerele de identificare distincte și, astfel, să fie distinct în contextul tabelului. Deci, asta este ceea ce SQL se ocupă cu, de lucru cu în cele din urmă înapoi. Acum, acestea sunt cele patru comenzi că veți avea nevoie pentru a lucra cu SQL. Și le-am aruncat pe un diapozitiv. Dar vom trece prin le pe toate în mod individual. Prima comandă este UPDATE, care face ceea ce s-ar putea aștepta. Să presupunem că aveți unele date în tabelul care este de actualitate. Cum ar fi dacă ai ține evidența numele oamenilor și vârstele, dacă cineva e creșteri de vârstă, apoi ai de gând să vreau să merg în și actualiza vârstă doar acelei persoane. Pentru un exemplu, care funcționează cu primul nostru table-- nu vă faceți griji despre scris toate aceste comenzi în același timp. Dar dacă ai de actualizare jos, care va fi bun pentru această parte, pentru că am de gând să du-te înapoi la masa. Deci, dacă ne întoarcem la masa, să spunem ceva ce sa întâmplat a fost a fost un cutremur sau o falie care împărțit în mod direct prin New York City. Si am vrut sa actualizeze toată lumea care a trăit în New York City. Acestea toate au avut să se mute în Pennsylvania. Asta nu e un natal. Acestea toate au avut să se mute la New Haven. Nu mergem. Astfel încât toată lumea în New York se mută la New Haven. Și așa că e ceva care este editarea trei rânduri din acest tabel. Dar, în SQL, puteți face că într-o singură declarație. Deci ne întoarcem la UPDATE. Lasă-mă să ștergeți rapid aceasta placa din nou. Când vorbim despre actualizarea, există câteva părți ale sintaxa care sunt esențiale. Ei bine, toate de sintaxa este cheia. Dar lucrurile verde este opțională. Sunt necesare alb, nume predefinite, cum ar fi. Și albastru de lumină sunt lucruri care variază în funcție de masa. Deci, asta e ceea ce se întâmplă cu schema de culori aici, acolo. Deci, dacă vrem să actualizați doar acele rânduri de oameni care trăiesc în New York, Deci, ce ne-ar face dacă am spus UPDATE? Deci tabel este locul unde am pus numele masa noastră. Să spunem doar numele de masa noastră este de masă unul. Deci, vrem să UPDATE masă o. Și vrem să set-- ceea ce vrem să setați? Ei bine, vrem să spunem, așa PHP column-- tratează rânduri ca identificatori unici. Și apoi coloanele sunt diferite domenii acelor elemente ale bazei de date. Deci primul element al bazei de date are un nume de Sam, superputere a CS50, și un orașul natal de Milwaukee. Deci, dacă ne-am spus stabilit, să ne uităm la parametrii din nou acel set ia. Avem coloana este egal cu valoarea. Deci, vrem să spunem ceva column-- care amintesc este un field-- vrem să vedem o câmp egal cu ceva nou. Deci, dacă ne-am spus actualizare Tabelul 1, setați numele egal Elliot. A lua niște oameni de la noua sectiune pe acest. Dar dacă ne-am făcut-o actualizare de masă 1 set nume egal Elliot, ceea ce ar fi aspectul de masă ca după asta? Oamenii au nici o idee? Da. Audiența: Totul în care rând ar deveni Elliot. Vorbitor: Totul în care rând? Audiența: în primul rând. Vorbitor: în primul rând? De ce primul rând? Nu vreau să iau de tine. Audiența: Poate totul în întreaga masă? Vorbitor: Totul în întreaga masă, da. Și asta e exact dreptate because-- a fost doar ajutat un pic there-- pentru că am omis clauza WHERE opțional. Dacă nu aveți WHERE clauză, ceea ce se va face această comandă este că va lucra cu fiecare singur rând în tabel. Numele tuturor vor devin Elliott, practic, care Elliot este foarte fericit despre. Sau Yanni, unul dintre cei doi. Dar numele tuturor se va schimba. Deci modul în care folosi WHERE clause-- și acest lucru se aplică la toate Wheres care sunt în fiecare din aceste lucruri diferite. Deci, veți observa că SET are coloana valoare egală. Și așa nu unde. Dar acestea sunt diferite tipuri de declarații. Deci coloana este egal cu valoarea în SET este în misiune. Ca și cum ne-am spunem vrem pentru a seta numele egală cu Elliot. Dar, în cazul în care clauzele, acestea sunt declarații de egalitate. Deci, să spunem că am vrut doar pentru a schimba numele persoanei de a Elliot în cazul în care numele lor a fost Ryan, să spunem. Asa ca atunci cand spunem UNDE nume este egal cu Ryan, care ar numai cu succes o schimbare name-- aceasta ar fi doar modificați câmpul nume în rânduri în cazul în care câmpul nume este egal cu Ryan. Deci, dacă am avea mai multe persoane numit Ryan, toate numele lor ar schimba la Elliot. Acest lucru este similar cu exemplul de cazul în care o falie desparte New York City și toată lumea trebuie să muta la New Haven, modul în care putem face acest lucru într-un afirmație este UPDATE Tabelul 1 SET orașul natal = New Haven în cazul în care orașul natal este egal cu New York City. Aceasta este puterea de declarația UPDATE. Putem selecta orice număr de rânduri prin declarații adevărate despre domeniile în aceste rânduri. Nu putem spune set UPDATE tabelul 1 name = Elliot WHERE rândul = 1, cu excepția faptului că putem, dacă spunem ID = 1. Deci vom fi de lucru cu egalitate de domenii, de egalitate de coloane. Dar, cu ajutorul câmpul ID este o modalitate de a selectați rânduri individuale specific, deoarece câmpul ID este o unică identificator într-o bază de date SQL. Deci, ca actualizarea rând o, ID este egal cu 1. Actualizarea rând două, doar schimba respectivul număr de identificare. Dar puterea UNDE declarație este că noi pot actualiza lucruri bazat pe ceea ce lor valorile curente de anumite lucruri sunt. Da Elliot? Audiența: Și dacă vrei sa-- din nou, aceasta este o altă întrebare. Dar prima mea întrebare a fost, în cazul în care se întâmplă acest lucru? Unde mă actualizarea asta? Este într-un cod PHP? Vorbitor: În cazul în care vă actualizați, da. Vom vorbi despre unde toate acestea se întâmplă fel de dată vom merge prin toate comenzile. Dar ceea ce trebuie să știu acum este de fapt că baza de date SQL există ca ceva să fie accesate prin interogarea funcție, care definește CS50. Deci, dacă utilizați funcția de interogare, puteți accesa acest tabel. Deci, va fi trimiterea de acestea Comenzi la masa dumneavoastră în fișiere PHP prin funcția de interogare. De asemenea, poți să te joci în jurul valorii de cu masa direct. Și asta e cel mai bun mod de a testa aceste tipuri de comenzi. Și vom trece prin exact cum a face acest lucru în doar un pic. Deci asta e comanda UPDATE. Și restul comenzilor vor fi un fel de similare, de lucru pe lucruri similare. INSERT INTO este, probabil, cel mai diferit de UPDATE. Am de gând să plece că acolo pentru doar un pic de lucru și aici. Deci INSERT INTO, veți vedea acest tabel este în continuare la fel. Vrei să INSERT INTO. Capitalizarea, SQL este cazul insensibil. Deci nu trebuie să valorifica aceste lucruri. Prin convenție, cuvintele în alb sunt capitalizate. Dar eu, de asemenea, de culoare le codificate. Singurul motiv pentru care le valorifica cei atunci când sunteți le tastați este doar pentru a sublinia că acestea sunt constante. Și astfel încât să puteți fie sa te uiti la valorificarea sau faptul care I-am colorat diferit. Deci avem INSERT INTO, hai să facem din nou tabelul 1. Acest lucru este pe o singură linie. Eu doar l separă de diferitele declarații. Deci, nu vă faceți griji cu privire la faptul că Tabelul 1 a făcut pe a doua linie. Deci, ne-o dorim pentru a introduce ÎN Tabelul 1 unele valori. Și veți observa opțională bit, pe care voi ajunge la un al doilea. Deci avem valori. Deci, să spunem că vrem să adăugați Andi la masa noastră, pentru că ne e dor Andi. Andi este bolnav. Deci, haideți să adăugați Andi la masa noastră. Amintiți-vă că numărul de identificare este actualizat automat. Deci, numai câmpurile noi trebuie să vă faceți griji cu privire la sunt nume, superputere, și orașul natal. Și astfel modul în care facem acest lucru, uita la sintaxa noastră, este ne-am tocmai am primit un paranteze, cu virgulă Valorile separate, fiecare dintre acestea este o valoare. Deci, dacă am vrut să introduceți Andi în nostru masă, tot ce trebuie să facem este corect Andi. Ce este superputere Andi lui, oameni in sectiunea Andi lui? Ea place de zbor, sau ca Viteza, sau ceva. Ce avem deja acolo? Avem CS50, de zbor, viteza, si forta. Audiența: Călătoria în timp. Vorbitor: Călătorie în timp, uimitor. Deci avem Andi, timp călătorie, și orașul natal. Aceasta este o întrebare foarte bună. New York City, cu excepția cazului în cineva stie. Toată lumea e de la New York este Lecții pentru a ține departe de astăzi. Deci, această declarație ar fi introduce, ca un rând al cincilea, cu timpul de călătorie superputere și un orașul natal din New York City. Dar câmpul opțional este de fapt un mod pentru a specifica exact care coloane doriți să inserați lucruri în. Modul în care o facem acum, Andi, calatoria in timp, New York City, se întâmplă în ordinea exactă a noastre Numele table--, superputere, orașul natal. Și dacă ai vrut să faci altceva decât că, ca spun că nu au știut superputere cuiva, ca și cum n-am știut de Andi superputere la început. Deci, tot ce știam era o numele și orașul său natal. Ce am putea face este să pot do-- Voi șterge acest rapid. Vreau să actualizeze doar coloanele. Și acest lucru este în cazul în care opțional lista pe o coloană intră în joc. Vreau doar pentru a actualiza numele și orașul natal. Și atunci voi spune valori. Voi face Andi și New York City. Dacă aș fi omis lista de coloane și doar face aceste două lucruri, în cazul în care s-ar New York City au plecat? Care ar coloană New York Oras au fost plasate in? Oamenii au nici o idee? Superputere, exact. Deci, acest lucru se va merge doar în ordine. Și după ce ajunge la sfârșitul fișierului Lista, se va opri doar completarea lucruri. Și valorile pe care se va lipi în toate coloanele vor fi doar NULL. Deci, pentru că am specificat Numele și orașul natal, vom avea ID-ul 5, nume Andi, superputere NULL. Deci superputere este o valoare neinitializata. Tu nu va obține neapărat aceleași erori Valgrind dacă încercați și accesa. Totul va fi bine zero , pentru că este o valoare NULL în SQL. Aceasta este o constantă. Și apoi orașul natal va fi New York City. Deci asta e insera în comandă. Înainte de a muta, nu e încă două comenzi. Nu oamenii au întrebări despre UPDATE, INSERT INTO despre, despre SQL în general, înainte de a ne muta pe biți nostru final? Oamenii se simt bine, minunat. Iubesc. Deci, hai sa vorbim despre SELECT. Mergând șanț UPDATE aici. Și selectați va fi foarte asemănătoare. Scopul SELECT, Scopul SELECT în viața este de a vă oferi o mulțime de coloane care să îndeplinească anumite condiții. Și când spun satisfac anumite condiții, mintea ta ar putea imediat du-te înapoi la acea clauza WHERE care a venit în UPDATE. Și clauza este exact acolo în SELECT. Dacă nu vom pune WHERE clauză și spunem SELECT nume, hometown-- scris că un pic Numele wrong--, orașul natal DIN tabelul 1. Dacă spunem doar că, ceea ce SELECT este de gând să ne dea este că e O să ne dea un double-- un tabel, mai degrabă. O gamă dublu dacă suntem gândesc în PHP simțurile. Dar e doar de gând să ne dea un matrice dublă a două nume columns--, și orașul natal. Și-l va ignora ID. Și-l va ignora superputere. Și o să ne dea doar fiecare singur rând din tabel. Deci, dacă ne-am introdus Andi, vom avea Andi. Și vom avea inițial patru. Dacă au fost actualizate, care va să se reflecte, etc, etc.. Deci acest lucru se datorează faptului că noi nu a utilizat clauza WHERE. Dar putem folosi în exact același fel am folosit în UPDATE. Dacă vrem doar un tabel de nume și super-puteri de persoane care trăiesc în New York, putem executa o declarație ca SELECT nume, superpower-- Mă duc să plece that-- DIN Tabelul 1 UNDE orașul natal = New York City. Deci, acest lucru merge pentru a arăta că puteți obține total diferite coloane, și a pus apoi coloanele că nu ești chiar obtinerea înapoi în clauza WHERE. Nici măcar nu vreau orașul natal al tuturor. Dar vrem numele și superputere de oameni a cărui orașul natal este New York City. Deci, asta e ceva ce se poate face cu WHERE Clauza este că se poate face cu coloane care nu vrem neapărat înapoi. În același mod în UPDATE, putem face cu coloane care noi nu neapărat doriți să îl actualizați. Putem actualiza orașul toată lumea care e numele este Sam, de exemplu. Putem actualiza orașul Orice persoană ale cărei ID număr este 2. Deci, doar actualiza oraș al doilea rând în cazul în care nu avem de a face cu necesar comun întrebare. Și DELETE este, cum te-ai așteaptă, DELETE FROM tabelul 1. Și apoi ne-am luat un alt clauza WHERE. Deci, putem spune unde id = 1. Șterge primul rând. Și șterge va șterge întotdeauna un rând, sau va șterge un numar de rânduri. DELETE FROM masa la care orașul natal = New York City va șterge toată lumea în New York City. Asta e dacă a existat o ciuma bruscă tragic și ai vrut doar pentru a elimina toată lumea de la masă care a trăit într-un anumit oraș care a fost lovit de ciuma. Fie ca ei odihnească în pace. Acestea sunt cele patru comenzi SQL care va trebui să utilizați. Nici nu ar putea avea nevoie să le utilizeze toate. Dar acestea sunt cele patru care CS50 te asteapta pentru a fi confortabil cu a intra în atât test 1 și, de asemenea, pset7 și pset8. Există din nou, doar acea masă. În aceasta, superputere Roy are fost actualizat la raze laser, care este un exemplu nu am folosit. Nu știu care dintre Roy preferă, dar puterea. Roy are o superputere de putere. Katherine nu astăzi face. Asta e regretabil. Dar ea are super-viteză. Ei bine, asta a fost PHP. Înainte de a vorbi despre MVC, nu cineva întrebări despre PHP? Acum SQL, sau PHP dacă aveți brusc veni cu o întrebare despre PHP? Grozav. În regulă, suntem gata atunci. Deci, vorbim un pic despre vedere modelul controlere, să ne întoarcem la unele din lucrurile din pset7. Deci, ce model de vedere controler este-- Eu nu sunt va pentru a salva modificările mele sa va logati pentru că l-am măcelărit total. Dar, practic avem două lucruri separate întâmplă. Avem un public director care conține codul care va fi executat și paginile web care va fi vizitat. Și avem, de asemenea, acest director opinii. Și vederi conține template-uri. Aceasta este ceea ce funcția render-- am văzut randare Funcția într-o grămadă de cod PHP care CS50 a scris deja pentru tine, care ia în anumiți parametri. Ce codul face se se intra în vedere, care sunt seturi de ca predefinită Codul HTML, și este introducerea valorilor în anumite locuri. Acesta este modul în când du-te în CS50 Finanțelor, În același antet este pe fiecare pagină. Aceeași subsol este pe fiecare pagină. Aceasta se datorează faptului că modul că face fapte este că va patch-uri în mod automat în antet și viewer care puteți găsi în vedere. Noi de fapt, pot merge în antet, și uite, e un fișier HTML cu un cap. Are niște foi de stil. Nu aveți nevoie să se uite la CSS pentru pset7 dacă nu doriți să. Dar puteți modifica le, dacă doriți, vă Finante sa arate un pic diferit. Are unele PHP în antetul un pic pentru a vedea dacă există un alt titlu aceasta ar trebui să pună în acest antet. Dar doar câteva alte scripturi, și link-uri, și alte lucruri. Cap se termină, corpul începe, și Oops, avem acest ciudat pic final. Și există un div, la fel ca un fel fără formă de element de care are o idee de mijloc. Și apoi, când vom vedea subsol, avem la sfârșitul unui div. Avem o de jos, care este în cazul în care textul de subsol este. Sfârșitul div, la sfârșitul a corpului, la sfârșitul HTML. Deci, ceea ce face este a face este face este un fel de patching până antet, un diferit fișier PHP care va conține lucrurile reale care vei vedea, cum ar fi masa ta de stocuri dacă sunteți de cumpărare sau de vânzare a stocurilor. Și apoi o să adăugați în subsol. Și punctul de vedere modelul Ideea este că noi controler doresc să se separe cum lucrurile arata din codul. E vrem să separe interfața și backend, în cazul în care este frontend lucrurile pe care utilizatorul vede, Nisa visuals-- HTML, CSS, lucruri de genul asta, imagini, etc.. Și backend este PHP. Acesta este cod pe care le scrie. Acest lucru este în cazul în care codul care este face operațiuni reale. Acest lucru este atunci când adăugați un stoc la masa ta, atunci când sunteți de cumpărare și de vânzare, e backend. Și putem, așa cum ați văzut, inclusiv PHP direct în HTML. Deci, ceea ce am fi putut face pentru această sarcină este doar a avut un fișier HTML pentru fiecare pagina, ca de autentificare. Și apoi pe acea pagină, doar a avut un bloc imens de cod PHP, inclusiv toate de cod care pagina specific ar avea nevoie. Și apoi am putea avea făcut asta pentru portofoliul. Am fi putut face toate de cumpărare și de vânzare în paginile individuale. Dar, pentru că suntem de redare separat de unde suntem scris backend cod, putem cu ușurință schimba modul lucrurile arata fără schimbarea fiecare fișier. Noi facem lucruri cum ar fi doar să adăugați o nouă div la partea de jos de-- Buna ziua modificat subsol. Puteți face doar chestii de genul asta. Dar, de asemenea, aveți posibilitatea să modificați întreaga aspectul vizual fără a afecta ceea ce este merge în backend. Și puteți schimba întreaga backend și încă l-au arata exact la fel ca înainte. Acest Este ideea de vedere modelul controler. Și este de fapt o paradigmă impusă în unele din limbile de programare s-ar putea doriți să utilizați pentru proiectele finale. Dacă veți face de dezvoltare iOS, ei au opinii, care este ceea ce vezi pe iPhone, și apoi backend ca ca un lucru separat. Vă puteți gândi despre un pic. Există o mulțime de binare în informatică, care este amuzant, pentru că totul e în binar. Nu am de gând asta. Asta a fost un joc de cuvinte neintenționat. Da, joc de cuvinte care nu sunt destinate. Dar, ca fișiere .h și fișiere .c, nu e o mulțime de separare de lucruri pe care le nu ar putea avea nevoie. Astfel încât să putem edita doar fișierele h, sau cineva poate vedea doar un fișier .h și știu exact funcțiile care se află în fișier .c fără neapărat să știe punerea lor în aplicare. Această idee de separare a componentelor care depind unele de altele dar poate un fel de acces la unul de altul prin diferite canale, care trece de variabile, doar includ declaratii, lucruri așa, acest principiu ajută pentru a crea aplicații care pot fi mai ușor editat de mai multe persoane, poate fi mai ușor schimbată sau modificate pe o scară mare, și sunt mai ușor de depanare într-o mulțime de feluri. Foarte repede, am câteva sfaturi pentru pset7, pe care le voi face full screen, astfel încât să nu sa ne uitam la the-- Tippee Sfat Sfat. Nu sunt atât de multe sfaturi. Dar am menționat PHP este greu de depanare. Duble și triple verificați-l. În cazul în care codul nu este doar apar pe pagina, este, probabil, o eroare de PHP, îmi pare rău. Niciodată nu trebuie să te uiți la CSS dacă nu vrei să. Dar, odată ce ați terminat, acesta poate fi un lucru frumos pic de distracție pentru a merge doar în și mizerie cu parametrii CSS. CSS și HTML sunt un exemplu de un model vedere stil controler lucru, nu? Ai putea avea etichete de stil în interiorul elementelor HTML. Dar, dacă un fel de externalizarea le CSS, acestea sunt mai ușor de editat, și să se joace în jurul valorii de cu, și să se distreze cu. Trata CS50 ajutor funcționează ca cutiile negre. Nu aveți nevoie să știți exact ceea ce tencuit face, dar încredere în ea pentru a face întotdeauna dreptul lucru, în funcție de ceea ce-l treci, lucruri de genul asta. Și Mi-ar recomanda ma uit la walkthrough lui David, trece prin toate Stuff, nu doar todos, dar într-adevăr poate trata aceste cutii negre. Nu intra în aceste funcții în căutarea pentru bug-uri. Și salut revenirea de Overlord noastre Zamyla. Grozav. Există întrebări finale înainte am un fel de saritura pentru a doua zi? Sunt încă mai trăiesc? Grozav. Oameni Livestream Bună. Grozav. Mai sunt acolo întrebări? Nu? Și apoi cred că suntem bun pentru a merge pentru ziua de azi. Voi lipi în jurul valorii de un pic după aceea dacă oamenii au avut întrebări se temeau să ceară pe fluxul. Dar altfel, au o zi buna.