DOUG LLOYD: Minsan kapag kami ay mga programa ginagawa namin bagay kaya karaniwang, kaya madalas, at maraming mga tao gawin ang parehong idea-- o sa parehong bagay, na ito ay isang pangalan. MVC ay eksakto tulad ng isang bagay. Ito ay tinatawag na isang programming tularan. Uri ng ito tulad ng isang pinakamahusay na kasanayan na na-dalisay down sa pamamagitan ng mga tao na sinusubukan na gawin ang isang bagay. Sa kasong ito, ipatupad isang sistema ng mga pahina na ang isang user nakikipag-ugnayan sa sa isang mas kumplikadong website. At ito ay tapos na kaya karaniwang na ito ay inirerekomenda bilang standard na baka gusto ng iba pang mga tao na sundin, at mayroong isang napaka-tukoy na hanay ng mga paraan maaaring sundin ng isa na ito tularan. Kaya, MVC ay isang tularan, at ang dahilan ginagamit namin ito ay upang makuha ang layo detalye mula sa user. Ang ilang mga bagay ang user ay hindi talagang kailangan upang makita. Sila lamang ang nais na magkaroon isang mahusay na karanasan ng user, at hindi namin kailangan upang magkaroon ng mga ito ma-access ang bawat solong file na umiiral sa aming web server, marahil. Maaaring may ilang mga file na lamang ginagamit upang palakasin ang karanasan ng gumagamit, at sa gayon maaari naming abstract mga layo. Maaari uri ng namin itago ang mga ito para hindi maaaring gumana ang gumagamit sa kanila, ngunit ang aming pages-- aming pages-- alam kung paano makitungo sa kanila at tawagan ang mga ito o di kaya ay nangangailangan ng, Nais ng mga ito, o isang bagay na tulad ng. Ang pangunahing pagganyak para sa MVC ay seguridad ng data, dahil MVC karaniwang lumapit up sa konteksto ng mga nagtatrabaho sa mga database. At sa partikular namin nais na pigilan ang mga user mula sa direktang matatamaan database. Gusto lang namin na gawin ito hindi tuwiran, sa pamamagitan ng aming pagsasala. O siguraduhin na ang lahat ng bagay ay OK sa pamamagitan ng amin ang paggawa ng isang maliit na piraso ng error checking o kaligtasan proofing bago tayo ipadala ito sa database, kung saan mga bagay na maaaring maging mali, marahil talagang mali, kung kami ay hindi maingat. Kaya MVC nakatayo para Modelo Tingnan Controller. Ano ang bawat isa sa mga ibig sabihin nito? Karaniwang, ang mga modelong ito sa iyong database. Ito ay kung saan ang lahat ng mga mahalagang data para sa iyong site lives-- username, pag-login, password. At maaari mong i-update ito, sumangguni sa mga ito, halos lahat ng bagay na tulad ng. Gusto mong i-query ang isang database, gusto mo tanungin impormasyon mula sa database. Iyan ang model-- lahat ng data kung saan nakatira ang iyong site. Ang tanawin ay uri ng tulad ng ang karanasan ng gumagamit. Ito ang pahina na nakikita nila pagkatapos ng sila ay may hiniling na impormasyon. Kaya marahil sila isumite kanilang login information-- na kung saan ang kanilang gagawin sa isang controller, kung saan makikita namin makipag-usap tungkol sa isang segundo. Marahil sila ay isumite ang kanilang impormasyon sa pag-login, at ang mga database ay na-query. Impormasyon ay hiniling at hinila mula sa database. At pagkatapos ay sa sandaling ang user naka-log in in, makikita nila ang kanilang home page. Iyan ay isang view, OK? At pagkatapos ay ang controller ay kung ano ang tinatawag na ang logic ng negosyo ng iyong site. At logic ng negosyo ay isa sa mga katagang iyon ay isang uri ng wishy-washy-- gusto, kung ano ang ibig sabihin ng logic ng negosyo? Talaga ang iyong negosyo logic ay ang iyong PHP. Ang iyong user ay hindi kailangan upang direktang makita ang iyong PHP, ngunit ang iyong PHP ay marahil kung ano ang nangyayari na paggawa ng mga kahilingan na ang database. Kaya ang kalooban user input impormasyon sa isang view, na kung saan ay isama ang isang controller. Tulad ng, makikita type sila sa isang form. Paano na proseso na form impormasyon ay ang controller. Iyan ang PHP na talagang paggawa ng kahilingan sa modelo. At pagkatapos ay ang modelo ay nagbibigay sa impormasyon sa view, na kung saan ito ay nagbibigay sa mga user, marahil pinakamahusay makita bilang sumusunod. Kaya dito tayo. Narito kami sa kaliwa, at ang aming mga Modelo View Controller tularan arrangement. Paano ito gumagana? Ang user-- us-- gumagawa ng isang humiling sa controller. Kami isumite impormasyon tulad ng sa pamamagitan ng isang HTTP form. Base sa na, ang controller trabaho ay upang tiyakin na kung ano ang ibinigay sa user na ito ay hindi isang bagay na makasisira sa modelo. At kaya ay ang controller ng pagpunta sa tiyakin na ang lahat ng bagay ay OK. Ito ay pagpunta upang tumingin tunay mabuti. Kung may anumang mga error, ito ay hihinto sa mga bagay-bagay sa gayon ang gumagamit ay hindi maaaring makuha ang mga modelo. Ngunit ipagpalagay lahat ng bagay ay OK at ito ay isang wastong query, ang controller ay query sa model-- makikita ito hilingin ito upang magbigay ng impormasyon. Ang modelo ay magbibigay na impormasyon sa isang pahina na ang isang view, makikita ito ihatid na paraan, at pagkatapos ay ang view ay paramihin ang impormasyon hiniling mula sa mga modelo. Kaya, halimbawa, kung ang pinag-uusapan natin tungkol sa pag-log sa iyong pahina ng Facebook, Halimbawa. Ang view ay ang data na nagmula sa labas ng modelo na ay tumutukoy sa iyong mga kaibigan at mga balita feed o mga bagay-bagay na tulad ng, tama? Ngunit hindi mo nais makita ang mga ibang tao ang. Gusto mo getting-- kaya nagsumite ka ng isang query, login ka sa model-- excuse sa akin, mag-login sa pahina. Ang controller gumagamit ang iyong impormasyon sa pag-login upang gumawa ng isang kahilingan sa modelo upang gumawa ng tiyakin na ikaw ay na sinasabi mo ay. Tulad ng modelo, OK, oo, ikaw ay na sinasabi mo ay sa iyo, kaya hayaan mo akong bigyan ka ng iyong feed ng balita. Bibigyan kita ng mga raw data para sa iyong feed ng balita sa view, at pagkatapos ay sa view gumagawa ito pretty, pinoproseso ito sa isang paraan na kami ay ginagamit upang, pagpapakita na ang impormasyon sa gumagamit. Pansinin ang koneksyon na hindi umiiral sa diagram na ito. Walang direktang koneksyon sa pagitan mo at ang mga modelo. Laging may ganitong buffer ng ang controller sa input side, at mayroong isang buffer ng tingnan ang output side. Siguro ikaw ay isang magandang tao, at kaya baka kayo hindi gawin ang anumang pinsala sa modelo, ngunit marahil ikaw ay hindi. O baka may isang tao kung sino ang isang malisyosong user na gagawin siguro nais na makapinsala sa iyong database, siguro tanggalin ang lahat ng bagay mula sa iyong database, na maaaring maging masyadong mahal. Malinaw, data is-- pagkakaroon user mayroong halaga sa pagkakaroon ng data ng user. At kaya kung hindi namin ilagay ito buffer zone sa pagitan ng mga user at ang database-- mga user at ang model-- bagay Hindi maaaring pagpunta sa gayon na rin para sa amin. At kaya ito ay mahalaga sa Mayroon ito tularan kung saan maaaring makipag-ugnayan ang user sa database, sigurado, ngunit mayroon sila upang pumunta sa pamamagitan ng sa amin upang gawin ito. At iyan ay isa lamang ang mga ideya sa MVC. Ito ay sinusubukan upang ipatupad ang seguridad ng data. Ito ay sinusubukan upang maprotektahan ang mga model mula sa hindi sinasadyang o sadyang malisyosong mga user. Kaya kung ano ang mangyayari kapag apply namin ito tularan? Well, kami ay naghihiwalay ang data kinakailangan mula sa aming website-- ang model-- mula sa logic na nagpapatupad ng aming website functionality-- ang controller-- at mula sa simpleng aesthetics at pahina mga template na bumubuo ng aming experience-- user ang view. Ano ang ibig sabihin nito? Well, ang ibig sabihin nito ay maaari kang gumawa Mga tanawin ng nakikita sa user. Maaari mong itago ang mga modelo ang layo. At controllers-- ang user hindi siguro direkta manipulahin. Hindi nila kailangan upang ma-access ang iyong code na PHP. Sila lamang ang kailangan upang makita ang isang form kung saan maaari nilang i-type stuff in. Kaya marahil ang form ay isang view, ang controller ay ang PHP na ang form na isinusumite sa, mga controller gumagawa ng isang query sa modelo, ay nagbibigay sa mga modelo ng karagdagang impormasyon sa isang iba't ibang mga view na nagpapakita ng impormasyon sa iyo. Maaaring i-access ang iyong mga programa lahat ng iyong mga negosyo na lohika, ngunit hindi ang iyong mga user ay maaaring direktang ma-access ang iyong negosyo na lohika. At isa lalo na, marahil, nakikitang halimbawa ng mga ito ay nakatanggap ka na ng isang 403 Forbidden error. Nakarating na ba kayo nawala sa isang web pahina at nakita 403 Forbidden? Ito ay uri ng tulad ng 404 Not Found. 403 Forbidden nangangahulugan na sinubukan mong ma-access ang isang pahina na hindi ka magkaroon ng access sa. Marahil site na gamit MVC paghihiwalay upang itago ang layo business logic nito na pangangailangan sa umiiral sa server upang para sa pahina sa trabaho, ngunit hindi gusto mong direktang ma-access ito. Kaya maaari kang makakuha ng isang 403 Forbidden error. At hindi ito kahit na bagay kung ikaw ay naka-log in. Maaaring hawakan Walang user na ito dot file PHP. Maaari lamang silang hawakan ang isang ito, at ito one-- ang isa na maaaring sila touch-- marahil maaaring makipag-ugnayan sa mga naka-lock-down file mas tuwiran sa user. Kaya, kung minsan naming makita ito ng mga pahintulot error, ito 403 Forbidden. Paano naming baguhin ang mga pahintulot para na mga bagay na maaari o maaaring hindi makikita? Kapag ginagawa namin ito ay karaniwang ay ang paggamit ng isang Linux command na tinatawag chmod-- C-H-mod. Upang gawin ito, ang format ay medyo simple-- chmod, pahintulot, at anuman ang file na nais mong mag-aplay na pagbabago sa. So, baka gusto mo makita ang isang bagay tulad this-- chmod 600 helpers.php. O baka gusto mong makita this-- chmod isang plus x na kasama ang direktoryo. Ang ibig sabihin nito na ang Ay? Kaya, may dalawang magkaibang mga paraan na mga pahintulot ay karaniwang inilapat gamit chmod. Ang una ay tinatawag na octal paraan numero. Ito ay karaniwang sumasaklaw ng mga pahintulot sa tatlong iba't ibang mga kategorya ng mga gumagamit at sa parehong oras. Kaya chmod 711 file ay magpapahintulot sa iyo ang karapatan na magbasa, magsulat, at isakatuparan ang iyong file, papayagan others-- partikular inyong grupo at ang world-- upang maisagawa lamang ang file. Iyon ay kung ano ito isasalin sa. Ang unang numero doon ay kung ano ang maaari mong gawin, ang pangalawang numero ay ano ang magagawa ng iyong grupo, at ang ikatlong ay kung ano ang maaaring gawin sa buong mundo. Kahit sino na ang mga pagbisita sa iyong page, na ang mundo. Ano ang mga numero ng talagang isalin sa kahit na? Kaya karaniwang isalin ang mga tulad nito. Kung ang pahintulot ay zero, walang maaaring mangyari. Kung ito ay isa, maaari kang magsagawa ng mga file-- kung iyon ang iyong pahintulot. Kung ito ay dalawang, maaari kang sumulat ng mga file ngunit hindi ka maaaring gumawa ng kahit ano pa man. Kung ito ay tatlong, mo maaaring isulat at execute. At iba pa, tulad ng makikita mo. At pitong nangangahulugan na maaari mong gawin ang lahat. Kaya bakit ang mga tinatawag na octal na numero? Well, kung sa tingin mo ang tungkol dito, dito ay tulad noes at yeses, at kung sa tingin namin tungkol sa mga ito ng pula at luntiang kahon, marahil na ito ay gumagawa ng isang maliit na mas malinaw. Pero kung sa tingin namin ang tungkol sa mga pulang kahon bilang zero at ang berdeng kahon na iyan, ang mga ito ay talagang lamang ng mga hanay ng binary numero, di ba? 000 isasalin sa decimal 0; 001, decimal 1; 010 ay decimal 2, at iba pa. At kaya ang tawag namin sa mga octal numero dahil doon walong iba't ibang mga posibilidad. May walong iba't-ibang numero kung hindi namin pakikipag-usap tungkol sa tatlong bits ng information-- ang basahin bit, ang write bit, at ang execute bit. Kaya ngayon maaari mong makipag-usap binary, decimal, hex, at may walong tagiliran. Kaya alam mo kung paano makipag-usap sa mga computer sa apat na iba't ibang mga bilang system, kaya na medyo cool. Kaya, bukod sa octal pahintulot scheme, may din ang mga symbolic pahintulot scheme, na kung saan ay bahagyang naiiba at kadalasan ay pinakamahusay na ginagamit upang ilapat o alisin ang isang pahintulot sa buong board. Kaya chmod isang plus x file Maaaring idagdag ang mga karapatan upang maipatupad sa lahat ng tatlong mga kategorya ng users-- sa iyong sarili, sa iyong grupo, at sa mundo. Plus Iyon ay ang pagdaragdag ng bahagi. Ang karapatan upang maipatupad, iyon ang x. At ang katotohanan na ito ay sumasaklaw sa lahat ng tatlong mga grupo ng mga gumagamit ay ang a. Kaya this-- isang plus x-- ay marahil pagpunta upang maging eksakto ang parehong bilang chmod 711 maghain, dahil kung ikaw ay bumalik at tignan ang bilang octal scheme, iyan at sundo ibigay sa amin ang karapatan na magsagawa ng isang file. Kaya ito ay marahil ang parehong. At maaari mong gamitin ito gabay na sanggunian para sa kung ano ang iba't-ibang mga bagay-bagay sa symbolic chmod-ing istraktura ay. Ang mga bagay na berde dito ay magiging na kung saan ang lahat ng mga berdeng kulay na halimbawa ay isang segundo na nakalipas. Asul ay magiging asul. Orange Ang magiging orange. Kaya maaari mong ilapat ang mga bagay-bagay sa iyong grupo, sa iba, sa mga user, o sa lahat ng tao. Maaari mong bigyan sila basahin, isulat, at maglalapat ng access, at maaari mong idagdag o alisin ang mga o magtalaga ng eksaktong isang set ng pahintulot gamit ang modelong ito. Paano namin suriin kung ano ang isang pahintulot file scheme ay? Bago natin baguhin ito, ito ay marahil magandang upang aktwal na malaman kung ano ang mga pahintulot ng file ay. Ang isang paraan upang gawin ito ay upang patakbuhin ang ls ngunit mag-tweak lang ito nang kaunti. Kaya kung type ko ls gitling l-- iyan ay isang lowercase l-- siguro Kukunin ko makita ang isang bagay tulad nito. Tila isang maliit na piraso misteriyoso, ngunit ang bahagi na talagang nagmamalasakit kami tungkol ay ang mga bagay-bagay sa kaliwang banda roon. Iyan ang tunay na tumutukoy isang pahintulot file scheme. At maaari mong marahil sabihin dahil ito ay Nakakuha x ni r, w, at interspersed. Ang mga unang three-- hindi papansin ang unang isa para sa isang segundo, na kung saan ipapakita namin double pabalik sa. Ang mga unang tatlong matapos ang first-- kaya ang ikalawa, ikatlo, at ikaapat na mga character ng na 10 character na string ang mga pahintulot na mayroon ka. Kaya tila maaari akong magbasa, isulat, at maglalapat ng PHP. Maaari akong magbasa, magsulat, at execute PHP WebDev, at maaari akong magbasa at magsulat test.php. Aking mga grupo ay maaaring gawin ito. Kaya tila may PHP at PHP WebDev direktoryo, aking grupo ay maaaring sumulat sa ang mga ito ngunit walang ibang tao. At hindi maaaring gawin ang mga mundo ng kahit ano. Kaya ang mga file na ito ay hindi mapuntahan ng madla at kung sinubukan kong access ang mga ito at ako ay hindi tumatakbo Apache upang gawing naa-access ang mga ito, at pagkatapos ay ako makakuha ng isang 403 error. Ito ay isang kabiguan. Sinubukan kong i-access ng isang file ngunit ako wala kang pahintulot na gawin ito. At ano na ang unang character? Well, maaari mong malamang na intindihin mula sa data dito na ang d's sumangguni sa mga direktoryo at ang gitling ay tumutukoy sa tinatawag na "regular na mga file." At siguro na iyong nakita na ito kapag na sa iyo Sinubukan upang alisin ang isang file gamit ang rm. Nakita mo na ang misteriyoso mensahe "alisin regular file" - sa kasong ito, gusto ito ay test.php. Regular file ay lamang ng isang bagay hindi iyon isang direktoryo. Mayroong isang pares ng mga iba dito, ngunit sa pangkalahatan ay hindi ka pagpunta upang makita d's para sa mga direktoryo at wala sa unang elemento. Ngunit iyon lamang ang tunay na ang lahat ng mayroong dito. Maaari mong suriin ang file permissions gamit ls dash l, maaari mong baguhin ang mga ito gamit ang chmod. At, siyempre, gamitin these-- ang pagpapalit ng mga pahintulot upang ipatupad ang MVC tularan sa protektahan ang data sa iyong website at hindi payagan ang mga gumagamit upang ma-access ang lahat ng bagay, ngunit lamang ang mga bagay-bagay na kailangan nila upang ma-access sa order para sa iyong mga pahina upang gumana sa paraang nais mo ito upang gumana. Ako Doug Lloyd. Ito ay CS50.