[Powered by Google Translate] [Ġimgħa 8, Ikompli]
[David J. Malan] [Università ta 'Harvard]
[Dan huwa CS50.] [CS50.TV]
>> Dan huwa CS50, għalhekk dan huwa l-aħħar ta 'Ġimgħa 8 hawn.
Aħna ta 'kors kellhom daqsxejn ta' uragan aktar kmieni din il-ġimgħa,
hekk dritt issa huwa verament biss int u lili f'din sala lecture,
iżda llum aħna nkomplu konverżazzjoni tagħna dwar PHP
u dwar l-ipprogrammar tal-web aktar ġenerali, u aħna wkoll jintroduċu l-idea
ta 'databases, partikolarment wieħed imsejjaħ MySQL, li huwa pjuttost popolari dawn il-jiem,
fil-parti kbira minħabba l-modularità tagħha kif ukoll minħabba tagħha huwa liberu u open source.
>> Iżda l-ewwel, ħarsa lejn fejn aħna jitħalla 'off-aħħar darba.
Ifakkar li konna tħares lejn l-eżempji diversi IMs Frosh,
u dan kien il-forma hideous li I ħarāet bil + snin madwar 15 ilu
sabiex ikollhom l-istudenti fuq il-kampus reġistru għall-isports Freshman intramurali
mingħajr ma attwalment jkollhom trek aktar madwar l-tarzna biex Wigglesworth
li tiżżerżaq biċċa fiżiku ta 'karti minn taħt bieb xi Procter s.
Minflok aħna mċaqalqa online kollox, iżda biex tagħmel dan aħna meħtieġa biex jagħmlu użu
ta 'ftit teknoloġiji, għalhekk wieħed, għandna bżonn HTML, lingwa markup Portugues,
li għal darb'oħra huwa dan tal-lingwa markup li magħhom inti tagħmel paġni web strutturalment.
>> Bl-użu daqsxejn ta 'CSS dawn il-ġranet, cascading folji stil,
fejn nużaw stylizations tal-paġna web bl-użu ta sintassi kemmxejn differenti,
billi l-HTML kienet kollha dwar l-istruttura tiegħu.
Għandna bżonn ukoll li jintroduċu lingwa ta 'programmar web.
F'dan il-każ, aħna ser tuża PHP, PHP u se jħallina naħsdu
Kontenut output dinamikament kif ukoll tagħmel affarijiet programmatiċi simili
jibgħat emails, kif kien il-każ fuq in-nota aħna xellug ġimgħa li għaddiet.
>> Ifakkar li l-kodiċi għal dan kienet fi 2 partijiet.
Wieħed, kellna froshims3.php,
u dan kien ġeneralment markup ma 'forma HTML ġewwa ta' dan,
ftit żgħira ta 'CSS up hawn fl-attributi istil
sabiex il-formola innifsu tkun iċċentrata fuq il-paġna, iżda lil hinn minn dik
kellna xi inputs forma rappreżentattivi, qasam test, a Checkbox,
xi radju buttuni, menu tagħżel, u buttuna issottometti.
U permezz ta 'din il-formola, aħna sottomessi għal fajl li kien apparentament imsejħa register3.php,
li fih innifsu ħares ftit xi ħaġa bħal din.
Issa, ħafna mill-kodiċi fl-register3.php, lura, kienet kollha dwar email.
Hija għamlet xi ftit ta 'validazzjoni tal-formola li ġiet sottomessa biex tiżgura
li l-oqsma kienu attwalment sakemm kienu mistennija.
Imbagħad aħna msejħa xi funzjonijiet PHP jużaw ftit sintassi ġdida,
anki jekk huwa mislufa mill C.
>> Dan operatur vleġġa jippermetti li jagħmlu użu ta 'xi ħaġa imsejħa oġġett orjentati lejn programmazzjoni.
Aħna mhux se tidħol fis li fi kwalunkwe dettall hawnhekk, imma jafu għal issa
huwa mod ta 'li jkollhom funzjonijiet assoċjati ma' oġġetti,
li huma tip speċjali ta 'struttura, kif rajna fil C.
Iżda għal issa, ħu fuq fidi li dan huwa l-sintassi korretta għall-użu
meta jintuża librerija bħal din il-librerija PHPMailer.
U allura l-aħħar ta 'dan il-fajl kellna dinamikament iġġenerat email
li ltqajna mibgħuta lill-kont jharvard@cs50.net tiegħi
mill-kont jharvard@cs50.net tiegħi,
u aħna infurmat lill-utent b'dan li kienu ġew reġistrati għal dan l-isport.
Dan huwa pretty ħafna dak is-sit IMs Frosh ma dawk kollha snin ilu
meta I implimentata din, mogħtija, b'lingwa differenti,
iżda turi li inti forsi l-qawwa li għandek
Issa li inti tista 'tesprimi lilek innifsek mhux biss programmatically
f'livell baxx b'lingwa bħal C iżda fuq livell ħafna ogħla
ma 'dawn l-applikazzjonijiet fid-dinja reali ħafna bħall-email li attwalment isolvu
xi problemi fid-dinja reali.
>> Issa, naturalment, anki jekk I jużaw din l-iskrittura biex jiġġeneraw xi
emails dinamiku minn jharvard@cs50.net, li huwa tabilħaqq kont
li jien jkollhom aċċess għal, do jkun pjuttost attenta li tibgħat
mail biss mill-kontijiet li huma attwalment tiegħek,
lest affarijiet nikseb inti fil-daqsxejn ta 'ilma sħun fil-ħajja.
Ma 'dak imsemmi, ejja issa tranżizzjoni isolvi problema differenti għal kollox,
dak ta 'stati jżommu.
Issa, dak ma dan fil-fatt jfisser?
HTTP, dan il-protokoll ta 'trasferiment Portugues,
huwa attwalment protokoll mingħajr stat, u dak li dan ifisser huwa li
meta inti pull up xi ħaġa simili Google.com u mbagħad hit jidħol
normalment browser tiegħek għandu xi tip ta 'ikona għażil li mbagħad
jwassal għal xi paġna tal-web qed jitniżżel,
u mbagħad li icon żgħir jieqaf għażil, u li fil-fatt tissuġġerixxi
li HTTP lestiet xi tip ta 'konnessjoni għall-server u li hu.
HTTP hija mingħajr Stat fis-sens li hija ma ssostnix
konnessjoni persistenti lis-server fil-Skype istess mod ma
jew Gchat ma għaliex ma HTTP
is-suppożizzjoni hi li ladarba inti ħadthom fetched web page thats it.
>> Issa, fir-realtà dawn il-jiem fuq siti bħal Facebook u Google Maps
u Twitter u simili hemm dinamiżmu ħafna aktar fejn
anki wara li icon jieqaf għażil inti tista 'fil-fatt tikseb aktar aġġornamenti
mis-server, tweets aktar, aktar aġġornamenti istatus fuq Facebook u simili.
Iżda anke li qed permezz ta 'teknika li aħna ser nitkellmu dwar fil-ġimgħa jew tnejn
magħrufa bħala Ajax jużaw lingwa imsejjaħ JavaScript,
iżda fl-aħħar tal-ġurnata, HTTP għadu mingħajr stat.
And yet, jekk inti tixtieq li b'xi mod tiftakar affarijiet dwar l-utent
anki wara li ħadthom skonnettjat minn server tiegħek
PHP ma jaffordjaw inti mezz ta 'kif isir dan
għaliex, kif rajna aħħar darba, PHP għandha numru ta 'superglobals,
u superglobal hija, għal darb'oħra, varjabbli globali speċjali
li l-mogħtija lilek mill-web server u mill PHP innifsu.
>> Inti ma għandekx tagħmel xejn biex tqiegħed il-valuri fiha,
u fost l-superglobals aħna stajt tidher s'issa huma jiksbu u post,
li huwa fejn oqsma forma jitqiegħdu awtomatikament għalik,
kif ukoll bħala koppja ta 'oħrajn li aħna ma bbenefikawx s'issa.
Ġewwa ta '$ _SERVER huma xi fatturi varjabbli speċjali relatati mal-server innifsu.
X'hemm l-indirizz IP, liema protokoll, HTTP HTTPS jew ma tuża,
liema metodu talba ma tuża u simili, sabiex hemm xi interessanti,
dettalji mmerraq dwar il-server, u fil-fatt, l-utent fil hemm ukoll.
Hemm $ _cookie, li huwa fejn dawn l-affarijiet imsejħa cookies huma maħżuna.
Aħna mhux se jqattgħu ħin fuq cookies infushom llum,
iżda jaf għal issa li cookie hija biss biċċa żgħira ta 'informazzjoni
li web server tista 'pjanti fuq web browser
u min-naħa RAM tagħha jew hard drive tal-kompjuter tagħha ta
biex jaħżnu informazzjoni dwar l-utent, per eżempju, isem l-utent tagħhom
sabiex dawn ma jkollhom tip li kull darba li login jew xi
numru uniku jew identifikatur għall-utent
sabiex inti ma għandekx jiffittaw bis bl-istess tipi ta 'mistoqsijiet dwar
preferenzi fil-futur, iżda ħafna ta 'interess
dritt issa huwa $ _session.
>> Dan superglobal, li, bħall-oħrajn, hija mogħtija lilek awtomatikament mill PHP
meta int bil-miktub PHP bbażati fuq websajts
jista 'jaħżen xi ħaġa li trid, kordi, interi,
punti f'wiċċ l-ilma, valuri, arrays, oġġetti,
verament xi ħaġa li trid, u li jippermettilek li jaħżnu b'mod
li anki jekk l-utent żjarat inti issa u mbagħad
taqa 'lura minuta minn issa jew 5 minuti minn issa għaliex
huma jieħdu l-ħin tagħhom qabel ma tikklikkja xi rabta oħra
PHP se tiżgura li tkun xi tkun inti tpoġġi fil dak superglobal sessjoni
minuti minuta jew 5 ilu xorta se jkun hemm meta l-prospetti utent.
U taħt il-barnuża dan superglobal tiġi implimentata permezz ta '
dawk l-affarijiet imsejħa cookies, iżda għal issa, huwa biss astrazzjoni
fejn huwa tip ta 'l-ekwivalenti programmatiku ta' shopping cart.
Tkun xi tkun inti, il-programmer, jistabbilixxu li l-
firxa assoċjattiva superglobal se jkun hemm xi numru ta 'minuti wara
sakemm inti iħassarha jew sakemm l-utent quits browser tiegħu jew tagħha għal kollox.
>> Ejja tagħti ħarsa lejn eżempju ta 'kif dan il-ħaġa hija attwalment użati.
Fil counter.php fost biċċiet tal-lum ta 'kodiċi
aħna għandna l-linja li ġejja.
Fil-bidu ta 'dan il-fajl għandna mazz ta' kummenti blu, li huma uninteresting għal issa.
Iżda fil-linja 13 għandna linja ġdida,
session_start, u li attwalment ma eżattament dak li jgħid.
Huwa jibda sessjonijiet.
Dan jippermetti li inti tuża dik kbar superglobal $ _session, u huwa sempliċi bħal dik.
Issa, jekk aħna tipproċedi biex tħares lejn linja 16, ejja jippruvaw ċifra barra dak din il-paġna web huwa se jagħmlu.
Jekk (isset ($ _SESSION ["counter"]) imbagħad imorru quddiem
u jaħżen fil-varjabbli counter, kontro zghar,
$ _SESSION ["Counter"].
Dan jidher li tiddikjara varjabbli lokali imsejjaħ counter
minn ġewwa illi huwa tqegħid kopja ta 'dak kollu li huwa ġewwa tal-superglobal
imsejjaħ sessjoni fil-post "counter".
Inkella, apparentement, din il-kontro ftit varjabbli lokali, huwa initialized għal 0.
>> Imma mbagħad ftit linji aktar tard fil 26 notifika dik il-kopja s-sessjoni ta 'kontro-
ewlenin tagħha, għandha assenjata valur il-ġdid li huwa valur attwali tagħha flimkien ma '1.
Fil-qosor, dan il-fajl jidher li l-aġġornament
kontro li l-maħżuna ġewwa tal-superglobal sessjoni
billi inkrementazzjoni sa l-1, iżda l-ewwel żżomm kopja tal-valur ta 'qabel
billi maħżuna fil-varjabbli lokali imsejjaħ $ counter,
u mbagħad stabbiliti hawn ejja ara dak li jibqa.
Jirriżulta huwa pjuttost ħafna biss HTML.
Fil-qiegħ ta 'din il-paġna naraw fil-linja 37 li Żort dan is-sit
Numru counter ta 'drabi, b'hekk m'hemm l-koppja ta' karatteristiċi interessanti hawnhekk.
Wieħed, dan huwa manifestament varjabbli, imma mhuwiex biżżejjed li biss jitqiegħed
$ Kontro fil-korp ta 'HTML tiegħek minħabba l-kors
jekk huwa biss hemm fost PHP HTML tiegħek se tassumi li jinsab biss HTML.
Inti litteralment tixtieq $ counter li għandhom jiġu stampati fuq l-iskrin.
>> Iżda minflok billi twaqqa fil-modalità PHP
ma 'din il-biċċa ta' sintassi nistgħu dinamikament daħħal valur hawn
simili ħafna fl-ispirtu għal dak li għamilna aħħar darba ma
ddaħħal valuri fil-kordi.
Fil-fatt, din hija biss notazzjoni shorthand biex tgħid xi ħaġa bħal din litteralment,
print ($ counter) jew saħansitra xi ħaġa simili printf (% s, kontro),
jew saħansitra, kif inti tista raw online jew fil-kotba,
hemm funzjoni fil-PHP eku imsejħa
li ma l-istess ħaġa, u kollha ta 'dawn huma modi biss itwal xejn b'xejn
ta 'tgħid <? =.
F'dan il-każ waħda inti m'għandekx bżonn biex
l-PHP kelma wara l-kwistjoni mark.
Dan huwa notazzjoni shorthand għal, għal darb'oħra, dak li aħna biss raw mument ilu
li huwa b'repetizzjoni xi valur.
>> Ejja naraw dak li l-riżultat aħħari ta 'dan fil-fatt hu.
Let me go fuq fil-fajl counter.php tagħna,
u aħna ser tara li David biss għamel żball bil-logħob bil-kodiċi hemmhekk.
Ejja ħa mmorru jiffissaw xi hu invitat up,
u l-iżball jidher li jkun hemm, marret, fuq il-linja 37.
Skond il-quċċata ta 'din il-paġna Żort dan is-sit 0 darbiet.
Ukoll, ejja imorru quddiem issa, u fil-quċċata tal-browser ikklikkja fuq il-
rikarigu ikona, u I ikklikkja rikarigu,
u issa stajt żar is-sit 1 ħin, 2, 3, 4, 5, 6, 7, 8.
U fil-fatt, jekk inħarsu lejn is-sors ta 'din il-paġna tas-source code attwali qed tinbidel,
u avviż-nuqqas totali ta 'kwalunkwe PHP, u dan għaliex
Kodiċi PHP huwa evalwat jew interpretata server sekondarji,
u sabiex dan ifisser li l-produzzjoni ta 'l-iskrittura PHP huwa dak li finalment mibgħuta lill-browser,
li f'dan il-każ hija xi HTML prima u xi test prima.
X'qed jiġri hawn?
>> Ukoll, mal-linji relattivament ftit tal-kodiċi I am kapaċi li jaħżen
persistenti matul il-kors ta 'diversi sekondi, jew jekk aħna stenniet twil biżżejjed,
minuti, saħansitra siegħa, xi valur b'mod li jagħmel HTTP
jidher bħala għalkemm stateful konna tinżamm
F'dan ir-rigward lis-server, u huwa biss ftakar dak I told aħħar darba,
iżda fir-realtà hemm mazz sħiħ ta 'kumplessità għaddej minn taħt il-barnuża
jinvolvu cookies li l-li jippermettu PHP li tagħti me dan illużjoni
ta 'dan shopping cart simili karatteristika.
Għal issa, eżempju wieħed trivjali fejn aħna qed biss ħażna numru sħiħ,
iżda li karatteristika se terga 'lura tkun ta' valur kbir
meta nibdew nitkellmu dwar proġetti aktar kumplessi,
fosthom il-problema stabbilita 7.
Din hija problema ħafna aħħar tiegħek stabbiliti fil-CS50.
Naf, huwa hekk imdejjaq, imma dak li inti ser issib hija li aħna qed tmur biex jikkonkludu
din il-parti tas-semestru mill-fatt transizzjonijiet
mill-kuntest ta 'C ċertament għall-kuntest tal-PHP
iżda waqt li jużaw xi wħud mill-prinċipji fundamentali ħafna istess
konna tkellimna dwar għal xi żmien.
>> L-għan ma pset 7 huwa li timplimenta CS50 Finanzi,
li hija l-verżjoni tiegħek ta 'Yahoo Finanzi jew Google Finanzi
jew anke Etrade.com fejn għandek il-ħila biex
tfittex up prezzijiet istokk għall simboli mogħtija, iżda anke aktar minn dak
għandek il-ħila li "jixtru" u "biegħ" ħażniet
li huma nnegozjati fuq boroż varji għaliex kif din il-paġna home
hawn jissuġġerixxi, li huwa verament il-punt sa fejn konna beda
is-sett problema għalik, inti għandek forma login li titlob għall-user name u password.
Hija għandha buttuna issottometti, iżda wara dan, kif aħna ser eventwalment tara,
m'hemm xejn verament għaddejjin taħt il-barnuża iżda għaliex
jibqa għalik biex jimplimentaw il-ħila biex jirreġistra utenti ġodda,
l-abbiltà li jixtru ħażniet, ibigħu l-istokk,
li fil-fatt tfittex up prezzijiet istokk kurrenti.
>> U fil-fatt, dan se jkun dinja reali kemm jista 'jkun għaliex għamilna
jinkludu daqsxejn ta 'kodiċi li inti se tippermetti b'funzjoni waħda
li jsaqsu Yahoo Finanzi, li wonderfully jagħmel data b'xejn disponibbli
biex wieħed ifittex l-prezzijiet istokk ibbażati fuq il-simbolu istokk jew simbolu ticker,
u inti tikseb lura l-prezz istokk kurrenti tal-ġurnata.
Id-data li int attwalment tara f'dan pset partikolari se tkun
dwar kif fid-dinja reali kif tista 'tikseb hekk li int attwalment interfacing
mal-ħażniet dinjija reali, il-prezzijiet fid-dinja reali,
u ser naraw kemm flus inti tista 'tagħmel forsi
matul il-jiem diversi li jmiss ta 'playing ma' sett tiegħek problema stess.
>> Iżda l ejja 1 stabbilit l-istadju għall kif disinn xi ħaġa li ċertament aktar ikkumplikat
minn counter.php, li l-aktar ikkumplikat minn kwalunkwe waħda mill-eżempji IMs Frosh s'issa,
u ejja jippruvaw li tintroduċi xi mudelli ftit hawn li jippermettu magħna
kemm għall pset 7 u forsi għall-proġett finali tiegħek jekk inti tagħmel web ħaġa ibbażata
li jżomm il-kodiċi tiegħek organizzata sew, li żżomm ruħek Sane,
u li tieħu pass lejn jikkollaboraw, kemm jekk fil-proġett finali CS50 s
jew lil hinn jekk inti tkompli program xi ħaġa fil-futur.
Hemm din paradigma disinn ġenerali
fix-xjenza tal-kompjuter u fl-iżvilupp tas-softwer b'mod aktar ġenerali
magħrufa bħala MVC, mudell kontrollur fehma,
u dan huwa akronimu iblah li jiddeskrivi idea sbieħ ħafna,
li hija l-separazzjoni ta 'l-aspetti differenti tal-programm,
speċifikament żamma separata tal-loġika jew il-loġika tan-negozju ta 'websajt
b'tali mod li kull ħaġa li tinvolvi affarijiet simili
sejħa funzjonijiet u juri dubji databases u simili
jiġri mhux fost HTML tiegħek
iżda fil-fajls separati, u tabilħaqq, hemm dan il-fajl 1
tipikament li inti għandek imsejjaħ il-kontrollur
li tassew l-imħuħ wara l-operazzjoni, u aħna ser tara eżempju
ta 'dan fi ftit mument.
>> Hemm mudell li huwa l-ipprogrammar kodiċi
li ma l-jitkellem għal databases tiegħek, li taħdidiet biex Yahoo Finanzi u simili,
u allura hemm il-V fil MVC, il-fehmiet,
kollha ta 'l-għalf li l-relatata mal-estetika, l-fajls li attwalment fihom
HTML tiegħek, forsi CSS tiegħek u simili.
L-idea hawnhekk, kif din l-istampa jissuġġerixxi, huwa li l-kontrollur
huwa l-fajl, kif aħna ser malajr tara u kif tkun taf partikolarment tara fil pset 7,
li d-dinja taħdidiet permezz web browsers tagħhom.
Dan huwa l-fajl li gets miżjura fuq l-internet pubbliku,
imma l-kontrollur taħdidiet li potenzjalment mudell,
li huwa wieħed jew aktar fajls oħra li fihom il-kodiċi relatat għad-data,
kodiċi relatat mal databases u simili, u allura taħdidiet biex
il-kontrollur wieħed jew aktar fajls oħra magħrufa bħala opinjonijiet,
li huma l-estetika ta 'paġna web, mudelli ta' tip,
li jista 'jieħu xi data bħala input, iżda fl-aħħar tal-ġurnata
il-loġika biss ġewwa ta 'opinjoni għandha tkun il-forniment ta' dik id-data,
iterazzjoni fuq linja u fil-fatt jobżoq xi
HTML bbażata fuq konsenja tiegħu jew saħansitra xi ħaġa bħal PDF.
>> X'hemm sbieħ dwar MVC hija li inti jista 'jkollhom fehmiet differenti
ibbażat fuq it-tip ta 'mezz, ibbażati fuq it-tip ta' format tal-fajl li inti fil-fatt
jridu juru lill-utent.
Ejja tagħti ħarsa lejn xi ftit eżempji progressivament aktar kumplessi u mfassla tajjeb
billi jibdew bl-ewwel verżjoni 0 hawn.
Let me imorru quddiem u tiftaħ fl-direttorju MVC tagħna llum
fajl imsejjaħ index.php fl-direttorju 0.
Avviż dan huwa sit super sempliċi ħafna u underwhelming
dan huwa tip ta 'verżjoni ta' 0 homepage għal CS50,
u avviż kif għandna link għal Lectures, għandna link għal Sillabu,
u jekk I segwi l-link għall Lectures avviż li l-URL
top up huwa se jibdlu l lectures.php.
Jekk I imbagħad segwi l-link għall-1 Ġimgħa avviż li l-bidliet URL għall week1.php.
Jidher li hemm struttura ġerarkika pjuttost sempliċi hawn.
>> Ejja tagħti ħarsa taħt il-barnuża lejn kif dan hija stabbilita,
u fil-fatt, jekk I tħares lejn index.php huwa pjuttost sempliċi.
Fil-fatt, anki jekk I sejjaħ dan il-fajl PHP hemm ebda kodiċi ta 'programmazzjoni attwali.
Hemm xi kumment li I kiteb hawn fil-PHP biss sabiex l-utent ma jispiċċawx iqisuh.
Of course, bħal qabel, xi ħaġa li bejniethom tags PHP
gets interpretata, anki jekk huwa kumment, u sabiex tinterpreta kumment
ifisser biss li tarmi l bogħod fl-aħħar tal-ġurnata u mhux attwalment
jibagħtu lill-browser, hekk kollox hawnhekk huwa biss estetika.
Jekk I jiftħu simili lectures.php din ukoll hija biss fajl kodifikat iebsa.
Dan jiġri li għandu jissejjaħ xi ħaġa. PHP,
imma huwa verament ftit. html, u week1.php, week2.php
bl-istess mod huma biss Markup, hekk hemm mazz ta 'nuqqasijiet ta' dan id-disinn.
Wieħed, huwa ammont kbir ta 'kopja / paste.
Anki jekk l-unika ħaġa li l-bdil bejn dawn il-fajls hija l-lista unordered,
l-tags LI, jien xorta jkollhom tip doc, HTML, ras,
titolu, korp stretta, qrib HTML u aktar
f'kull fajl waħdieni, li jfisser li jekk jien qatt trid biex jirristrutturaw
din il-paġna web jew restylize dan I ikollhom imorru fi u bidla
dawn il-fajls manwalment jew ma 'xi massiva isibu u tissostitwixxi.
>> Ejja tieħu pass lejn disinn intelliġenti, aktar ħsieb fil-verżjoni 1 hawn
fejn kif fis-jaqra me li konna inklużi sabiex inti tista 'tilgħab flimkien ma'
dawn aktar komda fuq avviż dar li għandna hawn
sommarju tal-fajls fil-verżjoni 1 ta 'dan is-sit,
u jidher li stajt meħuda fuq ruħi li fattur out
xi kodiċi komuni, header.php u footer.php.
Ukoll, ejja tagħti ħarsa lejn x'hemm ġewwa l-ewwel waħda minn dawn.
Header.php jistenna familjari,
iżda avviż fejn ma nikseb maqtugħa?
Dritt wara linja 19, b'tali mod li dak kollu li kienet komuni
mill-index.php fajls, lectures.php,
week1 u week2.php mill-eżempju preċedenti.
What I ma kien kopja u kollox maqtugħin li kien komuni għal dawk kollha fajls,
poġġih fil-fajl tal-header separat, u bl-istess mod fil footer.php
ma napplika l-istess prinċipju li bih il-linji uniċi interessanti
fil footer.php huma dawn iż-żewġ, korp stretta u HTML qrib.
>> Imma dak li dan ifisser issa hija li fil-verżjoni l-ġdida
ta 'avviż index.php kemm sempliċi li jistgħu jiksbu.
Mogħtija, xi ftit aktar cryptic tfittex, ftit inqas intuwittivi
biex isegwu fuq għal isfel, imma Alla tiegħi, li kollha li tkeċċija hija issa marret.
Aħna jeħtieġu użu ta 'funzjoni PHP litteralment imsejħa jeħtieġu top up,
li hija ħafna reminixxenti, tfakkar, ta 'C # Jinkludu mekkaniżmu.
Aħna jeħtieġu header.php fil-quċċata.
Aħna jeħtieġu footer.php fil-qiegħ, u l-unika ħaġa li hija differenti
jew speċjali dwar dan il-fajl huwa l-kontenut li kien ifisser li jkun uniku lilha.
Jekk I imbagħad tmur fis, jiġifieri, lectures.php, l-istess prinċipju japplika.
Għal darb'oħra, xi kummenti up quċċata, iżda mbagħad I jeħtieġu header, footer jeħtieġu,
u fl bejn dan huwa biss il-kontenut li l-fatt inbidlet.
U jekk ħarisna fis Ġimgħa 1 u Ġimgħa 2 aħna'd tara
li l-istess prinċipju ġie applikat hemmhekk.
Well, aħna mhux qed pjuttost isir hemmhekk.
>> Ejja tagħti ħarsa lejn verżjoni 2, li għandha struttura simili,
iżda avviż issa stajt introduċa xi ħaġa oħra.
F'konformità 10 stajt introduċa helpers.php,
li apparentement fih funzjonijiet helper.
Funzjoni helper huwa ġeneralment funzjoni relattivament qasir
li tikteb biex jgħinuk f'diversi postijiet,
u ejja ara x'hemm ġewwa tal helpers.php.
F'dan il-każ, jidher qisu għandu 2 funzjonijiet.
Recall mill-jum ieħor ma eżempju kubu tagħna
inti tista 'tiddefinixxi l-funzjonijiet tiegħek fil-PHP, u dak I ghamilt issa huwa stajt
funzjonijiet iddefiniti imsejħa jirrendu footer u jirrendi header,
l-ewwel wieħed jieħu parametru imsejjaħ data,
li default valur huwa firxa vojta, kif issuġġerit hemm,
u nistgħu ngħidu tikteb din saħansitra aktar qosor fl-aħħar verżjoni ta 'PHP
billi qal parentesi kwadri miftuħa, magħluqa parentesi kwadri.
Dan ifisser firxa vojta ta 'daqs 0 iżda madankollu firxa.
>> Din il-funzjoni estratt huwa xi ftit speċjali li
dak li ma huwa jieħu bħala argument tagħha firxa assoċjattiva
li għandha 0 jew aktar pari valur ewlenin, u jekk ikollok ewlieni ta 'foo
u valur ta 'bar-funzjoni estratt
joħloq sitwazzjoni li fiha issa, mill-linja 11,
ikollok varjabbli lokali imsejjaħ $ foo li l-valur huwa bar.
U jekk kellek ċwievet aktar u l-valuri fil-firxa tad-data,
bl-istess mod kieku huma jkunu estratti fl-ambitu lokali
ispazju isem jew b'tali mod li footer.php u
l-istess idea stabbiliti hawn hekk li header.php
jkollhom aċċess għal dawk il-varjabbli.
Fil-fatt, let me tiftaħ mill-ġdid header.php
u jiġbed l-attenzjoni li issa dak li jidher qisu f'dan il-verżjoni.
>> Pjuttost milli hard kodifika CS50 bħala t-titolu għal kull paġna waħda
Avviż l-dinamiżmu li huwa possibbli issa.
B'mod konformi 5 jien b'repetizzjoni varjabbli titolu,
imma l-ewwel jien tgħaddi dan varjabbli titolu għal funzjoni msejħa htmlspecialchars.
Isem stupid għal funzjoni, sakemm huwa, iżda huwa verament ma dak li jgħid.
Hija tiżgura li kwalunkwe karattri speċjali
fis-sekwenza li kien għadda fi huma kif suppost maħruba HTML.
Dan huwa fil-fatt mod li jiġi evitat xi ħaġa imsejħa cross sit attakk scripting
jista 'xi ħadd li biha b'mod malizzjuż jew aċċidentalment
injetta HTML tagħhom stess fis-website tiegħek
billi pasta fis xi forma, per eżempju,
xi ħaġa li inti ma kinux pjuttost jistennew, speċjalment il-kodiċi JavaScript,
kif aħna ser nitkellmu dwar fil-ġimgħa jew darba 2 ta.
>> Dan header.php issa, huwa ħsieb
fis-sens li tippermetti li tara estetikament l-kontenuti ta 'ċerti sett tad-dejta.
Iżda aktar speċifiku, huwa template.
Din hija tip ta 'pjan issa' dak li aħna rridu l-header ta 'kull paġna biex look like,
imma hemm xi dinamiżmu li aħna rridu t-titolu li għandu jiddaħħal dinamiku
ibbażata fuq il-varjabbli titolu
li kien estratt meta aħna imsejjaħ, għal darb'oħra,
il-funzjoni header jirrendi.
Issa, jekk aħna ħares lejn footer jirrendu, hemm attwalment mhuwiex ħafna użu ta 'dak id-dritt issa
għaliex fil footer.php hemm ebda dinamiżmu tkun xi tkun.
Jista 'jkun hemm, iżda fil-mument huwa lista kodifikata iebsa ta' 2 tikketti,
imma l-idea istess japplika, b'tali mod li fil-fatt tissuġġerixxi għaliex
aħna ma jaħlux ħin li jkollhom header jirrendi u funzjoni jirrendi footer?
Let me go minflok issa fil-verżjoni 3,
u fil-verżjoni 3 fil helpers I iddeċieda li jissimplifika dan saħansitra aktar.
>> Let me jkollhom il-funzjoni jirrendi 1.
Let me jkollhom jieħdu argument ieħor, din id-darba sejjaħ template,
li huwa maħsub li jkun l-isem ta 'mudell,
u mbagħad I se concatenate presumptuously. PHP għall-valur li varjabbli, il-
u mbagħad jekk teżisti foo.php, bar.php jew header.php u footer.php,
allura jien ser jimxi 'l quddiem u estratt tad-data varjabbli
u mbagħad jeħtieġu li triq.
Fi kliem ieħor, sabiex tuża din issa, jekk I jiftħu index.php
avviż li jien ma sejħa header jirrendi aktar.
I biss sejħa tirrendi, iżda I jgħaddu fil-valur kwotat ta header
biex ikun ċar liema template I attwalment tixtieq li tagħbija.
>> Imbagħad hawn fuq avviż dak li qed nagħmel.
Jien tgħaddi b'mod dinamiku ewlieni ta 'titolu,
valur ta 'CS50, u dan ukoll, kif rajna qabel,
tista 'ssir aktar imqassra fl-aħħar verżjoni ta' PHP
fejn nista 'tissostitwixxi l-funzjoni firxa bil-parentesi kwadri,
li nipproponi hija saħansitra aktar leġġibbli u ċertament
ftit aktar faċli għat-tip.
U naturalment, mas-sejħa jirrendi footer fil-qiegħ,
aħna ma jolqot li tgħaddi minn tieni argument fil-livelli kollha, l-ebda array assoċjattiva,
għaliex hemm ġewwa xejn dinamika ta 'dak footer.
Huwa biss xi tags mill-qrib għal HTML.
Tajba, aħna qed tieħu passi lejn verament tindif affarijiet up hawn,
iżda let me jiftħu 2 eżempji finali.
Dan wieħed, numru 4, avviż li stajt għamel deċiżjoni konxja issa
li jtejbu fuq l-eżempju preċedenti billi finalment tuża xi ġerarkija għall-fajls tiegħi.
>> Avviż li fil dan is-sommarju, f'dan taqra lili, stajt introduċa
l tinkludi direttorju u direttorju templates
kontenut li ser ikunu l-affarijiet nixtieq li tinkludi
u l-mudelli li nixtieq li tirrendi, rispettivament.
Dan huwa verament lili jkun anali u jippruvaw iżommu l-affarijiet puliti,
jżommu fajls relatati flimkien, imma r-riżultat finali
hija li issa għandna setup ftit tidier, imma rridu niftakru issa
fil, per eżempju, index.php
meta aħna jeħtieġu l-helpers.php fajl
irridu issa jeħtieġu dan permezz jinkludi / helpers.php
aktar milli sempliċiment tgħid helpers.php għaliex issa huwa attwalment fil-direttorju sub.
Issa, bħala twarrib, tkun taf tara f'dawn l-eżempji u xi oħrajn
funzjonijiet bħall jeħtieġu, jeħtieġu darba.
Hemm fil-fatt funzjoni hija stess imsejħa jinkludu, u dawn kollha għandhom imġieba kemmxejn differenti.
Hawnhekk I say jeħtieġu darba li tagħmel super ċara li jien biss jixtiequ dawk
helpers inklużi fil-proġett tiegħi darba.
Imma jekk jien bir-reqqa u jekk jien attwalment ħsieb permezz loġika tiegħi kif suppost
għandu jkun biżżejjed wisq biss biex jgħidu jeħtieġu top up
sakemm I myself ma aċċidentalment jeħtieġu li fajl istess x'imkien ieħor.
Fil-fatt, dan huwa mod kemmxejn aktar effiċjenti ta 'nagħmlu l-affarijiet imbagħad bl-użu
jeħtieġu darba, so I ser trim l-isfel għal ftit jeħtieġu.
>> Ejja tieħu pass ulterjuri.
Dan l-eżempju l-aħħar issa, verżjoni 5, għandha ġerarkija folder saħansitra aktar nodfa.
Avviż dak I ghamilt hawn kull l-taqra lili f'dan il-verżjoni finali
huwa issa għandi direttorju HTML tiegħi, li I kellna dan il-ħin,
imma ġewwa ta 'hemm issa huwa biss index.php, lectures.php,
week1.php u week2.php.
Il jinkludi direttorju issa jgħix flimkien tad-direttorju HTML,
hekk fl-istess livell bħala aħwa, biex ngħidu hekk.
Allura ma l-folder templates.
Il-takeaway prinċipali hawnhekk hija li stajt introduċa istruttura ftit aktar,
iżda l-karatteristika ewlenija issa hija li biss il-fajls
li jeħtieġ li jiġu web aċċessibbli, pubblikament indirizzabbli
minn URL fuq l-internet pubbliku huma fl-direttorju HTML tiegħi.
>> Fajls Sadanittant, oħrajn, helpers.php, footer.php,
header.php, li huma forsi forsi aktar sensittivi,
forsi helpers fil-fatt għandha xi ismijiet utent u passwords jew xi intellettwali
proprjetà ta 'mini, funzjonijiet I really ma jridux id-dinja biex tara, anki jekk aċċidentalment.
Huwa prattika tajba li jżomm mill-direttorju HTML pubbliku
xi fajls li m'għandhomx bżonn lilhom infushom bħala pubbliku.
Kulma għandek tagħmel f'dan il-każ meta wieħed iħares lejn, per eżempju,
fajl index.php-direttorju HTML, l-
Avviż aħna biss għandhom ikunu ftit aktar attenti meta jeħtieġu
jew jeħtieġu ladarba dan il-fajl.
I bżonn l-ewwel tagħmel .. biex tmur fil-direttorju ġenitur,
mela / jinkludi / helpers.php
li adsa lura fl biex jiksbu l-fajl li I care about.
>> Kwalunkwe mistoqsijiet imbagħad fuq MVC
jew dan Inkarnazzjoni relattivament sempliċi tiegħu?
U let me jagħmluha ċara li aħna iffukat pjuttost ftit fuq il-
V hawn, l-opinjonijiet u l-fatturar barra ta 'dawn il-mudelli.
Imxejna ma verament distint M minn C għadha biss.
Fil-fatt, jeżisti l-ebda M hawnhekk, u anki C tagħna,
kontrollur, mhuwiex verament tagħmel kollha li ħafna, imma int ser tingħata ħafna aktar
familjari ma 'dawn iż-żewġ ittri 2 minn MVC,
jew pjuttost, int ser tingħata ħafna aktar familjari mal-C
fil-MVC għal sett problema 7, b'hekk m'hemm l-aktar ta 'dak fuq l-orizzont.
Mistoqsijiet?
Hemm fil-fatt ebda wieħed hawn.
>> Okay, ejja issa jimxu fuq is-suġġett tat-tieni u finali għal-lum.
Dan huwa l-introduzzjoni ta 'database.
Sa dan il-punt aħna kellna ftit modi ta 'jaħżen id-data.
Imxejna użati varjabbli.
Lura fil-fajl C tagħna, I / O diskussjoni bdejna nużaw fajls test
u l-użu fajls simili fprintf, u allura aħna saħansitra bdew
jitkellem dwar CSV fajls ftit, il-valuri comma separati,
sabiex kollha ta 'dawn ħallietna nsiru li jkun hemm data maħżuna
jew mhux persistenti jew persistenti.
Iżda anki CSVs ma humiex verament jwasslu għall-tiftix
u l-inseriment u t-tħassir.
Huwa tassew biss fajl test stupid separati mill-virgoli
ringiela minn ringiela minn ringiela minn ringiela, jekk hekk tixtieq li
tfittxija dan il-fajl l-aħjar li tista 'tagħmel huwa verament tfittxija lineari.
Int għandek tibda fil-quċċata tal-fajl, aqra l-ħaġa sħiħa fil-
u jfittxu għal xi valur ta 'interess.
Jekk inti tixtieq li daħħal fis hija ma għandek tagħmel l-istess ħaġa,
iterazzjoni fuqha u ddaħħal f'post partikolari,
u fil-fatt, inti għandek tagħmel kollha ta 'l loġika tiftix yourself.
>> Inti ma tistax tagħmel mudell għaqlija tqabbil fuq fajl CSV sakemm inti stess jikteb il-kodiċi.
Inti ma tistax tagħmel filtrazzjoni ta 'fajl CSV
sakemm inti stess jikteb il-kodiċi.
Ma Ikun sbieħ jekk xi ħadd ieħor jitqiegħdu fil kollha ta 'l-isforz
li fil-fatt jagħmlu tiftix faċli u inserzjoni faċli
u t-tħassir u l-aġġornament u oħrajn?
Dan huwa eżattament dak li database huwa.
SQL, lingwa mistoqsija strutturat, huwa pass ieħor lingwa
li aħna qed jintroduċu hawn illum, iżda dan ukoll huwa pjuttost aċċessibbli,
u dak li aħna qed verament se tagħmel huwa biss ġewwieni minnha wħud mill-aktar saljenti
Karatteristiċi hekk li għal pset 7, u jekk inti tagħmel web ħaġa ibbażat,
proġett finali tiegħek, inti għandek il-ħila biex tesprimi ruħek
f'termini ta 'mistoqsijiet tad-data.
Inti għandek l-abbiltà li jaħżen ftit jew ħafna ta 'data
b'mod ħafna aktar strutturat li se fl-aħħar tal-ġurnata
jagħmlu l-ħajja tiegħek aktar faċli għaliex ma SQL inti tista 'tesprimi ruħek
ħafna iktar preċiż, ħafna aktar metodiku sabiex
nikseb lura xi sottosett ta 'data minn korp ikbar ta' dejta.
>> Inti tista 'taħseb ta' database, f'dan il-każ, ta 'database SQL, verament bħal Excel
jew Numri fejn huwa spreadsheet,
jew forsi spreadsheets multipli, u spreadsheet, naturalment,
għandha ringieli u kolonni, u dan għaliex
Databases SQL huma relazzjonali, relazzjonali fis-sens
li jaħżen id-data f'termini ta 'dawn it-tabelli,
ringieli u kolonni.
Dawn huma ogħla kapaċi daqs xi ħaġa bħal spreadsheet,
u spreadsheet huwa maħsub biex jintuża mill-bniedem.
A database huwa maħsub biex jintuża minn programmer
kitba kodiċi kontra dan, hekk l-Inkarnazzjoni ta 'database
se jkun jew linja ta 'kmand.
>> Wieħed mill-databases relazzjonali aktar popolari hemmhekk hija, għal darb'oħra, MySQL,
li huwa wonderfully b'xejn, prestazzjoni għolja ħafna, u dan huwa dak
Facebook użat fi stadju bikri u sa ċertu punt għadhom llum
li jaħżen lott ta 'data tagħha, u aħna ser tara fil-mument
li l-użu jikkmanda relattivament sempliċi
nistgħu tagħżel id-data, data daħħal, data ta 'aġġornament,
tħassar data u simili, iżda Thankfully, hemm aktar user-friendly interface
minn sempliċiment ittajpjar fuq pront iswed u abjad hawn.
Aħna ser tuża għal pset 7 u lil hinn għodda libera msejħa phpMyAdmin.
L-isem hija koinċidenza.
L-għodda jiġri li għandhom jiġu implimentati fil-PHP,
iżda li fundamentalment irrilevanti.
X'hemm utli dwar phpMyAdmin hija li huwa utilità web-based.
Imxejna installat minn qabel fil-appliance għalik,
u magħha inti tista 'toħloq tabelli f' database,
inti tista 'daħħal data, iħassru data, u ġeneralment tara
data tiegħek fl pjuttost faċli għall-utent ambjent.
Utenti tiegħek mhumiex ser tuża phpMyAdmin.
>> Dan huwa verament ftit għodda amministrattiva jew iżviluppatur
magħhom biex tara u poke madwar data tiegħek u figura kif għandhom jistrutturaw dan,
ferm simili inti stess tista 'tuża Excel jew Numri,
iżda li għaddej biex tkun mod tajjeb ħafna ta 'viżwalizzazzjoni x'inhu għaddej taħt il-barnuża
sabiex inti tista 'tiffoka fuq il-problema interessanti soluzzjoni u mhux daqstant
fuq il-kmandi arcane.
Ejja tagħti ħarsa lejn eżempju ta 'dejta li tista' tkun maħżuna tabularly
f 'database relazzjonali.
Hawn eżempju ta 'dan.
Issa, sfortunatament, phpMyAdmin żbaljat fuq in-naħa ta 'mod jitfg wisq ħafna kliem
u grafika fi inti, imma jekk inti hone fil biss fuq il-
Kolonna ID, il-kolonna isem l-utent, u l-kolonna hash,
dan huwa effettivament spreadsheet, iżda dan jiġri jkun snippet
ta 'ġewwa tabella ta' l-appliance
użu ta 'fajl li aħna nipprovdulek fil-sett problema 7.
>> B'mod partikolari, aħna nagħtuk fajl li jirrappreżenta
tabella ta 'utent, hekk spreadsheet li jkun fih l-utenti bi 3 kolonni,
waħda minnhom huwa ID unika li jibda fl-1 u jiġu inkrementati wara.
It-tieni kolonna huwa l-isem l-utent, u dawk fostkom li ma Hacker,
l-edizzjoni Hacker għall pset 2, jistgħu jirrikonoxxu uħud minn dawn l-ismijiet utent mill-inqas.
Fuq in-naħa tal-lemin huma passwords, iżda dawn mhux qed passwords litterali.
Huma qed hashes tiegħu, u għalhekk jirriżulta
li jaħżen passwords fid-database hija idea tassew ħżiena.
You ħadthom probabbilment taqra kollha f'xi punt ta 'xi websajt
jew database xi kumpanija qiegħda tiġi kompromessa, u imbagħad inti għandek
bidla password tiegħek, inti għandek bżonn tikseb rifużjonijiet fuq affarijiet
għaliex xi Guy ħażina fil-fatt kissru fil-kont tiegħek bħala riżultat.
>> Kif taħżen passwords fil test ċar, unencrypted fid-database
huwa kompletament asinine, u għadhom huwa ferm divertenti
imbagħad biex taqra dwar xi kumpaniji ħafna magħrufa sew
kultant fl-istampa databases li jiġu preġudikati,
u dik il-parti mhix umoristiċi, iżda l-fatt li d-databases fihom unencrypted
passwords huwa ħaġa redikola għaliex litteralment ma 'linja tal-kodiċi
inti tista 'tipproteġi kontra din it-theddida partikolari, u dan huwa dak li aħna ghamilt hawn.
Anke għal foloz verżjoni tagħna ftit Finanzi CS50
aħna encrypting passwords biss għal miżura tajba, u l-fatt li l-
kollha ta 'dawn passwords jibdew mal $ 1 $ huwa biss konvenzjoni.
Dan ifisser biss li qed encrypted jew verament hashed,
li huwa bħal funzjoni encryption one-way
fejn inti ma tistax taqleb l-effetti tagħha ma 'xi ħaġa imsejħa MD5.
>> Il-fatt li 50 hu wara li jfisser li valur melħ
ta '50 kien użat għall hashing kollha ta' dawn passwords ħlief għal wieħed.
Mine, naturalment, kif tistgħu taraw hemm, HA,
Kien bl-użu ta 'melħ differenti, sabiex dawk minnkom li ltqajna ftit tripped
forsi fil-Hacker 2, li seta 'kien ir-riżultat li tkun użat tagħna
a hash differenti mill-oħrajn minħabba password tiegħi huwa attwalment l-istess
bħala xi utent ieħor up hemm.
Fil-fatt, jekk inti kont qed tistenna kollha dawn il-ġimgħat biex issir taf
x'inhuma dawn passwords kienu hawn kienu l-passwords li inti kienu kkontestati
biex jitwaqqaf fl-edizzjoni Hacker ta 'sett problema 2, hekk xejn wisq delikata.
Fil-fatt, l-Malan kienet l-istess bħal jharvard,
imma jekk immorru lura ħarsu differenti.
>> Iffoka fuq jharvard fil krimżi għaliex kienu immellaħ differenti.
L-algoritmu kienet imfixkla b'mod li l-
hash valur, il-valur encrypted jistenna xi ftit differenti
minħabba li l-inputs kienu kemmxejn differenti, iżda l-password taħt il-barnuża
kien għadu finalment krimżi.
Issa, quién dwar dan?
Ukoll, aħna qed jipprovdu inti ma 'l-utenti tal-kampjun, l-ismijiet l-utent tal-kampjun
u hashes ta passwords tagħhom hekk li inti fil-fatt ikollhom xi
klijenti għall-CS50 Finanzi meta inti l-ewwel tikseb barra mill-art bil-kodiċi tiegħek.
Int ser ikollok biex jimplimentaw tabelli aktar 'ġewwa tal MySQL, ġewwa tad-database.
Int ser ikollok biex joħolqu spreadsheets aktar, b'mod effettiv, iżda aħna iddeċieda li jtik dan wieħed
biex tibda, u tkun taf tara li l-ispeċifikazzjoni sett problema
mixjiet inti permezz tal-proċess ta 'importazzjoni din it-tabella
u wkoll tispjega dak li xi wħud mill-karatteristiċi huma,
u tkun taf tara wkoll li aħna jagħtuk il-kodiċi
biex jimmaniġġaw il hashing jew l-encryption ta 'dawn passwords,
sabiex inti m'għandekx bżonn ninkwetaw wisq dwar dak MD5 jew simili huwa attwalment madwar kollha.
>> Għalhekk, SQL, lingwa query strutturat.
Dan huwa, pjuttost sempliċi, il-lingwa aħna waslu biex jibdew jużaw fil pset 7
u forsi lil hinn jitolbu data minn xi database.
Id-data hija, għal darb'oħra, maħżuna tabularly f'dawn it-tabelli relazzjonali, kolonni, u ringieli,
iżda bl-użu xi sintassi relattivament sempliċi bħal tħassar,
daħħal, jaġġornaw u jagħżlu nistgħu nagħmlu eżattament dan.
Nistgħu tħassar mid-database, daħħal,
jaġġornaw id-dejta, kif ukoll jagħżlu, li huwa, jirkupraw data mid-database.
Kif immorru dwar kif isir dan?
Let me imorru quddiem fil-appliance.
Let me pull up http://localhost,
li, għal darb'oħra, hija l-appliance lokali innifsu.
Li nickname default tagħha.
U let me go għal / phpmyadmin.
Dan jiġri li jkun URL speċjali li l-appliance ikun preconfigured li wieħed jifhem
li immedjatament twassalni għal user name u password.
>> Bħas-soltu, jien ser tip jharvard u krimżi,
imma tirrealizza li l-kont amministratur fuq il-kompjuter.
Huwa biss koinċidenza li hemm ukoll jharvard irreġistrata għal CS50 Finanzi.
Jharvard, krimżi, jidħol il tagħti me l-user interface li rajna
idea ta 'mument ilu, u huwa ftit kbira fl-ewwel,
iżda mistrieħ assigurat, int qatt ser ikollok ikklikkja ħafna mill-rabtiet fil din l-għodda.
Int ser ikollok jispiċċaw jużaw subsett żgħir li huma super utli,
l-ewwel waħda minnhom hija databases up here.
Jekk immur sal databases, avviż li jien imħeġġa biex tinħoloq database.
Dan huwa simili li joħloq fajl Excel ġdid, b'mod effettiv.
Jien ser jimxi 'l quddiem u sejħa dan lecture, u jien biss ser jinjora l-qasam hemmhekk, il-kollazzjoni.
Hija għandha tagħmel il-rappreżentazzjoni ta 'data fiha,
u jien ser ikklikkja joħolqu, u issa avviż kif I let go ta toħloq
fuq in-naħa tax-xellug fejn jgħid l-ebda databases
I għandha malajr tara d-database lecture.
>> Jekk I issa ikklikkja fuq in-naħa tax-xellug, id-database lecture,
Avviż tabs tiegħi bidla ftit.
Stajt ltqajna, l-istruttura SQL, esportazzjoni, importazzjoni u xi affarijiet oħra.
Struttura hija pjuttost vojta.
L-ebda tabelli misjuba fid-database, kif jgħid hawnhekk,
hekk ejja toħloq tabella, u ejja imorru quddiem u toħloq tabella
bħal studenti, u kemm kolonni rridu?
Ejja żżomm dan sempliċi, u ejja rekord għal kull student
numru ta 'identifikazzjoni, l-isem, u l-indirizz email.
>> Aħna ser jżommha sempliċi bħal dik, hekk 3 kolonni, mur.
Il-formola li tara hawnhekk huwa issa ftit messy u assoluta,
imma aħna biss għandhom jgħaddu minnha ringiela minn ringiela, sabiex verament malajr ejja tagħti
l-ewwel kolonna f'din id-database ta 'isem ta' ID ta 'l-identifikatur uniku.
Din se tkun numru sħiħ. I jistgħu attwalment jinjora t-tul u l-valuri.
L int se tkun 32 bit x'ikun inti tip fil hemm, so ejja ħalliha vojta.
Valur Default, I jista 'jagħmilha null, kif definit.
Jien ser jitlaq minn dak waħdu. Ejja ma joqogħdu jinkwetaw dwar valuri awtomatiċi.
Ejja iscroll minn hawn il-dritt, l-attributi.
Dan huwa interessanti.
Ejja imorru quddiem u kemmxejn arbitrarju jgħidu li IDs għandhom ikunu iffirmati.
Ejja ma jaħlux kull numri negattivi.
>> Ejja ħa mmorru 0-4000000000, jagħtu jew jieħu,
u mbagħad ejja ma tmiss xi wieħed minn dawn l-oqsma għadha biss hemmhekk,
iżda mbagħad let me tip fl-isem stabbiliti hawn,
u mbagħad l-oħra kienet email, sabiex il-qabda email
u l-isem, ovvjament mhux interi, so ejja bidla dawn għal qasam differenti.
Jirriżulta varchar, it-tul char varjabbli,
huwa bħal string fi database SQL
iżda ta 'tul varjabbli, u inti fil-fatt għandek tgħid bil-quddiem tal-
tul massimu tas-sekwenza, hekk jien ser kemmxejn arbitrarju
skond it-tip konvenzjoni 255 karattri.
I jistgħu totalment say 32. Nista 'ngħid 1000.
Inti tip ta 'bżonn biex tiddeċiedi għalik innifsek ibbażati fuq id-demografija tiegħek liema hu
Isem l-istudent itwal u jmorru ma 'dak in-numru jew ftit akbar,
imma x'hemm sbieħ dwar varchar huwa mhuwiex ser għall-iskart
255 bytes fuq isem kull student.
Jekk huwa DAVID mhuwiex ser tuża sħaħ 255 bytes,
iżda li l-bound fuq, so I ser imorru ma '255 biss mill-konvenzjoni,
imma nistgħu dibattitu li jkun xi valur iktar baxx, u għall-indirizz elettroniku
biss sabiex ikunu konsistenti 255, iżda għal darb'oħra, jista 'jkollna l-istess dibattitu.
Imma jien ser tagħmel ħaġa waħda oħra minn hawn fuq in-naħa tal-lemin.
>> X'hemm qawwija dwar database huwa li tista 'tagħmel ħafna ta' irfigħ
jew xogħol kumpless għalik.
B'mod partikolari, I really ma 'kura dak ID numri studenti tiegħi huma.
Huwa biss maħsub li jkun identifikatur uniku fid-database
so I jkollhom rappreżentazzjoni konċiża 32-daqsxejn ta 'dan l-istudent
hekk li għandi xi mod li jidentifika b'mod uniku tagħhom
lest ikun hemm 2 Davids, per eżempju, fi klassi.
Fil-fatt, jien ser jiċċekkja din il-kaxxa AI, żieda auto,
b'tali mod li d-database, MySQL, figuri barra
dak ID kull student li għadhom kif idaħħlu huwa se tkun.
I ma jkollhomx biex jimpurtahom li fil-kodiċi tiegħi,
u jien ukoll ser jagħżlu xi ħaġa taħt il-menu indiċi.
L-indiċi drop down hawn jkun primarja, uniku,
indiċi u test sħiħ.
Tista 'forsi raden liema koppja ta' dawn l-affarijiet huma,
iżda jirriżulta fid-databases relazzjonali
inti l-programmer jew l-amministratur database tikseb preemptively
jagħtu ħjiel għad-database dwar liema oqsma
f'tabella huma speċjali ftit.
>> Per eżempju, f'dan il-każ jien ser ngħid li ID
se tkun indiċi primarja, inkella magħruf bħala kodiċi primarju.
X'inhu dan ifisser huwa li b'definizzjoni ID issa
se jidentifika unikament l-istudenti f'din it-tabella.
Nru student se jkollhom l-ID istess għaliex jien jimponu din ir-restrizzjoni jew dan l-indiċi.
Barra minn hekk, dak li dan se tagħmel għalija huwa għaddej biex tgħid
MySQL li ID huwa speċjali.
I kura partikolarment dwar ID, sabiex jimxi 'l quddiem u tagħmel magic fancy data tiegħek istruttura,
jibnu xi tip ta 'siġra.
Tipikament huwa xi ħaġa imsejjaħ il-B-siġra, li aħna ma nħarsu lejn ġimgħat ilu,
imma hija ieħor istruttura tad-data bħal simili fl-ispirtu għal-siġar binarji
u jipprova li ħarisna lejn, iżda li għaddej biex ngħid
għad-database dan il-qasam huwa tant importanti li jien probabbilment
jridu jkunu kapaċi li jfittxu fuqha, imorru quddiem u jibnu xi fancy
struttura tad-data fil-memorja biex iħaffu tfittxijiet sabiex idealment
dawn qed ħin kostanti jew għall-inqas bħala qrib kemm jista 'jkun li
b'tali mod li ma jaqgħu fis-tfittxija lineari, li mhux se tkun
l-aktar għolja li jwettqu l-approċċ.
B'kuntrast, l-indirizz email setgħet kienet kodiċi primarju.
>> Fit-teorija, indirizz elettroniku ta 'kulħadd hija unika, sakemm int qsim ta' xi kont,
iżda ġeneralment mhux tajba għall-użu xi ħaġa bħal string
bħala kodiċi primarju għaliex jekk l-għan tagħha fil-ħajja huwa li jidentifika unikament
ringieli fit-tabella tiegħek hemm ebda raġuni biex jużaw 255 bytes maximally
biex jidentifika unikament xi ħadd jekk inti tista 'tikseb bogħod ma biss 4 bytes
jew int 32-bit.
B'mod ġenerali, kodiċi primarju għandu jkun qasir u konċiż
u idealment xi ħaġa simili integer jew int kbir, li jiġri li jkun 64 bits.
Iżda l-indirizz email għandu jkun uniku, u waħda mill-karatteristiċi ta 'database wisq
huwa li tinforza uniċità għalija.
Billi tagħżel unika hawn jmiss għall-email, anki jekk email innifsu
huwa impress barra l-iskrin, li jien tgħid għad-database
ma trust me.
M'għandekx let me daħħal fid-database
l-indirizz email istess darbtejn, anki jekk jien idjota u am not
tajba ħafna ma 'IFs tiegħi u IFs inkella u kodiċi PHP attwali
u I aċċidentalment ħalli l-utent jirreġistra b'indirizz email eżistenti
id-database huwa pass ieħor livell ta 'difiża għall-korrettezza
biex jiġi żgurat li l-indirizz email duplikat ma jispiċċaw fit-tabella.
>> Issa, għall-kuntrarju, għall-isem inti probabilment ma jridux jagħmlu dan uniku
għaliex imbagħad hemm qatt ma jista 'jkun ta' 2 Davids jew 2 Smiths Mike, per eżempju,
fid-database tiegħek, hekk li wieħed aħna ser biss leave waħdu.
Jien ser jimxi 'l quddiem u kklikkja jiffrankaw fuq id-dritt tal-qiegħ,
u kollox jidher tajjeb, imma avviż up here
din hija parti li għal issa aħna mhux se jqattgħu ħin wisq fuq
minħabba li l-sintassi hija kumplessa ftit, u aħna ma jkollhomx biex toħloq tabelli
kollha li ta 'spiss, imma SQL innifsu huwa lingwa,
-sintassi li għalih huwa dritt hawn li stajt enfasizzati.
Dak phpMyAdmin verament ma huwa joħloq GUI web-based għalik
li magħhom inti tista 'jiffranka ħin u ma jkollhom manwalment tip out
mistoqsija SQL pjuttost twil bħal dik.
>> Fi kliem ieħor, jekk inti riedu li manwalment joħolqu din it-tabella,
jew f'dak phpMyAdmin iswed u abjad fil-pront jew saħansitra
billi jużaw din tab oħra, dan tab SQL fejn inti tista 'tip fil xi mistoqsijiet SQL
tixtieq, franchement, dan kien jieħu me minuta
li attwalment tiftakar il-sintassi kollu, u anki imbagħad I probabbilment kien ikollu
għamel xi typos, u għalhekk din l-għodda huwa utli għal affarijiet bħal dik, u huwa wkoll istruttivi.
Tista 'tibda biex jiddeduċu dak l-sintassi hija
biss mill-kulur sbieħ kodifikazzjoni li phpMyAdmin qed iżżid
għall-konvenjenza viżwali tagħna.
Imma issa ejja tagħmel dan minflok.
Let me mur l-tab daħħal fil-quċċata, u let me jimxi 'l quddiem u daħħal per eżempju
ID tal ejja ngħidu-fatt jien ma 'kura.
Huwa ser inkrement auto. Jien ser let-jittrattaw database ma 'dan.
Imma I għandhom ikunu David, u l-email tiegħi għandu jkun malan@harvard.edu.
>> Ejja jimxi 'l quddiem hawn u mqiegħda fil Mike Smith bħala ieħor.
I ser jagħti lili nnifsi isem l-aħħar kif ukoll,
u aħna ser jkollhom lilu tkun smith@example.com,
u mbagħad fejn ma mmur li jmiss?
Ukoll, jidher qisu go hija l-buttuna biex ikklikkja, u voila.
Avviż fuq il-top 2 fillieri mdaħħla.
Dan huwa l-mistoqsija SQL attwali.
Dik hija l-għodda phpMyAdmin esegwiti għalija,
imma r-riżultat finali, avviż, jekk I issa mur l-tab jibbrawżjaw,
huwa biex tara 2 fillieri f'din it-tabella, ħafna estetikament reminixxenti
tat-tabella rajna qabel għall-utenti tagħna mill pset 7,
li wieħed minnhom huwa David Malan, li wieħed minnhom issa huwa Mike Smith.
Iżda biss li jkun ċar, I m'għandhomx bżonn biex jużaw phpMyAdmin,
u fil-fatt, int ser dalwaqt tkun bil-miktub kodiċi għall pset 7
li automates-proċess ta 'żżid ringieli, tħassir ringieli, aġġornament ringieli u simili,
so let me minflok tmur għall-tab SQL up here
u t-tip fil-* agħżel mill-istudenti fejn
email = "malan@harvard.edu."
>> Fi kliem ieħor jissoponi issa għandek
xi forma HTML, u t-tipi utent fil-indirizz email tagħhom, fost oqsma oħra,
u l-għan issa huwa fil-PHP dwar il-kodiċi aħħar lura
li fil-fatt tfittex up dettalji oħra li utent.
X'inhu l-isem sħiħ tiegħek? X'inhu numru ta 'ID tiegħek?
Inti tista 'tikteb mistoqsija SQL bħal dan, tagħżel * minn studenti
fejn email = "malan@harvard.edu."
U jekk I imbagħad ikklikkja go, avviż li għandi, u tabilħaqq I do, nikseb lura wieħed biss ringiela.
Mike jitħalla barra minn dan sett riżultat, billi l-ġbir ta 'ringieli
huwa ġeneralment imsejjaħ, minħabba li huwa ma jkollu l-indirizz email istess kif me.
>> Issa, għal darb'oħra, hawn pset 7 inti ser tuża phpMyAdmin bħala għodda amministrattiva
u għodda pedagoġika biex jitgħallmu tiegħek mod
madwar id-dinja ta 'SQL, iżda fl-aħħar tal-ġurnata
int ser tkun bil-miktub dawn il-mistoqsijiet ta 'ġewwa tal PHP kodiċi attwali,
u hekk waqfa sintonizzat fil walkthrough Zamyla fil partikulari
fejn int ser tingħata tour tal-kodiċi ta 'distribuzzjoni għall dan is-sett il-problema
fejn konna tak mhux biss l-estetika għall-paġna login
u l-logo sexy sbieħ li tgħid CS50 Finanzi, imma konna wkoll tak
mazz ta 'funzjonijiet li se jagħmlu l-ħajja tiegħek daqsxejn aktar faċli.
Imxejna wkoll bil-miktub parti mill-pset għalik,
il-porzjon login minnu b'mod partikolari, li jtik sens ta 'disinn rappreżentant
li effettivament juża kontrollur, per eżempju, index.php,
login.php u simili, u allura inti ser tara l-pset wkoll direttorju templates
li tkun kollha ta 'fehmiet tiegħek, kollha ta' l-estetika.
U għalhekk il-fluss tax-xogħol ġenerali fil pset 7 se tkun dik
utenti tiegħek żjara kontrollur permezz ta 'URL fil-browser.
Li kontrollur fih kodiċi PHP li inti kiteb, u ġewwa ta 'kodiċi PHP tiegħek
jista 'jkun xi linji ta' SQL nested fl bejn kwotazzjonijiet doppja
u mgħoddi għal funzjoni aħna kiteb mistoqsija imsejħa
li ser jgħinek tkellem lill-database mingħajr l-użu xi ħaġa bħal
għodda amministrattiva bħal phpMyAdmin.
>> Int ser tkun tista 'tikteb dikjarazzjonijiet SQL fil-PHP Kodiċi
u terġa 'lura firxa PHP tas-sett riżultat,
ta 'l-ringieli li attwalment jaqblu li query.
U bl-istess mod inti se tkun tista 'tagħmel inserts jew tħassar
jew aġġornamenti jew simili, l-sintassi li huwa pjuttost simili,
u tkun taf tara minn xi referenzi internet, mill-kodiċi ta 'distribuzzjoni
u mill-pset pakkett innifsu eżattament kif imorru dwar kif isir dan.
Jirrealizzaw finalment aħna qed verament ftit grif tal-wiċċ ta 'SQL
u ta 'MySQL, iżda l-qawwa ta' dan verament huwa li jillibera inti
li tiffoka fuq il-problemi li inti tixtieq li ssolvi, il-każijiet ta 'użu li inti tixtieq li jimplimentaw
mingħajr ma joqogħdu jinkwetaw pjuttost kemm, għall-inqas minn kmieni,
dwar fejn u kif jaħżnu u tfittxija database tiegħek,
u dan huwa pjuttost litteralment fejn Facebook nnifisha ltqajna bidu tiegħu
użu MySQL u mbagħad tuża servers aktar MySQL u mbagħad servers aktar MySQL
qabel twil sakemm imbagħad kellhom verament tibda taħseb diffiċli dwar kif
taħżen data, kif jaħżnu l-affarijiet aktar effiċjenti,
hekk anke jekk aħna ser jieħdu għal mogħtija l-fatt li l-indiċi u l-limitazzjonijiet uniku
u oħrajn biss xogħol hemm konverżazzjoni interessanti ħafna
li dan kollu jista 'jwassal eventwalment għal, hekk tirrealizza li aħna qed biss grif tal-wiċċ
ta 'dak li jista' eventwalment għalik jew proġetti tiegħek issir pjuttost ftit ta 'data kbar.
>> Ma 'dak imsemmi, ejja jieqafx hawn, u aħna ser tara inti ġimgħa d-dieħla.
[CS50.TV]