[Jwe mizik] DAVID J. Malan: Tout dwa. Byenveni tounen. Sa a se CS50. Sa a se nan fen semèn 8. Epi kòm ou konnen, nou gen bèl lè biwo regilye nan yon kèk nan koulwa yo kote moun, ki gen ladan Annenberg. Se konsa, kèk nan ekip la dous pran kèk foto dènyèman. Ak nan onè nan Halloween, nou te panse nou ta pataje youn ki olye kenbe nou pa sipriz isit la nan Annenberg Hall jis lòt nwit la la. Jakòb kondisip klas ou poze pou foto sa a, men te plis amizan te sou Facebook, qui a konvèsasyon sa ki te rive apre sa. Post premye fwa li nan repons foto l 'te sa a. Yon kèk minit pita, li te deside nan yon sèl moute kò l 'ak sa a. Li te ale nan Lè sa a, pou yo ale nan sa a, ak Lè sa a, menm plis amusant se lè manman l 'chimed nan. Lè sa a, finalman, li sanble sa a te jis yon artifices bèl bagay pou yon jwe ki k ap pase sou. Se konsa, si ou ta renmen wè Jakòb ak lòt moun, nan mitan yo Cynthia mang, ki moun ki nan dèyè sèn nan nan anplwaye zòn CS50, tèt nan sa a URL ak jwe sa a isit la. Se konsa, san yo pa plis tarde, jodi a nou kontinye gade sa a nan pwogram entènèt, ak kreyasyon an aktyèl la nan pwogram ki pa kouri nan liy lòd ou, men olye kouri andedan nan yon navigatè. Assume, koulye a, oswa trè yon ti tan, w ap ale yo dwe nan mitan an nan mete ann aplikasyon pwòp sèvè wèb ou a, ki se diferan de pwogram entènèt. Sèvè wèb la nan pset6 se tout sou ekri lojisyèl ki konnen ki jan yo pran Demann HTTP ki sòti nan yon navigatè, oswa menm nan men ou, yon moun, ak yon pwogram yo rele telne, ak Lè sa a, reponn a demann sa yo swa pa voye krache deyò yon dosye HTML, oswa yon jpeg, oswa yon gif, oswa menm yon dosye php. Men, avèk yon sèvè sit entènèt, li pa sipoze jis louvri yon dosye PHP, yon bagay ki mete fen nan php, ak Lè sa a, krache soti sa ki. Li nan sipoze fè sa yo dwe ki dosye premye? Se konsa pale. Pa konpile li, nou te di nan Lendi, men rather-- Se konsa, esplike l '. PHP nan yon lang entèprete, epi konsa youn nan karakteristik yo kle nan entènèt ou sèvè, kwake aplike pa nou, se kapasite sa a pou sèvè entènèt ou a yon avi, o. Sa a se yon dosye ki mete fen nan php. Kite m 'pa jis voye li nan la itilizatè tankou li nan kontni estatik, men pito kite m 'li li l' liy pa liy, gòch a dwat, ak entèprete li. Ak fè, ke ou mesye pral esansyèlman bote nan yon pwogram nan aparèy la, ak sou yon anpil nan sistèm òdinatè, jis rele PHP. Sa se non an nan PHP a pwòp entèprèt lang an. Se konsa, ki moso nou aplike pou ou, epi sa ki rete pou ou, finalman, se yon nimewo nan moso, nan mitan ki ap aplike sipò pou kontni estatik. Men koulye a,, epi ak pwoblèm mete sèt, w ap pral kòmanse tranzisyon nan aktyèlman ekri kòd la PHP ki vin entèprete nan pale nan yon fen tounen baz done ki estoke enfòmasyon. Se konsa, kite a pi byen konprann premye yon koup la superglobals sa yo ak jis ki jan anpil pouvwa ou jwenn soti nan bwat la pou gratis ak yon lang tankou PHP. Bagay sa yo ou pa gen aplike tèt ou. Se konsa, nou te wè nan Lendi $ _GET, ki se yon supèrglobal, ki se jis PHP pale pou yon mondyal varyab ou kapab jwenn aksè nenpòt kote. Ak sa ki nan andedan nan $ _GET? Ki sa ki nan andedan nan sa a supèrglobal ke nou wè? Se vre wi estatistik nan omwen yon moun konnen. Ki sa ki nan andedan nan $ _GET? Yeah? ODYANS: Se varyab yo ou mete nan fisèl la rechèch. DAVID J. Malan: pafè. Li nan varyab yo ou mete nan fisèl la rechèch. Se konsa, nan pi gran egzanp nou an nan reimplementing Google lè nou te gen yon URL, ak Lè sa kesyon make, ki demarcates kòmansman an nan HTTP paramèt, lè sa a nou te gen q egal yon bagay, tankou q egal chat, sa ki ta otomatikman ale andedan nan ki $ _GET super mondyal pou ou, paske nan PHP, se yon kle nan Q, ak ki gen valè ladan l 'nan chat. Nan lòt mo, $ _GET ak tout nan bagay sa yo se ranje asosyatif, tab regle nan kalite, ki kle magazen ak valè. Koulye a, tounen nan pset5, regle la tab ou ta ka te aplike, oswa eseye nan ou ta ka te aplike, reyèlman te efektivman yon asosyatif etalaj, yon estrikti done kijan ou ka asosye kle ak valè. Men, nan pset5, valè yo te trivial. Valè a te esansyèlman vrè oswa fo. Se pawòl Bondye a nan diksyonè a? Se konsa, lè ou ache yon mo tankou pòm yo wè si pòm se nan diksyonè a, fonksyon chèk ou prezimableman tounen vre oubyen fo. Se konsa, sa a, se efektivman an valè nou ap vin tounen. Men, nou te wè nan Lendi yon ti tan, ou kapab sètènman asosye plis enteresan valè pase jis vre oubyen fo ak kle, tankou pòm. Ou te kapab aktyèlman retounen yon abitrè fisèl, ak tout bon, se sa ki $ _GET ak sa yo lòt varyab kite ou fè. Se konsa, $ _POST se menm jan nan lespri, men si ou soumèt yon fòm via pòs, yon metòd HTTP diferan sa a, se itilize pou bagay sa yo tankou kat kredi, ak enfòmasyon prive, e menm enfòmasyon binè tankou foto, bagay sa yo fini andedan nan $ _POST. Ak aktyèlman pou dosye tankou JPEGs ak etajèr, gen nan menm yon lòt, sa a pa moute isit la rele $ _FILES kòm byen. Se konsa, sèvè nou pa pral rete sou twò anpil, men li ba ou aksè sòt nan pi ba nivo detay sou sèvè a tèt li ke w ap lè l sèvi avèk. Bonbon ak sesyon, menm si, nou pral efektivman wè kounye a. Dènye a se sa nou itilize yo aplike nosyon de yon shopping cart. Yon yon sèl super senp, men sonje ke nou te gen egzanp sa a isit la, konte konbyen fwa ou te vin vizite paj sa a anvan. Men, jodi a, olye ke jis gade nan efè a nan sa a, se pou yo louvri moute Enspektè Chrome a, kote ou ka anjeneral fè pa klike oswa kontwòl dwa klike nenpòt kote sou yon paj entènèt, ak Lè sa a chwazi enspekte eleman. Oswa ou ka ale nan meni an ke nou dekri nan espèk pset6 la. Men, mwen pral nan tab la Rezo isit la, e kite yo gade pou yon moman trafik la HTTP sa a, se ale retounen ak lide. Kite m 'premye ale pi devan ak kachèt klè Chrome a. Se konsa, kèk nan ou ta ka dwe abitye ak teknik sa a deja, epi nou ap ale nan sèvi ak li pou debogaj rezon isit la. Koulye a, nou kòm òdinatè syantis yo ale nan kòmanse fè sa pou debogaj rezon, annakò ak sa nou pral klè kachèt la, tipikman, pou nou ka debarase m de bagay sa yo rele bonbon. Se konsa, w ap pwobableman abitye jeneralman ak sa yo se bonbon, oswa omwen yo ke yo egziste, men sa ki nan konpreyansyon ou nan yo, kòm jis yon itilizatè nan òdinatè, ki sa ki yon bonbon? Yeah. ODYANS: Li yon ti jan of-- byen, pa ti jan nan yon tèm de syans òdinatè. Li se yon moso nan done ke yon sit entènèt voye ba ou yo nan lòd pou kapab ekri estatistik sou ou. DAVID J. Malan: OK, bon. Se konsa, li yon moso nan done ke yon sèvè, mete sou òdinatè w lan, e kite yo jeneralizasyon li menm plis, li nan yon kle value-- byen, ki nan ap resevwa plis presi. Li se yon moso nan enfòmasyon, yon moso nan done, ki yon sèvè se kapab mete yo sou òdinatè w lan ak trè souvan, sèvè a fè sa a se konsa yo sonje ki moun ou ye. Se konsa, pou egzanp, chans yo se w ap pwobableman louvri sesyon an sit tankou Facebook, oswa Gmail, oswa lòt moun anvan, epi ou ouvri sesyon an ak ou non itilizatè ak modpas, ak Lè sa a apre sa, pou kèk nimewo nan minit oswa èdtan oswa menm jou, sèvè a sonje ke ou se, an reyalite, louvri sesyon an. Koulye a, ki jan se ki aktyèlman rive? Paske w ap sètènman pa retyping non itilizatè ou an ak modpas chak fwa ou navige nan yon diferan paj sou Facebook. Se konsa, li vire soti nan bonbon yo se repons lan. Yon bonbon ou ka panse a kòm, sòt de renmen, yon men dijital koupon pou achte ke ou ta ka jwenn nan yon amizman pak oswa yon klib ki esansyèlman endike ou te isit la anvan, epi ou te deja montre ID ou a BOUNCER a, pou egzanp, e ke klib la oswa pak la ta dwe kounye a asime ke ou te otantifye deja. Ou te deja te idantifye pa li. Se konsa, avèk ki nan tèt, kite a louvri moute kontwa isit la. Kite m 'ale pi devan, mwen jis te fè, epi ki klè tout nan bonbon mwen. Epi, koulye a sa m ap pral fè se kenbe Shift, jis pou bon mezi, ak lafòs Reload paj la. Shift jis asire w ke ke pa gen anyen vin kach. Ak isit la nan demann lan ki te retounen ak lide. Se konsa, sou isit la nou gen yon demann, epi kite m 'rale nan desann isit la, ak yon anpil nan sa a se detay sòt de entérésan pou kounye a ke navigatè a gen otomatikman voye, men kite a klike sou View Sous yo wè tèt yo anvan tout koreksyon. Men, si ou te plonje nan pset6 deja, ou pral sètènman rekonèt bagay sa yo tankou sa a, e petèt kèk nan lòt liy sa yo isit la, men sa ki nan plis enteresan pou jodi a si mwen desann, nou pa demann lan men yo repons lan sa yo rele, liy sa a pwobableman sanble yo konnen yo. Sa se yon bon bagay lè ou wè yon OK 200. Aparamman sa a se nan dat ak lè sou sèvè a ak gen nan yon pakèt moun sou lòt bagay. Oh, sa a se enteresan. Vire soti chak fwa ou sèvi ak PHP, omwen nan sa a sèvè, sèvè a krache soti sa vèsyon an PHP w ap itilize. Ki, aktyèlman, pou sekirite rezon, se pa yon bon bagay. Men, nou pral tounen vin jwenn ke kèk tan ak lòt petèt. Men koulye a, sa a se liy lan juicy jodi a, epi nou te wè yon ti tan kèk nan sa yo, Mwen panse ke li ak Facebook lè nou poked alantou Enspektè a nan tan sa a, seri bonbon se sa ki plante ki ti kras moso nan enfòmasyon sou òdinatè w lan. Sa a se yon header HTTP sa a, se efektivman di navigatè ou a, Chrome, IE, kèlkeswa sa, hey magazen navigatè sou la nan itilizatè kondwi difisil, oswa nan RAM itilizatè a, yon kle rele PHPSESSID, ki se yon notasyon steno pou ID sesyon, ak ba li yon valè de 0vlk8t, dot, dot, dot. Yon pseudo reyèlman long o aza alfa fisèl. Se jis nan yon reyèlman gwo nimewo, men li nan kode ak lèt ​​ak nimewo se konsa ke gwosè a nan li kapab menm pi gwo pase nimewo pou kont li. Epi lè sa a, nan chemen an, Path = /, ki jis vle di ke bonbon sa a ta dwe ki asosye ak nan antye nan sit wèb la, pa jis yon espesifik paj tout bagay la. Se konsa, sa a se ke koupon pou achte men vityèl. Li nan tankou si sèvè a, Facebook, oswa nan ka nou an aparèy la, gen 0vlk8t literalman ekri ak pou fè, sou men ou. Avi sa sèvè a, pa fè se li nan pa estoke non itilizatè mwen an, sètènman pa estoke modpas mwen. Olye de sa, li parèt yo dwe estoke enfòmasyon pseudo o aza Konsa, pesonn pa ka devine sa koupon pou achte men m 'se. Sou bò sèvè, pandan se tan, sèvè a ki pral sonje, pwobableman nan yon baz done oswa yon bagay, ki itilizatè a, ki moun ki nan tan kap vini an prezante yon koupon pou achte men nan 0vlk8t, dot, dot, dot, yo ta dwe ki asosye ak sa a shopping cart patikilye, se konsa pale. Nan lòt mo, si mwen kounye a ale tounen isit la ak Reload paj sa a, ki jan sèvè a konnen ke mwen te vizite yon sèl fwa? Oswa si mwen fè l 'ankò, ki jan fè sèvè a konnen se mwen te vizite li de fwa? Oke si mwen ale desann nan sa a pi demann ki sot pase, ki se kounye a twazyèm lan ke mwen te voye nan total, remake demann mwen kounye a. Gen se toujou sa a mande moute isit la, menm tankou anvan, gen nan toujou yon pakèt antye nan bagay ke nou te inyore tankou anvan, men trè dènye header a, sa a tan, paske Mwen te isit la anvan, se yon prezantasyon nan sa a koupon pou achte men vityèl. Annakò ak sa liy sa a isit la, pa mete bonbon men kolon bonbon PHPSESSI = 0vlk8t, sa se sèlman navigatè mwen an otomatik prezantasyon nan koupon pou achte men sa a pou ke kounye a sèvè a, le pli vit ke li reyalize, Ooh, sa a se 0vlk8t itilizatè dot, dot, dot, Mwen kapab kounye a sonje ki li oswa li te se ak reassociate ak ki itilizatè tou sa enfòmasyon mwen vle, ak tout nan ka enfòmasyon ki dwe estoke pa ou, pwogramè a, nan $ _SESSION. Se konsa, yo dwe klè, si mwen louvri moute reyèl rapid nan jdi ki dosye aktyèl, counter.php, nan lame lokal yo anyè piblik m ' tankou anvan, remake ke, tout bon, Mwen finalman estoke nan $ _SESSION Quote unquote "vann san preskripsyon," valè a nan kontwa an anvan yo ki Mwen jwenn soti nan liy sa yo moute isit la ke nou gade dènye fwa plis yon. Se konsa, anba kapo a, ki nan tout bonbon yo. Se jis sòt nan nan dijital koupon pou achte men ale retounen ak lide, ak franchman si ou louvri Chrome a Enspektè sou nenpòt sit entènèt ou vizite jodi a, ak super gwo pwobablite, w ap ale nan wè petèt yon sèl, petèt mwatye yon douzèn bonbon ke yo te vin chonje pa ou. Epi pi mal ankò, si moun sit entènèt w ap vizite tout gen piblisite, ki se sètènman byen komen jodi a, epi si moun ki piblisite yo vini nan kèk pati santral, yon moun tankou Google advor oswa menm jan yo rele youn nan pwodwi yo oswa lòt fournisseurs sa yo ki vann piblisite, sa ki nan enteresan, ak franchman sa ki nan yon ti kras inkyétant, sou ki jan HTTP ap travay, se ke si ou gen yon anons embedded nan Facebook.com, ak Google.com, ak Harvard.edu, nenpòt ki kantite nan sit entènèt, se konsa li nan tankou ke gen nan yon nonm nan mitan ki moun ki la ap ofri sèvis up ads pou tout twa nan sit entènèt sa yo, li vire soti ke nan bonbon yo se pou chak domèn. Se konsa, si ou gen yon anons ki sòti nan la menm konpayi sou sit entènèt diferan, ke konpayi ka efektivman swiv ki moun ki ou se atravè tout nan sit sa yo. Harvard pa ta ka konnen w ap vizite Facebook. Facebook pa ta ka konnen ak w ap vizite Harvard. Men, tou sa sèvis anons yo ap lè l sèvi avèk si sa domèn se prezan nan tou de entènèt Harvard.edu paj ak Facebook.com webpages, sa a nonm nan mitan siman konnen ki moun ou ye paske nan sa yo bonbon ke yo te pataje atravè, ou pito, ki sa yo rele entèrmedyèr. Se konsa, nou pral tounen vin jwenn sa a nan enplikasyon sekirite ladan l ', men gen nan yon anpil nan enfòmasyon ke yo te ki estoke sou ou nenpòt ki lè ou vizite pi nenpòt paj entènèt sou entènèt la ak li vrèman diminye sa a mekanis trè senp. Kisa k ap pase, lè sa a, si w ap super paranoya epi ou deside ale nan Chrome oswa IE oswa kèlkeswa sa epi fèmen bonbon ou a? Kisa k ap pase? Yeah? Ou really-- ou te fè dwa sa-a? OK. Non, ale pi devan. ODYANS: Sèten sit pa gen yon fonksyon san li renmen Facebook. DAVID J. Malan: Yeah! Se konsa, sèten sit pral jis sispann travay. Ak nan pifò sit jou sa yo ki fondamantalman konte sou bonbon, espesyalman si yo gen ou ouvri sesyon nan yo, yo ap jis ale nan kraze. Paske konsidere nan altènatif, si sit entènèt la pa gen okenn fason pou sonje ki moun ou ye, ak Se poutèt sa navigatè entènèt ou se pa repwezantan ak tout HTTP demann nan koupon pou achte sa a men, efektivman yon sit entènèt tankou ale Facebook a fè yo fè w ouvri sesyon an chak fwa reprize ou chanje paj, oswa klike sou yon lyen, ki se siman pa yon itilizatè patikilyèman bon eksperyans. Se konsa, ki la, tou, se nan mitan konpwomi yo komès. Se konsa, san yo pa plis tarde, kite a pran pou yo akòde ke ak pwogram entènèt, nan lang tankou PHP, ou ka sonje enfòmasyon tankou sa nan pwoblèm mete sèt lè ou aplike pwòp ou a E * Komès ki tankou sit entènèt ak ki yo achte ak vann aksyon, ou pral sonje egzakteman sa ki te itilizatè a te achte ak vann ak ki moun ki li oswa li te se pa fason pou sesyon sa a. Men, nou ap ale nan bezwen yon fason amateur pase imel yo kòmanse kenbe enfòmasyon alantou. Dwa? Nan Lendi, nou te pale de IMS Frosh ak ki jan nan vèsyon youn nan ki sit entènèt, ane de sa, tout sa nou te fè te imèl Proctor nan moun ki nan an chaj nan espò yo anndan kay pwogram, non an, ak sèks nan, ak si wi ou non yo se yon kòmandan, ak dòtwa a nan yon moun ki nan enskri pou yon espò intramural. Se konsa, li pa move, men li oswa li te Lè sa a, te gen nan trol nan imel yo, fè yon calcul oswa yon bagay tankou ki, nan kenbe tout bagay òganize. Se konsa, siman nou kòm pwogramasyon ka fè sa pou sa siveyan. Se konsa, antre nan nan SQL, Estriktire rekèt Lang, ki se ale nan gade bèl diferan nan tou de C ak PHP, epi ou pral plonje nan pi plis men sou PHP ak pwoblèm mete sèt, men tou SQL, oswa SQL, sa a se yon lang ki ou itilize pou pale ak yon baz done. Men, sa ki nan yon baz done? Byen ou panse a yon baz done, omwen pou kounye a, kòm jis ke yo te tankou yon dosye Excel, oswa si ou se yon Mac itilizatè yon nimewo dosye, oswa si ou se yon Google Apps itilizatè yon calcul Google, li nan efektivman yon baz done, oswa reyèlman espesyalman yon baz done relasyon. Yon baz done relasyon se jis yon bagay ki gen ranje ak kolòn, epi ou ka magazen nenpòt kalite enfòmasyon nan ranje sa yo oswa kolòn. Men, sa ki nan bèl sou SQL, ak sou baz done aktyèl, pa sèlman tableur oswa Google tableur, se ke ou ka sèvi ak yon lang aktyèlman egzekite demann Insert done, yo retire done, yo gade pou done, menm sa ki pi enpòtan, epi ou pa gen yo sèvi ak li san patipri manyèlman jan ou ta ka tipikman yon Google calcul tankou sa a. Se konsa, nan SQL, gen nan yon pakèt moun sou deklarasyon fondamantal oswa moso nan fonctionnalités bati nan. Genyen anpil plis pase sa yo, men ou ka ale yon distans gwo jis pa konnen ke lang sa a yo rele SQL gen nan omwen kat deklarasyon ou ka ogmante. Efase, pou retire done, Antre, pou ajoute ranje, Mizajou, pou chanje ranje, ak Chwazi, pou jwenn tounen ranje ak sa a, se tout bon ki sa SQL fè. Li opere antyèman sou ranje se konsa ke lè ou insert, oswa retire, oswa aktyalizasyon, oswa chwazi sa w ap ap resevwa tounen tankou yon sa yo rele rezilta seri, tankou yon etalaj de ranje. Yon pakèt moun ranje ki sòti nan yon tab. Se konsa, tounen nan jou a, e menm nan jou sa a, ou ka kominike avèk la baz done lè l sèvi avèk yon liy lòd, men li la pa patikilyèman plezi yo sèvi ak fenèt sa a nwa ak blan style ak aktyèlman egzekite kòmandman ak pike alantou baz done ou. Yon koòdone itilizatè grafik, oswa entèfas, se pi plis preferab, joui, epi konsa zouti nan nou rekòmande ak vini tou enstalé pou ou sou aparèy la yo rele fpmyadmen. Li se yon konyensidans manm ki la non bagay sa a gen PHP nan li, li jis vle di ke moun yo ki te ekri pwogram sa a tèt yo te ekri li nan PHP. Men, li la finalman sou administre yon sèvè baz done, tankou yon sèvè MySQL ke ou ta ka gen, menm jan ou fè, nan aparèy la CS50. Se konsa, gen nan plis detay isit la pase nou bezwen pran swen sou jodi a, men sa ki nan kle se ke sou bò gòch la bò men se yon lis baz done yo ke ou gen sou òdinatè ou, sou aparèy CS50 ou, oswa vini pwojè final ke ou ta ka gen sou yon twazyèm pati, yon konpayi a sit entènèt oswa sou sit sèvè, ki ou ka peye pou espas. Se konsa, sou bò gòch la se nan baz done, youn nan ki se pset7 ki mwen prete nan men pwochen semèn pset, ak Lè sa sou tèt la gen remake gen nan yon pakèt moun sou onglè, youn nan ki se baz done, SQL, estati, itilizatè yo, ekspòtasyon yo ak pou fè. Se konsa, ou ka ale yon long fason jis pa ka akonpli ki pi fò nan koòdone nan itilizatè se nan kolòn nan gòch anwo ak toupatou nan tèt la dwa moute la. Se konsa, sa nou ka aktyèlman fè ak sa a? Oke, kite la kòmanse kreye yon ti jan nan enfòmasyon jan sa a. Sipoze sa ki annapre yo se ka a, kòm yo pral nan jis yon kèk jou, ou vle aplike yon sit entènèt, ki rele CS50 Finans, ak sit entènèt sa a pèmèt ou achte site unquote ak vann aksyon. Epi li k ap pase yo konnen pri a nan tout sa yo aksyon, finalman menm jan ou pral wè, pa pale ak Yahoo Finans. Ki, bèl, te gen yon sèvis gratis kijan ou ka pase nan yon montr stock tankou GOOG pou Google, epi li pral ba ou tounen stock aktyèl Google la pri nan sot pase a kèk minit omwen. Se konsa, ou pral sèvi ak sa, finalman, pretann pou itilizatè a yo achte ak vann aktyèl aksyon lè l sèvi avèk lajan vityèl, men trè premye bagay la itilizatè a nan ale nan wè se sa a ekran login a mande yo pou non itilizatè yo ak modpas ou. Se konsa, youn nan premye a defi pou ou nan pset7 a pwal aplike fen a tounen baz done, calcul a si ou vle, ki k ap pase nan magazen itilizatè non ak modpas epi finalman ki sa aksyon yo posede, ak ki jan anpil, ak konbyen lajan lajan kach yo gen, se konsa yon pakèt moun sou lòt bagay sa yo nan lòt tab, oswa tableur. Se konsa, kite a pran yon gade nan ki jan sa a ta ka parèt nan premye gade. Mwen pral tounen nan aparèy la ak mwen se ale pou yo ale nan sa a URL isit la fpmyadmen localhost / fpmyadmen epi ou pral wè ke li pran m 'nan yon koòdone egzakteman jan nou te wè sou la piki ekran, ak isit la mwen gen yon baz done adisyonèl rele konferans pou jodi a ak kite m 'ale pi devan premye, epi klike sou pset7. Mwen sanble yo gen yon koup nan opsyon, yonn pou nouvo, pou kreye yon tab nouvo, ak yon ap mennen nan itilizatè yo, ki se yon tab mwen deja kreye. Se konsa, sa ki nan yon tab? Se konsa, si ou te itilize Excel anvan, epi si ou te nimewo itilize oswa Google Tableur, ou louvri moute yon fenèt epi ou jwenn yon pakèt antye nan ranje ak kolòn, men Lè sa a anjeneral ou gen fich ansanm anba a, oswa onglè apa. Ou ka panse a chak Fèy travay kòm yon tab se konsa ke baz done, finalman, se yon konbinezon de youn oswa plis tab, yon sèl oswa plis fich, nan la mond nan yon calcul nòmal. Se konsa, kite m 'ale pi devan epi klike sou Fèy travay sa a ke mwen premade, ki rele itilizatè yo, a.k.a. Database tab. Men, si mwen desann isit la, kite m 'rale soti yon ti jan, sa a se sa fpmyadmen ap di nou se andedan nan tablo sa a kounye a. Li se yon ti kras konfizyon nan premye ti koutje sou paske UI a se pa bagay la bèl nan mond lan, men ki sa ki enteresan an se pati sa a isit la. ID, non itilizatè, ak regle. An avanse, epi ou pral men sa a nan seri pwoblèm sèt, nou ba ou yon dosye ki gen yon super ti tab baz done, prete aktyèlman soti nan edisyon an aker nan pwoblèm mete de, andedan nan yo ki gen sis ranje. Yonn pou Belinda nan tout fason desann nan yon sèl pou Zamyla, ak avi sou bò goch la nan tout sa yo usernames yo idantite inik tankou yon sèl, de, twa, kat, senk, sis, nonm antye yo, ak Lè sa a a dwat la yo se achaj. Men, si, chans yo se, ou pa t 'fè pwoblèm nan edisyon HACKER mete de, men yon hash se jis tankou yon chiffres modpas ak yon opozisyon kèk. Se konsa, sa ou wè isit la yo se vèsyon yo chiffres nan tout sis nan modpas nou yo soti nan pwoblèm mete edisyon de la HACKER. Koulye a, sou bò goch la se jis kèk bagay entèfas, koreksyon ranje sa a, kopye ranje sa a, efase ranje sa a. Men, sa ki nan enteresan kounye a se sa ki annapre yo. Mwen ka aktyèlman kòmanse fè eksperyans avèk tablo sa a. Se konsa, si m 'ale, epi klike SQL an tab, mwen jwenn sa a bwat tèks gwo. Lè sa a se pa ki jan nou ap ale nan fè l 'lè aktyèlman ekri kòd. Pou yo kapab klè, fpmyadmen se jis yon zouti sa a, se ale nan kite nou pike alantou baz done a ak fè nou eksperyans ak demann. Se konsa, pou egzanp, ann sipoze Mwen egzekite egzakteman sa a. Chwazi, ki se youn nan moun ki mo kle mwen mansyone pi bonè, zetwal, ki reprezante tout kolòn yo nan yon tab. Soti nan ki sa tab? Oke, itilizatè. Ak Avi gen nan sa a etranj konvansyon nan SQL kote ou aktyèlman sèvi ak tounen tik, tipikman, quotes pa yon sèl ak quotes doub pa lè ou pale sou tab non, se konsa quote la tounen se bagay ki sou la tèt men gòch nan klavye ou pi gen anpil chans. Se konsa, kite m 'ale pi devan koulye a ak jis kite ki pou kont li ak woulo liv desann ak klike sou Ale, epi nou ap aktyèlman pral wè menm bagay la. Nou te jis egzekite yon sijè rechèch SQL li di chwazi zetwal tout bagay soti bò tab rele itilizatè yo, ak ki sa ou jwenn tounen se sa a. Alafen, nou pral kapab fè sa menm bagay nan kòd, men pou kounye a tout mwen te vle te wè li nan navigatè m 'yo. Oke kite a fè yon bagay yon ti kras diferan. Kite m 'ale tounen nan tab la SQL, e kite yo jis di ke ki sa? Zamyla te pèdi tout nan li lajan, ak Se poutèt sa li a tan pou nou efase li kòm yon itilizatè. Li nan pa gen okenn ankò antre nan. Se konsa, mwen pral di efase from-- byen, kenbe lèt majiskil pou konsistans, efase soti nan itilizatè ki kote. Se konsa, nou ka gen sa yo atribu, oswa sa yo kalifikasyon, nan fen deklarasyon mwen kote ak ki jan te kapab mwen efase Zamyla? Pa non li Zamyla, se konsa nan kolòn, youn nan kolòn yo te rele, se konsa kote non = "Zamyla". Ak isit la mwen sèvi ak doub quotes oswa quotes sèl, ou sèlman itilize do a tik lè ap pale de non yo, pou egzanp, nan tab oswa jaden. Ak kite m 'klike sou Ale isit la. Epi, koulye a, paj wèb la se ke yo te yon ti kras krispe. Oswa, ou reyèlman vle egzekite efase soti nan itilizatè kote non egal Zamyla? Wi. Se konsa, koulye a, si nou tounen nan tab avè m ' pa klike itilizatè yo, remake ke Hm. Mwen goofed. Ak an reyalite, mwen kalite klike lwen tèlman vit ou pa t 'menm wè la wouj mesaj erè, petèt. Ki sa m 'fè ki mal? ODYANS: Ou pa t 'bezwen tirer non li. DAVID J. Malan: Yeah mwen kapitalize non li, men li username-- aktyèlman mwen te fè yon erè koup, dwa? Youn, non itilizatè li se Zamyla, miniskil Z, ak non an kolòn se non itilizatè, pa non, se konsa kite a fè sa ankò. Kite m 'ale pi devan epi efase soti nan itilizatè ki kote non itilizatè egal quote unquote "Zamyla". Tout dwa? Se konsa, sa sanble yon ti kras pi byen, se pou m 'ale desann, epi klike ale. Li nan toujou ale nan rele nan m 'yo dwe asire. Mwen klike Wi, e kounye a, nou wè, franchman sa te rive, reyèlman vit, mwens pase yon dezyèm sètènman, sa a se egzakteman rechèch la ke yo kouri egzekite. Konfime, kite m 'klike sou itilizatè ak tout bon kounye a Zamyla se ale. Koulye a, kite a fè opoze an. Sipoze ke Gabe vle enskri pou sit entènèt la. Ki sa ki nan rechèch la SQL, sa ki nan la lòd mwen te kapab tape yo ajoute Gabe? Oke li a trè senp. Insert nan itilizatè yo, e kounye a, li vin yon ti kras skre. Mwen bezwen presize, nan sèvè a, sa jaden mwen vle asiyen. Mwen pa reyèlman sousye sa ID Gabe a Nimewo a se, se konsa mwen pral sote sa. Mwen olye pou ale nan di non itilizatè, regle, ak Lè sa a valè yo mwen vle mete gen a pwal Gabe. Lè sa a, regle l 'yo, mwen pa konnen. Se konsa, pou kounye a, mwen pral kite ke kòm yon gwo fè. Nou pral tounen vin jwenn ke nan pwoblèm nan mete espèk ki di kòman ou aktyèlman fè sa. Se konsa, remake, ankò, sentaks la. Insert nan non tab, lè sa a yon lis parenthesized nan jaden yo, kolòn yo ou vle ajoute valè, ak Lè sa jis menm kòmann-nan an egzak gòch a dwa nan valè yo ou vle ajoute, ak li jis vlope paske tèks la se yon ti kras long. Se konsa, kounye a kite m 'klike sou Ale. Yon sèl ranje eleman. Epi, koulye a si mwen tounen nan itilizatè yo, sa ki nan enteresan se ke pa sèlman se Gabe kounye a nan la baz done, ki sa ki aparamman ID l '? Oke li nan sèt. Poukisa li sèt lè mwen pa t 'ajoute li? Se konsa, sa a, tou, se youn nan la karakteristik ou jwenn nan baz done a. Yon anpil nan bati nan fonctionnalités. Li sanble ke lè kreye tablo sa a, Mwen prekonfigure li nan otomatikman asiyen yon ID nan yon fason ke li ogmantasyon. Se konsa, si ou te janm poked alantou li, , li gade ID Facebook ki sa ou Nimewo a se, jou sa yo li pa vrèman yon bagay fè, men Facebook kòm yon API, Aplikasyon pou pwogramasyon Entèfas, annakò ak sa ou kapab jwenn tounen yon pakèt antye nan done sou tèt ou, sou zanmi ou, ak koneksyon ou. Ak sa ki itilize yo dwe kalite nan fre, li tounen nan jou a, te yo gade jiska sa ou Nimewo ID Facebook te ye a. Mak Zuckerberg la, pou egzanp, se twa depi li te otè a nan sit la. Epi kòm istwa a ale, li te kreye de kont tès, itilizatè yo youn ak de, ki li Lè sa a, efase. Se konsa, Zuck, kòm se non itilizatè l ' sou Facebook, se nimewo ID twa, ak tout moun nan nou gen nimewo pi pi gwo pase twa jou sa yo. An reyalite, nan kèk pwen Facebook te deplase lwen soti nan menm lè l sèvi avèk yon int, ki se yon valè 32-ti jan, lè l sèvi avèk Pwochen etap moute a, esansyèlman se yon lontan lontan ke yo te kapab akomode menm plis itilizatè enskri. Se konsa, yon plezi ti kras reyalite istorik. Se konsa, sa se sèlman nan sentaks debaz ak ki nou ta ka egzekite yon koup la demann, men nou ka aktyèlman fè yon pakèt moun bagay sa yo ak plis SQL. Epi ou pral wè, finalman, nan pwoblèm nan mete sèt ki di ou gen fè yon kantite desizyon konsepsyon, nan mitan yo a pwal ki sa done kalite yo sèvi ak. Se konsa, jis tankou nan C, gen done kalite nan yon baz done, tankou miskl, ak kalite yo done ou gen yo chwazi soti nan gen ladan sa yo jaden yo isit la. Char, varchar, Int, gwo Int, desimal ak dat tan, ak anpil lòt moun. Se konsa, kite a aktyèlman fè sa. Se pou nou pretann ke nou pa t ' men ou tab itilizatè sa a ak kite m 'ale pi devan epi kreye, pou tèt mwen, nan konferans yo baz done aktyèlman, kite m 'ale pi devan epi efase tab la mwen gen nan isit la deja pou nou ka aktyèlman kreye sa a. Whoops. Mwen pral lage sa a tab, e kounye a, mwen se pral ale ankò nan la konferans baz done sou isit la, Mwen pral kreye yon tab rele itilizatè yo ak kite la jis fè twa kolòn okòmansman ak klike sou Ale. Koulye a, pou pati ki pi, ankò, sa a se jis lè l sèvi avèk zouti sa a yo rele grafik fpmyadmen, ak sa n ap fè kounye a se kreye yon tab. Se konsa, sa a se tankou ale File, New, ak kreye yon dosye nouvo Excel. Se konsa, li mande m 'yon kèk kesyon, de gòch a dwat, sa ki nan non an nan premye kolòn nan, ak Lè sa a non an nan dezyèm kolòn nan, ak non an nan twazyèm lan. Se konsa, kite a rkree sa a. ID, ak Lè sa a non itilizatè se te youn, ak Lè sa a regle te yon lòt. Se konsa, sa yo ta dwe kalite a done gen kounye a pou yon jaden tankou ID? Isit la se lis la tout antye nan kalite done disponib nan ou nan yon baz done, ak pou kounye a kite a jis ale ak Int. 32-ti jan valè, mwen pa fè sa panse pli reyèlman mwen se ale nan gen plis pase 4 milya dola itilizatè yo nan kont mwen, nan sèvis mwen, se konsa mwen pral kenbe k ap deplase sou nan pwochen kesyon an. Mwen pa pwal ou presize yon longè oswa valè, li nan pa aplikab isit la pou yon int, se pou chak. Koulye a, mwen ka presize, aparamman, yon default valè, ki Mwen pa pwal ou presize. Yon regwoupman, mwen pa konnen ki sa ki se. Yon atribi. Koulye a, nou aktyèlman fè gen yon desizyon konsepsyon. Se konsa, gen nan yon jaden kèk isit la, se pa tout nan yo ki aplikab, men siye jis vle di ki sa? Sa Int a dwe? Jis ki pa negatif. Se konsa, li gen yo dwe 0 sou yo. Non, mwen pa pwal yo tcheke paske Mwen vle chak itilizatè yo gen yon ID, li pa ka nil. Epi lè sa a, nou jwenn nan kèk plis desizyon konsepsyon enteresan tankou sa a. Nou pral tounen vin jwenn sa a nan yon moman, men sa ki yon lòt karakteristik nan baz done se, se ke ou ka di sèvè a baz done ale pi devan ak optimize tèt ou, ou RAM ak espas difisil ki gen kapasite ou, se konsa ke chwazi, ak foure, ak supresyon, e li dènye nouvèl yo se reyèlman vit. Konpare sa ak pset5. Si ou te vle gade moute yon bagay nan tab regle ou a, ki ou panse a kòm yon baz done, ki moun ki te fè nan tout travay pou fè tab regle ou vit. Se tankou, evidamman, ou. Dwa? Ou te gen yo mete nan tout bon nan tan akor bagay sa yo, ap resevwa yon fonksyon regle dwat, n ap kalkile konnen ki jan anpil bokit genyen. Men, sa ki nan bèl, ankò, sou yon baz done se ou jis bote tout nan sa a bay lòt moun ki te te panse sa a a pou ou, ak sa ki Mwen pral di isit la anba endèks se ke jaden ID m ' a pwal fason a prensipal la idantifye itilizatè nan baz done sa a. Mwen pa pwal yo panse nan Zamyla kòm Zamyla, Mwen pral panse a li kòm nimewo a 6. Poukisa li, petèt, pi bon entwitif nan panse a ak modèl chak nan ranje endividyèl ou lè l sèvi avèk yon nimewo olye pou yo yon bagay tankou yon fisèl, tankou Zamyla a oswa Gabe oswa pi lontan fisèl toujou? Yeah? ODYANS: Yon ID se inik? DAVID J. Malan: Di ankò? ODYANS: Yon ID se inik? DAVID J. Malan: Yon ID se inik, men suppose-- kòm ka a an jeneral ak usernames, ann sipoze Mwen menm mwen te di gen ka sèlman yon sèl Zamyla nan mond lan, ak sèlman yon sèl Gabe. Mwen te kapab enpoze singularité a contrainte sou strings, tou, si mwen te vle. Se konsa, pa yon move panse. ODYANS: Plis an sekirite. DAVID J. Malan: Plis sekirite, poukisa? ODYANS: Ou pa ka di ki se ki, tankou nan itilizatè a. DAVID J. Malan: OK, ou pa ka di ki itilizatè se ki se konsa gen nan yon aspè vi prive nan li, espesyalman si idantite yo petèt parèt nan URL la. Se konsa, asire w, ki te kapab kalite travay, tou. Lòt panse? Yeah? ODYANS: Li pi fasil fè operasyon sou yon int. DAVID J. Malan: Sa a kicker a reyèl. Se jis nan pi efikas, oswa vin pi fasil pou òdinatè a, fè operasyon sou yon nonb antye relatif. Dwa? Yon int garanti yo gen 32-ti jan, Lè nou konsidere ke Zamyla se yon karaktè kèk long, Gabriel se yon kèk plis karaktè long, Davenport se reyèlman long, ak se konsa li a pa patikilyèman efikas yo sèvi ak strings yo konpare valè ak gade pou jaden, ak jaden yo aktyalizasyon, si ou ka jwenn lwen ak sèlman yon sèl nonb antye relatif. Jis 32 miyèt moso. Se konsa, usernames, tou, fason sa a, pa gen yo dwe inik, byenke yo pwobableman ta dwe gen, e menm nan fason sa a twò te kapab yon itilizatè dwe pèmèt yo chanje non itilizatè li. Se konsa, kite a kounye a kite sa a kòm nan premye mwayen pou idantifye itilizatè a. Sa a ap di baz done a ale pi devan epi optimize tèt ou se konsa ke ups gade sou ID yo se super vit. Lavil Ayi a, oribleman yo te rele, jis vle di Auto kantite, ak sa a se chèk la bwat nou bezwen yo tcheke ou presize ke jaden an ID ap otomatikman mete ajou pou m ', ak Lè sa a, mwen pral woulo liv a dwat a isit la ak franchman mwen pa reyèlman enterese nan nenpòt ki plis nan jaden sa yo. Sètènman pa jodi an. Se konsa, mwen pral ale tounen isit la, premye kolòn nan, kote Mwen bezwen presize non itilizatè ak regle, e kite yo omwen konsantre sou la dezyèm yon sèl pou kounye a. Int se pwobableman pa rele nan dwa, Se konsa, sa fè sans pi plis petèt? ODYANS: Tèks. DAVID J. Malan: Di ankò? ODYANS: Tèks. DAVID J. Malan: Tèks? OK, mwen tande tèks. Ki lòt bagay? Nou kalite gen yon pakèt moun sou chwa ki textuelle nan lanati. Se konsa, lè, e poukisa, fè ou itilize kèk nan sa yo? Oke Char, kontreman a sa ou ta ka panse, se pa yon karaktè sèl. Li se yon kantite espesifik karaktè. Se konsa, si nou konnen ke tout usernames dwe tankou uit karaktè, kòm itilize yo dwe komen nan pi gran sistèm òdinatè, mwen te kapab di Char ak Lè sa a mwen te kapab di 8 isit la. Sa a lè twazyèm kolòn nan vin aplikab lè y ap kreye yon tab. Men, sa a kalite anmèdan paske gen kèk moun ki ta ka vle gen yon non itilizatè pi long pase uit karaktè, gen kèk moun ki ta ka vle gen yon non itilizatè ki pi kout, Se konsa, poukisa fè tèt mwen nan yon kantite espesifik yo? Poukisa nou pa gen yon varyab kantite charaktèr ak jis di ke longè a maksimòm de yon non se, mwen pa konnen, tankou 64 karaktè. Mwen pa ka panse a okenn lòt zanmi ki gen non ki pi long pase 64 karaktè, e menm si sa a twò kout ou te kapab sètènman frape l 'kanpe abitrèman. Se konsa, varchar se yon varyab kantite charaktèr. Tèks se pa yon ensten move, ak franchman ki sòt de fè sa li di, men yon jaden tèks kapab tankou 65,000 bytes omwen. Sa a pwobableman overkill pou yon jaden, ak an reyalite, wi, 65.535. Sa a pwobableman overkill pou yon non, se konsa nou pral bwa, tipikman, ak varchars pou textuelle jaden ak regle, tou. Hash, li vire soti, nou te ka fè yon varchar kòm byen oswa yon bagay tankou sa yo, men nou pa pral konsantre jodi a sou la chifreman gen ak nimewo yo ke nou ta ka aktyèlman vle pou itilize pou longè li yo. Men, kite m 'woulo liv desann nan bò dwat la. Ou kapab sèlman gen yon sèl prensipal endèks pou yon tab, men mwen vle pou aplike pou nenpòt nan sa yo, kounye a, non itilizatè, ou ta di? Ki sa ki ta non itilizatè dwe baze sou yon vag konpreyansyon yo genyen sou kat opsyon sa yo? Jis pa non yo? ODYANS: inik. DAVID J. Malan: Se konsa, inik, dwa? Se konsa, li vire soti ke pa sèlman te kapab ou di yon baz done, an avanse, sa se yon fason a prensipal pou idantifye jaden yo. Ou kapab tou di sa a se pral gen yon jaden inik. Li pa nan ale nan dwe bagay la mwen konte sou, men mwen ta renmen baz done a esansyèlman gen ke si kondisyon, se konsa ke si mwen te janm te eseye yo enskri de itilizatè yo ak menm non yo, baz done plat soti nan a pa pral kite m '. Mwen ta ka gen kèk kòd lòt nan PHP ki anpeche kòm anpil, men baz done a, tou, kapab asire ki ki nan pa janm pral rive. Koulye a, kòm yon sou kote, espesyalman kòm ou panse sou pwojè final la, kenbe nan tèt ou endèks li epi li plen tèks yo aktyèlman byen itil. Si ou gen yon baz done pi gwo, pa avèk plizyè douzèn, men ki gen dè santèn oswa dè milye oswa menm dè milyon de chan sa yo, ou kapab tou di baz done a nan avanse sa a se yon jaden, mwen pral yo dwe chèche sou yon anpil. Petèt non itilizatè li yo, petèt li nan bio, si w ap fè yon sit entènèt Facebook-tankou sa gen paragraf ki nan nan itilizatè pèmèt pou konsève pou, epi si ou vle di baz done a nan avanse Mwen pral yo dwe chèche sou teren sa a yon anpil, men li la pa nesesèman inik, ou ka presize kreye m 'yon endèks. Oswa, ou ka di tou pèmèt m 'fè sòt de rechèch abitrè tankou Kòmandman oswa kontwòl F, tankou ou ta ka nan yon processeur mo, se konsa ou te kapab gade strings abitrè oswa chèn nan sa jaden. Nan lòt mo, nou ap vin nan pwen an nan semès la kote ou pa gen enkyete sou ki jan yo aplike bagay sa yo avèk efikasite. Ou jis bezwen konnen sou sa ki desizyon konsepsyon fè pou ke ou ap lè l sèvi avèk zouti yo dwa pou la komès yo nan lòd yo ogmante karakteristik ke lòt moun te bati pou ou. Se konsa, yo Rekapitilasyon, prensipal ta dwe sèlman gen yon sèl, ou ka sèlman gen yon sèl, ak li nan bagay la w ap komèt nan lè l sèvi avèk ki idantifye jaden yo inikman. Inik se jis menm jan an nan lespri, men ou ta ka sèlman detanzantan sèvi ak li, men ou vle baz done a li enpoze li. Index jis vle di preemptively pi vit bagay sa yo moute nan tan kap vini an pou m 'ka fè rechèch pou bagay sa yo nan jaden sa a. Lè sa a, tèks konplè li se jeneralman pou paragraf, oswa redaksyon, oswa kò gwo nan tèks kote ou ta ka tou vle gen kat nan bwa tankou ekivalan a nan zetwal. Dwa. Se konsa, ki te kalite yon anpil nan tout nan yon fwa. Ann wè si nou pa ka distile yon koup la karakteristik sa yo ak Lè sa a bati yon bagay jistis senp, men pwisan. Se konsa, nan mitan lòt la desizyon konsepsyon w ap finalman ale nan gen se ansanm liy ki nan motè depo. Ak kite m 'jis fè mansyone nan sa a nan patisipe nan yon pwojè final la, ak patisipe nan yon kite a say-- pa gen okenn kite a fè sa. Se pou nou bati sa a ti kras aplikasyon an premye. Mwen pral ale nan tèminal m ' fenèt, ak nan isit la se pa sèlman counter.php, ki nou ap kounye a ale yo debarase m de kòm pa gen okenn ankò konvnabl, men nou gen yon pakèt antye nan repèrtwar ak sa a a pwal trè menm jan nan Lespri Bondye nan sa ou pral wè nan seri pwoblèm sèt. Se konsa, nou gen twa repèrtwar gen ladan piblik ak modèl, ki se egzakteman kote nou te kite sou Lendi ak tout nou an mv paradigm. Men, Rekapitilasyon, an piblik ki pral ale nenpòt ki dosye ke mwen vle itilizatè yo aktyèlman v pral kapab ale nan nan navigatè yo atravè URL. Modèl. Ki sa nou mete nan modèl? Ki kalite bagay? Pa t 'gen anpil men yon koup dosye omwen nan Lendi. Yeah. ODYANS: Header ak Footer? DAVID J. Malan: Header ak Footer. Se konsa, nou gen yon bagay ki sanble jodi a, tou. Nou te gen yon kèk plis dosye men Footer mwen wè, Header mwen wè, ak Lè sa a yon pakèt moun sou lòt dosye. Se konsa, sa a se ekivalan a de vi an V mv, ki, ankò, pral gen yon ti jan pi plis klè nan pwoblèm mete sèt, men sa a se jis yon folder mwen se mete yon anpil nan estetik mwen. Yon anpil nan HTML m 'yo, yon anpil nan fòm mwen. Pandan se tan, gen ladan, se yon lòt anyè ki gen twa sa yo dosye ak kite a pran yon gade rapid nan sa yo. Mwen pral ale pi devan epi louvri moute config.php. Kòm li vire soti, anpil tankou pi bonè nan tèm nan, ou byen file enkli CS50 dot h ak pset7. Nan egzanp jodi a, w ap ale fè ekivalan a nan ki ak yon deklarasyon mande pou ki efektivman gen ladan liy plizyè sa yo. Se konsa, yo dwe klè, sa a se yon dosye rele config.php. Ak Avi ki sa li la fè a. Li nan aparamman fè yon bagay skre, vire sou mesaj erè pou ke ou ka wè yo nan navigatè a. Li nan, Lè sa a, aparamman ki egzije de lòt dosye kidonk sa a se tankou # enkli nan C, ak Lè sa a yon sèl sa a nou t 'wè, e nou te konte sou, sa a vire sou ki shopping cart tankou fonctionnalités. Sa vle di yon volonte bonbon dwe voye retounen ak lide. Se konsa, poukisa se sa a enteresan? Bon, si nou tounen nan sa a anyè epi louvri moute, pou egzanp, constance.php. Remake PHP fè konstan sipò, li nan pa byen tankou # defini nan C. Olye de sa, ou literalman di defini, ak avi ke mwen te ki estoke nan avanse kat konstan nan sa a dosye. Yonn pou baz done a jodi a, pou modpas mwen, pou non itilizatè mwen an, ak pou non an nan sèvè a. Se konsa, sa yo aktyèlman ap pase yo dwe bèl menm jan an nan pwoblèm mete sèt. Epi anfen, e sa se kote mwen se ale nan jwenn kèk bèl fonctionnalités ki soti nan pèsonèl la, nan functions.php se yon pakèt moun sou Kòd nou te ekri, ak mwen te vòlè kèk nan sa a soti nan pwoblèm mete sèt pou jodi a, ki fè yon pakèt moun sou bagay sa yo e kite yo jis gade nan youn nan yo an patikilye. Fonksyon sa a isit la, rechèch, a pwal fonksyon an PHP nou rele yo nan lòd yo egzekite SQL. Yon ti moman de sa nou te lè l sèvi avèk fpmyadmen, men sa se sèlman pou sòt de rezon aprantisaj ak fè dyagnostik ak bliye mete baz done ou. Lè ou sèvi ak aktyèlman ou baz done, ou, moun lan, yo evidamman pa pral yo dwe rale moute yon sit entènèt paj chak fwa yon moun anrejistre. W ap ale nan ekri kòd ki foure ak supresyon itilizatè sou demann, epi nou ap ale nan fè sa pa fason pou fonksyon an sijè rechèch. Si mwen kounye a desann, gen nan pral gen yon kèk plis karakteristik. Redirect ki pral gen yon fonksyon nou te ekri pou ou ki pèmèt ou voye itilizatè a nan yon lòt URL, ak rann se yon fonksyon, byen tankou nou te wè nan Lendi, ki aktyèlman rann yon modèl, men li plis sou sa yo nan la fòm nan pwòp mache a nan pset7. Pou kounye a, kite a ale pi devan epi fè sa. Kite m 'ale nan tab konferans m' ak wè ke gen nan pa gen anyen kounye a isit la jis ankò, ak kite m 'ale tou nan anyè piblik m ', kote gen nan sèlman yon sèl ranpli, index.php. Dosye sa a parèt yo dwe super senp nan moman sa a, li sanble jis tankou sa a. Anpil tankou ki jan nou sispann nan Lendi. Mwen mande sa a ranpli, config.php, ki se nan yon an gen ladan anyè, ki se nan dot dot, paran mwen, ak Lè sa a li jis rann sa a dosye. Se konsa, sa a se sa a ranpli? Se pou nou louvri moute nan modèl mwen form.php, epi nou pral wè sa a. Super senp, aparamman fòm sa a se pral soumèt pa yon $ _GET oswa $ _POST. Quick saniti chèk la. Literalman vizyèlman rechèch dosye a. Metòd egal post. Se konsa, li pa nan ale nan sèvi ak URL la, tankou Google fè sa, li a pral sòt nan kache enfòmasyon nan dèyè sèn yo, epi li nan ale nan soumèt a yon dosye rele register.php, e ke sa a dosye a nou pa gen ankò ekri men sa ki sa a ki pral yo gade tankou se sa a. Si m 'ale nan yon paj separe Sa a se sa localhost / index.php sanble. Epi ankò, sèvè a jis asepte index.php. Antre nan. Se konsa, sa a, kote nou ap nan, e ki sa mwen vle fè se kapab tape bagay tankou David, ak Lè sa a, nimewo telefòn mwen an, ki pral di 617-555-1212 pou kounye a, enskri e kounye a, register.php pa te jwenn. Se konsa, mwen bezwen aplike sa a. Se konsa, kite a byen vit fwe yon bagay tankou moute sa a. Kite m 'ale nan anyè piblik m' ak fè jdi nan register.php, e kounye a, mwen pral ale pi devan epi kòmanse PHP mòd, tankou nou te fè nan Lendi, ak tag fèmen PHP a, epi kite a fè yon koup la bagay sa yo. Se konsa, yon sèl, Mwen konnen, ki soti nan li te gen ekri ki fòm, ke mwen vle tcheke pou sa ki annapre yo. Si se vid, tou sa itilizatè a tape nan nan jaden an Non, lè sa a Mwen pral di yon bagay tankou eskize manke non. Padon, pandan se tan, se pa yon bati nan PHP bagay, li nan yon fonksyon nou te ekri nan functions.php pou pset7 pou ke ou gen aksè a li. Lòt Bagay si jaden an lòt a vid, nimewo, lè sa a mwen se ale li padon nan itilizatè yo ak di nimewo manke yo. Sove sa a dosye. Koulye a, kite a tounen nan navigatè m 'yo, tounen nan fowòm nan eseye ankò. Enskri. OK. Pa gen anyen ki te pase, ki se bon. Mwen pa t 'jwenn yon mesaj erè. Men, si olye de sa, se pou yo Reload sa a paj, epi ou pa bay anyen. Damn li. Fè sa. Enskri. Ki sa m 'fè ki mal? Si vid, $ _POST non. Di ankò? Oh, nan kou. Mwen bliye pati ki pi enpòtan, ki se mande pou ("../ an gen ladan / config.php."). Mwen bezwen gen aksè a nan eskize fonksyon, ki se poukisa pa gen anyen te pase. Fonksyon an pa aktyèlman egziste. Se konsa, kite a eseye sa a ankò. Se pou nou Reload paj la, klike sou Anrejistre. OK. Gen li se. Se konsa, pwodiksyon an nou ap wè isit la se rezilta a pou rezidan yo rele yon eskize fonksyon, super senp, epi li jis simagri soti tou sa Mwen bay li kòm yon agiman. Tout dwa, se konsa kite a kolabore. Se pou yo bay non mwen tankou David, enskri, manke kite OK Nimewo nan bay sa, tou. 617-555-1212. Enskri. OK. Se konsa, tout se byen, koulye a, jis pa gen anyen enteresan k ap pase. Se konsa, kounye a kite a fè yon bagay ki pi enteresan rive tankou sa a. Kite m 'ale nan fpmyadmen, e kite yo aktyèlman kreye yon tab rele itilizatè yo, Mwen pral bay li twa kolòn, ak mwen pral byen vit kreye ID, ak Lè sa a, non, ak Lè sa a nimewo, ak jaden an ID mwen se pral kite kòm yon int. Jaden an Non, mwen pral yo kite kòm yon varchar, epi nou pral di 64, yon ti jan abitrèman. Nimewo a, mwen pral fè, ou konnen ki sa? Nou ap pral antre nan sipòte nimewo US isit la, se konsa mwen pral fè yon bagay tankou Char ak Lè sa a 10 karaktè max pou yon kòd rejyonal ak Lè sa a sèt chif. Lè sa a, sou isit la, mwen pral presize oto kantite jaden sa a, fè sa-a yon kle prensipal, ak Mwen pral ale pi devan epi yo pa tcheke nenpòt nan sa yo lòt bwat. Se konsa, lè mwen kounye a finalman klike sou Save, ak mwen tounen nan tab itilizatè m 'yo, sa a se sa li sanble si mwen kounye a klike sou yon estrikti New Tab. Se konsa, sa a, yo dwe klè, se jis fason fpmyadmen a nan di tab baz done ou gen yon ID, yon non, ak yon nimewo ak sa yo konfigirasyon patikilye epi nou pral inyore rès la nan jaden yo gen pou kounye a. Se konsa, kounye a ki sa mwen vle fè? Se konsa, si m 'ale kounye a nan m' kòd sous, si tout se byen Mwen vle egzekite rechèch ki anba la a. Insert nan, epi mwen ka jis di itilizatè mwen pa fè sa estrikteman bezwen sa yo tounen tik si li nan pa di yon mo danjere tankou itilizatè. Mwen pral di non, nimewo, ak Lè sa a isit la mwen se pa ale nan Kòd la difisil chif nan valè yo ankò. Mwen pral mete de mak kesyon. Lè sa a se yon konvansyon nan plizyè lang kote si ou vle gen yon kontneur pou yon fisèl w ap ale nan sèvi ak kesyon an mak, pou rezon nou pral tounen vin jwenn chat sou sekirite, ak isit la Mwen pral pase nan moun de jaden afiche non, ak Lè sa a afiche nimewo, e kounye a, sove dosye a. Epi, koulye a, mwen pral desann isit la se yon super tou senpleman di rendersuccess.php, ki a pwal yon lòt modèl. Mwen pral yo kreye reyèlman vit. Geditsuccess.php ak mwen jis ale yo di H1 siksè nan ki dosye. Tout dwa. Se konsa, kounye a, kite a ale tounen nan la navigatè, kote mwen te vizite anvan. Se pou nou ale pi devan epi konfime mwen te ekri nan David, mwen te ekri nan yon nimewo telefòn, enskri. Damn li. Ki sa m 'fè ki mal? Se konsa, mwen wè yon erè isit la, ou gen yon erè nan sentaks SQL ou. Kite m 'so tounen nan jdi, se pou m 'ale tounen nan register.php, ak sa ki t 'mwen oblije ki te enpòtan dènye fwa? Mwen bezwen sa a. Ou vle konnen ki lòt pase soti nan gen remake anvan, men mwen bezwen sa a. Se konsa, kounye a kite a ale tounen, ak sa a te itil yo wè nan navigatè a ak Se poutèt sa nan config.php nou krache soti erè. Se pou nou ale pi devan epi Reload, klike sou Kontinye, siksè. Se konsa, kounye a kite m 'janbe lòt bò nan m' baz done isit la, epi klike sou Itilizatè yo, ak browse, ak avi mwen kounye a gen David nan baz done m 'isit la. Koulye a, teknikman sit entènèt sa a se pa ankò sou entènèt la piblik, Se konsa, mwen pa ka gen lòt moun nan mete isit la, men si mwen kounye a te vle, pou egzanp, voye tèt mwen yon mesaj tèks. Se pou nou ale deyò sou yon manm isit la ak wè si sa a aktyèlman ap travay. Mwen pral ale pi devan ak efase ranje sa a epi nou pral bwouye sa a soti nan videyo a pita se konsa nou pa gen la tout entènèt voye tèks m ', epi nou pral kounye a ale jiska nan navigatè epi nou pral janbe lòt bò nan konferans epi nou pral tape nan diferan Nimewo isit la, enskri, siksè. Se konsa, kounye a, nimewo pwòp mwen nan prezimableman nan baz done a, e kounye a, pati a plezi. Se pou nou aktyèlman sèvi ak PHP fè yon bagay programe, swa nan yo lòd, ki liy oswa nan yon lòt kote, ak pou kounye a mwen se jis ale nan kenbe li senp ak mwen pral ale nan m ' anyè isit la ak fè sa ki annapre yo. Jdi script kite la di, nou pral rele li tèks, #! / itilizatè / PHP bin / ENV, tankou nou te wè dènye tan. PHP. Koulye a, mwen pral mande pou gen ladan config.php, menm si fòs sa a pwovoke yon erè ti tay. Epi, koulye a, mwen pral ale pi devan epi di ranje, sijè rechèch, chwazi zetwal soti nan itilizatè yo, e kounye a, isit la, mwen pral fè yon teknik soti nan dènye fwa pou chak ranje kòm ranje. Apre sa, mwen pral fè yon bagay ki senp. Printf se pou yo di non se sa a, ak nimewo se sa a, antislach n. Epi, koulye a, mwen pral pase nan ranje site non unquote, ak nimewo ranje quote unquote, e kounye a, kite a ale pi devan ak fenèt tèminal m ' chmod sa a yon + x fè script sa a yo rele ègzèkutabl tèks. Epi, koulye a kite a kouri tèks. OK, se konsa pwogrè. Yon Se konsa, mwen te kounye a ekri lòd liy script, nan yon lang yo rele PHP, ke, paske nan ki mande pou liy, gen aksè a tout moun sa yo konfigirasyon konstan ke mwen espesifye. Non a nan baz done a ak pou fè. An reyalite, jis yo dwe klè ke sa a se pa yon trematòd, kite m 'ale pi devan epi enskri, reyèlman vit, yon lòt moun tankou Rob epi yo pral ba l 'nimewo a 555-1212. Epi, koulye a, si mwen kouri script la ankò, avi pouvwa a nan sa n ap fè ak baz done a. Koulye a, mwen te imedyatman wè sa a de lòt ranje yo se nan baz done m 'yo. Se konsa, kounye a kite a eseye fè yon bagay menm amateur andedan nan, ak sa a se yon pati nan nou te pa teste nan avanse, se konsa dènye fwa mwen te fè sa a bagay sa yo ale oribleman courbe, nou gen videyo sou sa. Aktyèlman, yeah, komik sou kote. Se konsa, dènye fwa a, nan yon konferans tankou de zan de sa, nou deside, mwen deside, yo dwe tout bagay sa a ta dwe yon gwo lide dynamique jenere Imèl nan klas, lè l sèvi avèk CS50 nan baz done tout antye elèv yo, ki moun ki te ban nou nimewo yo ak transpòtè cellphone yo ki ou ta ka sonje soti nan pset0, ki jan yo rezone, li vire soti Mwen te gen yon ensèk minè nan pwogram m 'ak te fè yon erè koup nan 2012, mwen panse ke. Annakò ak sa, yon sèl mwen te gen pou riban ki te fè egzakteman sa a kalite bagay, iteration sou baz done a, ap resevwa yon non ki soti nan baz done a, non soti nan baz done a, ak Lè sa a, sou chak iterasyon nan riban ki m 'te voye yon imel. Men, olye pou yo voye yon sèl imèl, mwen voye youn email iterasyon an premye, ak de Imèl yon dezyèm iterasyon, voye twa Imèl yon dezyèm iterasyon, ki kòm ou ta ka sonje soti nan nou an diskisyon sou notasyon asenptotik sa a O gwo nan move, tankou n okib se konbyen mesaj mwen voye, men li pa te menm Imèl li te mesaj tèks. Epi kòm ou konnen, prezans se pa super segondè nan direksyon nan fen semès la Se poutèt sa mwen te panse li ta bèl nan tan an di, "Poukisa pa ou klas la?" Nan tèks mesaj mwen an voye nan tout klas la, epi li te komik yo renmen 50% nan la klas, men lòt 50% an, kèk nan yo te èkstraordinèr deyò, mwen voye èkstrèmeman apolojetik nòt dous anplwaye a èkskuz pou li te gen rate konferans lan jis sa a yon fwa, dwa? Se konsa, ki ta oribleman courbe. Se konsa, nan ki lespri, se pou yo eseye sa a ankò men jis ak nimewo mwen. Nan avanse, nan functions.php, Mwen te ekri fonksyon sa a isit la. Yo rele li tèks, epi li pran nan twa agiman. Yon nimewo, yon konpayi asirans, ak yon mesaj. Mwen sèvi ak yon deklarasyon switch, ki bèl PHP pran strings, pa sèlman nonm antye relatif, ak mwen pa t 'aplike tout sipò an pou sa a ankò, Mwen te jis fè AT & T ak Verizon. Paske li vire soti ke ak transpòtè sa yo yo gen yon imel bay passerelles SMS, annakò ak sa ou kapab aktyèlman voye yon imèl bay yon adrès tankou nimewo telefòn nan vtext.com epi si itilizatè a pa te bloke mesaj yo, li pral ale nan se yon mesaj tèks. Koulye a, fè sa a, mwen pral gen ajoute yon sèl reyèlman vit nan baz done m 'jaden. Mwen pral ale nan estrikti mwen, ak mwen se pral ale pi devan epi ajoute yon jaden nan fen tab la. Se pou yo klike sou Ale, epi mwen pral rele konpayi asirans sa a ak pou kounye a mwen pral kite sa a kòm yon tèks ba, men nou ka gen amateur nan lavni. Mwen pral byen vit ale nan tab avè m ', epi mwen ale nan debarase m de Rob, paske se sa yon nimewo fo, Mwen pral ale nan modifye isit la ak mwen se pral chanje konpayi asirans mwen an manyèlman yo dwe Verizon, ki li se, e kounye a, sou isit la. Se pou yo fè yon chèk saniti rapid. Se pou nou louvri moute script tèks nou an, ki sanble tankou sa a, konpayi asirans se% s. Nou ap fè yon erè anpil plis tcheke pase m 'te fè an 2012, konpayi asirans la. Epi, koulye a, mwen pral ale pi devan epi re-kouri script la. OK. Carrier se Verizon, ki vle di kounye a èspere ke mwen kapab fè jis sa a. Kòrèkteman ane sa a, èspere ke, isit la nou ale. Se konsa, andedan nan sa a pou riban, mwen se ale nan pa sèlman gen printf sa a, Mwen tou pral rele tèks ak l 'la nan sa a rapèl fonksyon te li pran yon nonb, yon konpayi asirans, ak yon mesaj. Se konsa, kite a wè, nimewo ki pral gen ranje quote unquote "nimewo," ranje quote unquote "konpayi asirans," ak youn ki sot pase a te mesaj. pa vis moute ane sa a, virgules. OK. Dwèt janbe lòt. Ann wè si sa a travay. Tout dwa, se konsa. Isit la nou ale. Se pou yo déblotché telefòn nan, travèse dwèt ou, modi li. Endefini may-- varyab oh rete tann, rete tann, rete tann, reyèl vit. Imobilye vit, reyèl vit. Sa a se totalman vo li. Kite m 'gen tan pwan, kite m' gen tan pwan, uh-oh. Mèsi poutèt ou, tèks yo gen kòmanse soti nan yon lòt moun. Kite m 'ale pi devan epi louvri moute reyèl vit, dropbox.php / lapòs nan isit la. Sibstiti. Totalman vo li. Downloads. OK, sous src8m. OK. Bezwen yon sèl plis liy isit la. Oh gen li se, li la nan Frosh IMS, li nan nan enskri nan twa. Oh hello, Mago, di ou mèsi anpil. OK, epi mwen te manke liy sa a isit la. Se konsa, kite m 'gen tan pwan byen vit liy sa a nan kòd, ki gen ladan lapòs la oswa nan bibliyotèk ke mwen aktyèlman vle sèvi ak, Mwen pral byen vit ale tounen nan fonksyon, Mwen pral pou yo ale nan tèt la nan sa a ranpli epi mande pou sa a ranpli kòm byen, e kounye a, mwen pral reyèlman travèse m ' dwèt lè m 'ale tounen nan yo lòd, ki liy script, ki se andedan nan anyè lame lokal la jodi a. Kouri tèks. Antre nan. Mail. Sibstiti. Sibstiti. Mail. Oh, OK. Isit la nou ale. Mail vin nouvo Mailer PHP. Eske se mwen fè sa ki dwat sa a? Damn li. To-- oh, rete tann, rete tann, rete tann. Kanpe bò. Mwen te pwomèt, sa a se ale yo dwe tèlman vo li. Adrès. Sa a se poutèt sa mwen pa fè nan egzanp dwat devan klas la. Pwa. Moun ki resevwa sa yo echwe. Ann eseye yon dènye bagay. SMTP mete soti nan, ajoute adrès, adrès la se vre sa. Ann eseye sa a yon pati pase a nan adrès. Aw, mwen se vrèman tris kounye a. Mèsi poutèt ou. Men, mwen vrèman apresye tout tèks yo ou ve yo te voye. Ou te gen sa a David. W ap mouche li. Se pou nou kite li gen ak nou pral repare nan Lendi. Al gade nan ou lè sa a. DAVEN FARNHAM: Epi, koulye a Deep Refleksyon pa Daven Farnham. Si yon pye bwa binè tonbe nan yon forè ak pa gen yon sèl otou nan C l-- [chuckling].