SAM LEVATICH: Welkom by artikel vir hierdie week. Ek is nie Andi. Andi het siek geval het, en ek is soort van genoem in die laaste minuut om oor te neem. Dit is griep seisoen, so maak seker dat jy bly skoon, jou hande, en die eet van gesonde sodat julle ook, is nie bedlêend. Maar sonder verdere ado, laat ons begin. Vandag, ons gaan om te praat oor PHP 'n bietjie bit-- hoe PHP het betrekking op HTML, hoe dit verband hou met CSS, en 'n paar van die web dinge wat jy gedoen het op die laaste opdrag. Ons gaan 'n praatjie bietjie oor SQL en hoe jy kan werk met databasisse, wat is 'n mooi belangrike komponent van P stel 8-- P stel 7. P stel 7. En dan gaan ons 'n bietjie praat bietjie oor hoe die lig beheerders werk en waarom dit is 'n filosofie agter 'n paar moderne web bladsye en verskillende ontwerp. Pretty much 'n baie tipes van die programme en programme wat jy kan stuur gebruik hierdie model, oog kontroleerder raamwerk, wat jy sal gebruik word in P stel 7, so ek sal praat 'n bietjie oor hoekom dit geword gewild, hoekom dit belangrik is en mooi. En dan sal ek uiteindelik beweeg na 'n paar wenke oor die aanpak van P stel 7. En as ons tyd het oorbly aan die einde, ons kan eintlik 'n paar te doen werk op daardie saam. So, PHP. In werklikheid is, kan jy opgemerk this-- jy het nie regtig om te duik in it-- maar P stel 6 het 'n paar PHP kode wat aan die gang was. En omdat PHP is 'n C-agtige taal, PHP, in teenstelling met HTML en CSS, is 'n programmeertaal, terwyl HTML en CSS is staties nie. Hulle is opmaak tale hantering met styl en visuele uitleg. PHP is die ware Jakob. PHP het loops, dit het conditions-- al daardie dinge wat is pret oor C. Dit het 'n paar dinge wat 'n bietjie is bietjie beter as C, wat ons sal sien, maar ek dink die maklikste manier om te praat oor die PHP is net om te duik in. So ek gaan gaan reg in die IDE op hierdie punt. Die eerste ding wat ons gaan te doen, is eintlik kyk 'n bietjie op 'n paar van die PHP-kode wat in P stel 6. So die manier waarop ons that-- doen voor, die manier waarop ons hardloop die bediener vir die toestel was dat ons sal moet type-- óf gebruik jou implementering of implementering van die personeel se van server.c deur gaan in gids en loop server.c met geen arguments-- so net noem dit op die plaaslike gasheer, en dit is wat jy waarskynlik het die meeste van die time-- en dan voed 'n directory-- met wat om te gebruik as sy wortel waar die webwerf sou wees hardloop, basies. Hierdie week vir P stel 7, soos groot soos ons kode vir server.c is, daar is mense wat reeds geskrewe hierdie mooi dinge oor by CS50 wat 'n bietjie meer funksies, 'n bediener program wat in staat is om om met 'n bietjie meer van die verwikkeldheid dat ons sal sien in beide P stel 7 en 8 P stel. En die manier waarop jy begin die bediener is deur net te tik, "apache50." En voordat jy enigiets doen, jy wil om seker te maak dat Apache 50 is nie reeds aan die gang, want dit is op my rekenaar, wat ek gedoen het om dit te toets. En jy dit doen deur te bel apache50. Stop, en jy sal sien dat dit stop die web bediener, as jy kan daar sien aan die onderkant van die terminale venster. En dan net om te begin, ons is gaan om te bel, "apache50 begin." En dan gaan ons om dit te voed 'n gids. Nou, want ons wil om te kyk op sommige van die P stel 6-kode dat ons, ek het eintlik geïmplementeer gekopieer 'n bietjie van die P stel 6 kode in my eie gids, wat jy kan sien op die links daar. Dit is bekend as "SECTION8" alles in hoofletters want ek is net so opgewonde om vandag live-gestroom. So as ons dit uit te voer, dit moet almal werk mooi effektief. Dit sê, OK, ons webwerf is nou beskikbaar by die adres van die IDE, basies, dit is wat jy gebruik het presies soos dit was in P stel 7-- P stel 6. Al my indekse is een indeks vandag. Sodat ons kan gaan na die adres as jy sal onthou, deur net hierdie klein kliek knoppie in die boonste regterkantste. En jy sal hierdie kode, onthou wat gebeur wanneer jy gaan in hello.php. En wat die kode is ontwerp om doen is wanneer jy in 'n naam getik here-- as jy sê Sam want dit is my name-- en ek klik sê hallo, wanneer ons het na die volgende bladsy daardie naam was veronderstel om te vertoon. Dit sou sê, "Hallo, Sam" of "Hallo," alles wat jy naam sit in dit, selfs al het ons om 'n heeltemal nuwe webblad. En dit is die soort van ding wat PHP vir jou kan doen. PHP is in staat om data te slaag tussen twee webblaaie. Dit is 'n totaal ander bladsy. Jy sal sien die titel is "hallo" hier. Eintlik, hulle het dieselfde titel, maar ek belowe hulle is verskillende web bladsye as ons kyk na die bron. En jy kan die data wat slaag in hierdie teks veld ingegaan het, jy stuur dit na die volgende bladsy wat tans op genoem word, en dan dat data in staat is om wees daar in sy huidige vorm. Nou het ons nog nie geïmplementeer hierdie onsself, wat is wat ons gaan nou te doen sorteer kry 'n smaak vir hoe PHP werk, maar die sleutel idee is dat jy kan PHP-- soort van dink dit soos 'n funksie. Iets wat PHP kan jy laat doen is dit kan parameters dat jy insette in 'n HTML bladsy deur die gebruik van PHP en vorms, en dit kan die as parameters na die volgende bladsy wat dit laai op. In hierdie geval, ons laai hierdie bladsy met die knoppie "Sê hallo". Maar vir nou, ek het eintlik verwyder sommige van daardie kode in die hello.php wat aan die gang is wat eintlik die vertoning van die "hello, wêreld "of" hello, Sam "of "hello," wat ook al was dit net insette. So vir nou, ons is gaan om dit te doen, basies. Ons gaan herskep dit en ook 'n paar meer funksies, doen 'n bietjie meer met dit, sien wat PHP is regtig in staat is. So die eerste, laat ons praat oor hierdie lêer, hello.php. So as ons in 'n zoom bietjie bit-- en nou is ek soort van probeer om al blaai die manier around-- daar gaan ons. Jy sal sien dit genoem hello.php, maar die sintaksis van dit lyk soos 'n HTML-lêer. Dit is omdat die werklike PHP in hierdie lêer is al vas tussen hierdie vraagteken-kappie blokke. Alles hier word beskou PHP-kode. En jy sal sien dat toe ek het 'n opmerking, jy sal sien die bekende twee vorentoe houe. En as jy onthou, in HTML, as ek tik 'n opmerking, dit lyk iets nader aan hierdie, wat 'n kommentaar in HTML. So regtig alles tussen hierdie twee hoek tussen hakies is nou PHP kode, wat word weerspieël in die feit dat hierdie klein kommentaar simbool het in 'n kommentaar. So elke keer as jy skryf PHP-kode, selfs As daar is geen HTML-kode buite dit, dit is altyd gaan wees ingesluit in hierdie hoek tussen hakies met vraagtekens. Jy kan soort van dink oor hoe al it-- van die kode wat gehardloop in jou C programme is ingesluit in 'n int main, nietig, krullerige brace, end krullerige brace verklaring. En jy sal sien krulhakies in PHP ook, maar dit is soort van soos die belangrikste metode van PHP. So nou, hoe ons iets in PHP doen? Nou, PHP is 'n programmeertaal taal wat baie C-agtige, maar dit werk op die web. So een ding wat jy immediately-- een van die eerste dinge wat jy regtig met C is jy gedruk dinge uit, reg? So in C ons gedoen het wat met 'n printf funksie. Ons het dit 'n string, waarskynlik met 'n nuwe lyn, en dan beëindig ons dit met 'n kommapunt. So die manier waarop ons gaan om dit te doen in PHP--, want dit is nie heeltemal printf. Dit is 'n bietjie van verskillende sintaksis. Die manier waarop ons dinge uit te druk in PHP is ons sê, "eggo hallo" of "eggo" enige woord. En dit het die effek van doen printf met 'n string, "hallo." En dit voeg die nuwe lyn om dit te. So laat nou maak sure-- Ek sal weer 'n bietjie zoom bit-- laat maak seker dat wat die kode werk omdat daar dalk baie wel 'n fout in die kode dat ons sal moet aanpak. So die bediener loop reeds. So as ons blaai terug na die bodem, yup, die bediener is nog steeds loop. So as ons net tap op hierdie bietjie reg here-- welcome-- moet ons groot get--. Ons het nog steeds is met die bekende "Sê hallo" dialoog, maar toe ek tik in "hi," ons sal sien dat die teks "hallo" was inderdaad gedruk, wat presies soos ons verwag, want eggo in PHP is net soos 'n printf verklaring. So terug na die kode, hoe in P stel 6 het die verspreiding kode wat jy word voorsien maak dit so dat PHP sou uitset die ding wat jy getik in die vorige skerm? En soort van ondersoek waarom dit gebeur, is ons gaan om te gaan na index.html, wat is die oorspronklike lêer, die lêer wat dui op die skerm met die knoppie "Sê hallo". Jy agterkom dat daar al die klassieke dinge ons het gekom om te verwag van HTML sulke as hierdie dinge, hierdie tags ingeslote in die hoek tussen hakies, soos PHP maar sonder die vraagtekens, wat dui op 'n spesiale ding om HTML. Ons het die titel, wat is "hallo." En jy sal sien dat as ons sien, die titel is "hallo" in beide gevalle. Kom ons hierdie een verander na "sê" net sodat ons kan ons onderskei waar ons is. Maar ons het 'n liggaam het. En dan die interessante bietjie, die bietjie wat wys in die HTML, is hierdie vorm element. En so het ons het 'n vorm. En dit is die sleutel. Dit is hoe ons werk met PHP. Die aksie parameter van vorm sê dat hello.php is wat ons gaan om te stuur die waardes in hierdie vorm om. Dit is waar ons verby die parameters, om so te praat. Jy sal 'n ander ding hier sien is dat die metode is "kry nie." Daar is twee primêre metodes wat sal wees met behulp van PHP om data te slaag tussen websites-- web bladsye, rather-- in hierdie opdrag. En dié metodes is "kry" en "post". Daar is 'n paar subtiele verskille tussen AOO en post dat ons sal kry into-- ons sal "kry" in, as jy wil. Maar vir alle praktiese doeleindes, te kry en post is albei net maniere wat jy parameters met effens verskillende teregstellings. Vir nou, ons gaan kry, want gebruik kry was wat oorspronklik gebruik is in die PHP lêer van P stel 6. En eintlik, as ons gaan in en kyk voordat ons enigiets anders het geredigeer, Ek gaan hi sê aan- wat is jou naam? GEHOOR: Elliot. SAM LEVATICH: O, gosh. Ek weet nie hoe om te spel nie. Kan jy dit spel vir my? GEHOOR: E-L-L-I-O-T. SAM LEVATICH: I-O-T? GEHOOR: Ja. SAM LEVATICH: Perfect. OK. Ek dink ek het geweet hoe om te spel nie. Jammer oor dit. Maar as ons sê: "Sê hallo," dit is nie dit gaan nie om te wys op die skerm nog omdat ons verander die kode 'n bietjie. Maar as ons nie "Sê hallo" - OK, so "hallo" is hier. Maar as ons neem 'n nader kyk na die URL self, ons sal sien dat dit eindig met hello.php? name = Elliot. So, dit is 'n manier om kommunikasie na die volgende webblad die parameters wat ons het geslaag. Ons het gesê name = Elliot. En dit is uiteindelik hoe P stel 6 toegang tot die veranderlike wat ons geslaag in deur die vorm. En dit is iets wat is eie aan 'n get versoek. A get versoek maak die parameters bekend in die URL van die webwerf. En jy sal onthou, ook in P stel 6 dat jy moes 'n funksie te skryf wat gehandel het oor die feit dat hierdie navraag string na 'n lêer kan bestaan. Daar kan 'n vraagteken gevolg wees deur basies enige aantal karakters. En dit is presies wat gaan aan hier. En die rede waarom jy moes ontleed wat in jou implementering van server.c in P stel 6 is, sodat jy kan vertel die PHP-kode wat noem = Elliot. Jy nodig het om in staat wees om ontleed wat uit die URL sodat die PHP lêer in die vraag geweet wat dit was nie die hantering van. So hopelik gee die motivering om server.c nou dat ons beweeg op buite C in PHP. So laat eintlik fokus op die toegang tot die dinge het deur 'n get versoek nou op hierdie punt. Ek gaan hierdie red. Ons het niks verander nie. Dit lyk asof ons 'n invoer veld het. Ons opstel sommige eienskappe, soos ons 'n HTML kan doen. Dit is eenvoudige dinge. Ons nie hierdie nodig. Maar ons het outovoltooiing af, wat basies says-- jy weet, wanneer jy dinge tik in die web, soms dit probeer om te vul wat in vir jou. So dit is 'n mooi ding. Ons wil dit afskakel vir hierdie doel. Dit was 'n CS50 besluit. Sodat ons kan verwyder wat as ons wou. Autofocus stokke net die wyser in die vorm reg aan die begin. Weer, nie te belangrik. Maar name = "naam" - dit is 'n bietjie lastig, want dit is die naam en die naam. Maar ons kon verander het dit vir iets anders. En in die feit, dit is wat ons nou gaan doen. Ons sal sê "persoon", wat is 'n soort van soos die naam Indien 'n persoon word gedefinieer deur hul naam. So laat sluit hierdie, heropen up ons webwerf sedert ons bediener loop steeds Apache 50, en ons sal sê, hello, hier is Elliot weer. Hoekom nie? Hello. En as ons hier gaan, sal ons sien dan in plaas van name = Elliot, dit sê persoon = Elliot. En dit is 'n direkte gevolg van die feit dat ons net verander name = "persoon." So in 'n inset element van 'n HTML-vorm, die veld naam is die identifiseerder vir die parameter dit is oorgedra. Dit is soos wanneer jy skep 'n funksie "voeg" wat in twee heelgetalle het en jy het gesê int a en b int. Dit sou 'n naam wees, en as jy 'n ander vorm, wou wat kan ons net doen deur kopieer en plak, dan sou ons naam b hê. So nou het ons sal moet twee parameters dat hy deur geslaag kry om die volgende website-- die volgende webblad, hello.php. En ons kan eintlik sien wat weer as ons wil. Dit is die maklikste manier om te gaan met die web-kode in die IDE, basies. Jy begin die bediener, kry dit hardloop, en dan elke keer as jy maak 'n paar veranderinge, net naby dat 'n lêer net om veilig te wees. Druk op die terug knoppie is 'n bietjie lastig omdat dit 'n vroeëre kan laai weergawe, nie die mees onlangse een. En dan moet jy kliek jou knoppie weer pop reg up-- oh, en nou is daar twee vorme. En so as ons tik een ding in elk one-- "jason Hirshhorn," vir instance-- ons sê hallo. Ons kyk na ons parameters. Dit lyk soos ons het, soos verwag, a = jason en b = Hirshhorn, waarin die twee parameters verteenwoordig dat ons geslaag om hierdie funksie. So nou, laat ons eintlik kry om uitvoering van hierdie funksies wat ons het in P stel 6. So nou is ons net aansluit hallo. En dit is nie baie nuttig. Ons wil 'n paar veranderlike eggo wat geslaag om ons. En ons weet wat die naam van hierdie veranderlike. Ons het 'n en ons het b. Sodat ons kan kies om óf die een eggo. Maar hoe kan ons toegang is dit? Wel, daar is sekere globale veranderlikes in PHP. En ek gaan om te skryf hulle hier kommentaar. Die twee belangrikste hiervan is get en post vir ons doeleindes nou. Hierdie is die skikkings of, tegnies, die woordeboeke waar ons veranderlikes wat ons verby na die volgende webblad lewe. En ons sal gou sien hoe om dit te gebruik. Nog kort nota oor PHP-kode en 'n paar besonderhede van it-- in C, om 'n veranderlike te verklaar of om veranderlikes te gebruik, jy eers moes hulle te verklaar. En wat jy het om te doen wanneer jy verklaar hulle was sê int n kar of b. Jy moes die tipe van hierdie verklaar veranderlikes voordat jy hulle geskep. PHP-- jy nie nodig het om enige van daardie doen. PHP vra nie vir die tipe veranderlike. En die manier waarop jy skep 'n variable-- eerder as om te sê int, char, string-- Dit is regtig char *, soos ons know-- eerder as al doen wat, want alles wat is van dieselfde soort, typeless, kan ons net gebruik slegs een karakter, wat is die dollar-teken. En jy sal sien dit is reeds knal up, bietjie outovoltooiing dinge. En dit is te sê dat _GET en _POST twee opsies wat ek het beskikbaar aan my. Sommige van hierdie ander dinge ander globale veranderlikes in PHP dat jy sal gebruik word om oor die loop van P stel 7. Vir nou gaan ons fokus op get en post. Maar dit is 'n nuttige ding wat die IDE doen waar jy een keer het getik in daardie dollar teken dit sal begin in te vul globale veranderlikes of veranderlikes wat jy reeds gedefinieer. So as jy wil om te definieer 'n veranderlike genaamd "string" jy kan net stel dit gelyk aan "hi." En dit is basies so eenvoudig soos dit. En dan kan ons doen iets soos "eggo $ string." Die IDE moet gooi 'n paar foute as ek doen iets verkeerd, so hopelik ek alles reg doen. Maar foute altyd nie ontstaan. Nog moeilike ding oor PHP is dat dit nie saamgestel. So met C-programme, sou jy doen die daaglikse roetine of-- basies, sou jy wysigings te maak jou kode, wil jy dit te verlos, en dan sal jy dit maak, waar make was die stap wat die samesteller genoem, kletteren, om jou kode te maak, hierdie teks lêer, in 'n uitvoerbare. PHP is C-agtige, maar dit is uitgevoer op die vlieg deur jou webblaaier. So daar is geen manier om te weet. Maak sou gooi diegene nuttig foute, reg? Dit sou wees soos jy het hierdie veranderlike nie verklaar voordat jy probeer om dit te gebruik. Jy het al hierdie slegte spul segfault, segfault, al daardie soort van pret tye wat gekom het met make. PHP is 'n tweesnydende swaard omdat jy nie die foute te kry, maar dit beteken ook dat jy nie sal weet regtig wat is verkeerd met jou program as jy net hardloop en dit werk nie. Maar die debugger moet wys sommige hopelik nuttig klein dingetjies sintakties wat jy kan regmaak. So nou as ons gaan oor aan- sê, laat ons toe dat. Heropen. En ons is terug na hier. So het ons 'n veranderlike het en 'n veranderlike b. En dit sal nie uiteindelik saak. Ons sal hulle h en g roep vir geen spesifieke rede. En ons sê hallo. Nou lyk dit ons string "hi" is inderdaad druk. Ons het 'n veranderlike genoem "string" stel dit gelyk aan "hi." Let daarop dat ons nie hoef te doen malloc of maak 'n karakter skikking. In PHP, want veranderlikes is typeless, 'n string is dieselfde as 'n kar vir alle praktiese doeleindes. Dit kan wees "hi." Dit kan net die karakter k wees. Dit kan 'n nommer 1 wees. En dit nie omgee nie. PHP nie omgee die tipe van jou veranderlike. Of, is dit nie sorg. Dit gee wanneer jy probeer en dinge te doen met dit, maar dit beteken nie om in die verklaring stap. En net soos wat jy kan in C, jy kan verklaar snare op die stapel soos hierdie al sê "stapel" is 'n bietjie bietjie van 'n potensiële wanbenaming wanneer ons praat oor PHP. Maar ons hoef nie te bekommerd wees oor dit. So het ons ons string "hi" en ons eggo string. So nou het ons bespreek veranderlikes. So nou moet ons praat oor get en plaas en voer die finale ding wat nodig om werklik te kry dit terug tot om die funksies van die P stel 6. So nou is ons aansluit by die string, maar ons het nie hierdie veranderlikes te kry en post. En omdat ons gebruik die metode te kry, is dit lyk natuurlik dat ons veranderlike wat ons is geïnteresseerd in, beide A en B, sal geleë wees in die skikking of 'n woordeboek, tegnies kry. So as ons 'kry soos hierdie met jou groups-- ek gedruk betree en dit het nie graag it-- maar hier het ons te kry. En so kry reeds bestaan. So kan ons reeds begin om toegang sommige van die elemente van get. As ons kry, dit sintaksis vir skikkings in PHP is baie C-like. Ons het ons twee vierkantige hakies. So as ons sê te kry in 'n normale skikking, kan ons toegang die nulde indeks, is die eerste indeks. PHP is nul indeks. Ons kan sê nul, een, two-- dinge soos hierdie. En ek het gesê dat te kry is tegnies 'n woordeboek. So, wat PHP doen onder die enjinkap, wat is 'n bietjie lekkerder as C, is dit reeds te gee jou 'n paar woordeboek funksie, wat is regtig hash tabelle, of probeer om, kwansuis. Of, tegnies kan 'n probeer as well. Maar PHP is implementering van 'n hash tafel, wat deel vorm van 'n effektiewe woordeboek. En so het ons weet wat die naam van ons veranderlike, reg? Dit word geslaag die navraag string deur PHP. Ons het 'n = h en b = g waar en b is die name van die veranderlikes. So die manier waarop ons kan toegang tot die waarde wat ooreenstem met die sleutel in ons woordeboek is net deur te sê _GET_GET ["'n"]. So nou het ons _GET ["'n"]. En as ons die plek net binne ons eggo, as ons eggo _GET_GET ["'n"] - en ons sal sien as die debugger gooi enige foute oor this-- ons sal red en maak dit uit. Maak dit oop. So ons is maar net 'n reg doen nou, so b moet nie saak nie. "haar" en "hom" - "hum". "haar" en "hum". Klink goed. En dit uitgedruk "haar," wat is mal. Maar dit is presies wat gebeur het in P stel 6. Basies, wat P stel 6 was doing-- eggo hello, name-- waar dit het 'n veranderlike naam en dit is net vra jou om te tik in daardie bietjie van die teks. Daar was ook 'n paar addisionele kode waar dit ingesluit indien state, wat kan ons nou doen. Ons kan sê indien bestaan, wat is 'n funksie binne PHP, _GET Met die onderstreping, "naam" - wat basies sê, "As die naam is gevul", want Ons kon net gekliek het op die knoppie om die vorm in te dien sonder enigiets in daardie gebied te tik. En ons draai dat ons in ons vriendelike krullerige draadjies. Ons kan nie 'n ander verklaring het nie. En dit is al wat binne die PHP hoek bracket, vraagteken, hoek bracket, as jy wil. En nou sal ons sien of dit werk. Ek hou wag vir dit om debug en crap uit my, basies, maar dit het nog nie. Miskien is dit sal nou want ek het gepraat oor. Yup. Dit het, in werklikheid. So, is daar niks vertoon. Dit is as gevolg van iets verkeerd wat ek geskryf het in die PHP-kode. En ek het genoem dat die ontfouting is lastig, want in PHP, ons nie vooraf stel dit en die samesteller is nie hou nie, hier is waar jou foute. Maar wat ons kan doen is-- doen mense onthou hoe om te kyk na die verskillende netwerk versoeke wat PHP-- of webtuistes stuur? [? Malin?] Het dit in lesings een of twee keer. Jy onthou waar ons gaan om uit te vind die verskillende skuld en 200 OKS, al hierdie kodes wat gestuur word deur HTTP uit webblad te webblad? Is daar iemand wat onthou waar ons gaan om dit te doen? GEHOOR: Page Bron. SAM LEVATICH: Page bron. Presies. As jy na Page Source-- volmaak. So Page Bron trek die inspekteur. En ek gebruik Safari. Baie van julle sal waarskynlik wees met Chrome of Firefox. Maar so lank as wat jy in enige moderne browser-- en voel vry om te volg saam as jy wil. Jy kan tik die kode of kyk net in die P stel 6 gids vir 'n paar soortgelyke dinge. hello.php is wat ons is tans besig met die navolging. So is daar 'n verskeidenheid van tabs. Ons kan kyk na al die hulpbronne. Ons kan die bronkode te sien. So lyk soos dit het nie kry verby die liggaam in die einde. Dit het bevind 'n fout in PHP en dit gestop laai die hele webblad. Ons het nie eens 'n einde tag vir HTML of enigiets. En as ons kyk na die netwerk, kan ons sien dat ons word 'n versoek gestuur. Dit is die domein. Dit is die adres. Dit is 'n dokument. Ons gebruik die get-metode. En dit is rooi. Of was dit rooi toe ek is nie dit te kies. Hoe kan ek die opsie nie? Wel, dit was rooi. Laat my verfris. Daar is dit. Nou is dit rooi. So dit is rooi, wat beteken dit nie, wat sleg is. So laat ondersoek waarom dit het misluk. So alles wat die Page Bron kan basies vertel is jou ding nie werk nie, wat ons reeds kan sien. So ideaal sou daar 'n meer nuttige hulpmiddel. En daar is 'n paar leser uitbreidings wat u toelaat om te ontfout PHP, maar ons gaan nie skryf 'n ton van PHP, so dit is waarskynlik net die beste om te kyk deur jou kode noukeurig en net seker maak dat dit is nie iets anders doen. So laat ons sien of die formaat van hierdie As stelling is waar die probleem is. Ek wil om te laai wat hier terug. Hallo Hi. So is daar 'n probleem is daar. So vir korrekte sintaksis van PHP, PHP gaan C-agtige in dat jy loops te sien. Jy sal sien of stellings. Jy sal al hierdie vriende sien dat jy vertroud geword het met die verloop van hierdie CS50 semester. Maar die beste manier om uit te vind hoe om te doen iets in PHP is om dit Google of om te kyk na 'n paar voorbeelde van PHP-kode want jy weet die funksionaliteit. Jy weet wat jy kan doen met die program. Jy kan loop. Jy kan loop soveel keer as wat jy wil. Jy kan loop in alle vorme van verskillende maniere. Jy kan funksies te skep. Jy kan funksies te skep wat noem ander funksies, funksies wat noem hulself. En jy het name vir hierdie konsepte. Jy het rekursie, loops, indien ander beheermaatreëls vloei. En so Google is jou beste vriend. Selfs sê, "PHP as verklaring "en daar sal wees ton van poste met antwoorde op ander mense wat soortgelyke vrae wat jy gehad het, wat net begin met PHP en is nuuskierig oor 'n sintaksis ding. Want ons het die luukse om in staat wees om te kyk na die kode in P stel 6, ons eintlik trek dit op en sien dat OK, hier is iets interessant. So, dit is wat dit eintlik lyk soos in P stel 6. So as ons gaan deur middel van hierdie, ons kan sien dat ons het het verskeie van hierdie klein PHP-agtige vraagteken stukkies. En daar is nie krullerige draadjies. Daar is dubbelpunte. En daar is krullerige draadjies in PHP, maar dit is 'n formaat en 'n manier van doen PHP wat goed werk met HTML want soos jy sal sien, ons sluit af hierdie PHP bits-- die elses en die ifs en al that-- en dan ons interspersing HTML binne hulle terwyl hy nog die volgende beheer vloei deur PHP uiteengesit. So ek is net gaan om te vinnige loop deur middel van hierdie want dit is 'n baie van die dieselfde konsepte wat ons voor doen. Ons het as dit nie leeg is, hakies, _GET_GET ["naam"]. Dit is almal dieselfde dinge. Ons gebruik die _GET woordeboek wat PHP stuur op aanvraag van vorms, want dit is die parameters van aksie, en die metode is te kry. En dan wat eindig dit. Die kolon is 'n betekenaar om dit net te doen indien die verklaring as evalueer om waar. Dit is soos 'n krullerige brace. En in die feit, dit is 'n krullerige brace in ander tale soos Python, wat jy kan teëkom as jy net doen wat vir jou finale projek. En dan hierdie lyn, hallo. Toe het ons het hierdie vreemde ding. Ons het meer hakies. Daar is geen HTTP there-- of PHP, jammer. Maar daar is 'n gelyke teken. En dan het ons 'n funksie, htmlspecialchars (_GEThtmlspecialchars (_GET ["naam"]). Dit is soort van soos 'n meer gevorderde weergawe van eggo. Soos ons as 'n manier het eggo om dinge uit te druk in PHP. Dit is 'n funksie wat omskryf in PHP dat sal handel met 'n paar meer nare karakters en byte waardes dat jy kan dit te slaag. Dit is altyd die veiligste om dit te gebruik. Maar eggo sal die werk doen net 'n boete as ons nie hantering van iets te nare. En so het dit dieselfde effek van basies, hierdie dinge in die vraag tussen punte word geëvalueer deur PHP. htmlspecialchars terug 'n lekker HTML gedruk waarde van _GET_GET ["naam"], dit wil sê wat ons ook al getik in die vorm. En dan sal dit sê hello, komma ruimte, en dan is dit. Dat die hele ding tussen die hoek tussen hakies sal vervang word deur wat ook al htmlspecialchars sit uit. So dit is basies dieselfde na wat ons doen. En ons het 'n ander verklaring wat hello world, wat sin maak. So nou, laat ons gaan terug na ons kode en kyk exactly-- oh. Ek het gesê bestaan, wat nie 'n ding wat ons wou doen. Ons wou nie met leë hande om te sê. En so moet dit 'n bietjie werk bietjie beter, nie leë _GET_GET ["naam"]. En dat krullerige brace wedstryde wat krullerige brace. Ons het ons krulhakies het hier. eggo hallo _GET ["naam"]. Kom ons kyk of dit werk 'n bietjie beter. Ons is nog steeds loop ons bediener. Hallo Jason. Hallo Jason. En dit het gewerk hierdie tyd. En so dit is 'n bewys wat jy kan inderdaad gebruik die krulhakies dat jy ken en liefhet in PHP-kode in HTML. Die PHP-kode wat aan jy in pset 6-- pset 6-- bied 'n ander manier doen dieselfde ding. So nou het ons die krag. Ons het die funksie om te implementeer die PHP-kode wat ons gesien het in pset 6 deur onsself, basies. Voordat ek beweeg op, wat is 'n paar van die vrae wat jy op hierdie punt? Ja [onhoorbaar]. GEHOOR: So in die weergawe in pset6, wanneer jy dit uit te voer, is daar 'n ruimte. En ek kan sien waar die ruimte is na die komma. [Onhoorbaar] begin die oop bracket. Hoe kan jy die ruimte te neem in die manier waarop jy jou eie kodes geskryf? Spreker: Dit is 'n goeie vraag. En so laat figuur wat uit. So dit is 'n baie goeie vraag en die een wat ek het nie te oorweeg. Maar laat ons doen dit saam. So in die eerste plek, wat Ek doen met eggo is wanneer ons net eggo hello, dit uitset hallo. As ons nou eggo hierdie te kry op 'n afsonderlike lyn, laat ons kyk wat gebeur. Sodat ons hierdie klik. Ons hou sê, hi Jason. So weer, het ons nie hierdie ruimte. En dit is omdat, in PHP, wanneer ons eggo, maak nie saak hoeveel spaces-- nope, nie die V-- maak nie saak hoeveel ruimtes ons in here-- as ons nou laai wat weer op, hi Jason. Ja, kyk, al daardie ruimtes het verteer. En dit is iets wat die eggo funksie doen. So om te sorg dat die ruimte, en dit is een van die redes waarom jy nie gebruik eggo en jy htmlspecialchars gebruik in plaas. Ek is nuuskierig wat sou gebeur as ons dit gedoen het waar ons ingeslote ruimte in 'n string. Ek is nie seker wat eerlik sal gebeur wanneer ek dit doen. So dit is een manier. Dit is een manier om te sorg van dit. As jy die ruimte in te draai 'n string, dan is die ruimte sal uitset mooi wees eggo. Die veiligste ding om te doen is om htmlspecialchars doen. Dit is altyd die veilige weddenskap. Maar nou het ons 'n manier om dit te doen met eggo indien nodig. En in 'n soortgelyke manier, kan ons eggo die nuwe reëls, al die soort van dinge wat jy is vertroud te doen in PHP. Enigiemand anders, wat nie meer vrae wat ander mense op hierdie punt oor PHP? As mense het 'n bietjie laat, Ek is bly om te bly ná 'n bietjie en praat oor 'n paar van die begin af. En dit is ook al livestreamed, en argief, wat is mal. In elk geval, so nou kom ons doen 'n paar meer gevorderde dinge met PHP. En een van die dinge wat jy vroegste is ingestel om in C was vir loops. En PHP het 'n meer kragtige vir lus genoem foreach lus. En dit lyk asof this-- vir elke leeg as leeg, krullerige hakies, doen die ding. So dit is basies 'n snelskrif. Kyk, die lus as 'n sintaktiese konstruksie is in C en in die gemeente ontwikkel taal en dinge wil. Uitgedink in C, presies, as 'n snelskrif vir 'n baie van die tipes lusse dat mense sal sien. Soos wanneer jy het 'n lus, daar was dikwels 'n inisialisering stap uitgevoer reg aan die begin, 'n toestand waar die lus sou stop-- en dit is die funksie dit is net in 'n while lus, of dat 'n rukkie het presies net dat feature-- en dan 'n incrementation stap aan die einde. En so sal jy dikwels vind jouself kode skryf soos die volgende. Ek gaan 'n paar van hierdie vee. Maar as ons iterating deur karakters in 'n skikking, byvoorbeeld soos wat ons het het 'n verskeidenheid van die karakters. Jammer om C. Ek weet terug te bring, jy gedink het jy gedoen. Maar dit is slegs vir die doel leer PHP, ek belowe. So as jy 'n kar str lengte van 8, en laat sê dit sê hellooo met 'n skuinsstreep null. Groot, so dit is ons string. En dan het ons 'n lus. Ons het int i gelyk 0. En ons wil verlaat wanneer Str i gelyk nie gelyk aan nul omdat ons verlaat wanneer dit gelyk null. En dan moet ons I ++ by elke punt in die lus. Om iets te doen met str van i. So het die basiese formule was, ons het hierdie skikking wat ons wou as afsonderlike elemente behandel. Maar wat ons gehad het om te doen, is ons moes basies 'n aparte heelgetal veranderlike wat tel elke tyd wat ons het deur die loop. En dan sou ons dan bel strstr [i] wanneer wat ons regtig wou doen is net gaan karakter deur karakter, reg? Ons wil nie 'n inkrement heelgetal en gebruik dan heelgetal individueel toegang elke karakter. Ons wil regtig karakter deur die karakter. En so is dit vir elke intelligente bereken dat vir ons. As ons 'n skikking, wat kan ons verklaar in PHP as just-- as ons 'n veranderlike genoem, kom ons noem dit skikking. Die wonderwerke van geen tik, is dit net soos enige ander veranderlike. Dit is net 'n skikking. En ons het 'n bietjie [onhoorbaar] soos 1, 2, 3, net 'n soort van geïnitialiseerd skikking. Dit is OK, beteken dit nie graag my foreach. Maar as ons nie eintlik foreach-- Ek getik dat 'n bietjie verkeerd. Daar is twee maniere om 'n foreach lus te doen. Daar is die in sintaksis en die as sintaksis. En ons gaan om dit te doen in die eerste sintaksis, nie as. Dit is my fout. So foreach num opgestel, eggo num. En PHP is skree op my een of ander rede. Dit vind van 'n onverwagte in iets, wat is 'n bietjie van 'n beslommernis. Maar ons sal uitvind waarom dit in 'n oomblik. So nie so nie. Kom ons probeer om met behulp van die as. Dit verkies die as sintaksis is lyk. So kom ons doen foreach skikking as num. So 'n bietjie verduideliking van wat net gebeur is die as sintaksis is goed sê om die eerste, Kom ons kyk na wat hierdie druk uit. So ons oop te stel ons IDE. Ons gaan hier. Ons sê, Hello Jason. En dit het 123, wat die inhoud was van die skikking dat ons geskep het bo-op. So duik in hierdie foreach lus, Ons het 'n verskeidenheid veranderlike genoem wat is 'n verskeidenheid van drie getalle. En dan is ons foreach doen skikking as num, eggo num. En dit is meer intuïtief as 'n vir ke. Ons sê, die behandeling van elk van die dinge wat in die skikking as num, Ek wil hê jy moet my num gee. En dit is presies wat dit doen. PHP is die berekening dat wanneer jy foreach array sê en jy met 'n skikking, wat jy gaan om te wil oor Itereer is die karakters in wat skikking, is die SY in daardie skikking, is die elemente in daardie skikking. En dit is om jou te laat slaan daardie veranderlikes as num, en dan net uitset num dadelik eerder as sê, Ek het 'n veranderlike genaamd i, en dan wil ek uitset strstr [i]. En sodat ons toelaat om koel dinge doen. Soos basies ons nie het om te skep hierdie veranderlikes soos ek se en doen alles hierdie incrementation dinge aan die einde. PHP sorg vir al van dit vir jou. So nou, laat ons praat oor foreach as dit geld vir ons _GET woordeboek. So sal ons hierdie vinnig kommentaar uit. So het ons ons _GET skikking. Ons het hierdie veranderlike. En dit het 'n paar dinge in dit. Nou, ons het net een veranderlike oorgedra om dit, wat is die naam. Maar as ons druk Enter nou kan ons twee veranderlikes het. Ons kan die naam en ouderdom, byvoorbeeld, As ons wil hê dat die ouderdom te kry en ook die naam van 'n persoon, snaaks genoeg. So nou _GET gaan 'n wees woordeboek met twee elemente, met twee sleutel waarde pare. En die eerste key-- ek gaan skryf hierdie een op die bord ook. Ons het ons woordeboek is _GET. Jammer, dit is, is 'n bietjie moeilik om te sien. Maar binne ons woordeboek ons ​​het noem, wat gaan om iets te wees dat ons gegee. En ons sal ouderdom, wat ook gaan iets wat ons gegee word. En dit is die geheel van ons woordeboek. So dit het twee elemente in dit. En so, want foreach loops is slim, ons dalk dink, en korrek sou kon dink dat foreach kan Itereer deur middel van hierdie woordeboek, uit te druk die waardes wat deur die naam en ouderdom. So laat in werklikheid doen net dat. Kom ons bou 'n foreach lus. En ons gaan om te doen vir _GET as. En ons gaan na die volgende te doen. So laat ons sien wat gebeur as ons tik net woord, en dan sê eggo woord. Ons is ook van plan om 'n nuwe lyn eggo net om dit 'n bietjie duideliker te maak, wat gaan aan. So laat ons sien. Dit is nie gee my enige foute. En ons sal dit maak. Op ons webwerf, jy gaan om te doen 'n baie dat oor die verloop van pset7. So sê ons my naam is Sam. My ouderdom is 45. Dit is nie. Maar dit druk uit, soos verwag, Sam 45. En so sal jy sien dat wat foreach lus did-- hier laat ons gaan terug na daardie so dit is op die board-- kry ons _GET as woord. En daar was vier dinge in _GET. Maar dit net af te druk twee dinge. foreach, wat sy intelligensie self, aanvaar dat dit wat ons regtig wou was die waardes, en nie die sleutels. Maar daar is 'n manier dat ons kan druk die sleutels so goed, as ons wou. As ons wou ook weet wat hierdie veranderlikes genoem is, daar is 'n manier wat ons kan hierdie toegang so goed. En die manier om soort van dit te doen, sodat ons kan sê, kan regtig verdeel dit in sleutel waarde pare. So laat ons sien wat gebeur nou. So het ons die sleutel. Ons het waarde. Ons het nog 'n nuwe lyn vir leesbaarheid. En laat ons sien wat gebeur Wanneer ons dit nou doen. Ek weet nie hoe oud Jason is. Jason se 15. So het ons die naam Jason, ouderdom 15. So was ons in staat om toegang tot die sleutel en die waarde pare hierdie woordeboek net deur te sê as belangrike punte om waarde. En dit is 'n foreach sintaktiese suiker bietjie wat dit moontlik maak jy dinge toegang in die woordeboek. So hopelik hierdie soort van beklemtoon die krag van die foreach lus. Jy kan pretty much gooi enigiets wat iterable lyk, soos iets wat veelvuldige het elemente soos 'n skikking, soos 'n dictionary-- dit is twee primêre dinge wat jy moet werk met beide in lewe en in pset 7. Sodat jy kan daardie dinge gooi op, en dit sal uitvind wat jy wil doen met dit. Dit sal sê, OK, ek gaan om te kry hierdie dinge uit die data wat geslaag om my. En dit is iets wat jy gaan word met behulp van 'n baie in pset 7. Ek gaan 'n vinnige blaai af net om te sien waar ek op. Moenie mense het vrae op hierdie punt? Vrae by almal? Ja? GEHOOR: So met die sleutel en waarde, jy kan dit noem enigiets anders en dit sou nog steeds werk? Spreker: Oops. Sjoe, ek is dit heeltemal verwyder die hele lyn. Groot werk. So 'n, a. Sleutel en waarde is net 'n konvensie. Dit is nuttig. Jy sal 'n paar ontwerp te kry punte, miskien 'n paar styl punte om dit te doen, want dit wat regtig dra die bedoeling nie. Maar ons sê 'n en yarp. GEHOOR: Jy hoef nie te niks verander in die HTML-lêer ten einde aan te toon dat? Spreker: Glad nie. GEHOOR: En dit is net weet dat as gevolg van die groter gelyk than-- Spreker: Ja. GEHOOR: --that aanduiding dat that's-- Spreker: Ja. Dit is 'n foreach sintaksis, maar ja. GEHOOR: Daar is nie tipes. So, wat as jy wou ouderdom net 'n getal wees? Is daar 'n manier om dit te doen? Spreker: Daar is maniere om te kyk of veranderlikes aan sekere tipes. So PHP vra 'n bietjie meer van jy, want daar is geen tipes in. Sommige maniere dit vra minder. In sommige maniere vra dit meer. Want as jy net iets in 'n veranderlike, jy het geen idee watter tipe dit is. Maar as jy slim oor die veranderlikes dat jy tipes om te wys en maak seker wat funksioneer net return-- jy wil funksies slegs terugkeer 'n tipe van waarde so wat jy kan basies verwag dat die veranderlike wat jy terug kry van 'n funksie sal wees van die tipe wat jy dink dit sal wees, basies. Maar daar is 'n paar metodes deur wat jy kan kyk. Ek het hulle nie onthou uit die bokant van my kop. Ek wag vir dit om te blou. isint? isstr? Daar is metodes gebou in PHP wat kan Gaan die tipe veranderlikes vir jou. Maar as jy veranderlikes toeken slim, moet jy nie het dat te veel te doen in pset 7. Maar dié metodes bestaan ​​nie. En dit is iets wat is in die taal self. En ek onthou nie die presiese sintaksis. Ons kan selfs kyk dit. Maar die tyd is van die essensie. het daar iemand anders het meer vrae? Ja. GEHOOR: Ek het nog net een. So jy genoem die GET-metode, maar jy het die POST-metode noem nie. Ons kom terug na dit? Spreker: Ja, ons sal kom terug na daardie. Dit is presies wat ek soek op my selfoon, wat nou aan die slaap geraak, maar ek sal dit vind. Net om seker te maak ons ​​getref al die PHP notas. Yep, daar is geen debugging weergawe. Ja, ons het nog 'n paar dinge wat ons nou wil doen op hierdie punt. So praat oor POST, wat jy genoem het, Die enigste verskil tussen AOO en pos wat onthou wanneer ons gekyk op hierdie URL en ons het gesien, o, naam is gelyk aan 'n en ouderdom gelyk yarp is reg in die URL daar vir ons. Pos is 'n bietjie meer geheimsinnig met sy afsterwe van inligting. So as jy nie wil hê 'n gebruiker om te weet, byvoorbeeld, het jy wou nie die gebruikersnaam wagwoord van die persoon tans aangemeld word vertoon in die URL, wat is 'n redelike ding om nie in die URL, want iemand kan dit sien. As hulle iemand skakel na 'n bladsy, jy wil nie hul URL daar gepleister, want dit sou toelaat dat mense om aan te meld net met die plak van 'n URL in plaas werklik te vul 'n vorm in. Pos is 'n bietjie meer geheimsinnig. En die enigste dinge wat ons sal moet verander is hierdie metode, verandering uit te kry om te post. En dan die binnekant van die HTTP, plaas toegang tot die skikking _GET, ons gaan om toegang tot die skikking _POST. En ons sal sien dat, indien Ons maak hierdie weer terug, Jason stadig dalings in ouderdom. noem Jason, ouderdom 14. Dieselfde dinge verskyn. Maar ons gaan na die URL en daardie veranderlikes is nie daar nie. En die manier waarop POST passes-- so onthou hoe om te kyk na die bron van 'n bladsy. Ons gaan na die netwerk. Ons verfris. En dit is 'n ander ding wat POST sal jou waarskuwings oor te gee. Jy kan 'n boks, 'n teks gesien boks soos dit in die leser. Is jy seker jy wil hê om 'n vorm weer stuur? Pos is wat 's stuur hierdie vorms. Omdat basies as jy jou gestuur kredietkaart inligting vir iemand, dit gaan nie om te wys in die URL. Dit gaan 'n POST versoek word. So wanneer jy die bladsy te verfris, dit is weer in daardie pos versoek. So nou wil ons die stuur vorm weer, want dit gaan nie enige duplikaat aankope te skep. En ons sal sien dat hier neer, die metode wat ons gebruik is Post. En dit het inderdaad dra grepe. Dit oorgedra 401 van hulle. Program se mooi klein. Maar daar is nêrens dat ons kan sien die waardes wat oorgedra word. Die webblaaie hulself kan sien, maar ons as gebruikers nie in staat is om te sien, tensy jy 'n hacker. As jy 'n goeie hacker, kan jy kyk. As jy weet wat die basiese formaat van die HTML, die waardes sal maak hulself in die bladsye bekend. Jy sal in staat wees om te sien. Die waardes sal daar wees, hulle is net 'n bietjie minder voor die hand liggend vir jou toegang, basies. Het ons nie meer vrae oor AOO, POST before-- wat ons gaan volgende te doen is eintlik kyk na sommige van die kode wat jy gee in pset 7, praat oor hoe dit gebruik sommige van hierdie konsepte, en praat oor die dinge wat jy gaan om 'n bietjie te doen in pset 7. Enige verdere vrae voor dit? Meer vrae wat jy ouens het? Groot. Alle reg, laat ons kyk 'n bietjie op pset 7, geen twyfel wat jy is al die meeste opgewonde oor. Ek bedoel, dit is iets wat David gaan deur 'n bietjie. Maar ons sal drie dopgehou het by die top, sowel as 'n konfigurasielêer. Dit is vir databasisse, wat ons sal praat oor in omtrent vyf minute. Sluit, jy nooit nodig om te kyk in hierdie gids as jy nie wil, maar dit is lekker om weet daar is allerhande helpers. Helpers is soos nuttig funksies. En dan het ons config, wat stel 'n paar dinge op. Daar is 'n paar funksies wat CS50 het geskryf wat in helper en config. En 'n paar van die PHP dat reeds uitgange in lêers sal 'n baie van die meer soort doen van stomp been werk vir jou. Soos as ons gaan in die openbare login.php, en dit is wat toon reg wanneer jy gaan in pset 7. Ons sal sien dat daar hierdie vereis verklaring. En dat die soort van soos 'n skerp sluit, hashtag sluit as jy van 'n nuwe generasie. Maar dit basies sê dat ek toegang nodig om al die funksies in config.php. En jy kan 'n eis vir alle vorme van ander dinge. config vereis eintlik helpers. So wanneer jy nodig het config, het jy ook is insluitend of vereis helpers as well. Sodat gee jou toegang tot al die koel funksies wat ons gaan gebruik, dinge wil lewer. Ek is eintlik van plan om te verlig dit neer 'n bietjie. So die funksie dan is ons gaan om te loop deur net voor ons na 'n bietjie SQL bietjie is die login.php funksie, net omdat dit gebruik maak van sommige van die onderwerpe dat ons net gepraat oor in PHP. Jy sien die eerste ding is as $ _SERVER. Dit is nog 'n globale veranderlike wat jy gaan doen het met. Dit is soos _GET en _POST, maar wat bediener bevat is dit wat jy kan laat weet of die versoek metode was 'n AOO of 'n pos. Soos voorheen wat ons doen is net in ons kode wat ons geskryf het, ons was net om dit te verander om te wees en kry POST afhangende van wat die HTML het. Maar daar is bladsye wat kan wees verkry word met beide tipes versoeke. En jy kan wil doen verskillende dinge afhangende van die tipe versoek, net soos login doen. Sodat jy kan daardie versoek kyk metode deur middel van toegang sleutels, deur gebruik te maak van 'n sleutel en kry die waarde van iets in die woordeboek _SERVER. So dis 'n ander globale veranderlike soos _GET en _POST. As dit kry, ons wil lewer die login vorm. Lewer is 'n funksie wat basies net sit op die toepaslike HTML en gee dit 'n paar parameters. Hierdie titel is 'n parameter wat gebruik tydens die vertoning van, vreemd genoeg, die titel van die bladsy in vraag, die ding hier, sê of hallo in ons vorige voorbeeld. Nou het ons 'n ander ding. Anders as dit POST ons doen 'n paar ander dinge. Ons gebruik die leë metode. Dit is nie bestaan ​​nie, dit is leeg. En ons het voor, PHP het 'n billike bedrag van gebou in die metodes wat Dawid will-- indien daar is metodes wat nuttig is vir jou, hulle sal word gewaarsku om jou in die loop deur Dawid gee aan die begin oorsig, en ook Zamyla se nuttige stukkies. Sy is terug almal. Ons kan almal bly wees. verskoning is 'n gepaste naam funksie wat net basies druk uit sommige fout boodskappe, omdat CS50 is baie beleefd. En nou is dit, dit is 'n lastig bietjie, want dit is waar ons die databasis is bevraagteken. Nou het ons nie gepraat oor databasisse. En ons gaan in die volgende vyf minute of so, maksimum. Maar dit is 'n funksie dat CS50 geskryf om 'n tafel te kry basies uit 'n databasis dat ons werk in pset 7. Ek is regtig sleg met my zero kruip vandag. Maar ja, dit is 7. So navraag dit gaan om 'n terugkeer skikking, basies is die sleutel bietjie. En omdat hierdie dinge het nie tik, so rye is 'n verskeidenheid van skikkings. Want as ons dink oor 'n tafel, wat ons gaan doen is, soos jy geleer het in psets soos die spel van die 15, in elk geval waar jy moes 'n gebruik dubbel skikking, ons basies het verskeidenheid van ander skikkings maak 'n tafel. En jy het rye en kolomme. En dan kan jy hulle toegang soos [0] [1], kry jy die [0] [1]. Basiese dinge soos dat. So wat ons doen hier in hierdie funksie, ons die databasis vra as die gebruiker wat probeer om aan te meld, sal dit wees gestuur deur die pos metode. Ons sal sien wat ons kry die gebruikersnaam _POST. Hulle sal gestuur het, die gebruiker of jy sal 'n waarde stuur deur 'n vorm deur POST omdat dit is gebruikersnaam en wagwoord dinge. Ons monitor die gebruikersnaam om te sien, is dit in die tabel? Want as 'n gebruiker aan te meld in, dan is hulle gebruikersnaam moet gestoor word in die tabel van gebruikers wat bestaan ​​vir hierdie site. So basies as die gebruiker is in die databasis, navraag gaan om terug te keer daardie ry, wat 'n skikking. Maar die moeilike deel is dat as selfs al die dubbele skikking is net een ry, selfs al is dit 'n een ry array-- soos jy het basically-- het as jy 'n grootte een array het dit is 'n ander hou skikking, Jy is regtig te doen met een kolom. Maar dit is nog steeds behandel soos 'n dubbel skikking. En dit is waar dit soms kan kry lastig, omdat ons hier het rye. Ons veranderlike rye. En dan is ons skep 'n nuwe veranderlike genoem ry en die opstel van dit gelyk aan die eerste ry van rye. En jy sal sien dat kommentaar sê dit is die eerste en enigste ry. So, dit is die moeilike deel waar nou funksies kan baie maklik skikkings terugkeer. Daar is nie mallocs. Jy sal nie mallocs sien. So sal jy nie sien seg foute. Maar funksies sal nog verbygaan rondom skikkings en data in groepe. En jy het versigtig te wees wat presies jou funksies sal terugkeer. En selfs as dit is een kolom soos hierdie, navraag gaan nog 'n dubbele verskeidenheid terugkeer. So om toegang wat column-- of jy kan dink al hierdie as omgekeerde sedert ons praat oor rye. Maar om toegang te verkry dat 'n mens ry, jy kan nie net sê rye. Selfs al is dit een ry, moet jy moenie rowsrows [0] te sorteer van hierdie skakel buitenste bietjie van die skikking en net jou een ry. Doen n paar ander dinge. Daar is 'n funksie genoem password_verify wat bevestig die wagwoord wat gepos is. En dan sien ons nog 'n globale veranderlike hier, _SESSION. Basies sessie ID is hoe jy tred te hou van as iemand aangemeld is of nie. So nou met login.php, ons meld 'n gebruiker in. So wat ons wil doen, is ons wil sê die sessie id is gelyk aan die ry id, wat net sin maak, want elke ry sal 'n ander ID het nommer as deel van die tafel. Ons kry in SQL in 'n tweede, so as enige van hierdie lyk 'n bietjie soos blah, dan sal almal opgeklaar word. Maar ons gaan na die id gelyk te stel die behoorlike ding, meld die gebruiker in. Jammer as iets verkeerd gaan. En dit is logins doel in lewe as Professor Malan sou sê. So dit was login.php. En 'n groot deel van die PHP-kode wat jy skryf in pset 7, sal hulle 'n bietjie wees. Moenie vergeet om te chmod die behoorlike toestemming. Daar sal 'n bietjie oor wees dat in die begin van die spec. Maar die PHP dat jy skriftelik gaan wees doen dinge wat soortgelyk aan hierdie. Jy gaan wees toegang tot 'n paar dinge wat aan jou gegee word in die globale veranderlikes van PHP wat te doen het met die huidige aangemeld gebruiker, of daar gewees versoeke gestuur om hierdie bladsy, verskillende dinge soos dat. En dit sal ook potensieel iterating deur rye van hierdie ding. In 'n ander funksie, navraag nie terug hierdie dubbele skikking. En as daar is meer as een rye in dit, indien daar are-- ja, as daar meer as een rye in dit, dan sal dit 'n tafel wees. En jy dalk wil Itereer deur die rye van hierdie verskeidenheid behulp die foreach lus dat ons beskryf. So as jy foreach doen op 'n dubbel skikking, wat sal die word-- hier Ek sal eintlik skryf dit. Ek sal dit vinnig hier skryf. As ons 'n foreach rye as ry, wat is die aard van die ry? Is daar iemand weet? Jy het dit? So rye is 'n dubbele skikking. So, wat is foreach gaan aflei wat ons wil uit hierdie dubbele verskeidenheid as ons iterating oor dit? Ons kan aanneem dat basies dit gaan om óf elemente, of rye of kolomme, basies. En so rye en kolomme ons kan hanteer as die dieselfde ding. Basies wat die foreach lus gaan te doen, is dit gaan rye terug te keer. ry gaan van die tipe ry te wees, terwyl rye is 'n dubbele skikking. So as jy foreach gee 'n dubbele skikking, dit is gaan nie Itereer meer as een vlak diep. Wat is basies te sê as daar agt selle in hierdie table-- 1,2, 3: 4, 5, 6, 7, 8-- die foreach lus is nie gaan om te gaan deur middel van elkeen van hierdie selle. Wat die foreach lus sal doen is dit gaan deur middel van hierdie ry, gee jou hierdie hele ry. En dan is dit gaan deur die ry. So is dit net een vlak diep iterate. As jy 'n geneste voeg foreach lus, dan moet jy kan elke ry terug van behandel rye, het jy foreach ry as element, Kom ons sê. En dan kan jy die element eggo. So dit is 'n kort bietjie opknappingskursusse oor hoe jy kan met behulp van foreach lusse in die konteks van die soektog. Is daar enige vrae oor PHP? Enigiets voordat ons skuif op na praat oor SQL en die pret van databasis? Voel goed? Voel goed. Alles reg. Kom ons beweeg terug na die PowerPoint, wat jy waarskynlik mis. SQL, yay. Mense wat in my artikel tipies sal weet dat subopskrifte van akronieme is altyd net die eerste woorde Ek dink van daardie wedstryd wat algorithm-- dat akroniem. Dit is nie 'n algoritme. So SQL is 'n databasis. Dit is 'n taal wat werk met databasisse. En al databasisse is tafels, ten minste in die manier dat SQL verteenwoordig hulle. Nog 'n manier om te dink oor databasisse databasisse is 'n stel sleutels en waardes basies. Jy kan dink oor 'n databasis as 'n woordeboek en ook as 'n tafel. Eintlik is dit is 'n manier om te assosieer verskillende data met ander data, dikwels deur rye en kolomme. En dit is die manier dis SQL werk die beste. So dit is een voorbeeld van 'n tafel. Ek het 'n paar voorbeelde van het mense in my artikel, wat Ek het nie tyd om te verander nie. Maar ons het dinge soos ID, naam, supermoondheid, en tuisdorp. Ek weet nie waar iemand se uit in my artikel, so ek is net gaan om te aanvaar almal is van New York City, want ek het 'n hoë statistiese waarskynlikheid van korrek. SQL sal outomaties sorg van die kolom ID vir jou. As jy 'n nuwe ry voeg in 'n SQL databasis, dit sal inkrementeer wat ID-nommer en net basies vashou soos vyf name, supermoondheid, tuisdorp, wie op die einde van die tafel. So ID is 'n kolom wat jy nooit weer hoef te bekommer nie. Maar, soos in die geval van login.php, wanneer ons was om die sessie ID van 'n tafel en net die gebruik van ID, ID is 'n manier om uniek te identifiseer 'n element van 'n databasis. So as ons het twee Sams, beide van wat CS50 geleer het, en beide van wat was van Milwaukee, diegene sou nog duidelike ID-nommers en dus duidelike in wees die konteks van die tafel. So dit is wat SQL is die hantering met, in samewerking met die agterkant. En dit is die vier opdragte wat jy nodig het om te werk met SQL. En ek gooi hulle almal op een skyfie. Maar ons gaan om te gaan deur hulle almal individueel. Die eerste opdrag is UPDATE, wat doen wat jy kan verwag. Sê jy 'n paar data in die tafel wat uit datum. Soos as jy hou spoor van die mense se name en ouderdomme, as iemand se ouderdom toeneem, dan jy gaan om te wil om in te gaan en werk se ouderdom net daardie persoon. Vir 'n voorbeeld wat werk met ons eerste table-- moenie bekommerd wees oor die skryf van al hierdie gebooie op dieselfde tyd. Maar as jy het update af, dit sal goed wees vir hierdie deel wees, want ons gaan gaan terug na die tafel. So as ons gaan terug na die tafel, laat iets wat gebeur sê is daar 'n aardbewing was of 'n fout lyn wat direk verdeel deur New York City. En ons wou almal werk wat in New York City gewoon het. Hulle het almal om te skuif na Pennsylvania. Dit is nie 'n tuisdorp. Hulle het almal om te skuif na New Haven. Daar gaan ons. Sodat almal in New York beweeg na New Haven. En so dit is iets wat redigering drie rye in die tabel. Maar in SQL, kan jy doen wat in net een verklaring. So terug te gaan ons te werk. Laat my vinnige weer uitvee hierdie bord. Wanneer ons praat oor opdatering, is daar 'n paar dele van die sintaksis wat die sleutel is. Wel, al die sintaksis is die sleutel. Maar die dinge wat in die groen is opsioneel. Die wit vereis word, soos gedefinieerde name. En die lig blou is dinge wat wissel afhangende van die tafel. So dit is wat gaan aan met die kleur skema hier, daar. So as ons wil net diegene rye werk van die mense wat in New York woon, so wat ons sou doen as ons sê UPDATE? So tafel is waar ons sit die naam van ons tafel. Laat ons net die naam sê van ons tafel is een tafel. So wil ons te werk tafel een. En ons wil set-- wat wil ons te rig? Wel ons wil sê, so column-- PHP behandel rye as unieke identifiseerders. En dan kolomme is die verskillende velde van daardie elemente van die databasis. Dus is die eerste element van die databasis het 'n naam van Sam, supermoondheid van CS50, en 'n tuisdorp van Milwaukee. So as ons sê te stel, laat ons kyk na die parameters weer daardie stel neem. Ons het kolom gelyk waarde. So wil ons sommige sê column-- wat onthou is 'n field-- ons wil 'n sien gebied gelyk aan iets nuuts. So as ons net gesê update tabel 1 uiteengesit naam gelyk Elliot. Kry 'n paar mense uit die nuwe afdeling op hierdie. Maar as ons nou net gedoen het update tafel 1 stel naam gelyk Elliot, wat sou die tafel lyk nadat dit? Mense het 'n idee? Ja. GEHOOR: Alles in daardie ry sou Elliot geword. Spreker: Alles wat ry? GEHOOR: In die eerste ry. Spreker: In die eerste ry? Waarom die eerste ry? Ek bedoel nie om op te tel op jou. GEHOOR: Miskien alles in die hele tafel? Spreker: Alles in die hele tafel, ja. En dit is presies reg because-- ek was net om jou te help 'n bietjie there-- omdat ons uitgelaat die opsionele WHERE klousule. As jy nie die WAAR het klousule, wat hierdie opdrag sal doen is dit sal werk met elke enkele ry in die tabel. Naam sal almal se geword Elliott, basies, wat Elliot is baie gelukkig oor. Of Yanni, een van die twee. Maar almal se naam sal verander. So die manier gebruik ons ​​die WAAR clause-- en dit geld vir al die wheres wat in elk van hierdie verskillende dinge. So jy sal daardie stel sien het kolom gelyke waarde. En so ook WAAR. Maar dit is anders tipes state. So het die kolom gelyk waarde in stel is in opdrag. Soos ons sê ons wil naam gelyk aan Elliot stel. Maar in die WAAR klousules, hierdie is stellings gelykheid. So kom ons sê ons wou net om verander die naam van die persoon se Elliot As hulle naam was Ryan, kom ons sê. So wanneer ons sê WAAR naam is gelyk aan Ryan, wat sou suksesvol enigste verandering die name-- dat dit net verander die veld naam in rye waar die veld naam is gelyk aan Ryan. So as ons het verskeie mense vernoem Ryan, almal van hulle name sou verander na Elliot. Dit is soortgelyk aan die voorbeeld van of 'n fout lyn split New York City en almal het om skuif na New Haven, die manier waarop ons kan doen in een verklaring UPDATE Tabel1 SET tuisdorp = New Haven waar tuisdorp gelyk New York City. Dit is die krag van Die update verklaring. Ons kan 'n aantal van te kies rye deur ware stellings oor die velde in die rye. Ons kan UPDATE Tabel1 stel nie sê name = Elliot WAAR ry = 1, behalwe dat ons kan as ons sê ID = 1. So ons gaan wees werk met gelykheid velde, gelyke kolomme. Maar met behulp van die ID veld is 'n manier om kies individuele rye spesifiek omdat die ID veld is 'n unieke identifiseerder in 'n SQL databasis. Dus, net soos die opdatering ry een, ID gelyk 1. Opdatering ry twee, net verander ID nommer. Maar die krag van die WAAR verklaring is dat ons kan dinge werk op grond van wat hulle huidige waardes van sekere dinge. Ja Elliot? GEHOOR: En wat as jy wil aan- Weereens, dit is 'n ander vraag. Maar my eerste vraag was, waar is dit gebeur? Waar gaan ek die opdatering van hierdie? Is dit in 'n PHP-kode? Spreker: Waar jy werk, ja. Ons gaan om te praat oor waar al hierdie gebeur soort sodra ons gaan deur al die opdragte. Maar wat jy nodig het om te weet nou basies dat jou SQL databasis bestaan ​​as iets verkry word deur die navraag funksie, wat CS50 omskryf. So as jy die navraag funksie te gebruik, jy kan toegang tot hierdie tabel. So jy sal stuur hierdie beveel om jou tafel in PHP lêers deur die navraag funksie. Jy kan ook speel rond met jou tafel direk. En dit is die beste manier om toets hierdie soort van opdragte. En ons gaan deur presies hoe om dit te doen in net 'n bietjie. So dit is UPDATE opdrag. En die res van die opdragte gaan soort van soortgelyke wees, werk op soortgelyke dinge. Die INSERT INTO is waarskynlik die mees anders UPDATE. Ek gaan daar laat dit vir net 'n bietjie en werk hier. So voeg in, sal jy sien tafel is nog steeds dieselfde. Jy wil voeg in. Die kapitalisering, SQL is kassensitief. So jy hoef nie te kapitaliseer hierdie dinge. Deur konvensie, die woorde in wit word gekapitaliseer. Maar ek het ook kleurgekodeerde hulle. Die enigste rede dat jy kapitaliseer diegene wanneer jy tik is net om te beklemtoon dat diegene konstantes. En so kan jy óf kyk die kapitalisasie of die feit dat ek dit anders het gekleur. Dus het ons voeg in het, laat se weer doen Tabel1. Dit is almal op 'n lyn. Ek is net te skei dit deur die verskillende state. So moenie bekommerd wees oor die feit dat Tabel1 het dit op die tweede lyn. So wil ons in te voeg IN Tabel1 paar waardes. En jy sal sien die opsionele bietjie wat ek in 'n tweede om kry. So ons het WAARDES. So kom ons sê ons wil Andi voeg na ons tafel, want ons mis Andi. Andi is siek. So laat voeg Andi na ons tafel. Onthou dat die ID-nommer word outomaties opgedateer. Dus is die enigste velde ons hoef te bekommer oor is die naam, supermoondheid, en tuisdorp. En so het die manier waarop ons dit doen, kyk na ons sintaksis, is ons het net 'n hakies, met komma geskei waardes, wat elk is nie 'n waarde. So as ons wou Andi voeg in ons tafel, al wat ons moet doen, is om reg Andi. Wat is Andi se supermoondheid, mense in artikel Andi se? Sy wil vlug, of wil spoed, of iets. Wat doen ons reeds daar? Ons het CS50, vlug, spoed, en sterkte. GEHOOR: Tyd reis. Spreker: Tyd reis, amazing. Dus het ons Andi, tyd het reis, en haar tuisdorp. Dit is 'n baie goeie vraag. New York City, tensy iemand weet. Almal is van New York is die les om weg te neem van vandag af. So hierdie stelling sou voeg soos 'n vyfde agtereenvolgende met die tyd te reis supermoondheid en 'n tuisdorp van New York City. Maar die opsionele veld is basies 'n manier presies wat kolomme spesifiseer jy wil om dinge in te voeg. Die manier waarop ons dit doen nou, Andi, die tyd te reis, New York City, gaan in die presiese volgorde van ons table-- naam supermoondheid, tuisdorp. En as jy wou doen iets anders as dit, soos sê jy het nie geweet iemand se supermoondheid, soos hoe ek het nie geweet Andi se supermoondheid in die begin. So al wat ek haar geken het, was noem en haar tuisdorp. Wat ek kan doen is wat ek kon do-- Ek sal hierdie vinnige vee. Ek wil net die kolomme te werk. En dit is waar die opsionele kolom lys kom in die spel. Ek wil net die naam en tuisdorp werk. En dan sal ek sê WAARDES. Ek sal doen Andi en New York City. As ek die lys van kolomme het weggelaat en net hierdie twee dinge gedoen het, waar sou New York City gegaan het? Watter kolom sou New York City is geplaas in? Mense het 'n idee? Supermoondheid, presies. So dit sal net gaan in orde is. En sodra dit die einde van die bereik lys, sal dit net ophou te vul dinge in. En die waardes wat dit sal hou in al die kolomme net NULL. So, omdat ons gespesifiseerde naam en tuisdorp, ons gaan ID 5 het, noem Andi, supermoondheid NULL. So is 'n supermoondheid geïnitialiseerd waarde. Jy sal nie noodwendig die dieselfde Valgrind foute as jy probeer en toegang tot dit. Alles sal goed wees zeroed uit, want NULL is nie 'n waarde in SQL. Dit is 'n konstante. En dan tuisdorp sal New York City. So wat is die plaas in bevel. Voordat ons beweeg, is daar twee opdragte. Moenie mense enige vrae oor UPDATE oor te voeg in, oor SQL algemeen voor ons beweeg op ons finale stukkies? Mense voel goed, baie goed. Hou daarvan. So laat ons praat oor kies. Gaan sloot UPDATE hier. En kies gaan baie soortgelyk te wees. Die doel van die SELECT, Doel in die lewe se SELECT is om jou 'n klomp van die kolomme gee wat voldoen aan sekere voorwaardes. En wanneer ek sê bevredig sekere voorwaardes, jou gedagtes mag onmiddellik gaan terug na dat waar klousule wat opgekom het in UPDATE. En dat klousule presies daar in die kies. As ons nie die WAAR klousule en ons sê SELECT naam hometown-- gespel dat 'n bietjie wrong-- naam tuisdorp UIT Tabel1. As ons sê net dat, wat KIES gaan om te gee ons is dit gaan ons 'n gee double-- 'n tafel, eerder. 'N dubbele verskeidenheid as ons dink oor in PHP sintuie. Maar dit is net gaan vir ons 'n gee dubbel verskeidenheid van twee columns-- naam en tuisdorp. En dit sal ID ignoreer. En dit sal supermoondheid te ignoreer. En dit sal ons net elke gee enkele ry van daardie tafel. So as ons net ingevoeg Andi, sal ons Andi. En ons sal die oorspronklike vier. As hulle het is opgedateer, wat sal weerspieël word, ensovoorts, ensovoorts. So, dit is omdat ons het nie die WHERE klousule. Maar ons kan dit gebruik in presies dieselfde manier waarop ons dit gebruik in UPDATE. As ons wil net 'n tafel van die name en super magte van die mense wat in New York, kan ons 'n verklaring uit te voer soos SELECT naam superpower-- Ek gaan net om that-- verlof van Tabel1 WAAR tuisdorp = New York City. So dit gaan om te wys dat jy kan kry heeltemal verskillende kolomme, en dan sit kolomme dat jy nie selfs om terug in die WHERE klousule. Ons wil nie eens die tuisdorp van almal. Maar ons wil die naam en die supermoondheid van mense wie tuisdorp is New York City. Sodat is iets wat ons kan doen met die WAAR klousule is wat ons kan hanteer kolomme dat ons nie noodwendig wil terug. In dieselfde manier te werk, kan ons hanteer met kolomme wat ons doen nie noodwendig wil werk. Ons kan die stad almal werk wie se naam is Sam, byvoorbeeld. Ons kan die stad te werk elkeen wie se ID-nommer is 2. Dus net werk die stad van die tweede ry waar ons nie te doen het met nodig is om die algemene vraag. En verwyder is, soos jy wil verwag nie, verwyder uit Tabel1. En dan het ons 'n ander waar klousule. So kan ons sê WAAR ID = 1. Verwyder die eerste ry. En DELETE sal altyd 'n ry te verwyder, of dit sal 'n aantal rye verwyder. Verwyder uit tabel WHERE tuisdorp = New York City sal almal in New York City te verwyder. Dit is as daar 'n skielike tragiese plaag en jy wou net om te verwyder almal van die tafel wat geleef het in 'n sekere stad wat getref is deur die plaag. Mag hulle rus in vrede. Dit is die vier SQL opdragte wat jy nodig het om te gebruik. Jy kan nie eens nodig gebruik hulle almal. Maar dit is die vier dat CS50 jou verwag gemaklik met gaan in wees beide quiz 1 en ook pset7 en pset8. Daar is weer net die tafel. In hierdie een, Roy se supermoondheid het is opgedateer om laserstrale, wat is 'n voorbeeld het ek nie gebruik nie. Ek weet nie watter een Roy verkies nie, maar sterkte. Roy het 'n supermoondheid van krag. Katherine het nie maak dit vandag. Dit is jammer. Maar sy het super spoed. Wel dit was PHP. Voordat ons praat oor MVC, doen iemand vrae oor PHP hê? Nou SQL of PHP as jy skielik kom met 'n vraag oor PHP? Groot. Alle reg, ons is al dan stel. So praat 'n bietjie oor model oog leiers, laat ons gaan terug na 'n paar van die dinge in pset7. So, wat model oog kontroleerder is-- ek is nie gaan my veranderinge stoor om aan te meld want ek heeltemal afgeslag het. Maar basies het ons twee afsonderlike dinge aan die gang. Ons het 'n openbare gids wat bevat die kode wat gaan uitgevoer word en die web bladsye wat besoek sal word. En ons het ook hierdie menings gids. En menings bevat templates. Dit is wat die funksie render-- ons gesien die lewer funksie in 'n klomp van die PHP-kode dat CS50 het reeds geskryf vir jou, wat neem in sekere parameters. Wat dit code doen is dit gaan in uitsig, wat stelle is soos prewritten HTML-kode, en dit is die inbring waardes in sekere plekke. Dit is hoe wanneer jy gaan in CS50 Finansies, dieselfde kop is op elke bladsy. Dieselfde footer is op elke bladsy. Dit is omdat die manier dat lewer werke is dit sal outomaties pleister in daardie kop en kyker wat jy kan vind in uitsig. Ons kan eintlik gaan in kop, en kyk, dit is 'n HTML-lêer met 'n kop. Dit het 'n paar style. Jy hoef nie te kyk na CSS vir pset7 as jy nie wil nie. Maar jy kan verander hulle as wat jy wil, maak jou Finansies kyk 'n bietjie anders. Dit het 'n paar PHP in die kop 'n bietjie om te sien indien daar is 'n ander titel dit moet in hierdie kop sit. Maar net 'n paar ander skrifte, en skakels, en ander dinge. Hoof eindig, liggaam begin, en oops, ons het hierdie vreemde bietjie einde bietjie. En daar is 'n div, net soos 'n vormlose soort element wat 'n idee van die middel. En dan wanneer ons sien footer, ons het die einde van 'n div. Ons het 'n onderste, wat Die teks van die voet is. Einde van div, einde van die liggaam, einde van HTML. So, wat maak is doen is lewer is 'n soort van lap om kop, 'n verskillende PHP lêer sal die werklike dinge wat bevat jy sal sien, soos jou tafel van die aandele As jy wil koop of verkoop van aandele. En dan sal dit voeg in die voet. En die model oog kontroleerder idee is dat ons wil skei hoe dinge lyk van die kode. Dit is wat ons wil hê dat die frontend skei en die agterkant, waar die frontend is die dinge wat die gebruiker sien, die lekker visuals-- HTML, CSS, dinge soos dat beelde, ensovoorts. En die agterkant is PHP. Dit is die kode wat jy skryf. Dit is waar die kode wat is doen werklike bedrywighede. Dit is wanneer jy die toevoeging n voorraad om jou tafel wanneer jy koop en verkoop, dit is backend. En ons kan, soos jy gesien het, insluitend PHP direk in HTML. So, wat ons kon gedoen het vir hierdie opdrag is net ' 'n HTML-lêer vir elke bladsy, soos login. En dan op die bladsy, net het 'n groot blok van PHP-kode, insluitende al die kode wat daardie bladsy spesifiek nodig het. En dan kan ons ' gedoen vir portefeulje. Ons kon al die koop gedoen en verkoop binne die individuele bladsye. Maar omdat ons die lewering afsonderlik van waar ons skryf die backend kode, kan ons maklik verander hoe dinge lyk sonder verander elke enkele lêer. Ons doen dinge soos voeg net 'n nuwe div aan die onderkant of-- Hallo Ek verander die voet. Jy kan net dinge doen soos dit. Maar ook, kan jy verander die hele visuele uitleg sonder dat dit wat is gaan in die backend. En jy kan die verander hele backend en nog steeds het dit lyk net soos voorheen. Dit Is die idee van model oog kontroleerder. En dit is eintlik 'n opgelê paradigma in sommige van die programmeertale jy dalk wil om te gebruik vir finale projekte. As jy iOS ontwikkeling te doen, hulle het sienings, en dit is wat jy sien op die iPhone, en dan backend as soos 'n aparte ding. Jy kan dink oor 'n bietjie. Daar is 'n baie binaries in rekenaarwetenskap, wat is snaaks, want alles is in binêre. Ek het nie beplan nie. Dit was 'n woordspeling onbedoelde. Ja, woordspeling nie bedoel is. Maar soos .H lêers en .c lêers, daar is 'n baie skeiding van die dinge wat ons dalk nie nodig. So kan ons net die h lêers te wysig, of iemand kan sien net 'n .H lêer en weet presies die funksies wat in die .c lêer sonder om noodwendig te weet hul implementering. Hierdie idee van die skeiding van komponente wat afhanklik is van mekaar maar kan soort van mekaar toegang deur verskillende kanale, verby veranderlikes, net sluit state, dinge soos wat hierdie beginsel help om programme te skep dat meer maklik kan wees geredigeer deur verskeie mense, kan nie meer maklik verander word of verander op 'n groot skaal, en is makliker om te ontfout in 'n baie maniere. Regtig vinnig, ek het 'n paar wenke vir pset7, wat ek volle skerm sodat jy nie sal maak net te kyk na the-- tip tip tippee. Daar is nie so baie tips. Maar ek genoem PHP is moeilik om te ontfout. Dubbel en trippel nagaan. As jou kode is net nie vertoon op die bladsy, dit is waarskynlik 'n PHP fout, jammer. Jy hoef nooit te kyk na CSS as jy nie wil nie. Maar sodra jy klaar is, kan dit wees 'n lekker bietjie pret ding om net in te gaan en mors met die CSS parameters. CSS en HTML is 'n voorbeeld van 'n model oog kontroleerder styl ding ook, reg? Jy kan styl tags binnekant van HTML-elemente. Maar as jy soort van uitkontraktering hulle CSS, hulle is makliker om te wysig en speel rond met, en om pret te hê met. Behandel CS50 helper funksies as black boxes. Jy hoef nie te weet presies wat lewer doen, maar glo dit altyd die regte ding afhangende van wat jy dit slaag, dinge soos hierdie. En ek sou aanbeveel kyk David se walkthrough, gaan deur al die dinge, nie net die todos, maar jy regtig kan hanteer hierdie swart bokse. Moenie in hierdie gaan funksies op soek na foute. En verwelkom die terugkeer van ons heerser Zamyla. Groot. Is daar enige finale vrae voordat Ons soort van weiering vir die dag? Ek nog lewe? Groot. Hi Livestream mense. Groot. Is daar meer vrae? Geen? En dan dink ek ons ​​is goed om te gaan vir vandag. Ek sal hou om 'n bietjie daarna as mense het vrae hulle was bang om te vra oor die stroom. Maar anders, het 'n goeie dag.