Doug Lloyd: Pafwa lè nou ap pwogramasyon nou fè bagay sa yo se konsa souvan, se konsa souvan, e konsa anpil moun fè idea-- a menm oswa menm bagay la tou bagay, ke li gen yon non. Mv se egzakteman yon sèl bagay sa yo. Yo rele li yon paradigm pwogram. Li nan sòt de tankou yon pi bon pratik ki te distile desann pa moun ki pale ap eseye fè yon bagay. Nan ka sa a, aplike yon sistèm nan paj ki yon itilizatè reyaji ak sou yon sit entènèt pi konplike. Apre sa, li nan fè sa souvan ki li rekòmande kòm yon estanda ke lòt moun ta ka renmen yo swiv, ak gen nan yon seri trè espesifik nan fason ke youn te ka swiv paradigm sa a. Se konsa, mv se yon paradigm, ak rezon ki fè yo nou sèvi ak li se sou detay abstrè lwen soti nan itilizatè a. Men kèk bagay itilizatè a pa reyèlman bezwen wè. Yo jis vle gen yon eksperyans itilizatè bon, epi nou pa bezwen fè yo jwenn aksè nan chak dosye sèl ki egziste sou sèvè wèb nou an, petèt. Gen ka gen kèk dosye ki yo se jis itilize yo ranfòse eksperyans nan itilizatè, e konsa nou kapab abstrè sa yo ale. Nou ka sòt de kache yo pou itilizatè a pa ka travay avèk yo, men nou an pages-- pages-- nou an konnen ki jan fè fas ak yo ak rele yo oswa petèt mande pou, vle yo, oswa yon bagay tankou sa. Motivasyon nan prensipal pou mv se sekirite done, paske mv anjeneral vini moute nan la kontèks nan travay ak baz done. Ak nan nou an patikilye vle anpeche itilizatè soti nan dirèkteman Sur baz done. Nou sèlman vle fè li endirèkteman, a filtraj nou an. Ou fè si ke tout bagay la OK pa nou fè yon ti kras nan erè kont kouran oswa Proofing sekirite anvan nou voye li nan baz done a, kote bagay te kapab ale mal, petèt reyèlman sa ki mal, si nou pa ap fè atansyon. Se konsa, mv kanpe pou ki gen konpòtman egzanplè Gade Kontwolè. Ki sa ki chak nan sa yo vle di? Fondamantalman, modèl se baz done ou. Li nan kote tout nan done enpòtan pou sit ou usernames lives--, koneksyon, modpas. Epi ou ka mete li, al gade nan li, tout bagay bèl anpil tankou sa. Ou ta sijè rechèch yon baz done, ou ta mande enfòmasyon ki soti nan baz done a. Sa a tout nan de a model-- done kote sit ou ap viv. View la se kalite tankou eksperyans nan itilizatè. Li nan paj sa yo yo wè apre yo te mande enfòmasyon. Se konsa, petèt yo soumèt information-- login yo kote yo ta fè nan yon kontwolè, ki nou pral pale sou nan yon dezyèm fwa. Yo petèt soumèt yo enfòmasyon pou ouvri sesyon, epi li se baz done a kontexte. Se mande enfòmasyon ak rale soti nan baz done a. Lè sa a, yon fwa nan Apre sa, nan itilizatè louvri sesyon nan yo, yo ale nan paj lakay yo. Sa se yon vi, OK? Lè sa a, kontwolè a se sa ki nan rele lojik biznis la nan sit ou. Ak lojik biznis se youn nan tèm sa yo ki se sòt de wishy-washy-- renmen, sa lojik biznis vle di? Fondamantalman biznis ou lojik se PHP ou yo. Itilizatè ou pa bezwen wè dirèkteman PHP ou, men PHP ou a se pwobableman sa k ap pase yo dwe fè demann nan baz done a. Se konsa, opinyon nan itilizatè volonte enfòmasyon nan yon vi, ki pral entegre yon kontwolè. Tankou, yo pral tape nan yon fòm. Ki jan ki pwosesis fòm enfòmasyon se kontwolè a. Sa a PHP a ki la aktyèlman fè demann lan nan modèl la. Lè sa a, modèl la bay enfòmasyon yo gade nan, ki bay li a itilizatè a, petèt pi byen vizualiz jan sa a. Se konsa, isit la nou yo. Isit la nan nou sou bò gòch la, ak ki gen konpòtman egzanplè nou an Gade Kontwolè paradigm aranjman. Ki jan li travay? Fi Fiziyad Kous nan user-- fè yon mande nan kontwolè a. Nou soumèt enfòmasyon tankou pa yon fòm HTTP. Baze sou sa, kontwolè a travay se a asire w ke sa kap itilize li an te ban se pa yon bagay ki ta fè dega nan modèl la. Se konsa, kontwolè a k ap pase yo asire w ke tout bagay la sou OK. Li k ap pase yo gade ak anpil atansyon. Si gen nan nenpòt ki erè, li pral sispann bagay se konsa itilizatè a pa ka jwenn nan modèl la. Men, an konsideran tout bagay nan OK ak li nan yon sijè rechèch ki valab, kontwolè a pral sijè rechèch model-- nan li pral mande l 'bay bay enfòmasyon. Modèl la ap bay ki enfòmasyon nan yon paj ki nan yon vi, li pral transmèt li ki fason sa a, ak Lè sa a gade nan pral peple enfòmasyon an mande soti nan modèl la. Se konsa, pou egzanp, si nou ap pale sou antre nan paj Facebook ou, pa egzanp. View nan ta dwe done yo ki soti nan modèl la ki refere a zanmi ou yo ak nouvèl la manje oswa bagay tankou sa yo, dwa? Men, ou pa ta renmen wè lòt bagay yon moun nan. Ou ta dwe se konsa comment- ou soumèt yon demann, ou konekte nan eskiz la model-- m ', ou konekte nan paj la. Sèvi avèk yo kontwolè enfòmasyon pou ouvri sesyon ou fè yon demann yo voye modèl la fè asire w ke ou se ki moun ou di ou ye. Tankou Modèl la nan, OK, wi, ou se ki moun ou di ou ye a, se konsa, kite m 'ba ou manje nouvèl ou yo. Mwen pral ba w done yo anvan tout koreksyon pou manje nouvèl ou nan gade nan, ak Lè sa a gade nan fè li bèl, trete li nan yon fason ke nou ap itilize yo, montre ke enfòmasyon nan itilizatè a. Avi koneksyon an ke sa a pa ki deja egziste sou dyagram sa a. Gen nan pa gen koneksyon dirèk ant ou menm ak modèl la. Genyen toujou sa a tanpon nan kontwolè a sou bò D ', ak gen nan yon zòn de defans nan a wè sou bò pwodiksyon. Petèt ou se yon bon moun, ak pou petèt ou pa ta fè nenpòt domaj nan la modèl, men petèt ou pa fè sa. Oswa petèt gen nan yon moun ki moun ki nan yon itilizatè move ki ta petèt vle fè dega baz done ou, petèt efase tout bagay soti nan baz done ou, ki ta ka trè chè. Li evidan, li te gen itilizatè done is-- gen nan valè nan gen done itilizatè. Se konsa, si nou pa t 'mete tanpon sa a zòn ant itilizatè a ak database-- nan kap itilize li an ak bagay sa yo model-- pa ta ka dwe ale sa byen pou nou. Se konsa, li enpòtan yo gen paradigm sa a kote itilizatè a kapab kominike avèk baz done a, asire w, men yo gen yo ale nan nou fè li. Epi sa a, fondamantalman lide a ak mv. Li nan ap eseye aplike sekirite done. Li nan ap eseye pwoteje modèl la soti nan inadvèrtans oubyen entansyonèlman itilizatè move. Se konsa, sa ki pase lè nou aplike paradigm sa a? Oke, nou ap separe done yo egzije soti nan website-- nou an model-- a soti nan lojik la ki aplike sit entènèt nou an functionality-- controller-- a ak soti nan estetik yo ki senp epi paj modèl ki genyen nou an itilizatè experience-- gade nan. Ki sa sa vle di? Oke, sa vle di ou ka fè konsidere vizib nan itilizatè a. Ou ka kache modèl la ale. Apre sa, itilizatè a controllers-- pa ka petèt dirèkteman manipile. Yo pa bezwen jwenn aksè nan Kòd PHP ou yo. Yo jis bezwen wè yon fòm kote yo ka tape bagay nan. Se konsa, petèt fòm nan se yon View, kontwolè a se PHP a ki fòm nan soumèt ba, nan kontwolè fè yon demann nan modèl la, modèl la bay plis enfòmasyon nan yon View diferan ki montre enfòmasyon nan ou. Pwogram ou kapab jwenn aksè nan tout nan lojik biznis ou, men itilizatè ou pa kapab dirèkteman aksè lojik biznis ou. Yonn patikilyèman, petèt, vizib nan sa a ilistrasyon se ou te janm resevwa yon 403 entèdi erè. Èske w te janm ale nan yon sit entènèt paj ak wè 403 Entèdi? Li nan sòt de tankou 404 pa jwenn. 403 entèdi vle di ou te eseye jwenn aksè nan yon paj ke ou pa gen aksè a. Petèt ke sit se lè l sèvi avèk mv separasyon yo kache lwen lojik biznis li yo ki bezwen yo egziste sou sèvè a nan lòd pou paj la nan travay, men pa fè sa vle ou gen aksè a li dirèkteman. Se konsa, ou ta ka jwenn yon 403 entèdi erè. E li pa ta ka menm gen pwoblèm si ou te louvri sesyon an. Pa gen itilizatè ka manyen sa a ranpli PHP dot. Yo kapab sèlman manyen sa a yon sèl, ak sa a yonn- yon sèl nan yo ke yo ka petèt touch-- ka kominike avèk dosye a fèmen-desann plis endirèkteman pase itilizatè a. Se konsa, nou pafwa wè sa a autorisations erè, sa a 403 Entèdi. Ki jan nou chanje autorisations konsa ki bagay sa yo ka oswa ka pa ka wè? Lè nou fè sa tipikman se sèvi ak yon Linux lòd rele chmod-- C-H-mod. Pou fè sa, fòma a se trè simple-- chmod, autorisations, ak tou sa ou vle dosye pou aplike pou ke chanjman nan. Se konsa, petèt ou ta wè yon bagay tankou sa a men chmod 600 helpers.php. Oswa petèt ou ta wè sa a men chmod yon x plis ki gen ladan anyè. Te sa vle di menm si? Se konsa, gen nan de fason diferan ki autorisations yo anjeneral aplike lè l sèvi avèk chmod. Premye a se rele nimewo oktal metòd. Sa a anjeneral aplike autorisations nan twa kategori diferan nan itilizatè an menm tan an. Se konsa, chmod 711 dosye ta pèmèt ou dwa a li, ekri, ak egzekite dosye ou, ta pèmèt others-- espesyalman gwoup ou ak world-- nan sèlman egzekite dosye a. Sa a ki sa sa a tradui nan. Nimewo nan premye gen se ki sa ou ka fè, nimewo a dezyèm se sa gwoup ou ka fè, ak twazyèm lan se sa mond lan kapab fè. Okenn moun ki moun ki nan vizite ou paj, sa a, se mond lan. Ki sa ki nimewo sa yo aktyèlman tradui nan menm si? Se konsa, sa yo fondamantalman tradui tankou sa a. Si pèmisyon an se zewo, pa gen anyen ka rive. Si li nan yon sèl, ou ka egzekite nan file-- si sa a pèmisyon ou. Si li nan de, ou ka ekri dosye a men ou pa kapab fè nenpòt lòt bagay. Si li nan twa, ou ka ekri ak egzekite. Yo ak sou sa, jan ou ka wè. Sèt vle di ou ka fè tout bagay. Se konsa, poukisa yo sa yo rele nimewo oktal? Oke, si ou panse sou li, isit la a tankou Noes ak yeses, epi si nou panse osijè de yo kòm bwat wouj ak vèt, petèt ki fè li yon ti kras pi klè. Men, si nou panse osijè de sa yo bwat wouj kòm zewo ak bwat yo vèt kòm yo menm, sa yo, se aktyèlman jis kouche nan nimewo binè, dwa? 000 tradui nan desimal 0; 001, desimal 1; 010 se 2 desimal, ak sou sa. Se konsa, nou rele sa yo oktal paske gen nimewo se uit posiblite diferan. Gen uit diferan chif si nou ap ap pale de twa Bits nan information-- ti jan nan li, ekri nan ti jan, ak ti jan a egzekite. Se konsa, kounye a ou ka pale binè, desimal, Egzagòn, ak oktal. Se konsa, ou konnen ki jan yo kominike avèk òdinatè nan kat nimewo diferan sistèm, se konsa sa a, se trè fre. Se konsa, san konte oktal nan konplo pèmisyon, gen nan tou pèmisyon an senbolik konplo, ki se yon ti kras diferan epi anjeneral yo itilize pi bon pou aplike pou oswa retire yon pèmisyon atravè Komisyon Konsèy la. Se konsa, chmod yon plis dosye x ta ka ajoute dwat a al touye nan tout twa kategori nan users-- tèt ou, gwoup ou a, ak mond lan. Sa plis se yon pati nan ajoute. Dwa pou al touye, sa se x an. Ak lefèt ke li aplike nan tout twa gwoup nan itilizatè ta dwe yon nan. Se konsa, sa a men yon x-- plis se pwobableman pral yo dwe egzakteman menm jan chmod 711 ranpli, paske si ou ale retounen lakay yo epi gade nan konplo a nimewo oktal, yo menm ak sevens ban nou an dwa egzekite yon dosye-a. Se konsa, sa a se pwobableman menm bagay la. Epi ou ka sèvi ak sa a gid referans pou sa bagay sa yo divès kalite nan la senbolik estrikti chmod-ING ye. Bagay sa vèt isit la ta dwe kote tout vèt ki gen koulè pal egzanp lan te yon dezyèm de sa. Ble a ta dwe ble a. Zoranj la ta dwe zoranj la. Se konsa, ou ka aplike bagay sa yo ou gwoup, bay lòt moun, nan itilizatè a, oswa nan tout moun. Ou ka ba yo li, ekri, ak egzekite aksè, epi ou ka ajoute oswa retire oswa bay egzakteman yon seri nan autorisations lè l sèvi avèk modèl sa a. Ki jan nou tcheke sa yon konplo dosye pèmisyon se? Anvan nou chanje li, li nan pwobableman bon yo aktyèlman konnen sa autorisations yo dosye ye. Youn nan fason yo fè sa a se nan kouri ls men jis ajiste li yon ti jan ti kras. Se konsa, si mwen tape ls kase l-- ki nan yon miniskil l-- petèt Mwen pral wè yon bagay tankou sa a. Li sanble yon ti jan skre, men pati a ke nou reyèlman sousye de se bagay la sou bò gòch la sou la. Ki aktyèlman espesifye yon konplo dosye pèmisyon pou sa. Epi ou ka pwobableman di paske li nan te resevwa r nan, w lan, ak x la antremele. Moun sa yo ki premye three-- inyore youn nan premye pou yon dezyèm, ki nou pral double tounen nan. Moun sa yo ki twa premye apre first-- a pou dezyèm lan, twazyèm, katriyèm ak karaktè nan ki fisèl 10 pèsonaj yo autorisations yo ki di ou gen. Se konsa, aparamman mwen kapab li, ekri, ak egzekite PHP. Mwen kapab li, ekri, ak egzekite PHP Webdev, e mwen ka li ak ekri test.php. Gwoup mwen ka fè sa. Se konsa, aparamman ak PHP nan ak PHP Webdev repèrtwar, gwoup mwen ka ekri nou nan yo men pa gen anyen lòt bagay. Apre sa, mond lan pa ka fè anyen. Se konsa, dosye sa yo se pa piblikman aksesib epi si mwen te eseye jwenn aksè nan yo ak mwen pa t ' kouri Apache fè yo aksesib, lè sa a mwen ta jwenn yon erè 403. Li se yon echèk. Mwen te eseye jwenn aksè nan yon dosye men mwen pa gen autorisations fè li. Ak sa ki ke premye karaktè? Oke, ou ka pwobableman èkstrapolasyon isit la ke nan la d'al gade nan repèrtwar ak priz la refere a sa yo rele "dosye regilye." E petèt ou te wè sa a lè ou te te eseye retire yon dosye lè l sèvi avèk RM. Ou te wè mesaj la skre "retire dosye regilye" - nan ka sa a, li ta dwe test.php. Dosye regilye se jis yon bagay sa a, se pa yon anyè. Gen yon koup nan lòt moun isit la, men jeneralman ou se pral wè a pou repèrtwar d' e pa gen anyen pou eleman nan premye. Men, sa ki nan vrèman tout gen nan li. Ou ka tcheke dosye autorisations lè l sèvi avèk ls l priz, ou ka chanje yo lè l sèvi avèk chmod. Epi, nan kou, sèvi ak these-- chanje autorisations yo aplike sa a paradigm mv pwoteje done yo sou sit entènèt ou epi yo pa pèmèt itilizatè jwenn aksè nan tout bagay, men se sèlman bagay la ke yo bezwen jwenn aksè nan yo nan lòd pou paj ou nan travay wout la ou vle l 'nan travay. Mwen se Doug Lloyd. Sa a se CS50.