>> SAM LEVATICH: Velkommen til sektion for denne uge.
Jeg er ikke Andi.
Andi er faldet syg denne dag, og jeg er slags kaldes i sidste øjeblik
at overtage.
Det er influenzasæson, så sørg for, at du opholder rent, vaske dine hænder,
og spise sundt, så dig, også, ikke er sengeliggende.
>> Men uden yderligere ståhej, lad os komme i gang.
I dag, vi kommer til at tale om PHP lidt bit-- hvordan
PHP vedrører HTML, hvordan det angår CSS, og nogle af banen
ting du gjorde på den sidste opgave.
Vi kommer til at tale et lidt om SQL
og hvordan du kan arbejde med databaser, hvilket er en temmelig vigtig del af P
sæt 8-- P sæt 7.
P sæt 7.
>> Og så vil vi tale lidt lidt om, hvordan se controllere arbejde
og hvorfor det er en filosofi bag nogle moderne websider og anderledes design.
Temmelig meget en masse typer af apps og programmer, du kan sende
bruger denne model, view controller rammer,
at du vil bruge i P sæt 7, så jeg vil
snakke lidt om, hvorfor der er blevet
populære, hvorfor det er vigtigt og rart.
Og så vil jeg endelig gå videre til nogle tips om at tackle P sæt 7.
Og hvis vi har tid tilovers ved udgangen,
Vi kan faktisk gøre nogle arbejde på det sammen.
>> Så PHP.
Faktisk har du måske bemærket denne-- du ikke virkelig nødt til at dykke ned i det--
men P sæt 6 havde nogle PHP kode, som foregik.
Og fordi PHP er en C-lignende sprog, PHP, i modsætning til HTML og CSS,
er et programmeringssprog, mens HTML og CSS er statiske.
De er kodesprog beskæftiger med stil og visuelle layout.
PHP er den ægte vare.
>> PHP har løkker, har det conditions-- alt det, der er sjovt om C.
Det har et par ting, der er lidt smule bedre end C, som vi vil se,
men jeg tror, ​​den nemmeste måde at tale om PHP er bare at dykke i.
Så jeg har tænkt mig at gå ret i IDE på dette tidspunkt.
Det første, vi skal at gøre er faktisk kigge
lidt på nogle af de PHP kode, der var i P sæt 6.
Så den måde, som vi gør at-- før, den måde, at vi kørte
serveren for apparatet var, at vi ville have til at Motortype-
enten bruge din implementering eller personale gennemførelse
af server.c ved at gå ind i mappen og kører server.c med enten ingen
arguments-- så bare kalde det på lokal vært, hvilket er, hvad du sandsynligvis
gjorde de fleste af time-- og derefter fodre den
en directory-- med at bruge som sin rod
hvor hjemmesiden ville være kørt, dybest set.
>> Denne uge for P sæt 7, som stor som vores kode til server.c
er, der er mennesker, der allerede har skrevet disse fine ting over på CS50
der har lidt mere funktionalitet,
en server program, der er i stand til at behandle med lidt mere
af de snørklede, som vi vil se i både P sæt 7 og P sæt 8.
Og den måde, at du starter op server er ved blot at skrive, "apache50."
>> Og før du gør noget, du vil være sikker på
at Apache 50 ikke er allerede kører, som det er
på min maskine, som jeg gjorde for at teste det.
Og du gøre det ved at kalde apache50.
Stop, og du vil se, at det stopper webserveren, hvis du kan se der
nederst terminalvinduet.
Og så bare at starte, vi er vil kalde, "apache50 starte."
Og så vil vi at fodre den en mappe.
>> Nu, fordi vi ønsker at se på nogle af P sæt 6 kode
at vi havde gennemført, jeg faktisk kopieret en lille smule af P
sæt 6 kode ind i min egen mappe, som du kan se på venstre der.
Det hedder "SECTION8" i alle store bogstaver
fordi jeg er lige så spændt at være levende streamet i dag.
>> Så hvis vi køre dette, bør det alle arbejder temmelig effektivt.
Den siger, OK, vores hjemmeside er nu findes på adressen på IDE,
dybest set, hvilket er, hvad du brugte præcis som det var i P sæt 7-- P sæt 6.
Alle mine indekser er en indeks i dag.
Så vi kan gå til at adresse, hvis du vil huske,
ved blot at klikke på dette lille knappen i øverste højre.
>> Og du vil huske denne kode, som skete, da du gik ind i hello.php.
Og hvad koden er designet til at gøre, er, når du har skrevet et navn
her-- hvis du siger Sam fordi det er min name--
og jeg klikker Say Hello, når Vi gik til den næste side,
dette navn skulle blive vist.
Det vil sige, "Hej, Sam" eller "Hej," uanset navn, du
lagt i det, selvom vi gik til en helt ny webside.
>> Og dette er den slags ting at PHP kan gøre for dig.
PHP er i stand til at sende data mellem to websider.
Dette er en helt anden side.
Du vil se titlen er "hello" her.
Faktisk har de samme titel, men jeg
lover de er forskellige web sider, hvis vi ser på kilden.
Og du kan passere de data, der er indtastes i dette tekstfelt,
du sender det til det næste side, der bliver kaldt op,
og så, at data er i stand til at være der i sin nuværende form.
>> Nu er vi endnu ikke har gennemført dette selv, som
er, hvad vi vil gøre lige nu til sortering få en smag for, hvordan PHP fungerer,
men den centrale idé er, at PHP-- du kan slags tænker på det som en funktion.
Noget, som PHP kan lade dig do er det kan tage parametre
at du input til en HTML-side ved brug af PHP og former,
og det kan passere dem som parametre til den næste side, at det indlæses op.
>> I dette tilfælde, vi laste op denne side med knappen "Sig hej".
Men for nu, jeg faktisk slettet nogle af denne kode
i hello.php der blev kørt der rent faktisk var at vise "Hej,
verden "eller" hej, Sam "eller "Hej," uanset var bare input.
Så for lige nu, er vi vil gøre det, dybest set.
Vi kommer til at genskabe det, og også tilføje nogle flere funktioner,
gøre en lille smule mere med det, se hvad PHP er virkelig i stand til.
>> Så først, lad os tale om denne fil, hello.php.
Så hvis vi zoomer ind et lidt bit-- og nu er jeg
slags forsøger at rulle alle den måde around-- der vi går.
Du vil se det hedder hello.php, men syntaksen i det
ligner en HTML-fil.
Dette skyldes, at faktiske PHP i denne fil
er alle fast mellem disse Spørgsmålstegn-Caret blokke.
Alt lige her anses PHP kode.
>> Og du vil opdage, at da jeg gjorde en kommentar,
vil du se det velkendte to skråstreger.
Og hvis du vil huske, i HTML, hvis jeg skriver en kommentar,
det ser noget tættere på dette, hvilket er en kommentar i HTML.
Så virkelig alt mellem disse to vinkelbeslag
nu PHP kode, som afspejles i det faktum,
at denne lille kommentar symbol er forvandlet til en kommentar.
>> Så hver gang du skriver PHP kode, selv hvis der ikke er HTML-kode uden for det,
det altid vil være indesluttet i disse vinkelbeslag
med spørgsmålstegn.
Du kan slags tænker over det-- hvordan alle af den kode, der kørte i din C-programmer
blev lukket inde i en int main, ugyldig, krøllet tandbøjle, ende krøllet tandbøjle erklæring.
Og du vil se krøllede parenteser i PHP, også, men dette er slags
Ligesom den vigtigste metode til PHP.
>> Så nu, hvordan gør vi noget i PHP?
Nu, PHP er et programmeringssprog sprog, der er meget C-lignende,
men det fungerer på nettet.
Så én ting, vil du immediately-- en
af de første ting, du virkelig gjorde med C blev du udskrev ting ud, ikke?
Så i C vi gjorde det med en printf funktion.
Vi gav det en streng, formentlig med en ny linje,
og så har vi afsluttet den med et semikolon.
>> Så den måde, at vi kommer til at gøre det i PHP-- fordi det ikke er helt printf.
Det er en lille smule anderledes syntaks.
Den måde, som vi udskriver tingene ud i PHP er vi siger, "echo hej"
eller "echo" ethvert ord.
Og som har den virkning at gøre printf med en snor, "Hej."
Og det tilføjer den nye linje til det.
>> Så lad os lige nu gøre sure-- Jeg vil zoome ud igen lidt bit--
lad os sørge for, at at koden virker
fordi der kan meget vel være en fejl i denne kode
at vi bliver nødt til at tackle.
Så serveren allerede kører.
Så hvis vi rulle tilbage ned til bunden, Yup, er serveren stadig kører.
Så hvis vi bare trykke på denne lidt lige her--
welcome-- skal vi get-- stor.
>> Vi stadig har den velkendte "Sig hej" dialog,
men når jeg skriver i "hej," vi vil se at teksten "hello" var faktisk
printes ud, hvilket er præcis, som vi forventet, fordi echo i PHP
er ligesom en printf erklæring.
Så tilbage til den kode, hvordan i P sæt 6 gjorde du leveres distributionen koden
gøre det så PHP ville output den ting, som du
skrevet i den forrige skærm?
>> Og for at slags undersøge hvorfor det sker, er vi
gå i index.html, som er den oprindelige fil, den fil,
dukker op på denne skærm med knappen "Sig hej".
Du bemærker, at der er alle de klassiske ting
vi er kommet til at forvente fra HTML sådan som disse ting, disse tags vedlagt
i vinkelbeslag, som PHP men uden de spørgsmålstegn,
hvilket indikerer en speciel ting til HTML.
Vi har titel, som er "hej."
Og du vil opdage, at som vi så, Titlen er "hej" i begge tilfælde.
Lad os ændre denne ene til "sige" bare så vi
kan skelne os selv, hvor vi er.
>> Men vi har en krop.
Og derefter den interessante bit, bit, der dukker op i HTML,
er denne formular element.
Og så vi har fået en formular.
Og det er nøglen.
Dette er, hvordan vi arbejder med PHP.
Handlingen parameter formular siger, at hello.php
er, hvad vi kommer til at sende værdierne i denne formular til.
Det er her, vi passerer parametrene, så at sige.
>> Du vil opdage en anden ting her er, at metoden er "får."
Der er to primære metoder, som vil
være ved hjælp af PHP til at videregive oplysninger mellem websites-- websider,
rather-- i denne opgave.
Og disse metoder er "få" og "post".
Der er nogle subtile forskelle mellem get og post
at vi får into-- vi vil "komme" ind, hvis du vil.
>> Men for alle virkeligheden og formål, får og post
er begge kun måder, du passerer parametre
med lidt forskellige udførelser.
For nu, vi kommer til at bruge få, fordi få var hvad der blev brugt oprindeligt
i PHP-filen P sæt 6.
Og faktisk, hvis vi går ind og ser før vi har redigeret noget andet,
Jeg har tænkt mig at sige hej at-- hvad er dit navn?
>> PUBLIKUM: Elliot.
SAM LEVATICH: Åh, gosh.
Jeg ved ikke, hvordan man staver det.
Kan du stave det for mig?
Målgruppe: E-L-L-I-O-T.
>> SAM LEVATICH: I-O-T?
>> Publikum: Ja.
>> SAM LEVATICH: Perfekt.
OK.
Jeg tror jeg gjorde ved, hvordan man staver det.
Undskyld.
Men hvis vi siger "Sig goddag," det er ikke det kommer ikke til at dukke op på skærmen
endnu, fordi vi ændret koden en lille smule.
Men hvis vi gør "Sig hej" - OK, så "hello" er her.
Men hvis vi tager et nærmere se på URL selv,
Vi vil se, at det ender med hello.php? name = Elliot.
>> Så det er en måde at kommunikere til den næste webside
de parametre, vi har passeret.
Vi sagde name = Elliot.
Og det er i sidste ende, hvordan P sæt 6 adgang variablen, som vi passerede i
via formularen.
Og det er noget, er særegne for en GET-anmodning.
En GET anmodning gør parametrene kendt i webadressen på hjemmesiden.
>> Og du vil huske, også, i P sæt 6, at du
havde til at skrive en funktion at behandlet med det faktum
at denne forespørgselsstrengen kunne eksistere efter en fil.
Der kunne være et spørgsmålstegn, efterfulgt ved dybest set et vilkårligt antal tegn.
Og det er præcis, hvad der foregår her.
Og grunden til at du var nødt til at fortolke det i din implementering af server.c i P
sæt 6 er, så du kunne fortælle PHP kode, name = Elliot.
Du behov for at være i stand til parse, at ud af URL'en
således at PHP pågældende fil vidste, hvad det var med at gøre.
>> Så forhåbentlig dette giver motivationen til at server.c
nu, at vi går videre uden for C i PHP.
Så lad os faktisk fokusere på at få adgang til ting passeret gennem en GET-anmodning nu
på dette tidspunkt.
Jeg har tænkt mig at gemme denne.
Vi ændrede ikke noget.
Det ser ud som vi har fået et input felt.
>> Vi sætte nogle egenskaber, som vi kan gøre en HTML.
Disse er simple ting.
Vi har ikke brug for disse.
Men vi har fået autofuldførelse fra, som dybest set says-- du ved,
når du skriver ting ind i banen, til tider
den forsøger at udfylde det i for dig.
Så det er en dejlig ting.
Vi ønsker at slå det fra til dette formål.
Det var en CS50 beslutning.
Så vi kan slette, at hvis vi ønskede.
>> Autofokus bare stikker markøren i form lige i starten.
Igen, ikke alt for vigtigt.
>> Men name = "navn" - det er lidt vanskelig, fordi det er navn og navn.
Men vi kunne har ændret dette til noget andet.
Og i virkeligheden, det er hvad vi vil gøre lige nu.
Vi vil sige "person", som er lidt ligesom navn
hvis en person er defineret ved deres navn.
>> Så lad os lukke denne, genåbne vores hjemmeside
da vores server kører stadig Apache 50, og vi vil sige, hej, her er
Elliot igen.
Hvorfor ikke?
Hej.
Og hvis vi går op her, vil vi se så i stedet for name = Elliot,
det siger personen = Elliot.
Og det er et direkte resultat af det faktum, at vi netop ændret navn = "person."
>> Så i et input element en HTML-formular, navnet feltet
er identifikator for den parameter, der bliver passeret.
Det er ligesom, hvis du opretter en funktion "tilføj", der tog i to heltal
og du sagde int a og int b.
Det ville være navn a, og hvis du ønskede en anden form, som
vi kan gøre bare ved kopiering og indsætte, så ville vi have navn b.
>> Så nu vil vi have to parametre der bliver ført gennem
komme til den næste website-- den næste webside, hello.php.
Og vi kan faktisk se der igen, hvis vi vil.
Dette er den nemmeste måde at håndtere web kode i IDE, dybest set.
Du starter op på serveren, få det kører, og derefter hver gang du
foretage nogle ændringer, bare tæt at filen bare for at være sikker.
Ved at trykke på knappen igen er lidt tricky
fordi det kan indlæse en tidligere udgave, ikke den mest opdaterede én.
>> Og så skal du bare klikke på din knappen igen, pop lige up-- åh,
og nu er der to former.
Og så hvis vi skriver en ting i hver en-- "Jason Hirshhorn," for instance--
vi siger hej.
Vi ser op på vores parametre.
Det ser ud som vi har fået, som forventet, a = Jason og b = Hirshhorn,
som repræsenterer de to parametre at vi passeret denne funktion.
>> Så lad os nu rent faktisk komme til gennemførelse af denne funktionalitet, vi
havde i P sæt 6.
Så lige nu er vi bare ekko hej.
Og det er ikke meget nyttig.
Vi ønsker at gentage nogle variabel der blev videregivet til os.
Og vi kender navnet på denne variabel.
Vi har en, og vi har f.
Så vi kunne vælge at gentage enten en.
>> Men hvordan kan vi få adgang til det?
Nå, der er sikker globale variabler i PHP.
Og jeg har tænkt mig at skrive dem i kommentarer her.
De to vigtigste er get og bogføre til vores formål lige nu.
Det er de arrays eller, Teknisk set ordbøger
hvor vores variabler, vi er gå videre til næste webside levende.
Og vi skal snart se, hvordan man bruger dem.
>> En anden korte bemærkning om PHP kode og nogle detaljerne i det-- i C,
at erklære en variabel eller at anvende variable,
du først nødt til at erklære dem.
Og hvad du havde at gøre, når du erklærede dem var sige int a eller char b.
Du havde at erklære de typer af disse variabler, før du har oprettet dem.
PHP-- du behøver ikke at gøre noget af det.
PHP ikke bede om typen af ​​variabel.
Og den måde, som du skabe en variable-- stedet
end at sige int, char, string-- som er virkelig char *, som vi know--
snarere end at gøre alle at, fordi alt
er af den samme type, typeløse, kan vi bare
bruge et tegn, der er dollartegn.
Og du vil se det er allerede popping op, små autocomplete ting.
Og det er at sige, at _GET og _POST er to muligheder, som jeg har til rådighed
til mig.
Nogle af disse andre ting er andre globale variabler i PHP
at du skal bruge i løbet af løbet af P sæt 7.
For nu vil vi fokus på get og post.
Men det er et nyttigt ting, at IDE gør
hvor når du har indtastet i denne dollartegn,
det vil begynde at udfylde globale variabler eller variabler, du allerede har defineret.
>> Så hvis du ønsker at definere en variabel kaldet "streng"
du bare kunne sætte den lig med "hej".
Og det er dybest set så simpelt er det.
Og så vi kunne gøre noget lignende "echo $ streng."
IDE-enheden skal smide nogle fejl, hvis jeg gør noget forkert,
så forhåbentlig jeg gør alt rigtigt.
Men bugs altid vil opstå.
>> En anden tricky ting ved PHP er, at det ikke er kompileret.
Så med C-programmer, ville du gøre den daglige rutine of-- dybest set,
du ville gøre redigeringer til din kode, ville du gemme det,
og så ville du gøre det, hvor make var
det trin, der kaldes compiler, clang, for at gøre din kode, denne tekst
fil, i en eksekverbar.
PHP er C-lignende, men det er henrettet om flyve med din web-browser.
Så der er ingen måde at vide.
>> Gøre ville smide dem nyttige fejl, ikke?
Det ville være ligesom, du ikke erklære denne variabel
før du forsøgte at bruge den.
Du gjorde alt dette dårlige stuff-- segmenteringsfejl, segmenteringsfejl, alle den slags sjov gange
der fulgte med make.
PHP er et tveægget sværd fordi du ikke vil få disse fejl,
men det betyder også, at du ikke vil vide virkelig, hvad er der galt med dit program
hvis du bare køre det, og det virker ikke.
Men debugger bør påpege nogle forhåbentlig nyttige små ting
syntaktisk, at du kan løse.
>> Så nu, hvis vi gå over at-- sige, lad os lukke det.
Genåbne.
Og vi er tilbage til her.
Så vi har fået en variabel og en variabel b.
Og disse vil i sidste ende ikke noget.
Vi kalder dem h og g uden særlig grund.
>> Og vi siger goddag.
Nu ser det ud til vores snor "Hej" er faktisk udskrivning.
Vi skabte en variabel kaldet "streng", sæt den lig med "hej".
Bemærk, at vi ikke har at gøre malloc eller gøre et tegn array.
>> I PHP, fordi variabler er typeløse, en streng
er det samme som en char for alle henseender.
Dette kunne være "Hej."
Det kunne være lige tegnet k.
Dette kan være et tal fra 1.
Og det er ligeglad.
PHP er ligeglad typen af ​​din variabel.
Eller det gør pleje.
Det bekymrer, når du prøver og gøre ting med det,
men det gør ikke pleje i trinnet erklæring.
>> Og ligesom du kan i C, kan du erklære strenge på stakken som denne
selvom at sige "stak" er lidt Lidt af en potentiel misvisende, når
vi taler om PHP.
Men vi behøver ikke at bekymre dig om det.
Så vi fik vores snor "Hej," og vi echo streng.
Så nu har vi diskuteret variabler.
Så nu er vi nødt til at tale om get og skrive og udføre den sidste ting, der er
nødvendig for virkelig at få dette tilbage op til funktionaliteten af ​​P sæt 6.
Så lige nu er vi ekko strengen, men vi
har disse variabler får og post.
Og fordi vi bruger fremgangsmåden får det
synes naturligt, at vores variabel, Vi er interesseret i både a og b,
vil blive placeret i arrayet eller ordbog, teknisk få.
>> Så hvis vi oprettet komme som denne med din groups-- jeg trykkede ind
og det kunne ikke lide det-- men her har vi får.
Og så får allerede eksisterer.
Så kan vi allerede begynde at få adgang nogle af elementerne i get.
Hvis vi får, denne syntaks for arrays i PHP er meget C-lignende.
Vi har vores to firkantede parenteser.
>> Så hvis vi siger få i en normal array, kunne vi få adgang
nulte indeks, første indeks.
PHP er nul indeks.
Vi kunne sige nul, en, to-- ting som dette.
Og jeg har at sige, at få er teknisk en ordbog.
Så hvad PHP gør under kølerhjelmen, som er en lille smule pænere end C,
er det allerede giver dig nogle ordbog funktionalitet, som
er virkelig hash tabeller, eller forsøger at, angiveligt.
Eller, det teknisk kunne være en prøve så godt.
Men PHP er ved at gennemføre en hash tabel, som danner en effektiv ordbog.
>> Og så vi kender navnet af vores variable, ikke?
Det bliver vedtaget i søgestrengen af ​​PHP.
Vi har a = h og b = g hvor og b er navnene på de variabler.
Så den måde, at vi kan få adgang til værdi, der svarer til tasten
i vores ordbog er bare ved at sige _GET_GET ["a"].
>> Så nu har vi _GET ["a"].
Og hvis vi bare erstatte inde vores ekko, hvis vi echo _GET_GET ["a"] -
og vi vil se, om debugger kaster eventuelle fejl om denne--
Vi vil spare det, og lukke det ud.
Åbne det op.
Så vi bare gør en ret nu, så b bør ikke noget.
"hende" og "ham" - "brummen". "hende" og "brummen".
Lyder godt.
>> Og det udskrives "hende", som er vanvittigt.
Men det er præcis, hvad foregik i P sæt 6.
Dybest set, hvad P sæt 6 var doing-- echo hej,
name-- hvor det havde en variabelnavn og det bare
beder dig om at indtaste den smule tekst.
Der var også nogle tillægskode hvor
det medtages, hvis udsagn, som vi kan gøre lige nu.
>> Vi kan sige, hvis der eksisterer, som er en funktionalitet i PHP,
_GET Med underscore, "navn" - der dybest set siger,
"Hvis navn er blevet udfyldt", fordi vi kunne have netop klikket på knappen
at indsende form uden skrive noget ind i dette område.
Og vi wrap at i vores venlige krøllede parenteser.
Vi kan have en anden erklæring.
Og det er alle inden for PHP vinkel beslag, spørgsmålstegn, vinkel beslag,
hvis du vil.
>> Og nu vil vi se, om det virker.
Jeg bliver ved at vente på det til debug og crap ud på mig, dybest set,
men det har endnu ikke.
Måske vil det nu fordi jeg talte om.
Ja.
Det gjorde, faktisk.
Så, intet viser op.
Det er på grund af noget galt at jeg skrev i PHP-kode.
Og jeg nævnte debugging er vanskelig, fordi i PHP, vi
ikke kompilere det på forhånd og oversætteren var ikke som,
her er, hvor dine fejl er.
>> Men hvad vi kan gøre is-- gøre folk husker
hvordan man ser på de forskellige netværk anmoder om, at PHP-- eller at hjemmesider
sende?
[? Malin?] Gjorde dette i foredrag én eller to gange.
Du husker, hvor vi gå for at finde de forskellige gæld og 200 oks,
alle disse koder, der bliver sendt via HTTP fra webside til webside?
Er der nogen der kan huske hvor vi går til at gøre det?
>> PUBLIKUM: Side Source.
SAM LEVATICH: Side kilde.
Nøjagtig.
Hvis du går til side Source-- perfekt.
Så Side Kilde trækker op inspektøren.
>> Og jeg bruger Safari.
En masse af jer vil formentlig være bruger Chrome eller Firefox.
Men så længe du er i enhver moderne browser--
og velkommen til at følge sammen, hvis du ønsker.
Du kan skrive op denne kode eller bare se inde i P-sæt 6
bibliotek for nogle lignende ting.
hello.php er, hvad vi er arbejder i øjeblikket på at efterligne.
>> Så der er en række faner.
Vi kan se på alle de ressourcer.
Vi kan se kildekoden.
Så ligner det ikke gjorde komme forbi krop i sidste ende.
Det fundet en fejl i PHP, og det holdt op med indlæsning af hele websiden.
Vi har ikke engang en ende tag for HTML eller noget.
>> Og hvis vi ser på nettet, vi kan se, at vi bliver sendt en anmodning.
Dette er domænet.
Dette er adressen.
Det er et dokument.
Vi bruger get-metoden.
>> Og det er rødt.
Eller, det blev rødt, når jeg var ikke vælge den.
Hvordan kan jeg fravælge det?
Nå, det var rødt.
Lad mig genopfriske.
Der er det.
Nu er det rødt.
>> Så det er rød, hvilket betyder det mislykkedes, hvilket er dårligt.
Så lad os undersøge, hvorfor det gjorde mislykkes.
Så alt, Sidekilde kan dybest set fortælle dig er dine ting
virkede ikke, som vi allerede kan se.
Så ideelt set ville der være et mere nyttigt redskab.
Og der er nogle browserudvidelser der tillader dig at debug PHP,
men vi kommer ikke til at skrive et ton af PHP,
så det er nok bare bedst til at se gennem din kode
omhyggeligt og bare sørge for, at det er ikke at gøre noget andet.
>> Så lad os se om formatet af denne hvis erklæring er, hvor problemet er.
Jeg ønsker at indlæse den tilbage op her.
Hej hej.
Så der er et problem der.
>> Så for korrekte syntaks af PHP, er PHP går
at være C-lignende i at du vil se sløjfer.
Du vil se, hvis udsagn.
Du kan se alle disse venner at du er blevet fortrolig
med i løbet af denne CS50 semester.
Men den bedste måde at finde ud af at gøre noget i PHP er at Google det
eller til at se på nogle eksempler på PHP kode fordi du kender funktionaliteten.
>> Du ved, hvad du kan gøre med programmet.
Du kan sløjfe.
Du kan loop så mange gange som du ønsker.
Du kan løkke i alt mulige forskellige måder.
Du kan oprette funktioner.
Du kan oprette funktioner, som ringe til andre funktioner, funktioner
at kalde sig.
Og du har navne for disse begreber.
Du har rekursion, sløjfer, hvis andre kontrolforanstaltninger strømme.
Og så Google er din bedste ven.
Selv siger, "PHP hvis udsagnet "og der ll
være tonsvis af stillinger med svar på andre mennesker
der har haft lignende spørgsmål til dig, der lige er startet ud med PHP
og er nysgerrig omkring en syntaks ting.
>> Fordi vi har den luksus at være stand til at se på koden i P-sæt 6,
vi faktisk træk den op og se, at OK, her er noget interessant.
Så dette er, hvad det egentlig lignede i P sæt 6.
Så hvis vi går gennem denne, Vi kan se, at vi har
fik flere af disse lidt PHP-lignende spørgsmålstegn bits.
>> Og der er ikke krøllede parenteser.
Der er koloner.
Og der er krøllet seler i PHP, men dette
er et format og en måde at gøre PHP, der fungerer godt med HTML
fordi som vil du se, vi lukker off disse PHP bits-- den andens
og hvis'er og alle at-- og derefter vi indflette HTML inde i dem
mens den stadig efter kontrol flow fastsat af PHP.
>> Så jeg vil blot hurtig gåtur gennem denne
fordi det er en masse af de samme begreber, som vi gjorde før.
Vi har fået, hvis ikke tom, parenteser, _GET_GET ["navn"].
Dette er alle de samme ting.
Vi bruger den _GET ordbog, PHP sender på anmodning af formularer,
fordi det er parametrene for handling, og metoden er at få.
Og derefter der ender det.
Den kolon er en signifier at bare gøre det hvis hvis udsagn evalueres til sand.
Det er ligesom en krøllet tandbøjle.
Og i virkeligheden er det en krøllet klammeparentes på andre sprog som Python,
som du kan støde på, hvis du bare gøre det for din endelige projekt.
>> Og så er denne linje, hej.
Så har vi denne underlige ting.
Vi har flere konsoller.
Der er ingen HTTP there-- eller PHP, undskyld.
Men der er et lighedstegn.
Og så har vi en funktion, htmlspecialchars (_GEThtmlspecialchars (_GET ["navn"]).
Det er lidt ligesom en mere avanceret version af ekko.
Ligesom vi havde ekko som en måde at udskrive tingene ud i PHP.
Dette er en funktion, der er defineret i PHP, der
vil beskæftige sig med nogle mere væmmeligt tegn og byte værdier
at du kunne passere det.
Det er altid sikrest at bruge dette.
Men ekko vil gøre arbejdet bare fint, hvis vi ikke er
beskæftiger sig med noget alt for grim.
>> Og så dette har den samme virkning dybest set,
denne ting i mellem spørgsmålet varemærker evalueres ved PHP.
htmlspecialchars returnerer en dejlig HTML trykt værdi _GET_GET ["navn"], dvs.
uanset hvad vi har skrevet i form.
Og så er det vil sige hej, komma plads, og så det.
Det hele mellem vinkelbeslagene
vil blive erstattet af hvad htmlspecialchars lægger ud.
Så det er dybest set ens til, hvad vi laver.
Og vi har en anden sætning, der er hej verden, hvilket giver mening.
Så lad os nu gå tilbage til vores kode og se exactly-- åh.
Jeg sagde eksisterer, som ikke er en ting, vi ønskede at gøre.
Vi ønskede at sige ikke er tom.
>> Og så dette bør arbejde lidt lidt bedre, ikke tom _GET_GET ["navn"].
Og det krøllede klammeparentes matcher det krøllede klammeparentes.
Vi har fået vores krøllede parenteser her.
echo hej _GET ["navn"].
Lad os se, om det fungerer lidt bedre.
Vi kører stadig vores server.
Hej Jason.
Og det virkede denne gang.
Og så det er et bevis at du kan faktisk
anvende de krøllede parenteser, som du kender og elsker i PHP kode i HTML.
PHP kode leveres til dig i pset 6-- pset 6--
tilvejebringer en anden måde at gøre det samme.
>> Så nu har vi magten.
Vi har funktionalitet til at gennemføre PHP kode som vi så i pset 6
af os selv, dybest set.
Før jeg går videre, hvad er nogle af de spørgsmål, du har på dette punkt?
Ja [uhørligt].
>> PUBLIKUM: Så i den affattelse pset6, når du kører det, er der et mellemrum.
Og jeg kan se, hvor pladsen er efter kommaet. [Uhørligt] starten
den åbne beslag.
Hvordan optage plads i den måde, du skrev dine egne koder?
>> SPEAKER: Det er et godt spørgsmål.
Og så lad os finde ud af.
Så det er en rigtig godt spørgsmål og en, som jeg ikke overveje.
Men lad os gøre det sammen.
>> Så først og fremmest, hvad Jeg gør med ekko
er, når vi bare echo hej, det output hej.
Hvis vi echo nu dette får på en separat linje, lad os undersøge, hvad der sker.
Så vi klikker på dette.
Vi holde siger, Hej Jason.
Så igen, har vi ikke denne plads.
>> Og det er fordi, i PHP, når vi har ekko,
uanset hvor mange spaces-- nej, ikke den V--
uanset hvor mange pladser vi sætte i her-- hvis vi nu indlæse det op igen,
Hej Jason.
Ja, se, alle de mellemrum fik spist op.
Og det er noget, ekko-funktionen gør.
>> Så for at tage sig af at rummet, og det er
en af ​​grundene hvorfor du ikke bruger echo
og du bruger htmlspecialchars stedet.
Jeg er nysgerrig, hvad ville ske, hvis vi gjorde dette
hvor vi lukkede et rum i en streng.
Jeg er ærlig talt ikke sikker på hvad vil ske, når jeg gør dette.
>> Så det er én måde.
Det er én måde at tage sig af det.
Hvis du ruller plads i en streng, så rummet
vil blive udsendt pænt ved ekko.
Den sikreste ting at gøre, er at gøre htmlspecialchars.
Det er altid en sikker satsning.
Men nu har vi en måde at gøre det med ekko, hvis nødvendigt.
Og på samme måde, kan vi ekko nye linjer, alle den slags
ting du er fortrolig gør i PHP.
>> Nogen anden, hvad er mere spørgsmål, som andre mennesker har
på dette punkt om PHP?
Hvis folk dukkede op lidt sent, Jeg er glad for at bo efter en lille smule
og tale om nogle af begyndelsen.
Og det er også alle livestreamet, og arkiveres, hvilket er vanvittigt.
>> Alligevel, så lad os nu gøre nogle mere avancerede ting med PHP.
Og en af ​​de tidligste ting, du blev indført i C var efter sløjfer.
Og PHP har en mere kraftfuld for loop kaldes foreach loop.
Og det ser ud som denne-- for hver tomme som blanke, krøllede parenteser, skal du gøre noget.
Så dette er dybest set en stenografi.
>> Se, for-løkken som en syntaktiske konstruktion
blev udtænkt i C og i montage sprog og tingene kan lide.
Udarbejdet i C, netop som en forkortelse for en masse af de typer af loops
at folk ville se.
Ligesom når du skrev en løkke, der ofte var et initialiseringstrin
henrettet lige i begyndelsen, en tilstand, hvor sløjfen ville stop--
og det er den funktion det er bare i en while-løkke,
eller at et stykke har præcis bare, at feature-- og derefter
en optælling skridt i slutningen.
Og så ville du ofte finde dig selv skrive kode som følgende.
Jeg har tænkt mig at slette noget af dette.
>> Men hvis vi iteration gennem tegn i et array,
for eksempel, som vi har fik en matrix af tegn.
Ked af at bringe tilbage C. jeg kender, du troede du var færdig.
Men det er kun med henblik at lære PHP, lover jeg.
Så hvis du fik en char str længde 8, og lad os
sige det siger Hellooo med et efterfølgende nul.
Stor, så det er vores streng.
>> Og så havde vi en for-løkke.
Vi har int i er lig med 0.
Og vi ønsker at afslutte, når st af jeg svarer ikke lig med nul,
fordi vi afslutter, når det er lig nul.
Og så gør vi i ++ ved hvert punkt i for-løkken.
At gøre noget med str af i.
>> Så basisformuleringen var, vi havde denne matrix, som vi
ønskede at behandle som separate elementer.
Men hvad vi havde at gøre, er vi måtte dybest set oprette en separat heltal
variabel, der blev tælle op hver gang vi gik gennem løkken.
Og så ville vi nødt til derefter kalde strstr [i], når det, vi virkelig ønskede at gøre
er bare gå karakter ved karakter, ikke?
Vi ønsker ikke at forøge en heltal og derefter bruge det heltal
at få adgang til hvert tegn individuelt.
Vi virkelig ønsker tegn for tegn.
>> Og så for hver intelligent beregnet, at for os.
Hvis vi har et array, som Vi kan erklære i PHP
som bare-- hvis vi har en variabel kaldes, lad os kalde det array.
Mirakler ingen skrive, er det ligesom enhver anden variabel.
Det er bare et array.
Og vi har en lille [uhørligt] gerne 1, 2, 3, blot en slags initialiseret array.
Det er OK, betyder det ikke lide min foreach.
>> Men hvis vi foreach-- faktisk Jeg har skrevet, at en lidt forkert.
Der er to måder at gøre en foreach løkke.
Der er den i syntaks og som syntaks.
Og vi vil gøre i syntaks første, ikke som.
Det er min fejl.
>> Så foreach num i array, ekko num.
Og PHP er råben på mig en eller anden grund.
Det er at finde en uventet i i noget,
som er en lille smule af en ærgrelser.
Men vi vil finde ud af hvorfor der er i et øjeblik.
Så ikke lide det.
Lad os prøve at bruge som.
Den foretrækker den som syntaks er ser ud.
Så lad os gøre foreach array som num.
>> Så lidt forklaring af, hvad der lige er sket
er da syntaksen er saying-- godt først, lad os se på, hvad det udskrives.
Så vi åbner vores IDE.
Vi går her.
Vi siger, Hej Jason.
Og det gjorde 123, som var indholdet af array, som vi skabte op øverst.
>> Så dykning i denne foreach loop, vi har en variabel kaldet matrix
som er en opstilling af tre tal.
Og så gør vi foreach array som num, ekko num.
Og det er mere intuitivt end en for lop.
Vi siger, behandling hver af de ting i array som num,
Jeg vil have dig til at give mig num.
Og det er præcis, hvad det gør.
>> PHP er at beregne, at når du siger foreach array,
og du har at gøre med en vifte, hvad du vil ønsker at gentage over
er tegnene i den matrix, er int'er i den opstilling,
er elementerne i denne matrix.
Og det er at lade dig gemme disse variabler som num,
og så bare output num højre væk snarere end at sige,
Jeg har en variabel kaldet i, og så jeg ønsker at output strstr [i].
>> Og så giver os mulighed for at gøre seje ting.
Ligesom stort set har vi ikke at skabe disse variabler som i'er og gøre alt
denne optælling ting i slutningen.
PHP tager sig af alt dette for dig.
>> Så lad os nu snakke om foreach som det gælder for vores _GET ordbog.
Så vi vil kommentere dette ud hurtigt.
Så vi har vores _GET array.
Vi har denne variabel.
Og det har fået nogle ting i det.
>> Lige nu har vi kun én variabel gives videre til det, som er navnet.
Men hvis vi på Enter, nu vi kan have to variabler.
Vi kan have navn og alder, for eksempel, hvis vi ønsker at få alder og også
navnet på en person, sjovt nok.
>> Så nu _GET bliver en ordbog med to elementer,
med to centrale værdipar.
Og den første key-- jeg vil skrive denne ene op på brættet også.
Vi har vores ordbog er _GET.
Beklager, det er er lidt svært at se.
Men inde i vores ordbog, vi har navn, som kommer til at være noget
at vi er givet.
Og vi vil have alder, som også er kommer til at være noget, som vi er givet.
Og det er i sin helhed af vores ordbog.
>> Så det har fået to elementer i det.
Og så fordi foreach loops er smart, vi
måske tror, ​​og korrekt tror måske, at foreach
kan gentage gennem dette ordbog, udskrive
værdierne ved navn og alder.
>> Så lad os i virkeligheden gøre netop det.
Lad os konstruere en foreach løkke.
Og vi vil gøre for _GET som.
Og vi vil gøre følgende.
Så lad os se hvad der sker, hvis vi skriver bare ord, og derefter sige ekko ord.
Vi er også kommer til at gentage en ny linje bare for at gøre det lidt klarere,
hvad sker der.
>> Så lad os se.
Det er ikke at give mig nogen fejl.
Og vi vil lukke denne.
På vores hjemmeside, er du nødt til at gøre en masse, der i løbet af pset7.
Så vi siger mit navn er Sam.
Min alder er 45.
Det er det ikke.
Men det udskriver, som forventet, Sam 45.
>> Og så vil du bemærke, at hvad foreach loop did-- her,
Lad os gå tilbage til at så det er op på board-- vi får _GET som ord.
Og der var fire ting i _GET.
Men det kun udskrives to ting.
foreach, bliver dens intelligens selv, antages, at det, vi virkelig ønskede
var de værdier, ikke de nøgler.
>> Men der er en måde, at vi kunne printe ud tasterne så godt, hvis vi ønskede at.
Hvis vi ønskede at også vide, hvad disse variabler blev kaldt,
der er en måde, at vi kan få adgang til det så godt.
Og den måde at slags gøre det, så vi kan sige, lader virkelig
dele det op i centrale værdipar.
Så lad os se hvad der sker nu.
>> Så vi har nøglen.
Vi har værdi.
Vi har en anden ny linje for læsbarheden.
Og lad os se hvad der sker når vi gør det nu.
Jeg ved ikke, hvor gammel Jason er.
Jasons 15.
Så vi har navn Jason, alder 15.
Så vi var i stand til at få adgang til nøglen og værdi par af denne ordbog
lige ved at sige som centrale punkter at værdi.
Og det er en foreach syntaktisk sukker bit, der tillader
dig adgang tingene i ordbogen.
>> Så forhåbentlig denne slags fremhæver kraften i foreach løkken.
Du kan stort set kast noget, der synes Iterable,
som noget, der har flere elementer som et array,
som en dictionary-- de er to primære ting du skal arbejde med
både i livet og i pset 7.
Så du kan smide de ting på det, og det vil regne ud
hvad du vil gøre med det.
Det vil sige, OK, jeg har tænkt mig at få disse ting fra de data,
blev passeret mig.
Og det er noget, som du er kommer til at bruge en masse i pset 7.
>> Jeg har tænkt mig at rulle hurtigt ned bare for at se, hvor jeg er på.
Har folk har spørgsmål på dette punkt?
Spørgsmål på alle?
Ja?
>> PUBLIKUM: Så med nøglen og værdi, man kunne kalde den noget andet
og det ville stadig arbejde?
SPEAKER: Ups.
Wow, jeg er helt slettet hele linjen.
Store arbejde.
Så a, a.
Nøgle og værdi er blot en konvention.
Det er nyttigt.
Du ville få nogle design point, måske nogle stil point
for at gøre det, fordi det virkelig formidler hensigten.
Men vi siger et og yarp.
>> PUBLIKUM: Du behøver ikke at ændre noget i HTML-filen
for at afspejle det?
SPEAKER: Overhovedet ikke.
PUBLIKUM: Og det bare ved, at på grund af den større lig than--
SPEAKER: Ja.
PUBLIKUM: --that indikator for, at that's--
SPEAKER: Ja.
Det er en foreach syntaks, men ja.
>> PUBLIKUM: Der er ikke typer.
Så hvad nu hvis du ønskede alder at kun være et nummer?
Er der en måde at gøre det?
>> SPEAKER: Der er måder at kontrollere, om variabler overholde visse typer.
Så PHP spørger lidt mere fra dig, fordi der ikke er nogen typer i.
Nogle måder den beder mindre.
På nogle måder er det spørger mere.
For hvis du har bare noget i en variabel,
du har ingen idé om, hvad typen det er.
Men hvis du er smart om de variabler at du tildeler typer til og sørg
der fungerer kun return-- dig ønsker funktioner til kun afkast
én type værdi, så at du kan stort set
forventer, at den variabel, du får tilbage fra en funktion vil være af den type
at du tror det vil være, dybest set.
>> Men der er nogle metoder som du kan kontrollere.
Jeg kan ikke huske dem fra toppen af ​​mit hoved.
Jeg venter på at blive blå.
isint?
isstr?
Der findes metoder indbygget i PHP, der kan
kontrollere den type variabler for dig.
Men hvis du tildeler variabler smart, bør du ikke
nødt til at gøre det for meget i pset 7.
Men disse metoder findes.
Og det er noget, i selve sproget.
Og jeg kan ikke huske den præcise syntaks.
Vi kunne endda slå det op.
Men tiden er af afgørende betydning.
har der nogen andre har flere spørgsmål?
Ja.
>> PUBLIKUM: Jeg har bare en mere.
Så du nævnte GET-metoden, men du nævnte ikke POST metoden.
Er vi kommer tilbage til det?
>> SPEAKER: Ja, vi vil komme tilbage til det.
Det er præcis, hvad jeg ledte på min telefon, som nu faldt i søvn,
men jeg vil finde det.
Bare sikre, at vi ramt alle PHP noter.
Jep, der er ingen debugging version.
Ja, vi har nogle flere ting, vi ønsker at gøre nu på dette punkt.
>> Så taler om POST, som De nævnte,
den eneste forskel mellem GET og POST er
at huske, når vi kiggede på denne webadresse, og vi så, åh,
navn er lig med en og alder er lig yarp er lige i URL'en der for os.
POST er lidt mere hemmelighedsfuld med sin bortgang af information.
>> Så hvis du ikke ønsker en bruger at vide, for eksempel, du
ønskede ikke brugernavnet og adgangskode på den person
logget ind, der skal vises i URL, hvilket er en rimelig ting
at der ikke ønsker i URL'en, fordi nogen kan se det.
Hvis de forbinder nogen til en side, du ønsker ikke deres URL pudset der,
fordi der ville tillade folk at logge ind bare med indsætning af en webadresse i stedet
for faktisk at udfylde en formular.
POST er en lille smule mere hemmelighedsfuld.
>> Og de eneste ting, Vi bliver nødt til at ændre
er denne metode, ændre fra komme til at skrive.
Og derefter inde i HTTP, i stedet få adgang array _GET,
vi kommer til at få adgang til array _POST.
>> Og vi vil bemærke, at hvis vi åbner dette op igen,
Jason langsomt aftager i alder.
navn Jason, alder 14.
De samme ting popper op.
Men vi går til webadressen og disse variabler ikke er der.
>> Og den måde, at POST passes-- så husk
hvordan man ser på kilden til en side.
Vi går til netværket.
Vi opdaterer.
Og det er en anden ting, der POST vil give dig advarsler om.
Du har måske set en boks, en tekst kasse som denne i din browser.
Er du sikker på du vil at sende en formular igen?
POST er hvad der sender disse former.
>> Fordi dybest set, hvis du har sendt din kreditkortoplysninger til nogen,
der kommer ikke til at dukke op i webadressen.
Det kommer til at være en POST anmodning.
Så når du opdaterer siden, det er gensende stillingen anmodning.
Så nu er vi ønsker at sende danner igen, fordi det ikke kommer
at skabe eventuelle identiske køb.
>> Og vi vil opdage, at hernede, den metode, vi bruger, er POST.
Og det har faktisk overføre byte.
Det overførte 401 af dem.
Programmets temmelig lille.
Men der er ingen steder, at vi kan se de værdier, der bliver passeret.
Websiderne selv kan se, men vi som brugere ikke er i stand til at se,
medmindre du er en hacker.
Hvis du er en god hacker, kan du se.
>> Hvis du kender det grundlæggende formatet af HTML,
værdierne vil gøre sig til kende i siderne.
Du vil være i stand til at se.
Værdierne vil være der, de er bare lidt mindre indlysende for dig
til adgang, dybest set.
>> Har vi noget mere spørgsmål om GET, POST
before-- hvad vi vil gøre næste er faktisk se på nogle af koden
at du giver i pset 7, tale om hvordan det bruger nogle af disse begreber,
og taler om ting, som du vil
nødt til at gøre en lille smule i pset 7.
Flere spørgsmål før det?
Flere spørgsmål du fyre har?
Stor.
>> Okay, lad os se lidt ad pset 7,
ingen tvivl om, hvad du er alle mest begejstrede.
Jeg mener, det er noget, David går gennem en lille smule.
Men vi vil have tre mapper på top, samt en konfigurationsfil.
Det er for databaser, som vi får tale om i cirka fem minutter.
Inkluderer, du aldrig behøver at kigge i denne mappe
Hvis du ikke ønsker at, men det er rart at ved, at der er alle mulige hjælpere.
Hjælpere er som nyttige funktioner.
Og så har vi config, der sætter nogle ting op.
>> Der er nogle funktioner, som CS50 har skrevet som er i hjælper- og config.
Og nogle af PHP, der allerede udgange i filer
vil gøre en masse af de mere slags af stumpe ben arbejde for dig.
Ligesom hvis vi går ind i den offentlige login.php, hvilket er, hvad
dukker op til højre, når du går ind i pset 7.
Vi vil se, at der er dette kræve erklæring.
Og den slags ligesom en skarpe indbefatter hashtag
omfatter, hvis du er af en nyere generation.
Men det grundlæggende siger, at jeg har brug for adgang
til alle funktioner i config.php.
Og du kunne have en kræver for alle mulige andre ting.
>> config faktisk kræver hjælpere.
Så når du har brug for config, er du også
herunder eller kræver hjælpere så godt.
Så det giver dig adgang til alle de seje funktioner, som vi kommer til at bruge,
tingene gerne gøre.
Jeg er faktisk kommer til at lette dette ned en lille smule.
Så den funktion så er vi kommer til at gå gennem
lige før vi går videre til SQL lidt bit er login.php funktion, lige
fordi den bruger nogle af de emner at vi bare talt om i PHP.
>> Du ser den første ting er, hvis $ _SERVER.
Dette er en anden global variabel, der du kommer til at beskæftige sig med.
Det er ligesom _GET og _POST, men hvad serveren indeholder dette kan lade dig
vide, om anmodningen metoden var en GET eller POST.
Ligesom tidligere, hvad vi gjorde er lige i vores kode, skrev vi,
vi var bare ændre det til at være GET og POST afhængigt af, hvad HTML har.
Men der er sider, der kan være tilgås med begge typer af anmodninger.
Og du måske ønsker at gøre forskellige ting, afhængigt
af typen af ​​anmodning ligesom login gør.
>> Så du kan kontrollere, at anmodningen Fremgangsmåde ved adgang nøgler,
ved at bruge en nøgle og få den værdien af ​​noget i ordbogen
_SERVER.
Så det er en anden global variabel ligesom _GET og _POST.
>> Hvis det er GET, vi ønsker at gøre login-formularen.
Render er en funktion, der dybest set bare sætter op den passende HTML
og sender det nogle parametre.
Denne titel er et parameter, der er bruges i visning, mærkeligt nok,
titlen på siden i spørgsmål, de ting heroppe,
sige eller hej i vores tidligere eksempel.
Nu har vi en anden ting.
Andet, hvis det er POST, vi gøre nogle andre ting.
Vi bruger den tomme metode.
Det er ikke eksisterer, den er tom.
Og vi så før, PHP har en rimelig mængde af indbyggede
i metoder, som David will-- hvis der er metoder, der er nyttige for dig,
de vil blive advaret om dig i gåtur gennem at David
giver i begyndelsen oversigt, og også Zamyla s nyttige bits.
Hun er tilbage alle.
Vi kan alle glæde os.
undskylde er en rammende navngivne funktion der bare dybest set udskriver
nogle fejlmeddelelser, fordi CS50 er meget høflig.
>> Og nu dette, er dette en tricky bit fordi dette
er, hvor vi forespørge databasen.
Nu har vi ikke talt om databaser.
Og vi vil i den næste fem minutter eller deromkring, maksimum.
Men dette er en funktion at CS50 har skrevet
at få et bord dybest set fra en database at vi arbejder med i pset 7.
Jeg er virkelig dårlig med min nul indeksering dag.
Men ja, det er 7.
>> Så forespørge det kommer til at returnere en array, dybest set er nøglekammens.
Og fordi disse ting ikke har skrive, så rækker er en vifte af arrays.
For når vi tænker på et bord, hvad vi vil gøre
er, som du har lært i psets ligesom omgang 15, alligevel
hvor du var nødt til at bruge en dobbelt array, vi dybest set
har række andre arrays gør en tabel.
Og du har fået rækker og kolonner.
Og så kan du få adgang til dem som [0] [1], får du [0] [1].
Grundlæggende slags.
>> Så hvad vi laver her i denne funktion,
Vi beder databasen hvis brugeren, der er
forsøger at logge ind, vil det være sendes gennem POST metoden.
Vi vil se vi får brugernavnet fra _POST.
De vil have sendt, brugeren eller du vil sende en værdi
gennem en form gennem POST, fordi det er brugernavn og adgangskode kram.
Vi kontrollere brugernavn at se, er det i tabellen?
For hvis en bruger logger i, så deres brugernavn
skal opbevares i tabellen brugere, der eksisterer for dette websted.
Så dybest set, hvis Brugeren er i databasen,
forespørgsel vil vende tilbage denne række, hvilket er et array.
>> Men den vanskelige del er, at hvis selv om den dobbelte array er kun én række,
selvom det er en én række array-- ligesom du har fået basically--
hvis du har fået en størrelse ét array der er i besiddelse af en anden matrix,
du virkelig gøre med en kolonne.
Men det er stadig behandles som en dobbelt array.
>> Og det er her, det nogle gange kan få tricky, fordi vi har fået rækker her.
Vores variabel er rækker.
Og så er vi skaber en ny variabel kaldet rækken
og sætte den lig med den første række af rækker.
Og du vil opdage, at kommentar siger, at det er den første og eneste række.
>> Så dette er den tricky del, hvor nu funktioner
kan returnere arrays meget let.
Der er ikke malloc'erers.
Du vil ikke se malloc'erers.
Så vil du ikke se SEG-fejl.
Men funktioner vil stadig være passerer omkring arrays og data i grupper.
Og du skal være på vagt over for, hvad netop dine funktioner vil vende tilbage.
Og selv om det er en kolonne som dette, forespørge
er stadig i gang for at returnere en dobbelt array.
Så for at få adgang, der column-- eller du kan tænke på alt dette, som omvendt
da vi taler om rækker.
Men for at få adgang til denne ene række, du kan ikke bare sige rækker.
Selvom det er en række, er du nødt til gør rowsrows [0] for at slags fjerne denne
ydre bit i array og har blot din én række.
>> Har nogle andre ting.
Der er en funktion kaldet password_verify
der kontrollerer adgangskode, der blev lagt ud.
Og så må vi se en anden global variabel her, _SESSION.
Dybest set session id er, hvordan du holder styr
af hvis nogen er logget ind eller ej.
Så lige nu med login.php, vi logger en bruger på.
Så hvad vi ønsker at gøre, er, vi ønsker at sige sessionen id er lig med rækken
id, som netop giver mening, fordi hver række vil have en anden id
nummer som del af tabellen.
Vi vil komme ind i SQL i en sekund, så hvis nogen af ​​denne
virker lidt ligesom bla, så alt vil blive ryddet op.
Men vi kommer til at indstille id lig med den rigtige ting, logge brugeren i.
Beklager, hvis noget går galt.
Og det er logins formål i liv som professor Malan ville sige.
>> Så det var login.php.
Og en masse af PHP kode du skriver i pset 7, vil de være en lille smule.
Glem ikke at chmod til de rette tilladelser.
Der vil være en lille smule om at i begyndelsen af ​​spec.
>> Men PHP, at du er skriftligt vil være
gør ting, der ligner dette.
Du kommer til at være adgang nogle ting,
er givet til dig i globale variabler af PHP, der
har at gøre med den aktuelle indloggede bruger, om der
har været forespørgsler sendes til denne side, forskellige ting som.
Og det vil også være potentielt iteration gennem rækker af denne ting.
>> I en anden funktion, forespørgsel vender tilbage denne dobbelte array.
Og hvis der er mere end en rækker i det,
hvis der are-- ja, hvis der er mere end en rækker i det,
så vil det være en tabel.
Og du måske ønsker at gentage gennem rækkerne af dette array ved hjælp af
den foreach loop, som vi beskrev.
>> Så hvis du gør foreach på en dobbelt array, hvad vil word-- her,
Jeg vil faktisk skrive det.
Jeg skriver det hurtigt her.
>> Hvis vi har en foreach rækker som række, hvad der er den type af rækken?
Er der nogen vide?
Du har det?
Så rækker er en dobbelt array.
Så hvad der foreach kommer til at udlede at vi ønsker fra denne dobbelte matrix
hvis vi iteration over det?
Vi kan antage, at stort set det vil være enten elementer,
eller rækker eller kolonner, dybest set.
Og så rækker og kolonner vi kan behandle som det samme.
>> Dybest set hvad foreach loop går at gøre, er det kommer til at vende tilbage rækker.
rækken vil være af typen rækken, henviser rækker er en dobbelt array.
Så hvis du giver foreach en dobbelt array, er det
ikke kommer til at gentage mere end et niveau dyb.
Som er dybest set at sige, om der er otte celler i dette table-- 1,2,
3 4, 5, 6, 7, 8-- den foreach loop er ikke
vil gå gennem hver af disse celler.
Hvad foreach loop vil gøre blev det vil gå igennem denne række,
give dig hele denne række.
Og så er det vil gå gennem denne række.
>> Så det kun gentager ét niveau dyb.
Hvis du tilføjer en indlejret foreach loop, så er du
kan behandle hver række tilbage fra rækker, du gør foreach række som element,
Lad os sige.
Og så kunne du gentage elementet.
Så det er en kort lille genopfriskningskursus om, hvordan
du bruger måske foreach sløjfer i forbindelse med forespørgslen.
>> Er der nogen spørgsmål om PHP?
Noget overhovedet, før vi gå videre til at tale om SQL
og det sjove af databasen?
Føle sig godt tilpas?
Føle sig godt tilpas.
Okay.
>> Lad os gå videre tilbage til PowerPoint, som du sandsynligvis gå glip af.
SQL, yay.
Mennesker, der er i min sektion typisk vil vide, at underpositioner i akronymer
er altid kun de første ord Jeg tænker på den kamp, ​​der
algorithm-- at akronym.
Det er ikke en algoritme.
>> Så SQL er en database.
Det er et sprog, arbejder med databaser.
Og alle databaser er, er borde, i hvert fald i den måde,
at SQL repræsenterer dem.
>> En anden måde at tænke på databaser er databaser er et sæt nøgler og værdier
dybest set.
Du kan tænke på en database, som en ordbog og også som en tabel.
Dybest set er det en måde at knytte forskellige data med andre data,
ofte gennem rækker og kolonner.
Og det er den måde det er SQL fungerer bedst.
>> Så dette er et eksempel på et bord.
Jeg har et par eksempler på mennesker i min sektion, der
Jeg havde ikke tid til at skifte.
Men vi har fået ting som ID, navn, supermagt, og hjemby.
Jeg ved ikke, hvor alle er fra i min afdeling,
så jeg bare kommer til at antage alle er fra New York
Byen, fordi jeg har en høj statistisk sandsynlighed for at være korrekte.
>> SQL vil automatisk tage pleje af ID-kolonnen for dig.
Hvis du indsætter en ny række ind i en SQL-database,
det vil forøge at ID-nummer og bare
dybest set holde sig ligesom fem navne, supermagt, hjemby, hvem
på enden af ​​tabellen.
Så ID er en kolonne, du vil aldrig behøver at bekymre sig om.
Men, som det er tilfældet af login.php, når vi
var at få session id fra en tabel og bare bruge id,
ID er en måde til entydigt at identificere et element i en database.
>> Så hvis vi havde to Sams, som begge som underviste CS50, og begge af hvem
var fra Milwaukee, der ville stadig har forskellige ID-numre
og således være forskellige i forbindelse med bordet.
Så dette er hvad SQL beskæftiger sig med, at arbejde med i bagenden.
>> Nu er disse fire kommandoer at du bliver nødt til at arbejde med SQL.
Og jeg kastede dem alle op på et dias.
Men vi kommer til at gå gennem dem alle individuelt.
>> Den første kommando er UPDATE, der gør hvad man kunne forvente.
Sig du har nogle data i den tabel, der er forældet.
Ligesom hvis du holder styr på folks navne
og aldre, hvis nogen er alder stiger, så
du vil ønsker at gå ind og opdatere bare, at personens alder.
For et eksempel, der virker med vores første table--
du ikke bekymre dig om at skrive alle disse kommandoer på samme tid.
Men hvis du har fået opdatering ned, der vil være godt for denne del,
fordi vi kommer til at gå tilbage til bordet.
>> Så hvis vi går tilbage til bordet, lad os sige noget, der skete
var der var et jordskælv eller en fejl linje, split direkte
gennem New York.
Og vi ønskede at opdatere alle der boede i New York City.
De havde alle til at flytte til Pennsylvania.
Det er ikke en hjemby.
De havde alle til at flytte til New Haven.
Der vi går.
Så alle i New York flytter til New Haven.
>> Og så det er noget, der er redigering tre rækker i tabellen.
Men i SQL, kan du gøre at i bare én sætning.
Så vi går tilbage til at opdatere.
Lad mig hurtigt slette dette board igen.
Når vi taler om ajourføring, der er
et par dele af syntaks, der er nøglen.
Nå, alle af syntaksen er nøglen.
Men de ting i grøn er valgfrit.
Den hvide er nødvendige, lignende foruddefinerede navne.
Og lyseblå er ting der varierer afhængigt af bordet.
Så det er, hvad der sker med farveskema her, deroppe.
>> Så hvis vi ønsker at opdatere netop disse rækker af de mennesker, der bor i New York,
så hvad vi ville gøre, hvis vi sagde UPDATE?
Så bordet er, hvor vi sætter navnet på vores tabel.
Lad os bare sige navnet af vores bord er tabel én.
Så vi ønsker at opdatere tabel én.
Og vi ønsker at set-- hvad ønsker vi at sætte?
Nå vi ønsker at sige, så column-- PHP behandler rækker som entydige identifikatorer.
Og så søjler er de forskellige felter
af de elementer i databasen.
>> Så det første element af databasen har et navn Sam, supermagt af CS50,
og en hjemby Milwaukee.
Så hvis vi sættet, lad os se på de parametre, igen, at sættet tager.
Vi har kolonne lig værdi.
Så vi ønsker at sige noget column-- der husker
er en field-- vi ønsker at se en felt lig med noget nyt.
>> Så hvis vi lige sagt opdatering tabel 1, sæt navn lige Elliot.
Få nogle folk fra nyt afsnit ind på dette.
Men hvis vi lige gjorde opdatering tabel 1 sæt navn lige Elliot, hvad ville
bordet ligne efter det?
Folk har nogen idé?
Ja.
>> PUBLIKUM: Alt på at rækken ville blive Elliot.
SPEAKER: Alt på hvilken række?
PUBLIKUM: I den første række.
SPEAKER: I den første række?
Hvorfor den første række?
Jeg mener ikke at samle på dig.
>> PUBLIKUM: Måske alt i hele tabellen?
SPEAKER: Alt på hele bordet, ja.
Og det er helt rigtigt because-- I var bare at hjælpe dig ud en lille smule
there-- fordi vi udeladt den valgfrie WHERE.
Hvis du ikke har WHERE klausul, hvad denne kommando vil gøre
det vil arbejde med hvert enkelt række i tabellen.
Alles navn vil bliver Elliott, dybest set,
som Elliot er meget glad for.
Eller Yanni, en af ​​de to.
Men alles navn vil ændre sig.
>> Så den måde, vi bruger WHERE clause-- og det gælder alle de wheres
der er i hver af disse forskellige ting.
Så du vil opdage, at SET har kolonne samme værdi.
Og det gør HVOR.
Men disse er forskellige typer af udsagn.
Så kolonnen lig værdi i SET er i opgaven.
Ligesom vi siger, vi ønsker at sætte navn lig Elliot.
Men i WHERE klausuler, disse er ligestilling udsagn.
Så lad os sige vi kun ønskede at ændre personens navn til Elliot
hvis deres navn var Ryan, lad os sige.
>> Så når vi siger
>> HVOR navn lig Ryan, at ville held eneste ændring
den name-- ville det kun ændre navnet feltet i rækker
hvor navnet felt er lig med Ryan.
Så hvis vi havde flere mennesker opkaldt Ryan, alle deres navne
ville skifte til Elliot.
>> Dette svarer til eksemplet af hvis en fejl linje opdeler
New York City og alle har til flytte til New Haven, den måde, vi kan
gøre det i en erklæring er UPDATE Tabel 1 SET hjemby = New Haven
hvor hjemby lig New York.
Dette er den magt UPDATE erklæring.
Vi kan vælge et vilkårligt antal rækker gennem sande udsagn
om felterne i disse rækker.
Vi kan ikke sige UPDATE Tabel1 sæt name = Elliot WHERE række = 1,
bortset fra at vi kan hvis vi siger id = 1.
>> Så vi kommer til at være arbejder med ligestilling
områder, lige kolonner.
Men ved hjælp af ID-feltet er en måde at vælge individuelle rækker specifikt
fordi ID-feltet er et unikt identifikator i en SQL-database.
Så gerne opdatere rækken én, ID er lig med 1.
Opdatering række to, bare ændre det id-nummer.
Men magt HVOR erklæring er, at vi
kan opdatere tingene baseret på, hvad deres aktuelle værdier af visse ting er.
Ja Elliot?
>> PUBLIKUM: Og hvad hvis du ønsker at-- igen, det er et andet spørgsmål.
Men mit første spørgsmål var, hvor sker det?
Hvor skal jeg opdatere denne?
Er dette i en PHP kode?
>> SPEAKER: Hvor du opdaterer, ja.
Vi kommer til at tale om, hvor alt dette
sker slags, når vi går gennem alle kommandoer.
Men hvad du har brug for at vide for nu er dybest set
at din SQL database eksisterer som noget
at tilgås af forespørgslen funktion, som CS50 definerer.
Så hvis du bruger søgefunktion, du kan få adgang til denne tabel.
>> Så du vil sende disse kommandoer til din tabel i PHP-filer
gennem forespørgslen funktionen.
Du kan også spille rundt med dit bord direkte.
Og det er den bedste måde at teste den slags kommandoer.
Og vi vil gå igennem præcis hvordan at gøre det i bare en lille smule.
>> Så det er UPDATE kommando.
Og resten af ​​kommandoerne vil være slags ens,
arbejder på lignende ting.
INSERT INTO er formentlig den mest forskellig fra UPDATE.
Jeg har tænkt mig at lade det op der for bare en lille smule og arbejde herovre.
Så INSERT INTO, vil du se denne tabel er stadig den samme.
Du ønsker at indsætte i.
Kapitalisering, SQL er tilfældet ufølsom.
Så du behøver ikke at kapitalisere disse ting.
Konventionelt ordene i hvidt aktiveres.
Men jeg også farvekodet dem.
Den eneste grund til, at du kapitalisere dem, når du skriver dem
er bare for at understrege at de er konstanter.
Og så kan du enten se på kapitalisering eller det faktum
at jeg har farvet dem forskelligt.
>> Så vi har fået INSERT INTO, lad os gøre Tabel 1 igen.
Dette er alt på én linje.
Jeg er bare adskille det ved de forskellige udsagn.
Så du skal ikke bekymre dig om det faktum, at Table1 gjort det på den anden linje.
>> Så vi ønsker at indsætte I Tabel 1 nogle værdier.
Og du vil opdage den valgfri bit, som jeg vil komme til i en anden.
Så vi har fået værdier.
>> Så lad os sige, at vi ønsker at tilføje Andi til vores bord, fordi vi savner Andi.
Andi er syg.
Så lad os tilføje Andi til vores bord.
Husk, at ID-nummer opdateres automatisk.
Så de eneste felter, vi at bekymre sig om
er navn, supermagt, og hjemby.
>> Og så den måde, at vi gør det, ser på vores syntaks, er vi har
lige fået en parentes, med komma adskilte værdier, som hver
er en værdi.
Så hvis vi ønskede at indsætte Andi ind i vores tabel, alt, hvad vi skal gøre er at rette Andi.
Hvad er Andi supermagt, folk i Andi sektion?
Hun kan lide fly, eller kan lide hastighed, eller noget.
Hvad skal vi allerede har deroppe?
Vi har CS50, flyvning, hastighed og styrke.
>> PUBLIKUM: tidsrejser.
>> SPEAKER: Tidsrejser, forbløffende.
Så vi har fået Andi, tid rejser, og hendes hjemby.
Det er et rigtig godt spørgsmål.
New York, medmindre nogen kender.
Alle er fra New York er den lektie at tage væk fra i dag.
>> Så dette udsagn ville indsætte, som femte række,
med supermagt tidsrejser den og en hjemby New York.
Men valgfrit felt er dybest set en måde
at angive præcist, hvilke kolonner du vil indsætte tingene i.
>> Den måde, som vi gør det nu, Andi, tidsrejser, New York,
går i den nøjagtige rækkefølge af vores table-- navn, supermagt, hjemby.
Og hvis du ønskede at gøre noget andet end det,
ligesom sige, at du ikke vidste nogens supermagt,
ligesom hvordan jeg vidste ikke Andi s supermagt i begyndelsen.
Så alt jeg vidste var hendes navn og hendes hjemby.
Hvad jeg kunne gøre, er at jeg kunne do-- Jeg vil slette denne hurtig.
>> Jeg ønsker at kun opdatere kolonnerne.
Og det er her den valgfri kolonne liste kommer i spil.
Jeg ønsker kun at opdatere navn og hjemby.
Og da vil jeg sige værdier.
Jeg vil gøre Andi og New York.
>> Hvis jeg havde udeladt på listen over kolonner og netop gjort disse to ting,
hvor ville New York er gået?
Hvilken kolonne ville New York By er blevet placeret i?
Folk har nogen idé?
Supermagt nøjagtigt.
>> Så dette vil bare gå i orden.
Og når den når enden af ​​den liste, vil det bare stoppe fylde ting i.
Og de værdier, at det vil holde i alle kolonner vil bare være NULL.
Så fordi vi angivet navn og hjemby,
vi kommer til at have ID 5, navn Andi, supermagt NULL.
Så supermagt er en initialiseret værdi.
Du vil ikke nødvendigvis få den samme Valgrind fejl, hvis du forsøger
og adgang til den.
Alt vil være pænt nulstillet ud, fordi NULL er en værdi i SQL.
Det er en konstant.
Og så hjemby vil være New York.
Så det er INSERT INTO kommando.
Før vi går, er der to flere kommandoer.
Har folk har spørgsmål om UPDATE, om INSERT INTO, om SQL
generelt inden vi flytter på vores endelige bits?
Folk føler sig godt, stor.
Elsker det.
Så lad os tale om SELECT.
Går grøft UPDATE herovre.
>> Og SELECT bliver meget ens.
Målet med SELECT, SELECT formål i livet
er at give dig en masse kolonner at opfylde visse betingelser.
Og når jeg siger tilfredsstille visse betingelser,
dit sind måske straks gå tilbage til at WHERE
der kom op i UPDATE.
Og denne klausul er præcis der i SELECT.
>> Hvis vi ikke sætter WHERE klausul og vi siger SELECT navn,
hometown-- stavet, at en lille wrong-- navn, hjemby FRA Tabel1.
Hvis vi bare sige, hvad SELECT vil give os, er det
kommer til at give os en double-- en tabel, i stedet.
En dobbelt række, hvis vi er tænker i PHP sanser.
Men det er bare kommer til at give os en dobbelt række af to columns-- navn,
og hjemby.
Og det vil ignorere id.
Og det vil ignorere supermagt.
Og det vil bare give os hver enkelt række i skemaet.
Så hvis vi bare indsat Andi, vi vil have andi.
Og vi vil have den oprindelige fire.
Hvis de har været opdateret, der vil afspejles, et cetera, et cetera.
>> Så dette er, fordi vi ikke bruge WHERE.
Men vi kan bruge det i præcis den samme måde, som vi brugte det i UPDATE.
Hvis vi kun ønsker en tabel over de navne, og superkræfter af mennesker der lever
i New York, kan vi udføre en sætning Ligesom SELECT navn, superpower--
Jeg bare at forlade at-- FROM Tabel 1 WHERE hjemby = New York.
>> Så dette går til at vise, at du kan komme helt forskellige kolonner,
og derefter sætte kolonner, at du ikke er selv at komme tilbage i WHERE.
Vi har ikke selv ønsker det hjemby alle.
Men vi ønsker navn og den supermagt af mennesker
hvis hjemby er New York.
Så det er noget, vi kan gøre med WHERE
klausul er, at vi kan behandle kolonner at vi ikke nødvendigvis ønsker tilbage.
På samme måde, UPDATE, kan vi håndtere med søjler, som vi ikke nødvendigvis
ønsker at opdatere.
Vi kan opdatere byen alle som navn er Sam, for eksempel.
Vi kan opdatere byen alle, hvis ID-nummer er 2.
Så bare opdatere by i den anden række
hvor vi ikke behøver at beskæftige sig med nødvendigt den fælles spørgsmål.
>> Og slette er, som du ville forventer, DELETE FROM Tabel 1.
Og så har vi en anden WHERE.
Så vi kan sige WHERE ID = 1.
Slet den første række.
Og SLET vil altid slette en række, eller det vil slette nogle antal rækker.
DELETE FROM tabel, hvor hjemby = New York
sletter alle i New York City.
Det er, hvis der var en pludselige tragiske pest
og du ville bare fjerne alle fra bordet, der
boede i en bestemt by der blev ramt af pesten.
Må de hvile i fred.
>> Disse er de fire SQL-kommandoer at du bliver nødt til at bruge.
Du har måske ikke engang behøver at bruge dem alle.
Men disse er de fire at CS50 forventer, at du
at være komfortabel med at gå ind i både quiz 1 og også pset7 og pset8.
>> Der er bare det bord igen.
I denne ene, Roys supermagt har blevet opdateret til laserstråler, som
er et eksempel jeg ikke bruge.
Jeg ved ikke, hvilken en Roy foretrækker, men styrke.
Roy har en supermagt af styrke.
Katherine ikke gøre det i dag.
Det er uheldigt.
Men hun har super hastighed.
>> Nå det var PHP.
Før vi taler om MVC, gør nogen der har spørgsmål om PHP?
Nu SQL eller PHP, hvis du pludselig har komme op med et spørgsmål om PHP?
Stor.
Okay, vi alle sat derefter.
>> Så taler en lille smule om model view controllere,
lad os gå tilbage til nogle af de ting i pset7.
Så hvad modelvisning controller is-- Jeg er ikke
kommer til at gemme mine ændringer til login fordi jeg helt slagtet det.
Men dybest set har vi to separate ting foregår.
Vi har en offentlig mappe, der indeholder
den kode, der kommer til at blive henrettet og de websider, der vil blive besøgt.
Og vi har også denne udsigt mappe.
Og visninger indeholder skabeloner.
>> Dette er, hvad funktionen render-- vi så gør
funktion i en flok af PHP kode at CS50 har allerede skrevet til dig,
der tager i visse parametre.
Hvad denne kode gør er det at gå i udsigt,
som er sæt af lignende prewritten HTML-kode,
og det er at indsætte værdier i visse steder.
Det er sådan, når man gå ind i CS50 Finans,
den samme overskrift er på hver side.
Den samme sidefod er på hver side.
Dette skyldes den måde, at gengive værker er det vil
automatisk lappe i denne header og viewer, som du kan finde i udsigt.
>> Vi kan faktisk gå ind i header, og se, det er en HTML-fil med et hoved.
Det har fået nogle stylesheets.
Du behøver ikke at se på CSS for pset7, hvis du ikke vil.
Men du kan ændre dem, hvis du ønsker, at gøre
din Finans ser lidt anderledes.
>> Det har fået nogle PHP i header lidt at se
hvis der er en anden titel det skal sættes i denne overskrift.
Men blot nogle andre scripts, og links og andre ting.
Hoved ender, kroppen begynder, og ups, vi har denne underlige lille ende bit.
Og der er en div, ligesom en formløs slags element
der har en idé om midten.
>> Og så når vi ser sidefod, vi har i slutningen af ​​en div.
Vi har en bund, som er hvor sidefoden tekst er.
Slutningen af ​​div, slutningen af ​​krop, ultimo HTML.
>> Så hvad gør er gør, er gøre er sortering
af lappe header, en forskellige PHP-fil,
vil indeholde de faktiske ting, vil du se, ligesom dit bord af bestande
hvis du køber eller sælger aktier.
Og så vil det tilføje i sidefoden.
Og modellen visningen controller idé er, at vi
ønsker at adskille, hvordan tingene ser fra koden.
Det er vi ønsker at adskille frontend og backend, hvor frontend er
de ting, som brugeren ser, den pæne visuals-- HTML, CSS, sådan noget,
billeder, et cetera.
Og backend er PHP.
Dette er kode, som du skriver.
Det er her, den kode, der er laver egentlige operationer.
Dette er, når du tilføjer en bestand til dit bord,
når du køber og salg, det er backend.
>> Og vi kan, som du så, herunder PHP direkte i HTML.
Så det, vi kunne have gjort for denne opgave er netop haft
en HTML-fil for hver side, ligesom login.
Og så på den side, bare havde en enorm blok af PHP kode,
herunder alle den kode, pågældende side specifikt skulle.
Og så kunne vi have gjort det for portefølje.
Vi kunne have gjort alle køb og salg inden for de enkelte sider.
>> Men fordi vi er rendering separat hvorfra
vi skriver backend kode, kan vi let
ændre, hvordan tingene ser uden skiftende hver enkelt fil.
Vi gør ting som blot tilføje en ny div til bunden
of-- Hej Jeg ændrede sidefoden.
Du kan bare gøre den slags.
Men også, kan du ændre hele visuelt layout
uden at påvirke, hvad der er går i backend.
Og du kan ændre Hele backend og stadig
har det ser ligesom det gjorde før.
Denne
>> Er tanken om modellen view controller.
Og det er faktisk en pålagt paradigme i nogle af de programmeringssprog
du måske ønsker at bruge for de endelige projekter.
Hvis du gør iOS udvikling, de har udsigt,
hvilket er, hvad du ser på iPhone, og derefter backend som som en separat ting.
>> Du kan tænke på en lille smule.
Der er en masse binære filer i datalogi, som er sjovt,
fordi alt er i binær.
Jeg har ikke planer om det.
Det var et ordspil utilsigtet.
Ja, ordspil ikke beregnet.
>> Men ligesom .H filer og .c filer, der er en masse adskillelse af ting, som vi
måske ikke har brug for.
Så kan vi bare redigere h filer eller nogen kan bare se en .h fil og vide
præcis de funktioner, der er i .c fil uden nødvendigvis at kende
deres gennemførelse.
Denne idé om at adskille komponenter der er afhængige af hinanden
men kan slags adgang hinanden gennem forskellige kanaler, passerer
variabler, bare omfatter erklæringer, ting
gerne, at dette princip er med til at skabe applikationer
der kan være lettere redigeret af flere personer,
lettere kan ændres eller modificeret på en stor skala,
og er lettere at debug i en masse måder.
>> Virkelig hurtig, jeg har et par tips til pset7,
som jeg vil gøre fuld skærm, så du ikke bare at kigge på til-- spids spids Tippee.
Der er ikke så mange tips.
>> Men jeg nævnte PHP er svært at debug.
Dobbelt og tredobbelt kontrollere det.
Hvis din kode er bare ikke dukke op på siden,
det er nok en PHP fejl, beklager.
>> Du har brug for aldrig at se på CSS, hvis du ikke vil.
Men når du er færdig, kan det være en dejlig lille sjov ting at bare gå i
og rode med CSS parametre.
CSS og HTML er et eksempel på en model view controller stil ting også, ikke?
Du kunne have stil tags indersiden af ​​HTML-elementer.
Men hvis du slags outsourcing dem til CSS,
de er nemmere at redigere, og leg rundt med, og have det sjovt med.
>> Forkæl CS50 hjælper fungerer som sorte bokse.
Du behøver ikke at vide præcis, hvad render laver,
men tro det altid at gøre det rigtige ting afhængigt af hvad du give det,
ting som dette.
Og jeg vil anbefale ser Davids walkthrough,
gennemgår alle Stuff, ikke kun de todos,
men du virkelig kan behandle disse som sorte bokse.
Må ikke gå ind i disse funktioner på udkig efter bugs.
>> Og velkommen tilbagevenden vores Overlord Zamyla.
Stor.
>> Er der nogen endelige spørgsmål, før vi slags hoppe for dagen?
Er jeg stadig lever?
Stor.
Hej Livestream mennesker.
Stor.
Er der længere spørgsmål?
Ingen?
>> Og så tror jeg, vi er god til at gå til i dag.
Jeg vil holde sig omkring en lille smule bagefter, hvis folk havde spørgsmål
de var bange for at spørge på åen.
Men ellers have en god dag.