>> SAM LEVATICH: Welcome to gedeelte voor deze week.
Ik ben niet Andi.
Andi is ziek geworden op de dag, en ik zijn soort genoemd in de laatste minuut
overnemen.
Is het griepseizoen, dus zorg ervoor dat je verblijft schoon, het wassen van je handen,
en het eten van gezonde, zodat jij ook niet bedlegerig.
>> Maar zonder verdere omhaal, laten we beginnen.
Vandaag gaan we praten over PHP een beetje bit-- hoe
PHP heeft betrekking op HTML, hoe het betreft CSS, en sommige van de baan
dingen die je deed op de laatste opdracht.
We gaan naar een praten beetje over SQL
en hoe je kunt werken met databases, dat is een vrij belangrijk onderdeel van P
set 8-- P set 7.
P set 7.
>> En dan gaan we een beetje praten beetje over hoe view controllers werken
en waarom dat is een filosofie achter een aantal moderne webpagina's en ander design.
Vrij veel een heleboel soorten apps en toepassingen die u zou kunnen verzenden
worden met behulp van dit model, view controller kader
dat u zal worden met behulp in P plaats 7, dus ik zal
praten een beetje over waarom dat is geworden
populair, waarom het belangrijk is en mooi.
En dan zal ik eindelijk overgaan tot enkele tips over de aanpak van P set 7.
En als we tijd hebben overblijft aan het einde,
kunnen we eigenlijk een aantal doen werken samen aan.
>> Dus, PHP.
In feite kan je zijn opgevallen dit-- je niet echt in te duiken het--
maar P set 6 had een aantal PHP code die aan de hand was.
En omdat PHP is een C-achtige taal, PHP, in tegenstelling tot HTML en CSS,
is een programmeertaal, terwijl HTML en CSS zijn statisch.
Ze zijn opmaaktalen omgaan met stijl en visuele lay-out.
PHP is de real deal.
>> PHP heeft loops, het heeft conditions-- al dat spul dat is leuk over C.
Het heeft een paar dingen die een beetje zijn beetje beter dan C, die we zullen zien,
maar ik denk dat de makkelijkste manier om te praten over de PHP is gewoon om te duiken in.
Dus ik ga naar rechts gaan in de IDE op dit punt.
Het eerste wat we gaan te doen is eigenlijk kijken
een beetje op een aantal van de PHP-code die in P set 6.
Dus de manier waarop we dat-- doen vóór, de manier waarop we liepen
de server van het toestel was dat we zouden moeten Motortype-
gebruik maken van uw implementatie of de uitvoering van het personeel
van server.c door in directory en actief server.c met ofwel zonder
arguments-- dus noem het op de lokale host, dat is wat je waarschijnlijk
heeft het merendeel van de tijd-- en dan voeden
een directory-- met om als zijn wortel
waar de website zouden worden uitgevoerd, in principe.
>> Deze week P set 7, zoals groot als onze code voor server.c
is, zijn er mensen die al schriftelijke deze fijne dingen over ten CS50
die hebben een beetje meer functionaliteit,
een server programma dat in staat is om met een beetje
van de fijne kneepjes dat we zien in zowel P set 7 en P set 8.
En de manier waarop je het opstarten van de server is door gewoon te typen, "apache50."
>> En voordat je iets doet, wilt u ervoor zorgen
dat Apache 50 niet al uitgevoerd als het
op mijn machine, wat ik deed om het te testen.
En je dat doen door te bellen apache50.
Stoppen, en je zult zien dat het stoppen de webserver, als je kunt er kijken
onderin de terminal-venster.
En dan gewoon te beginnen, we zijn gaan roepen, "apache50 starten."
En dan gaan we te voeden een directory.
>> Nu, omdat we willen kijken bij enkele van de P set 6 code
dat wij, ik eigenlijk had uitgevoerd gekopieerd een beetje van de P
set 6 code in mijn eigen map, die je kunt zien aan de linkerkant.
Het heet "SECTION8" in hoofdletters
want ik ben net zo opgewonden zijn vandaag live gestreamd.
>> Dus als we dit uitvoeren, het hoort werken allemaal erg effectief.
Het zegt, OK, onze site is nu verkrijgbaar op het adres van de IDE,
principe, dat is wat je met behulp precies zoals het was in P ingesteld 7-- P set 6.
Al mijn indexen zijn een index vandaag.
Dus we kunnen gaan naar die adres, als u zult herinneren,
door gewoon deze kleine klikken knop in de rechterbovenhoek.
>> En je zult deze code, die herinneren gebeurde toen je ging naar hello.php.
En wat de code is ontworpen om doen is wanneer je een naam hebt getypt
hier-- als je zegt Sam want dat is mijn name--
en ik klik Say Hello, wanneer gingen we naar de volgende pagina,
die naam moest worden weergegeven.
Het zou zeggen: "Hallo, Sam" of "Hallo," wat je naam
gestoken hoewel we gingen om een ​​geheel nieuwe webpagina.
>> En dit is het soort dingen dat PHP voor u kan doen.
PHP is in staat om gegevens te passeren tussen twee webpagina's.
Dit is een totaal andere pagina.
Zie je de titel "hallo" hier.
Eigenlijk hebben ze dezelfde titel, maar ik
beloven ze zijn verschillende web pagina's als we kijken naar de bron.
En je kunt de gegevens dat is voorbij op dit gebied ingevoerde tekst,
u ze naar de volgende pagina die wordt up heet,
en dat data kan zijn er in de huidige vorm.
>> Nu hebben we nog niet geïmplementeerd dit onszelf, die
is wat we gaan nu om te doen soort krijgt een smaak van hoe PHP werkt,
maar het belangrijkste idee is dat je kunt PHP-- soort van denken van het als een functie.
Iets dat PHP je kunt laten do is kan de parameters te nemen
die u invoert in een HTML-pagina met behulp van PHP en vormen,
en het kan deze als parameters doorgeven naar de volgende pagina die het laadt op.
>> In dit geval zijn we het laden van deze pagina met de knop "Zeg hallo".
Maar voor nu, ik eigenlijk verwijderde sommige van die code
in de hello.php die werd gerund dat was eigenlijk de weergave van de "hallo,
wereld "of" hallo, Sam "of "Hallo," wat was net ingevoerd.
Dus voor nu, we zijn gaan om dat te doen, in principe.
We gaan opnieuw dat en Ook voeg wat meer functionaliteit,
doe een beetje meer met het, zie wat PHP is werkelijk in staat.
>> Dus laten we eerst eens praten over dit bestand, hello.php.
Dus als we in een te zoomen weinig bit-- en nu ben ik
soort proberen om alle bladeren de manier waarop around-- daar gaan we.
Je zult zien dat heet hello.php, maar de syntax ervan
ziet eruit als een HTML-bestand.
Dit is omdat de werkelijke PHP in dit bestand
is al vast tussen deze vraagteken-dakje blokken.
Alles hier wordt beschouwd als PHP-code.
>> En je zult merken dat toen ik een reactie,
zie je de bekende twee slashes.
En als u zult herinneren, in HTML, als ik typ een commentaar,
het ziet er iets dichter bij Dit, dat is een commentaar in HTML.
Dus echt alles tussen deze twee punthaken
is nu PHP-code, die blijkt uit het feit
dat deze kleine commentaarsymbool wordt omgezet in een reactie.
>> Dus elke keer dat u schrijft PHP-code, zelfs als er geen HTML-code daarbuiten,
het altijd gaat worden ingesloten in deze punthaken
met vraagtekens.
Je kunt een soort van denken over hoe al het-- van de code die liep in uw C-programma's
werd ingesloten in een int main, leegte, accolade, eind accolade verklaring.
En je zult zien accolades in PHP, ook, maar dit is een soort van
als de belangrijkste methode van PHP.
>> Dus nu, hoe kunnen we iets in PHP doen?
Nu, PHP is een programmeertaal taal, dat is zeer C-achtige,
maar het werkt op het web.
Dus een ding dat je immediately-- één
van de eerste dingen die je echt deed met C werd u gedrukt spullen uit, toch?
Dus in C we dat deden met een printf functie.
We gaven het een string, waarschijnlijk met een nieuwe lijn,
en dan beëindigd we het met een puntkomma.
>> Dus de manier waarop we gaan dat doen in PHP-- want het is niet helemaal printf.
Het is een beetje anders syntax.
De manier waarop we dingen uit te printen in PHP is dat we zeggen: "echo hallo"
of "echo" een woord.
Dat heeft het effect van het doen printf met een string, "hallo."
En het voegt de nieuwe lijn aan.
>> Dus laten we nu te maken sure-- Ik zal er weer een beetje zoomen bit--
Laten we ervoor zorgen dat die code werkt
want er zou heel wel een bug in de code
dat we zullen moeten aanpakken.
Zodat de server wordt al uitgevoerd.
Dus als we scroll naar beneden naar de bodem, yup, de server is nog steeds actief.
Dus als we tikt u gewoon op deze beetje gelijk hier--
welcome-- we moeten grote get--.
>> We hebben nog steeds hebben de vertrouwde "Zeg hallo" dialoog,
maar als ik typ in "hallo," we zullen zien dat de tekst "hello" was inderdaad
afgedrukt, dat is precies zoals we hadden verwacht, omdat echo in PHP
is net als een printf statement.
Dus terug naar de code, hoe in P set 6 gedaan de verdeelsleutel die u verstrekt
maken het zo dat PHP zou uitgang van het ding dat je
getypt in op het vorige scherm?
>> En soort onderzoeken waarom dat gebeurt, zijn we
ga naar index.html, waarin is het oorspronkelijke bestand, het bestand dat
verschijnt op het scherm met de knop "Zeg hallo".
Je merkt dat er alle klassieke dingen
we zijn gaan verwachten van HTML zoals als deze dingen, deze tags ingesloten
in de hoek tussen haakjes, zoals PHP maar zonder vraagtekens,
die wijst op een speciale ding naar HTML.
We hebben de titel, dat is "hallo."
En je zult merken dat als we zagen, de titel is "hello" in beide gevallen.
Laten we dit veranderen om "te zeggen" zodat we
kan ons te onderscheiden waar we zijn.
>> Maar we hebben een lichaam gekregen.
En dan is het interessante bit, de bit die verschijnt in de HTML,
is dit formulier element.
En dus hebben we een formulier.
En dit is de sleutel.
Dit is hoe we werken met PHP.
De actie parameter van formulier zegt dat hello.php
is wat we gaan sturen de waarden in dit formulier.
Dit is waar we passeren de parameters, om zo te zeggen.
>> U zult een ander ding hier opmerken is dat de methode "te krijgen."
Er zijn twee primaire methoden waarmee zal
worden met behulp van PHP om gegevens te passeren tussen websites-- webpagina's,
rather-- in deze opdracht.
En deze methoden zijn "krijgen" en "post."
Er zijn een aantal subtiele verschillen tussen GET en POST
die we zullen krijgen into-- we zal "komen" in, als je wil.
>> Maar voor alle opzichten doeleinden, krijgen en post
zijn beide slechts een manier die u parameters doorgeven
met een iets verschillende uitvoeringen.
Voor nu, we gaan krijgen, omdat gebruik krijgen was wat oorspronkelijk werd gebruikt
in het PHP-bestand van P set 6.
En eigenlijk, als we naar binnen gaan en kijken voordat we iets anders heeft bewerkt,
Ik ga om te zeggen hallo to-- wat is uw naam?
>> Publiek: Elliot.
SAM LEVATICH: Oh, jeetje.
Ik weet niet hoe te spellen dat.
Kunt u dat spellen voor mij?
AUDIENCE: E-L-L-I-O-T.
>> SAM LEVATICH: I-O-T?
>> Publiek: Ja.
>> SAM LEVATICH: Perfect.
OK.
Ik denk dat ik wel weet hoe te spellen dat.
Sorry daarvoor.
Maar als we zeggen: "Zeg hallo," het is niet het is niet van plan te laten zien op het scherm
maar omdat we gewijzigd de code een beetje.
Maar als we "Zeg hallo" - OK, dus "hallo" is hier.
Maar als we dichterbij kijken naar de URL zelf,
we zullen zien dat het eindigt met hello.php? name = Elliot.
>> Dus, dit is een manier communiceren naar de volgende webpagina
de parameters die we hebben gepasseerd.
We zeiden name = Elliot.
En dat is uiteindelijk hoe P set 6 toegankelijk de variabele die we doorgegeven
door middel van het formulier.
En dit is iets dat is eigen aan een get aanvraag.
Een get verzoek maakt de parameters bekend in de URL van de website.
>> En je zult herinneren, ook, in P set 6 dat u
had om een ​​functie te schrijven dat zich bezighield met het feit
dat deze query string na een bestand zou kunnen bestaan.
Er kon een vraagteken gevolgd worden door in principe een willekeurig aantal tekens.
En dat is precies wat er aan de hand hier.
En de reden dat je moest ontleden dat in de uitvoering van server.c in P
set 6 is, zodat je kon vertellen de PHP-code die naam = Elliot.
Je moest kunnen ontleden, dat uit de URL
zodat de PHP-bestand in kwestie wist wat het te maken had.
>> Dus hopelijk geeft dit de motivatie om server.c
Nu dat we bewegen op buiten C in PHP.
Dus laten we de blik te richten op de toegang tot dingen door een get verzoek nu
Op dit moment.
Ik ga dit redden.
We hebben niets te veranderen.
Het lijkt erop dat we een invoerveld hebt.
>> We zijn het instellen van een aantal eigenschappen, als we een HTML kunnen doen.
Dit zijn eenvoudige dingen.
We niet deze.
Maar we hebben autocomplete uit, die in feite says-- u weet,
als je dingen typt in het web, soms
het probeert op te vullen dat voor u.
Dus het is een mooi ding.
We willen het uit te zetten voor dit doel.
Dat was een CS50 beslissing.
Dus we kunnen verwijderen dat als we wilden.
>> Autofocus steekt gewoon de cursor in de vorm meteen aan het begin.
Nogmaals, niet te belangrijk.
>> Maar name = "naam" - het is een beetje lastig, want het is de naam en de naam.
Maar we konden hebben veranderd dit iets anders.
En in feite, dat is wat we nu gaan doen.
We zullen zeggen: "persoon", die is een soort van zoals naam
Als een persoon wordt bepaald door hun naam.
>> Dus laten we sluiten dit, heropenen onze website
aangezien onze server loopt nog Apache 50, en we zullen zeggen: hallo, hier is
Elliot weer.
Waarom niet?
Hallo.
En als we hier gaan, we zullen zien dan in plaats van de naam = Elliot,
het zegt persoon = Elliot.
En dat is een direct gevolg van het feit dat we net veranderd name = "persoon."
>> Dus een ingangselement van een HTML-formulier, de veldnaam
is de identificatiecode voor de parameter dat wordt doorgegeven.
Het is alsof je het creëren van een functie "add", dat in twee getallen namen
en je zei int a en b int.
Dat zou de naam van een, en als u een andere vorm, wilde die
kunnen we gewoon doen door te kopiëren en plakken, dan zouden we de naam b hebben.
>> Dus nu we moeten twee parameters die via zijn doorgegeven
naar het volgende website-- de volgende webpagina, hello.php.
En we kunnen eigenlijk zien dat opnieuw als we willen.
Dit is de makkelijkste manier om te gaan met het web code in de IDE, in principe.
U start de server, krijgen hardlopen, en dan elke keer dat u
een aantal wijzigingen, gewoon dicht dat bestand alleen maar om veilig te zijn.
Door op de back-knop is een beetje lastig
omdat het een eerder zou laden versie, niet de meest recente is.
>> En dan moet je gewoon op uw toets opnieuw, pop recht up-- oh,
en nu zijn er twee vormen.
En dus als we het type één ding in elkaar een-- "jason Hirshhorn," voor instance--
we gedag zeggen.
We kijken naar onze parameters.
Het lijkt erop dat we hebben, zoals verwacht, a = jason en b = Hirshhorn,
de twee parameters vertegenwoordigt wij doorgegeven aan deze functie.
>> Dus laten we nu eigenlijk naar uitvoering van die functionaliteit die we
had P ingesteld 6.
Dus nu zijn we alleen het melden hallo.
En dat is niet erg handig.
We willen een aantal variabele echo die werd doorgegeven aan ons.
En we weten dat de naam van deze variabele.
We hebben een en we hebben b.
Dus we konden kiezen om een ​​echo.
>> Maar hoe kunnen we toegang toe?
Nou, er zijn bepaalde globale variabelen in PHP.
En ik ga schrijven ze hier reacties.
De twee belangrijkste zijn get en post voor ons doel nu.
Dit zijn de arrays of, technisch, de woordenboeken
waar onze variabelen die we overgaan naar de volgende webpagina voor live.
En we zullen snel zien hoe ze te gebruiken.
>> Een andere korte notitie over PHP-code en enkele details van het-- in C,
een variabele declareren of variabelen,
je eerst moest ze verklaren.
En wat je moest doen als je verklaarde ze was zeggen int a of b char.
Je moest de soorten van deze verklaren variabelen voordat je hen geschapen.
PHP-- je niet nodig om een ​​van die te doen.
PHP vraagt ​​niet om het type variabele.
En de manier waarop u maak een variable-- plaats
dan zeggen int, char, string-- dat is echt char *, zoals we weten--
in plaats van alle doen dat, omdat alles
is van hetzelfde type, typeless, kunnen we net
gebruik maken van een karakter, dat is het dollarteken.
En je zult zien dat het al popping up, kleine autocomplete dingen.
En het is te zeggen dat _GET en _POST zijn twee opties die ik beschikbaar
aan mij.
Sommige andere dingen andere globale variabelen in PHP
dat je zult gebruiken dan de loop van P set 7.
Voor nu gaan we concentreren op krijgen en post.
Maar dit is een nuttig ding dat de IDE doet
waar je ooit hebt getypt in die dollarteken,
het zal beginnen met het invullen van globale variabelen of variabelen die u al hebt gedefinieerd.
>> Dus als je wilde om te bepalen een variabele genaamd "string"
je kon gewoon stel het gelijk aan "hallo."
En het is eigenlijk zo simpel als dat.
En dan kunnen we doen iets als "echo $ string."
De IDE moet gooien sommige fouten als ik doe niets verkeerd,
dus hopelijk ben ik alles goed doen.
Maar bugs altijd doen ontstaan.
>> Een ander lastig ding over PHP is dat het niet is gecompileerd.
Dus met C-programma's, zou je doen de dagelijkse routine van-- principe,
zou je bewerkingen te maken uw code, zou je het op te slaan,
en dan zou je maakt het, waar make was
de stap die de compiler genoemd, kletteren, om uw code te maken, deze tekst
file, in een uitvoerbaar.
PHP is C-achtig, maar het is uitgevoerd on the fly door uw browser.
Dus er is geen manier om te weten.
>> Maak zou gooien die behulpzaam fouten, toch?
Het zou zijn, je heeft deze variabele niet verklaren
voordat je probeert om het te gebruiken.
Je deed al dit slechte stuff-- segfault, segfault, al dat soort leuke tijden
die kwam met make.
PHP is een tweesnijdend zwaard omdat u niet die fouten te krijgen,
maar dat betekent ook dat je niet weet echt wat is er mis met je programma
als je gewoon draaien en het werkt niet.
Maar de debugger moeten wijzen wat hopelijk nuttige kleine dingen
syntactisch die u kunt repareren.
>> Dus nu als we gaan over to-- zeggen, laten we sluiten dat.
Heropenen.
En we zijn terug naar hier.
Dus hebben we een variabele kregen en een variabele b.
En deze zullen uiteindelijk niet uit.
We zullen ze h en g bellen voor geen bijzondere reden.
>> En wij zeggen hallo.
Nu lijkt het alsof onze reeks "hallo" is inderdaad afdrukken.
We hebben een variabele genaamd "string," stel deze gelijk aan "hallo."
Merk op dat we niet moeten doen malloc of een karakter array.
>> In PHP, omdat variabelen zijn typeless, een string
is hetzelfde als voor char alle doeleinden.
Dit zou kunnen worden "hallo."
Dit kon gewoon het karakter k.
Dit kan een nummer 1 zijn.
En het maakt niet uit.
PHP niet schelen het type variabele.
Of, het doet zorg.
Het geeft wanneer u probeert en dingen doen,
maar het maakt niet uit in de verklaring stap.
>> En net als je kunt in C, kunt u verklaren snaren op de stapel als dit
maar zeggen "stack" is een beetje beetje een mogelijke verkeerde benaming als
we praten over PHP.
Maar we hebben geen zorgen over te maken.
Dus kregen we onze reeks "Hallo," en we echo string.
Dus nu hebben we besproken variabelen.
Dus nu moeten we praten over krijgen en posten en voer de laatste ding dat is
nodig om echt deze back-up de functionaliteit van de P stellen 6.
Dus nu zijn we in navolging van de string, maar we
hebben deze variabelen krijgen en post.
En omdat we gebruiken de werkwijze krijgt,
lijkt het logisch dat onze variabele die We zijn geïnteresseerd in zowel a en b,
wordt in de matrix of woordenboek, technisch te krijgen.
>> Dus als we het opzetten van krijgen als deze met je groups-- Ik drukte voeren
en het hield niet het-- maar hier hebben we te krijgen.
En zo krijgen al bestaat.
Dus we kunnen nu al beginnen om de toegang sommige elementen van nemen.
Als we krijgen, deze syntaxis voor arrays in PHP is zeer C-achtige.
We hebben onze twee vierkante haakjes.
>> Dus als we zeggen krijgen in een normale array, kunnen we toegang
de nulde index, de eerste index.
PHP nul index.
We zouden kunnen zeggen nul, één, two-- dingen zoals dit.
En ik heb gezegd dat krijgen is technisch een woordenboek.
Dus wat PHP doet onder de motorkap, dat is een beetje mooier dan C,
is het al geeft u een aantal woordenboek functionaliteit die
is echt hash tabellen, of probeert, vermoedelijk.
Of, technisch gezien kan een proberen zo goed.
Maar PHP is de uitvoering van een hash-tabel, welke een effectieve woordenboek.
>> En dus we weten de naam van onze variabele, toch?
Het wordt doorgegeven de query string door PHP.
We hebben = h en b = g waar en b de namen van de variabelen.
Dus de manier waarop we toegang hebben tot de waarde die overeenkomt met de sleutel
in ons woordenboek is gewoon door te zeggen _GET_GET ["a"].
>> Dus nu hebben we _GET ["a"].
En als we vervangen net binnen onze echo, als we echo _GET_GET ["a"] -
en we zullen zien of de debugger gooit eventuele fouten over dit--
dat bewaren we en sluit dit uit.
Open het.
Dus we gewoon een goed doen , zodat b mag er niet toe.
"haar" en "hem" - "neuriën." "haar" en "hum."
Klinkt goed.
>> En het uitgeprint "haar", die is gek.
Maar dat is precies wat werd er in P set 6.
Kortom, wat P set 6 was doing-- echo hello,
name-- waar het had een variabele naam en het gewoon
vraagt ​​u te typen in dat stukje tekst.
Er was ook enige aanvullende code waar de
Het opgenomen indien statements, die kunnen we nu doen.
>> We kunnen zeggen als deze bestaat, die een functionaliteit in PHP,
_GET Met de underscore, "naam" - die in feite zegt,
"als de naam is ingevuld", omdat we konden hebben geklikt op de knop
Gebruik het formulier om zonder iets in die veld te typen.
En we wrap dat in onze vriendelijke accolades.
We kunnen een andere verklaring.
En dat is alles binnen de PHP-hoek beugel, vraagteken, hoekijzer,
als je wil.
>> En nu zullen we zien of dit werkt.
Ik blijf wachten tot het debuggen en onzin op mij, eigenlijk,
maar het is nog niet.
Misschien gaat het nu want ik had het over.
Ja.
Het deed, in feite.
Dus, is er niets opdagen.
Dat komt door iets mis die ik schreef in de PHP-code.
En ik hebben het debuggen is lastig omdat in PHP, we
niet op voorhand compileren en de compiler is niet leuk,
hier is waar je fouten.
>> Maar wat we kunnen doen is-- doen mensen herinneren
hoe om te kijken naar de verschillende netwerk vraagt ​​dat PHP-- of dat websites
stuur?
[? Malin?] Deed dit in lezing of twee keer.
Herinnert u zich waar we naar zoeken de verschillende schulden en 200 OKs,
al deze codes die worden verzonden via HTTP van webpagina naar webpagina?
Heeft iemand herinneren waar we gaan om dat te doen?
>> Publiek: Pagina Bron.
SAM LEVATICH: Pagina bron.
Precies.
Als je naar Pagina Source-- perfect.
Dus Pagina Bron trekt de inspecteur.
>> En ik ben met behulp van Safari.
Veel van jullie zullen waarschijnlijk worden met behulp van Chrome of Firefox.
Maar zolang je bent in elke moderne browser--
en voel je vrij om te volgen mee als je wilt.
U kunt typen op deze code of kijk maar in de P set 6
directory voor een aantal soortgelijke dingen.
hello.php is wat we zijn momenteel aan emuleren.
>> Er zijn dus verschillende tabs.
We kunnen kijken naar alle middelen.
We kunnen de broncode te zien.
Zodat het lijkt alsof het niet voorbij lichaam in het einde.
Het vond een fout in PHP en het stopte het laden van de hele webpagina.
We hebben niet eens een einde tag voor HTML of wat dan ook.
>> En als we kijken naar het netwerk, kunnen we zien dat we worden een verzoek gestuurd.
Dit is het domein.
Dit is het adres.
Het is een document.
We gebruiken de methode get.
>> En het is rood.
Of werd rood toen ik niet te selecteren.
Hoe kan ik dit ongedaan?
Nou, het was rood.
Laat me opfrissen.
Daar is het.
Nu is het rood.
>> Dus het is rood, hetgeen betekent is mislukt, dat is slecht.
Dus laten we eens onderzoeken waarom het mislukken.
Dus alles wat de pagina bron kan eigenlijk vertellen is uw ding
werkte niet, die we al kunnen zien.
Dus idealiter zou er zijn een handig hulpmiddel.
En er zijn enkele browser-extensies die u in staat te debuggen PHP,
maar we zijn niet van plan om het schrijven van een ton van PHP,
dus het is waarschijnlijk gewoon het beste om te kijken door de code
zorgvuldig en gewoon ervoor zorgen dat het is niet iets anders te doen.
>> Dus laten we zien als de indeling van deze Als verklaring is waar het probleem zit.
Ik wil laden die hier terug.
Hallo Hoi.
Dus er is een probleem.
>> Dus voor de juiste syntaxis van PHP, PHP gaat
C-achtige in dat je lussen zien.
Je zult zien of verklaringen.
Je zult al deze vrienden te zien dat u bekend bent geworden
met in de loop van deze CS50 semester.
Maar de beste manier om erachter te komen hoe doe iets in PHP is Google het
of om te kijken naar enkele voorbeelden van PHP-code omdat je weet dat de functionaliteit.
>> Je weet wat je kunt met het programma.
U kunt lus.
U kunt loop zo vaak als je wilt.
U kunt loop in alle allerlei verschillende manieren.
U kunt functies creëren.
U kunt functies te creëren dat noemen andere functies, functies
die zichzelf noemen.
En je hebt namen voor deze concepten.
Je hebt recursie, lussen, Als andere besturingsstromen.
En dus Google is je beste vriend.
Zelfs zeggen, "PHP als statement "en daar zult
zijn tonnen van berichten met antwoorden anderen
die dezelfde vragen die je hebt gehad, die net beginnen met PHP
en zijn nieuwsgierig naar een syntax ding.
>> Want we hebben de luxe van het in staat om te kijken naar de code in P set 6,
we eigenlijk trek hem omhoog en zie dat Oké, hier is iets interessant.
Dus dit is wat het eigenlijk leek in P set 6.
Dus als we gaan door dit, kunnen we zien dat we hebben
kreeg een aantal van deze kleine PHP-achtige vraagteken bits.
>> En er zijn geen accolades.
Er zijn dubbele punten.
En er zijn krullend bretels in PHP, maar dit
is een formaat en een manier van doen PHP die goed werkt met HTML
want zoals u zult zien, we sluiten off deze PHP bits-- de elses
en de mitsen en alle dat-- en dan we her en HTML binnen hen
terwijl na control flow door PHP uiteengezet.
>> Dus ik ga gewoon korte wandeling door dit
want het is een groot deel van de dezelfde concepten die we eerder deden.
We hebben zo niet leeg is, haakjes, _GET_GET ['naam'].
Dit is allemaal dezelfde dingen.
We gebruiken de _GET woordenboek dat PHP stuurt op verzoek van de formulieren,
omdat het de parameters van actie, en de methode is te krijgen.
En dan die eindigt dat.
De dikke darm is een betekenaar om dit gewoon doen als de if true.
Het is als een accolade.
En in feite is het een accolade in andere talen als Python,
die u kunt tegenkomen als je gewoon dat doen voor je afstudeerproject.
>> En dan is deze lijn, hallo.
Dan hebben we deze bizarre zaak.
We hebben meer haken.
Er is geen HTTP er-- of PHP, sorry.
Maar er is een gelijk-teken.
En dan hebben we een functie, htmlspecialchars (_GEThtmlspecialchars (_GET ["naam"]).
Dit is een soort van als een meer geavanceerde versie van echo.
Als wij als een manier had echo om dingen uit te printen in PHP.
Dit is een functie die gedefinieerd in PHP dat
zal zich bezighouden met wat meer vervelende personages en bytewaarden
dat je zou kunnen doorgeven.
Het is altijd het veiligst om dit te gebruiken.
Maar echo zal het werk doen prima als we niet
omgaan met iets te smerig.
>> En dus heeft dit hetzelfde effect principe,
dit spul tussen de vraag merken wordt geëvalueerd door PHP.
htmlspecialchars geeft een aardige HTML gedrukte waarde van _GET_GET ["naam"], dat wil zeggen
wat we getypt in de vorm.
En dan zal het gedag zeggen, komma ruimte, en dan dat.
Dat hele ding tussen de punthaken
worden vervangen door welke htmlspecialchars steekt.
Dus dat is in principe gelijk om wat we doen.
En we hebben een andere verklaring is dat hello wereld, wat logisch is.
Dus laten we nu teruggaan naar onze code en zie exactly-- oh.
Ik zei bestaat, die niet een ding dat we wilden doen.
We wilden niet leeg te zeggen.
>> En dus zou dit een beetje te werken beetje beter, niet leeg _GET_GET ['naam'].
En dat accolade overeenkomt met dat accolade.
We hebben ons accolades kreeg hier.
echo hello _GET ['naam'].
Laten we eens zien of dit werkt een beetje beter.
We zijn nog steeds het uitvoeren van onze server.
Hallo Jason.
En het werkte deze keer.
En dus dat is een bewijs dat je kunt inderdaad
Gebruik de accolades die u kennen en liefhebben in PHP code in HTML.
De PHP-code die aan u PSET 6-- PSET 6--
geeft een andere manier om dat te doen hetzelfde.
>> Dus nu hebben we de kracht.
Wij hebben de functionaliteit te implementeren de PHP-code die we zagen in PSET 6
door onszelf, in principe.
Voordat ik verder gaan, wat zijn sommige van de vragen die je hebt op dit punt?
Ja [onverstaanbaar].
>> Publiek: Dus in de versie pset6, wanneer je het uit te voeren, is er een ruimte.
En ik kan zien waar de ruimte na de komma. [Onverstaanbaar] start
de open beugel.
Hoe ziet u de ruimte op te nemen in de manier waarop je je eigen codes schreef?
>> SPEAKER: Dat is een goede vraag.
En dus laten we dat uit.
Dus dat is een heel goede vraag en een die ik niet overwegen.
Maar laten we het samen doen.
>> Dus allereerst, wat Ik ben bezig met echo
is wanneer we net echo hello, hello is uitgangen.
Als we nu echo dit te krijgen op een afzonderlijke lijn, laten we eens kijken wat er gebeurt.
Dus we hierop klikt.
We blijven zeggen, hi Jason.
Dus nogmaals, we hebben niet deze ruimte.
>> En dat komt omdat, in PHP, toen we hebben echo,
ongeacht hoeveel spaces-- nope, niet de V--
ongeacht hoeveel ruimte we in hier-- als we nu laden dat weer omhoog,
hi Jason.
Ja, zie, al die ruimten werd opgegeten.
En dat is iets dat de echo functie doet.
>> Zo te verzorgen die ruimte en dit is
een van de redenen waarom je niet gebruik maken van echo
en u htmlspecialchars gebruiken in plaats.
Ik ben benieuwd wat zou er gebeuren als we dit deden
waar we een omsloten ruimte in een string.
Ik ben eerlijk gezegd niet zeker wat zal gebeuren als ik dit doe.
>> Dus dat is een manier.
Dat is een manier om te zorgen voor het.
Als u de ruimte in te wikkelen een tekenreeks, dan de ruimte
uitgestuurd mooi zijn door echo.
De veiligste om te doen is htmlspecialchars te doen.
Dat is altijd de veilige gok.
Maar nu hebben we een manier om te doen met echo indien nodig.
En op dezelfde wijze kunnen we echo nieuwe lijnen, al het soort
dingen die je bent vertrouwd te doen in PHP.
>> Iemand anders, wat zijn meer vragen dat andere mensen
op dit moment over PHP?
Als mensen kwamen een beetje laat, Ik ben blij om te verblijven na een beetje
en praten over een aantal van het begin.
En het is ook alle livestreamed, en gearchiveerd, dat is gek.
>> Hoe dan ook, dus laten we nu doen wat meer geavanceerde dingen met PHP.
En een van de eerste dingen die je werden geïntroduceerd in C was loops.
PHP en heeft een krachtiger voor lus noemde de foreach lus.
En het lijkt erop dat dit-- voor elk leeg als leeg, accolades, doe het ding.
Dus dit is eigenlijk een afkorting.
>> Zie, de lus als een syntactische bouw
is in C en assemblage ontwikkeld taal en dingen willen.
Ontwikkeld in C, precies, een afkorting voor veel van de soorten lussen
dat mensen zouden zien.
Zoals wanneer je schreef een lus, is er was vaak een initialisatie stap
geëxecuteerd meteen aan het begin, een aandoening waarbij de lus stop--
en dat is de functie dat is gewoon een tijdje loop,
of dat een tijdje heeft precies alleen dat feature-- en dan
Een incrementeringsstap eind.
En dus zou je vaak jezelf het schrijven van code zoals het volgende.
Ik ga een aantal van deze te wissen.
>> Maar als we itereren door middel van karakters in een array,
bijvoorbeeld, zoals we hebben kreeg een array van karakters.
Sorry dat C. Ik weet terug te brengen, je dacht dat je klaar waren.
Maar het is alleen voor het doel van het leren van PHP, dat beloof ik.
Dus als je een char str met een lengte van 8, en laten
zeg het zegt Hellooo met een trailing null.
Groot, dus dat is onze string.
>> En dan hadden we een lus.
We hebben int i gelijk is aan 0.
En we willen om af te sluiten bij het str van i gelijk niet gelijk is aan nul,
omdat we te verlaten wanneer het gelijk is aan nul.
En dan doen we i ++ bij elke punt in de lus.
Sportief met str i.
>> Dus de basisformule was, we hadden deze array dat we
wilde als afzonderlijke elementen te behandelen.
Maar wat we moesten doen is dat we moesten eigenlijk een apart integer
variabele die telde elke keer dat we gingen door de lus.
En dan zouden we dan bellen strstr [i] als wat we echt wilden doen
is gewoon gaan karakter van karakter, toch?
We willen niet een hogen integer en dan dat getal
individueel toegang tot elk karakter.
We willen echt teken voor teken.
>> En dus voor elk intelligent berekent dat voor ons.
Als we een array, die kunnen we verklaren in PHP
als gewoon-- als we een variabele genoemd, laten we noemen het array.
De wonderen geen typen, het is net als elke andere variabele.
Het is gewoon een array.
En we hebben een beetje [onverstaanbaar], zoals 1, 2, 3, maar een soort van geïnitialiseerd array.
Het is OK, is het niet van mijn foreach.
>> Maar als we foreach-- eigenlijk Ik typte dat een beetje verkeerd.
Er zijn twee manieren om een ​​foreach lus doen.
Er is in de syntax en de als syntax.
En we gaan doen in de eerste syntax, niet zo.
Dat is mijn fout.
>> Dus foreach num in array, echo num.
En PHP is schreeuwen tegen me om wat voor reden.
Het vinden van een onverwachte in in iets,
dat is een beetje een last.
Maar we zullen uitzoeken waarom dat in een moment.
Dus niet zo.
Laten we proberen met behulp van de als.
Het geeft de voorkeur aan als syntax is lijkt.
Dus laten we doen foreach array num.
>> Dus een beetje uitleg van wat er net gebeurd
wordt het als syntax goed saying-- eerste, laten we eens kijken naar wat deze afgedrukt.
Zo openen we onze IDE.
Wij gaan hier.
Wij zeggen, Hallo Jason.
En het deed 123, waarvan de inhoud was van de array die we gemaakt boven.
>> Dus duiken in deze foreach lus, hebben we een reeks variabele genaamd
die een matrix van drie getallen.
En dan zijn we foreach doen array num, echo num.
En dat is meer intuïtiever dan een voor lop.
We zeggen, de behandeling van elk van de dingen die in de array als num,
Ik wil dat je me num geven.
En dat is precies wat het doet.
>> PHP is de berekening van die wanneer u foreach scala zeggen,
en je te maken hebt met een array, wat je gaat te willen dan herhalen
de tekens in die array, is de ints in die array,
de elementen die array.
En het is u te laten slaan deze variabelen als num,
en dan gewoon uitgang num meteen in plaats van te zeggen,
Ik heb een variabele genaamd i, en dan wil ik de uitgang strstr [i].
>> En zo dat ons toelaat om leuke dingen te doen.
Net als in principe hebben we niet te maken deze variabelen zoals ik en doe alles
Dit incrementering spul aan het einde.
PHP zorgt dat alles voor je.
>> Dus nu laten we praten over foreach als dit geldt voor onze _GET woordenboek.
Dus we zullen dit snel te reageren op.
Dus hebben we onze _GET array.
We hebben deze variabele.
En het heeft een aantal dingen in.
>> Op dit moment hebben we slechts één variabele doorgegeven aan, die naam.
Maar als we op Enter, nu kunnen we twee variabelen.
We kunnen naam en leeftijd zijn bijvoorbeeld als we willen de leeftijd te krijgen en ook
de naam van een persoon, grappig genoeg.
>> Dus nu _GET gaat om een ​​te zijn woordenboek met twee elementen,
met twee belangrijke waarde paren.
En de eerste key-- ik ga schrijf deze op het bord ook.
We hebben ons woordenboek is _GET.
Sorry, het is een beetje moeilijk te zien.
Maar binnen ons woordenboek hebben we te noemen, die zal iets zijn
dat we krijgen.
En we zullen leeftijd hebben, die ook is gaat om iets dat we krijgen zijn.
En dit is het geheel van ons woordenboek.
>> Dus het heeft twee elementen in.
En omdat foreach loops zijn slim, we
zou kunnen denken, en correct zou kunnen denken dat foreach
kan doorlopen deze woordenboek, uit te printen
de waarden van naam en leeftijd.
>> Dus laten we in het feit dat ook te doen.
Laten we de bouw van een foreach lus.
En we gaan doen voor _GET zo.
En we gaan het volgende doen.
Dus laten we zien wat er gebeurt als we het type enkel woord, en dan zeggen echo woord.
We zijn ook van plan om een ​​nieuwe lijn echo alleen maar om het een beetje duidelijker te maken,
wat is er aan de hand.
>> Dus laten we zien.
Het is niet te geven me geen fouten.
En we zullen deze sluiten.
Op onze website, gaat u doen veel van die in de loop van pset7.
Dus we zeggen dat mijn naam is Sam.
Mijn leeftijd is 45.
Het is niet.
Maar het wordt afgedrukt, zoals verwacht, Sam 45.
>> En dus je zult merken dat wat foreach lus did-- hier
laten we gaan terug naar die dus het is op de board-- krijgen we _GET als woord.
En er waren vier dingen in _GET.
Maar het alleen afgedrukt twee dingen.
foreach, is haar intelligentie zelf, uitgegaan dat wat we wilden
was de waarden niet de sleutels.
>> Maar er is een manier dat we konden printen de sleutels ook, als we wilden.
Als we wilden ook weten wat deze variabelen werden genoemd,
er is een manier dat we kan deze toegang ook.
En de weg naar een soort van dat te doen, zodat we kunnen zeggen, laat echt
splitsen in belangrijke waarde paren.
Dus laten we eens kijken wat er nu gebeurt.
>> Dus we hebben sleutel.
We hebben waarde.
We hebben weer een nieuwe lijn voor de leesbaarheid.
En laten we zien wat er gebeurt als we dit nu doen.
Ik weet niet hoe oud Jason is.
Jason's 15.
Dus we hebben de naam Jason, leeftijd 15.
Dus we waren in staat om toegang te krijgen tot de sleutel en waarde paren van dit woordenboek
gewoon door te zeggen als de belangrijkste punten om waarde.
En dat is een foreach syntactische suiker bit die het mogelijk maakt
je om dingen te openen in het woordenboek.
>> Dus hopelijk dit soort benadrukt de kracht van de foreach lus.
U kunt vrij veel gooien iets dat iterable lijkt,
als iets dat er meerdere heeft elementen zoals een array,
als een dictionary-- die zijn twee primaire dingen die je zult werken met
zowel in het leven en in PSET 7.
Dus je kunt dat spul gooien op het, en het zal uitzoeken
wat u wilt doen.
Het zal zeggen: OK, ik ga om te krijgen deze dingen uit de gegevens die
werd doorgegeven aan mij.
En dat is iets dat je bent zal gebruiken veel in PSET 7.
>> Ik ga snel scroll neer gewoon om te zien waar ik ben op.
Hebben mensen vragen op dit punt?
Vragen bij allen?
Ja?
>> Publiek: Dus met de sleutel en de waarde, je zou kunnen noemen iets anders
en het zou nog steeds werken?
SPEAKER: Oeps.
Wow, ik ben het volledig schrappen van de hele lijn.
Goed gedaan.
Zo een, een.
Sleutel en de waarde is slechts een conventie.
Het is nuttig.
Je zou wat ontwerp te krijgen punten, misschien wat stijl punten
om dat te doen omdat echt vervoert de bedoeling.
Maar we zeggen dat een en yarp.
>> Publiek: Je hoeft niet te iets veranderen in het HTML-bestand
om aan te geven dat?
SPEAKER: Helemaal niet.
Publiek: En het gewoon weet dat vanwege de grotere gelijk than--
SPEAKER: Ja.
PUBLIEK: --that indicator dat that's--
SPEAKER: Ja.
Dat is een foreach syntax, maar ja.
>> Publiek: Er zijn geen types.
Dus wat als je wilde leeftijd slechts een getal?
Is er een manier om dat te doen?
>> SPEAKER: Er zijn manieren om te controleren of variabelen voldoen aan bepaalde types.
Dus PHP vraagt ​​een beetje meer van u omdat er geen types in.
Sommige opzichten vraagt ​​minder.
In sommige opzichten vraagt ​​hij meer.
Want als je gewoon iets in een variabele
je hebt geen idee wat voor soort het is.
Maar als je slim over de variabelen dat je soorten toewijzen en ervoor te zorgen
dat werkt alleen return-- u willen functies om alleen terug
één soort waarde, zodat die u kunt in principe
verwachten dat de variabele die u terug te krijgen van een functie van het type zijn
dat je denkt dat het zal zijn, in principe.
>> Er zijn een aantal methoden waarmee je kunt controleren.
Ik heb ze niet herinneren uit mijn hoofd.
Ik wacht op het naar blauw.
isint?
isstr?
Er zijn methoden ingebouwd in PHP, dat kan
Controleer het type van de variabelen voor u.
Maar als je variabelen toewijst slim, je moet niet
moet dat te veel doen in PSET 7.
Maar deze methoden bestaan.
En dat is iets dat in de taal zelf.
En ik herinner me niet de precieze syntax.
We konden zelfs opzoeken.
Maar de tijd is van de essentie.
hebben Heeft iemand anders nog vragen?
Ja.
>> Publiek: Ik heb nog één.
Dus je hebben het GET methode, maar je hebt de POST-methode niet noemen.
Komen we terug naar die?
>> SPEAKER: Ja, zullen we komen terug naar die.
Dat is precies wat ik zocht op mijn telefoon, die nu in slaap viel,
maar ik zal het vinden.
Gewoon om ervoor te zorgen dat we hit alle PHP noten.
Yep, er is geen debugging-versie.
Ja, we hebben nog een paar dingen die willen we nu doen op dit punt.
>> Dus praten over POST, die u noemde,
het enige verschil tussen GET en POST is
die herinneren wanneer we keken op deze URL en we zagen, oh,
de naam is gelijk aan een en leeftijd gelijk yarp gelijk in de URL er voor ons.
POST is een beetje geheimzinnig met zijn doorgeven van informatie.
>> Dus als je niet wilt dat een gebruiker om te weten, bijvoorbeeld, u
wilde niet dat de gebruikersnaam en het wachtwoord van de persoon
momenteel ingelogd te zijn weergegeven in de URL, wat een redelijk ding
niet willen in de URL, omdat iemand kan zien.
Als ze iemand een link naar een pagina, je willen niet dat hun URL er gepleisterd,
want dat zou mensen in staat stellen om in te loggen alleen met het plakken van een URL in plaats
daadwerkelijk invullen van een formulier.
POST is een beetje geheimzinnig.
>> En de enige dingen die we zullen moeten veranderen
zijn deze methode, verandering van krijgen te plaatsen.
En vervolgens in de HTTP plaats van de toegang tot de array _GET,
we gaan voor toegang tot de array _POST.
>> En we zullen zien dat, indien openen we dit weer naar boven,
Jason langzaam daalt in leeftijd.
Jason naam, leeftijd 14.
Hetzelfde spul duikt.
Maar we gaan naar de URL en deze variabelen zijn er niet.
>> En de manier waarop POST passes-- dus vergeet
hoe om te kijken naar de bron van een pagina.
We gaan naar het netwerk.
We vernieuwen.
En dit is een ander ding dat POST zal je waarschuwingen over te geven.
Je zou een doos, een tekst hebben gezien box als dit in uw browser.
Weet je zeker dat je wil een vorm opnieuw te verzenden?
POST is wat er het verzenden van deze formulieren.
>> Omdat het in principe als u uw verzonden credit card informatie aan iemand,
dat gaat niet te zien zijn in de URL.
Dat gaat een POST-verzoek.
Dus als je de pagina te vernieuwen, het is opnieuw versturen die post aanvraag.
Dus nu willen we het verzenden vormen weer, want het gaat niet
om eventuele dubbele aankopen te creëren.
>> En we zullen zien dat hier beneden, de methode die we gebruiken is POST.
En inderdaad dragen bytes.
Het overgedragen 401 van hen.
Programma's vrij klein.
Maar er is niets dat we kunnen zien de waarden die worden doorgegeven.
De webpagina's zelf kunnen zien, maar wij als gebruikers niet in staat zijn om te zien,
tenzij je een hacker.
Als je een goede hacker, kunt u kijken.
>> Als u weet dat de basis format van de HTML,
de waarden zal maken zich in de pagina's bekend.
U zult kunnen zien.
De waarden zullen er zijn, zijn ze net iets minder voor de hand liggende voor u
om toegang te krijgen, in principe.
>> Hebben we nog meer vragen over GET, POST
before-- wat we gaan nu doen is eigenlijk kijken naar enkele van de code
dat je geeft in PSET 7, praten over hoe het gebruikt enkele van deze concepten
en praten over de dingen die je gaat
te hebben om een ​​beetje te doen in PSET 7.
Nog meer vragen voordat dat?
Meer vragen hebben jullie?
Grote.
>> Oké, laten we eens kijken een beetje op PSET 7,
geen twijfel over wat je bent Alle meest enthousiast over.
Ik bedoel, dit is iets dat David gaat door een klein beetje.
Maar we zullen drie mappen op het hebben bovenkant, en een configuratiebestand.
Dat is voor databases, die we zullen praten over in ongeveer vijf minuten.
Omvat, je nooit nodig hebt om te kijken in deze map
als je niet wilt, maar het is leuk om weet dat er allerlei helpers.
Helpers is als handige functies.
En dan hebben we config, waarin een aantal spullen.
>> Er zijn een aantal functies die CS50 heeft geschreven dat zijn helper en config.
En sommige van de PHP die al verlaat in bestanden
zal een groot deel van de meer soort doen van stompe been werk voor u.
Net als we gaan in het openbaar login.php, dat is wat
verschijnt rechts als je in PSET 7.
We zullen zien dat er dit nodig verklaring.
En dat soort als een scherpe omvatten, hashtag
onder meer als je van een nieuwere generatie.
Maar dit principe zegt dat ik de toegang nodig
alle functies in config.php.
En je kon een vereist voor allerlei andere zaken.
>> config vereist eigenlijk helpers.
Dus wanneer je nodig config, je ook bent
inclusief of die helpers ook.
Dus dat geeft je toegang tot alle coole functies die we gaan gebruiken,
dingen willen maken.
Ik ben eigenlijk van plan om te verlichten dit een beetje naar beneden.
Zodat de functie dan zijn we gaan lopen door
net voordat we overgaan tot een klein SQL bit is de login.php functie, net
omdat het gebruik maakt van enkele van de onderwerpen dat we net over gesproken in PHP.
>> Je ziet de eerste ding is als $ _SERVER.
Dit is een globale variabele die je gaat te maken hebben.
Het is net als _GET en _POST, maar wat server bevat, is dit je kunt laten
weten of het verzoek methode was een GET of POST.
Zoals eerder wat we deden is gewoon in onze code die we schreven,
we waren net het veranderen zijn GET en POST afhankelijk van de HTML heeft.
Er zijn pagina's die kunnen worden benaderd met beide typen verzoeken.
En je zou willen doen verschillende dingen afhankelijk
het soort verzoek, net zoals login doet.
>> Dus je kunt dat verzoek controleren methode door middel van toegang tot toetsen,
door het gebruik van een sleutel en het verkrijgen van de waarde van iets in het woordenboek
_SERVER.
Dus dat is een andere globaal variabele zoals _GET en _POST.
>> Als het te krijgen, willen we maken het login formulier.
Render is een functie die in feite net zet de juiste HTML
en geeft het aantal parameters.
Deze titel is een parameter die is gebruikt bij het weergeven, vreemd genoeg,
de titel van de pagina in vraag, het ding hier,
zeggen of hello in ons vorige voorbeeld.
Nu hebben we een andere zaak.
Anders als het POST, we doen wat andere dingen.
We gebruiken die lege methode.
Het is niet, het is leeg.
En we zagen eerder, PHP heeft een behoorlijke hoeveelheid ingebouwde
in methoden die David will-- als er zijn methoden die nuttig zijn voor u,
zij wordt gewaarschuwd u in de wandeling door dat David
geeft het begin overzicht en ook Zamyla's nuttig bits.
Ze terug iedereen.
We allemaal kunnen verheugen.
verontschuldigingen is een toepasselijke naam functie die net in principe afgedrukt
aantal foutmeldingen, omdat CS50 is heel beleefd.
>> Nu dit is een beetje lastig omdat deze
is waar we de database bent bevragen.
Nu hebben we niet gesproken over databases.
En we gaan in de komende vijf minuten of zo, maximum.
Maar dit is een functie dat CS50 heeft geschreven
een tafel in principe krijg uit een database dat we werken met in PSET 7.
Ik ben echt slecht met mijn nul indexering vandaag.
Maar ja, het is 7.
>> Dus te vragen het gaat om een ​​terugkeer array, in principe is de sleutel beetje.
En omdat deze dingen niet hebben typering, dus rijen een array van arrays.
Want als we denken over een tafel, wat we gaan doen
is, zoals u geleerd in psets net als het spel van 15, toch
waar je moest gebruiken double array, we eigenlijk
hebben scala aan andere arrays maakt een tafel.
En je hebt rijen en kolommen.
En dan kun je hen de toegang, zoals [0] [1], krijgt u de [0] [1].
Basic dat soort dingen.
>> Dus wat we doen hier in deze functie,
we de database vragen Als de gebruiker dat
proberen om in te loggen, zal dat zijn verzonden via de POST-methode.
We zullen zien dat we krijgen de gebruikersnaam van _POST.
Ze hebben gestuurd, de gebruiker of je zal een waarde sturen
door middel van een formulier met POST omdat het is gebruikersnaam en wachtwoord spullen.
We controleren van de gebruikersnaam om te zien, dit is in de tabel?
Want als een gebruiker in te loggen in, dan is hun gebruikersnaam
moeten worden opgeslagen in de tabel gebruikers die er zijn voor deze website.
Dus in principe als de gebruiker in de database
vraag gaat terug die rij, die een array.
>> Maar het lastige deel is dat als zelfs als dubbele array is slechts van één rij,
zelfs als het een één rij array-- alsof je basically-- gekregen
als je een groot ene array hebt dat is die een andere array,
je bent echt te maken met één kolom.
Maar het is nog steeds behandeld zoals een dubbele array.
>> En dit is waar het soms kan krijgen lastig, omdat we hier hebben rijen.
Onze variabele rijen.
En dan zijn we creëren een nieuwe variabele genaamd rij
en het instellen van het gelijk zijn aan de eerste rij van de rijen.
En je zult merken dat reactie zegt dat het de eerste en enige rij.
>> Dus dit is het lastig deel waar nu functies
kan makkelijk arrays terug.
Er is niet mallocs.
U zult niet mallocs zien.
Dus je zult niet zien seg fouten.
Maar functioneert nog steeds passeren rond arrays en gegevens in groepen.
En heb je hoede voor wat te zijn precies uw functies zal terugkeren.
En zelfs als het een column als deze, een query
gaat nog steeds om een ​​dubbele rij terug.
Dus om toegang die column-- of u kan denken van al dit als omgekeerde
omdat we praten over rijen.
Maar om die ene rij, je kunt niet zomaar zeggen rijen.
Ook al is het een rij, moet je do rowsrows [0] om een ​​soort van deze te elimineren
buitenste stukje van de array en hoeft alleen je een rij.
>> Doe wat andere dingen.
Er is een functie genaamd password_verify
dat verifieert de paswoord dat werd gepost.
En dan zien we nog een globale variabele hier _SESSION.
Eigenlijk sessie-id is hoe je bijhouden
van als iemand is ingelogd of niet.
Dus nu met login.php, we het inloggen van een gebruiker.
Dus wat we willen doen is dat we willen zeggen de sessie-ID gelijk is aan de rij
id, die net is logisch, want elke rij wordt een andere id hebt
nummer als deel van de tabel.
We krijgen in SQL in een tweede, dus als een van deze
lijkt een beetje zoals blah, dan zal alles worden opgehelderd.
Maar we gaan naar de id gelijk te stellen het juiste ding, het loggen van de gebruiker.
Excuses als er iets mis gaat.
En dat is logins doel leven als Professor Malan zou zeggen.
>> Dus dat was login.php.
En een groot deel van de PHP-code die u schrijft in PSET 7, zullen ze een beetje te zijn.
Vergeet niet om chmod te de juiste machtigingen.
Er zal een beetje over zijn dat in het begin van de spec.
>> Maar de PHP dat je schrijven gaat worden
dingen doen die vergelijkbaar is met deze.
Je gaat worden de toegang tot een aantal dingen die
worden gegeven aan u in de globale variabelen van PHP dat
hebben te maken met de huidige ingelogde gebruiker, of er
zijn geweest verzoeken verzonden naar dit pagina, verschillende dingen.
En het zal ook mogelijk zijn iteratie door de rijen van dit ding.
>> In een andere functie, vraag terugkeert deze dubbele array.
En als er meer meerdere rijen daarin,
als er zijn-- ja, als er zijn meerdere rijen daarin,
dan zal het een tafel.
En je zou willen herhalen door de rijen van de matrix gebruik
de foreach lus die we beschreven.
>> Dus als je foreach doen op een double array, wat zal de word-- hier
Ik zal eigenlijk schrijven.
Ik zal het snel hier schrijven.
>> Als we een foreach rijen als rij, wat is de aard van de rij?
Weet iemand?
Jij hebt het?
Dus rijen is een dubbele array.
Dus wat is foreach gaat afleiden die wij willen van deze dubbele reeks
als we itereren over het?
We kunnen aannemen dat in principe het gaat om een ​​van beide elementen,
of rijen of kolommen, eigenlijk.
En zo rijen en kolommen we kan behandelen als hetzelfde.
>> Eigenlijk wat de foreach lus gaat te doen, is dat het gaat om rijen terug.
rij gaat van het type rij te zijn, terwijl rijen is een dubbele array.
Dus als je foreach geven een double array, het is
niet van plan te herhalen meer dan één niveau diep.
Die in feite is om te zeggen of er acht cellen in deze table-- 1,2,
3 4, 5, 6, 7, 8-- de foreach lus is niet
gaan door elk van deze cellen.
Wat de foreach lus zal doen werd het zal gaan door middel van deze rij,
geef je deze hele rij.
En dan zal het gaan door die rij.
>> Dus het slechts één niveau diep herhaalt.
Als u een geneste toevoegen foreach loop, dan moet je
kan elke rij terug van de behandeling rijen, doe je foreach rij als element,
laat ons zeggen.
En dan kun je het element echo.
Dus dat is een korte kleine opfriscursus over hoe
u zou kunnen worden met behulp van foreach lussen in de context van de query.
>> Zijn er nog vragen over PHP?
Helemaal niets voordat we overgaan tot het over SQL
en het plezier van de database?
Goed voelen?
Goed voelen.
Prima.
>> Laten we gaan terug naar de PowerPoint, die u waarschijnlijk missen.
SQL, yay.
Mensen die in mijn sectie doorgaans zal weten dat onderverdelingen van acroniemen
zijn altijd alleen de eerste woorden Ik denk dat de wedstrijd die
algorithm-- dat acroniem.
Het is niet een algoritme.
>> Dus SQL is een database.
Het is een taal die werkt met databases.
En alle databases zijn is tafels, althans in de weg
dat SQL vertegenwoordigt hen.
>> Een andere manier om na te denken over databases databases zijn een set sleutels en waarden
principe.
U kunt denken aan een database een woordenboek ook als een tabel.
Eigenlijk is het een manier om te associëren verschillende gegevens met andere data,
vaak door rijen en kolommen.
En dat is de manier dat is SQL beste werkt.
>> Dit is dus een voorbeeld van een tabel.
Ik heb een paar voorbeelden van gekregen mensen in mijn afdeling, die
Ik had geen tijd om te veranderen.
Maar we hebben dingen zoals ID, naam, grootmacht, en woonplaats.
Ik weet niet waar iedereen is uit in mijn afdeling,
dus ik ga gewoon om te veronderstellen iedereen uit New York
Stad want ik heb een hoge statistische kans op juistheid.
>> SQL wordt automatisch nemen zorg van de kolom-ID voor u.
Als u een nieuwe rij in te voegen in een SQL-database,
zal verhogen dat ID-nummer en net
in principe vasthouden zoals vijf namen, grootmacht, woonplaats, wie
op het eind van die tafel.
Dus ID is een kolom die u zult nooit meer zorgen te maken over.
Maar net als in het geval van login.php, wanneer we
kregen de sessie-ID uit een tafel en alleen met behulp van ID,
ID is een manier om uniek te identificeren een element van een database.
>> Dus als we hadden twee Sams, beiden die CS50 onderwezen, en beide van wie
waren uit Milwaukee, die zou nog steeds hebben verschillende ID-nummers
en dus verschillend in te het kader van de tabel.
Dus dit is wat SQL te maken heeft met, het werken met in de back-end.
>> Dit nu zijn de vier commando's die je nodig hebt om te werken met SQL.
En ik gooide ze allemaal op één dia.
Maar we gaan om te gaan door ze individueel.
>> De eerste opdracht is UPDATE die doet wat je zou verwachten.
Stel dat je een aantal gegevens in de tabel die is verouderd.
Net als je houden spoor van de namen van mensen
en leeftijden, als iemand is leeftijd stijgt, dan
je gaat te willen gaan en actualiseren leeftijd van net die persoon.
Voor een voorbeeld dat werkt met onze eerste table--
maak je geen zorgen over het schrijven van al Deze opdrachten tegelijkertijd.
Maar als je hebt-update naar beneden, dat zal goed zijn voor dit deel zijn,
want we gaan ga terug naar de tafel.
>> Dus als we terug naar de tafel, laten we iets dat gebeurde zeggen
was was er een aardbeving of een breuklijn die direct splitsen
door New York City.
En we wilden iedereen actualiseren die in New York woonde.
Ze hadden allemaal om te verhuizen naar Pennsylvania.
Dat is niet een woonplaats.
Ze hadden allemaal om te verhuizen naar New Haven.
Daar gaan we.
Dus iedereen in New York verhuist naar New Haven.
>> En dus dat is iets dat bewerken drie rijen in deze tabel.
Maar in SQL, kunt u doen dat in slechts één verklaring.
Dus gaan we terug naar UPDATE.
Laat me snel weer wist dit board.
Wanneer we praten over updating er
een paar onderdelen van de syntax die sleutel zijn.
Nou, alle van de syntax is de sleutel.
Maar het spul in het groen is optioneel.
De witte zijn vereist, zoals vooraf gedefinieerde namen.
En de lichtblauwe zijn dingen die variëren afhankelijk van de tafel.
Dus dat is wat er aan de hand met het kleurenschema hier, daar.
>> Dus als we willen alleen die rijen te werken van de mensen die in New York woont,
dus wat we zouden doen als we zeiden UPDATE?
Dus tafel is waar we de naam van onze tafel.
Laten we gewoon de naam te zeggen van onze tafel is een tafel.
Dus we willen UPDATE tafel één.
En we willen set-- wat willen we op te zetten?
Wel willen we zeggen, dus column-- PHP behandelt toeren als unieke identifiers.
En dan kolommen de verschillende gebieden
van die elementen van de database.
>> Het eerste element van de databank heeft een naam van Sam, grootmacht van CS50,
en een woonplaats van Milwaukee.
Dus als we de genoemde set, laten we eens kijken de parameters weer die set neemt.
We hebben kolom gelijk is aan de waarde.
Dus we willen sommigen zeggen column-- die herinneren
is een field-- we willen zien veld gelijk is aan iets nieuws.
>> Dus als we net zei bijwerken tabel 1, stellen de naam gelijk Elliot.
Krijg een aantal mensen uit de nieuwe sectie op deze.
Maar als we net deed bijwerken tabel 1 naam in gelijke Elliot, wat zou
de tafel eruit na dat?
Mensen enig idee?
Ja.
>> PUBLIEK: Alles in dat rij zou Elliot geworden.
SPEAKER: Alles in welke rij?
PUBLIEK: In de eerste rij.
SPEAKER: In de eerste rij?
Waarom de eerste rij?
Ik bedoel niet te halen op je.
>> PUBLIEK: Misschien alles in de hele tafel?
SPEAKER: Alles in de hele tafel, ja.
En dat is precies goed because-- I was gewoon je helpen een beetje
er-- omdat we weggelaten de optionele WHERE clausule.
Als u niet de WHERE hebben clausule, wat dit commando zal doen
wordt het zal werken met elke enkele rij in de tabel.
De naam van iedereen zal worden Elliott, in principe,
die Elliot is erg tevreden over.
Of Yanni, een van de twee.
Maar iedereen de naam zal veranderen.
>> Dus de manier waarop we gebruiken de WHERE clause-- en dit geldt voor alle Wheres
die in elk deze verschillende dingen.
Dus je zult merken dat SET heeft column gelijke waarde.
En dat doet WAAR.
Maar deze zijn anders soorten verklaringen.
Dus de kolom gelijk is aan de waarde in SET is in opdracht.
Alsof we zeggen dat we willen naam gelijk aan Elliot stellen.
Maar in de WHERE clausules, Dit zijn uitspraken gelijkheid.
Dus laten we zeggen dat we alleen wilde verandert de naam van de persoon om Elliot
als hun naam was Ryan, laten we zeggen.
>> Dus als we zeggen
>> WAAR naam gelijk Ryan, dat zou met succes enige verandering
de name-- het zou alleen verander de veldnaam in rijen
waar de veldnaam gelijk is aan Ryan.
Dus als we hadden meerdere mensen genaamd Ryan, al hun namen
zou veranderen Elliot.
>> Dit is vergelijkbaar met het voorbeeld van als een breuklijn splitst
New York City en iedereen moet verhuizen naar New Haven, de manier waarop we kunnen
dat doen in een verklaring UPDATE table1 SET hometown = New Haven
waar de woonplaats is gelijk aan New York City.
Dit is de kracht van de UPDATE verklaring.
We kunnen een aantal te selecteren rijen door middel van ware uitspraken
de velden in die rijen.
We kunnen UPDATE table1 set niet zeggen name = Elliot WAAR rij = 1,
behalve dat we kunnen als we zeggen: ID = 1.
>> Dus we gaan worden werken met gelijkheid
van de velden, de gelijkheid van de kolommen.
Maar het gebruik van het ID-veld is een manier Selecteer afzonderlijke rijen in het bijzonder,
omdat de ID-veld is een unieke identifier in een SQL-database.
Dus als het updaten van een rij, ID is gelijk aan 1.
Updaten rij twee, net veranderen ID-nummer.
Maar de kracht van de WAAR verklaring is dat we
dingen kunnen bijwerken op basis van wat hun actuele waarden van bepaalde dingen zijn.
Ja Elliot?
>> Publiek: En wat als je wilt to-- nogmaals, dit is een andere vraag.
Maar mijn eerste vraag was, Waar is dit gebeurt?
Waar ga ik het updaten van deze?
Is dit in een PHP-code?
>> SPEAKER: Waar u op de hoogte, ja.
We gaan om te praten over waar alles
gebeurt soort van zodra we gaan door alle opdrachten.
Maar wat je nodig hebt om weet is nu in principe
dat uw SQL-database bestaat als iets
worden benaderd door de query functie die CS50 bepaalt.
Dus als je de query functie te gebruiken, U hebt toegang tot deze tabel.
>> Dus je zal het verzenden van deze commando's om uw tafel in PHP-bestanden
via queryfunctie.
U kunt ook spelen rond met uw tafel direct.
En dat is de beste manier om testen van dit soort opdrachten.
En we gaan door precies hoe om dat te doen in slechts een klein beetje.
>> Dus dat is UPDATE commando.
En de rest van de commando's gaan soort gelijk zijn,
werken aan soortgelijke dingen.
Het inzetstuk in is waarschijnlijk de anders UPDATE.
Ik ga er laat dat voor net een beetje en werken hier.
Zo plaatst, zult u zien die tafel is nog steeds hetzelfde.
Je wilt invoegen in.
De kapitalisatie, SQL is hoofdlettergevoelig.
Zodat je niet hoeft te kapitaliseren deze dingen.
Volgens afspraak, de woorden in het wit worden geactiveerd.
Maar ik heb ook een kleurcode hen.
De enige reden dat je kapitaliseren die als je ze te typen
is gewoon om te benadrukken dat deze constanten zijn.
En dus kan je ofwel kijken de kapitalisatie of het feit
dat ik ze anders heb gekleurd.
>> Dus we hebben INSERT INTO gekregen, laten we het opnieuw doen table1.
Dit is allemaal op een lijn.
Ik ben gewoon te scheiden door de verschillende verklaringen.
Dus maak je geen zorgen over het feit dat table1 maakte het op de tweede lijn.
>> Dus we willen INSERT IN table1 sommige waarden.
En je zult merken de optionele bit, die ik in een tweede aan krijgt.
Dus we hebben WAARDEN.
>> Dus laten we zeggen dat we willen Andi toevoegen naar onze tafel, want we missen Andi.
Andi is ziek.
Dus laten we toe Andi naar onze tafel.
Vergeet niet dat de ID-nummer wordt automatisch bijgewerkt.
Dus de enige velden die we zorgen te maken over
zijn naam, grootmacht, en woonplaats.
>> En dus is de manier waarop we dat doen, kijken naar onze syntax, is we hebben
net een haakjes, met komma gescheiden waarden, die elk
is een waarde.
Dus als we wilden Andi voegen in onze tafel, alles wat we moeten doen is het juiste Andi.
Wat is Andi's grootmacht, mensen in de sectie Andi's?
Ze willen vlucht, of willen snelheid, of zoiets.
Wat hebben we al daar?
We hebben CS50, vlucht, snelheid en kracht.
>> Publiek: Tijdreizen.
>> SPEAKER: Tijdreizen, geweldig.
Dus we hebben Andi, tijd gekregen reizen, en haar woonplaats.
Dat is een heel goede vraag.
New York City, tenzij iemand weet.
Iedereen is van New York is de les om mee te nemen vanaf nu.
>> Dus deze verklaring zou invoegen, als een vijfde rij,
met de supermacht tijdreizen en een woonplaats van New York City.
Maar het optioneel veld is in feite een manier
precies welke kolommen opgeven je dingen wilt in te voegen.
>> De manier waarop wij het doen bent nu, Andi, tijdreizen, New York City,
gaat in de exacte volgorde van onze table-- naam, grootmacht, woonplaats.
En als je wilde doen iets anders dan dat,
als zeggen dat je niet wist iemands supermacht,
zoals hoe ik wist niet Andi's grootmacht in het begin.
Dus alles wat ik wist dat haar was benoemen en haar geboortestad.
Wat ik kon doen is ik kon doen-- Ik zal dit snel wissen.
>> Ik wil alleen de kolommen werken.
En dit is waar de optionele kolom lijst in het spel komt.
Ik wil alleen de naam en woonplaats te werken.
En dan zal ik zeggen WAARDEN.
Ik doe Andi en New York City.
>> Als ik de lijst van de kolommen had weggelaten en juist deze twee dingen gedaan,
waar zou New York zijn gegaan?
Welke kolom zou New York Stad zijn geplaatst?
Mensen enig idee?
Grootmacht, precies.
>> Dus dit zal gewoon in orde.
En als het einde van het bereiken lijst, het zal gewoon stoppen met het vullen van de dingen in.
En de waarden die het zal blijven in alle kolommen zullen gewoon NULL.
Dus omdat we gespecificeerd naam en woonplaats,
we gaan ID 5 hebben, naam Andi, grootmacht NULL.
Dus grootmacht is een niet-geïnitialiseerde waarde.
Je zal niet per se de Valgrind dezelfde fouten als u probeert
en toegang tot het.
Alles wordt netjes op nul worden gezet out, omdat NULL is een waarde in SQL.
Dat is een constante.
En dan woonplaats zal New York City.
Dus dat is het inzetstuk in opdracht.
Voordat we verder gaan, is er twee commando.
Hebben mensen vragen over UPDATE, over plaatst, over SQL
meestal voordat we verhuizen op onze laatste stukjes?
Mensen voelen zich goed, geweldig.
Hou ervan.
Dus laten we praten over SELECT.
Going sloot UPDATE hier.
>> SELECT en zal zeer vergelijkbaar zijn.
Het doel van SELECT, SELECT doel in het leven
is om u een bos van kolommen geven die voldoen aan bepaalde voorwaarden.
En als ik zeg voldoen bepaalde voorwaarden
je geest zou onmiddellijk Ga terug naar die WHERE
die kwam in de UPDATE.
En dat clausule precies daar in SELECT.
>> Als we niet zet de WHERE clausule en we zeggen: SELECT naam,
hometown-- gespeld dat een beetje wrong-- naam, woonplaats FROM table1.
Als we zeggen alleen dat, wat SELECT gaat ons is dat het
gaan ons een te geven double-- een tafel, in plaats van.
Een dubbele rij als we na te denken over in PHP zintuigen.
Maar het is gewoon om ons een te geven dubbele reeks van twee columns-- naam,
en woonplaats.
En het zal ID negeren.
En het zal supermacht negeren.
En het zal gewoon ons elke geven enkele rij van die tabel.
Dus als we gewoon gestoken Andi, zullen we moeten Andi.
En we moeten de oorspronkelijke vier.
Als ze zijn bijgewerkt, dat zal uiting, et cetera, et cetera.
>> Dus dit is omdat we maakte geen gebruik van de WHERE-component.
Maar we kunnen het gebruiken in exact dezelfde manier we het gebruikt in UPDATE.
Als we willen alleen een tabel met de namen en superkrachten van mensen
in New York, kunnen we een instructie uit te voeren zoals SELECT naam, superpower--
Ik ga gewoon dat-- vertrekken table1 WHERE woonplaats = New York City.
>> Dus dit gaat te laten zien dat je kunt krijg totaal verschillende kolommen,
en dan zet kolommen die u niet zelfs om terug in de WHERE-component.
We niet eens willen dat de geboorteplaats van iedereen.
Maar we willen dat de naam en het de supermacht van de mensen
wiens woonplaats is New York City.
Dus dat is iets wat we kan doen met de WHERE
clausule is dat we kunnen omgaan met kolommen dat we niet per se willen terug.
Op dezelfde manier in UPDATE, kunnen we omgaan met kolommen dat we niet per se
wilt bijwerken.
We kunnen de stad iedereen actualiseren die naam is Sam, bijvoorbeeld.
We kunnen de stad te werken iedereen wiens ID nummer 2.
Dus gewoon het actualiseren van de stad van de tweede rij
waar we niet te maken hebben met noodzakelijk de gemeenschappelijke vraag.
>> En DELETE is, zoals je zou verwachten, DELETE FROM table1.
En dan hebben we nog een WHERE.
Dus we kunnen zeggen WHERE ID = 1.
Verwijder de eerste rij.
En DELETE zal altijd een rij te verwijderen, of het zal een aantal aantal rijen te verwijderen.
DELETE FROM tabel WHERE hometown = New York City
zal iedereen in New York te schrappen.
Dat is als er een plotselinge tragische pest
en je wilde alleen maar om te verwijderen iedereen van de tafel die
woonde in een bepaalde stad die werd getroffen door de pest.
Mogen zij rusten in vrede.
>> Dit zijn de vier SQL-commando's die je nodig hebt om te gebruiken.
Je zou niet eens nodig gebruiken ze allemaal.
Maar dit zijn de vier dat CS50 verwacht u
om comfortabel met het gaan in zijn zowel quiz 1 en ook pset7 en pset8.
>> Er is weer gewoon die tafel.
In deze, Roy's supermacht heeft bijgewerkt om laserstralen, die
is een voorbeeld dat ik niet heb gebruikt.
Ik weet niet welke Roy geeft de voorkeur, maar de kracht.
Roy heeft een supermacht van kracht.
Katherine heeft het niet gehaald vandaag.
Dat is jammer.
Maar ze heeft super snelheid.
>> Nou dat was PHP.
Voordat we praten over MVC, doet iedereen vragen over PHP hebben?
Nu SQL of PHP als je opeens komen met een vraag over PHP?
Grote.
Oké, we zijn allemaal stel.
>> Dus praten een beetje over het model view controllers,
Laten we terug gaan naar een aantal van het spul in pset7.
Dus welk model view controller is-- Ik ben niet
ga mijn wijzigingen op te slaan om in te loggen omdat ik volledig afgeslacht het.
Maar in principe hebben we twee aparte dingen aan de hand.
We hebben een publiek directory die bevat
de code die zal worden uitgevoerd en de webpagina's die worden bezocht.
En we hebben ook dit uitzicht directory.
En uitzicht bevat sjablonen.
>> Dit is wat de functie render-- zagen we het maken
functie in een bos van de PHP-code dat CS50 heeft al geschreven voor u,
dat draait in bepaalde parameters.
Wat die code doet wordt het gaat in opvattingen,
die sets van zijn als prewritten HTML-code,
en het inbrengen van waarden in bepaalde plaatsen.
Zo wanneer u ga in CS50 Financiën,
dezelfde koptekst is op elke pagina.
Hetzelfde voettekst op elke pagina.
Dit is omdat de manier die maken de werken het zal
automatisch patch in die header en viewer die u kunt vinden in de standpunten.
>> We eigenlijk kunnen gaan in de header, en Kijk, het is een HTML-bestand met een hoofd.
Het heeft een aantal stylesheets.
U hoeft niet te kijken naar CSS voor pset7 als je niet wilt.
Maar u kunt wijzigen ze als je wilt, maken
uw Financiën ziet er een beetje anders.
>> Het heeft een aantal PHP de header een beetje om te zien
als er een andere titel het moet in deze header te zetten.
Maar slechts enkele andere scripts, en links, en andere dingen.
Kopstations, lichaam begint, en oops, We hebben deze rare kleine einde beetje.
En er is een div, net als een vormloze soort element
dat heeft een idee van het midden.
>> En toen we zien voettekst We hebben het einde van een div.
We hebben een bodem, die waarbij de voettekst is.
Einde van div, einde van het lichaam, het einde van de HTML.
>> Dus wat maken is doen is te maken is een soort
van oplappen header, een verschillende PHP-bestand dat
de werkelijke dingen bevatten die je zult zien, als uw tafel van de voorraden
als je het kopen of verkopen van aandelen.
En dan zal het toe te voegen in de voettekst.
En het model view controller idee is dat we
willen scheiden hoe dingen zien van de code.
Het is willen we de frontend scheiden en de backend, waar de frontend is
het spul dat de gebruiker ziet, de leuke visuals-- HTML, CSS, dat soort dingen,
afbeeldingen, et cetera.
En de backend is PHP.
Dit is de code die je schrijft.
Dit is waar de code dat is het doen van feitelijke operaties.
Dit is wanneer u toevoegt een voorraad aan uw tafel,
als je het kopen en selling, dat is backend.
>> En we kunnen, als je zag, waaronder PHP direct in HTML.
Dus wat we kunnen doen voor deze opdracht is net
een HTML-bestand voor elke pagina, zoals login.
En dan op die pagina, net had een enorme blok van PHP-code,
met inbegrip van alle van de code die die pagina specifiek nodig zou hebben.
En dan konden we hebben gedaan voor portfolio.
We kunnen allemaal van de aankoop hebben gedaan en levering in de afzonderlijke pagina's.
>> Maar omdat we renderen los vanwaar
we schrijven de backend code, kunnen we gemakkelijk
veranderen hoe dingen eruit zonder het veranderen van elk bestand.
Wij doen dingen als voeg nieuwe div onderaan
van-- Hallo Ik wijzigde de voettekst.
U kunt gewoon dingen doen als dat.
Maar ook kunt u veranderen het gehele visuele layout
zonder dat wat gaan in de backend.
En u kunt het veranderen hele backend en nog steeds
hebben het er net als voorheen.
Deze
>> Is het idee van het model view controller.
En het is eigenlijk een opgelegde paradigma in sommige programmeertalen
je zou willen gebruiken voor de laatste projecten.
Als je iOS ontwikkeling doen, ze hebben bekeken,
dat is wat je ziet op de iPhone en dan backend als als een aparte zaak.
>> U kunt denken aan een beetje.
Er is veel binaries in informatica, dat is grappig,
want alles is in binaire.
Ik was niet van plan dat.
Dat was een onbedoelde woordspeling.
Ja, woordspeling niet bedoeld.
>> Maar zoals .h files en .c bestanden, is er veel scheiden van dingen die we
misschien niet nodig.
Dus we kunnen alleen de h bestanden te bewerken of iemand kan gewoon zien een .h bestand en weten
exact functies die in de .c bestand zonder per se weten
de uitvoering ervan.
Dit idee van afscheidingscomponenten die van elkaar afhankelijk
maar kan soort van elkaar toegang via verschillende kanalen, passeren
variabelen, net omvatten verklaringen, dingen
als dat, dit principe helpt om applicaties te maken
die gemakkelijker kunnen worden bewerkt door meerdere mensen,
kan gemakkelijker worden veranderd of aangepast op een grote schaal,
en zijn gemakkelijker te debuggen in een heleboel manieren.
>> Erg snel, ik heb een paar tips voor pset7,
die ik volledig scherm, zodat je niet zult maken gewoon kijken naar the-- tip tip Tippee.
Er zijn niet veel tips.
>> Maar ik noemde PHP is moeilijk te debuggen.
Dubbele en driedubbele controleren.
Als uw code is gewoon niet weergegeven op de pagina,
is het waarschijnlijk een PHP fout, sorry.
>> Je hoeft nooit te kijken naar CSS als je niet wilt.
Maar als je eenmaal klaar bent, kan het een leuk leuk ding om gewoon te gaan
en knoeien met de CSS parameters.
CSS en HTML is een voorbeeld van een model view controller stijl ding ook, toch?
Je kon stijl tags binnenkant van HTML-elementen.
Maar als je een soort van uitbesteden van hen om CSS,
ze makkelijker te bewerken en te spelen rond met, en plezier hebben met.
>> Behandel CS50 helper functioneert als zwarte dozen.
U hoeft niet te weten precies wat render doet,
maar geloof dat het altijd het juiste ding afhankelijk van wat u doorgeven,
dit soort dingen.
En ik zou aanraden kijken Davids walkthrough,
gaan door alle stuff, niet alleen de todos,
maar je echt kan behandelen deze als zwarte dozen.
Niet in deze te gaan functies zoekt insecten.
>> En zijn blij met de terugkeer van onze overlord Zamyla.
Grote.
>> Zijn er nog vragen voordat finale we soort stuiteren voor de dag?
Ben ik nog leef?
Grote.
Hi livestream mensen.
Grote.
Zijn er meer vragen?
Nee?
>> En dan denk ik dat we goed om te gaan voor vandaag.
Ik blijf een beetje rond daarna als mensen hadden vragen
ze waren bang om te vragen over de beek.
Maar anders, hebben een goede dag.