डौग लॉयड: कभी-कभी जब हम प्रोग्रामिंग कर रहे हैं हम तो, तो आमतौर पर बातें करते हैं अक्सर, और इतने सारे लोग एक ही idea-- या ऐसा ही करने बात यह है कि, यह एक नाम है। MVC के ठीक एक ऐसी बात है। यह एक प्रोग्रामिंग प्रतिमान कहा जाता है। यह एक तरह से एक सर्वोत्तम प्रथाओं पसंद है कि नीचे आसुत कर दिया गया है कुछ करने की कोशिश कर रहे लोगों द्वारा। इस मामले में, लागू पृष्ठों की एक प्रणाली एक उपयोगकर्ता के साथ सूचना का आदान प्रदान एक अधिक जटिल वेबसाइट पर। और यह तो आमतौर पर जो कुछ किया है यह एक मानक के रूप में सिफारिश की है अन्य लोगों का पालन करने के लिए की तरह हो सकता है कि, और तरीके का एक बहुत विशिष्ट सेट नहीं है एक है कि इस प्रतिमान पालन कर सकता है। तो, MVC एक प्रतिमान है, और कारण है हम इसे दूर सार विवरण के लिए है का उपयोग उपयोगकर्ता से। कुछ बातें उपयोगकर्ता वास्तव में देखने की जरूरत नहीं है। वे बस के लिए करना चाहते हैं एक अच्छा उपयोगकर्ता अनुभव, और हम उन्हें दिया है की जरूरत नहीं है हर एक फ़ाइल तक पहुंचने वाले शायद, हमारी वेब सर्वर पर मौजूद है। बस कर रहे हैं कि कुछ फ़ाइलों को हो सकता है उपयोगकर्ता अनुभव सिलेंडर का इस्तेमाल किया है, और दूर उन तो हम कर सकते सार। हम की तरह तो उन्हें छिपा कर सकते हैं उपयोगकर्ता, उन लोगों के साथ काम नहीं कर सकता लेकिन हमारे हमारे pages-- pages-- उन लोगों के साथ निपटने के लिए पता और उन्हें फोन या शायद की आवश्यकता होती है, उन्हें, या ऐसा कुछ करना चाहता है। प्राथमिक प्रेरणा MVC के डेटा की सुरक्षा के लिए है, MVC आमतौर पर में आता है क्योंकि डेटाबेस के साथ काम करने का प्रसंग। और विशेष रूप से हम में उपयोगकर्ताओं को रोकने के लिए चाहता हूँ सीधे असर पड़ रहा डेटाबेस से। हम केवल परोक्ष रूप से यह करना चाहते हैं हमारे छानने के माध्यम से। या बनाने यकीन है कि सब कुछ ठीक से कि हमें त्रुटि की जाँच का एक छोटा सा कर रही है या सुरक्षा प्रूफिंग हम पहले डेटाबेस, जहां के लिए भेज बातें शायद, गलत हो सकता है हम सावधान नहीं कर रहे हैं, वास्तव में गलत है। तो MVC मॉडल देखें नियंत्रक के लिए खड़ा है। इनमें से प्रत्येक क्या मतलब है? असल में, मॉडल अपने डेटाबेस है। यह है, जहां सभी आपकी साइट के लिए महत्वपूर्ण डेटा lives-- उपयोगकर्ता नाम, लॉगिन, पासवर्ड। और अगर आप इसे अद्यतन में यह उल्लेख कर सकते हैं, लगता है कि जैसे बहुत ज्यादा सब कुछ। आप एक डेटाबेस क्वेरी चाहते हैं, आप पूछना चाहते हैं डेटाबेस से जानकारी। इस बात का model-- सब है अपनी साइट पर रहती है जहां डेटा। दृश्य की तरह की तरह है उपयोगकर्ता अनुभव। यह वे के बाद देखने पृष्ठों है वे सूचना का अनुरोध किया है। इसलिए हो सकता है कि वे प्रस्तुत उनके प्रवेश information-- जो वे एक नियंत्रक में क्या होगा, जो हम एक दूसरे के बारे में बात करेंगे। वे शायद प्रस्तुत उनकी लॉगिन जानकारी, और डेटाबेस क्वेरी की है। सूचना का अनुरोध किया है और डेटाबेस से खींच लिया। और फिर उपयोगकर्ता के लॉग इन एक बार में, वे अपने घर पृष्ठ देखें। यही कारण है कि ठीक है, एक विचार है? और फिर नियंत्रक क्या है आपकी साइट के व्यापार तर्क बुलाया। और व्यापार तर्क है उन शर्तों में से एक है कि निरर्थक-washy-- तरह की तरह है, व्यापार तर्क क्या मतलब है? मूल रूप से अपने व्यवसाय तर्क अपने पीएचपी है। आपका उपयोगकर्ता की जरूरत नहीं है सीधे आपके पीएचपी, देखने के लिए लेकिन अपने पीएचपी शायद है क्या हो रहा है डेटाबेस के लिए अनुरोध कर रही हो। तो उपयोगकर्ता इनपुट एक दृश्य में जानकारी, जो एक नियंत्रक एकीकृत जाएगा। की तरह, वे एक फार्म में टाइप करेंगे। कैसे है कि फार्म प्रक्रियाओं जानकारी नियंत्रक है। यही कारण है कि वास्तव में है कि पीएचपी है मॉडल के लिए अनुरोध कर रही है। और फिर मॉडल देता है देखने के लिए जानकारी, यह उपयोगकर्ता के लिए देता है, जो इस प्रकार के रूप में शायद सबसे कल्पना की। तो हम यहाँ हैं। यहाँ छोड़ दिया पर हमें है, और हमारे मॉडल देखें नियंत्रक प्रतिमान व्यवस्था। यह कैसे काम करता है? user-- us-- एक बनाता है नियंत्रक करने के लिए अनुरोध करते हैं। हम जानकारी प्रस्तुत एक HTTP रूप से के रूप में इस तरह के। नियंत्रक के उस आधार पर काम यह सुनिश्चित करना है दिया है उपयोगकर्ता नहीं है क्या कि मॉडल को नुकसान होता है कि कुछ। और तो नियंत्रक करने के लिए जा रहा है सुनिश्चित करें कि सब कुछ ठीक कर सकते हैं। यह बहुत ही ध्यान से देखने के लिए जा रहा है। किसी भी त्रुटि नहीं है, यह चीजों को रोक देंगे ताकि उपयोगकर्ता मॉडल के लिए नहीं मिल सकता है। लेकिन यह सोचते हैं कि सब कुछ ठीक है और यह एक वैध प्रश्न है, नियंत्रक model-- क्वेरी करेगा यह जानकारी प्रदान करने के लिए यह पूछता हूँ। मॉडल है कि प्रदान करेगा एक दृश्य है कि एक पृष्ठ पर जानकारी, यह कि इसे संचारित करता हूँ रास्ता है, और फिर देखें जानकारी आबाद होगा मॉडल से अनुरोध किया। तो, उदाहरण के लिए, हम बात कर रहे हैं अपने फेसबुक पेज में प्रवेश करने के बारे में, उदाहरण के लिए। देखें डेटा होगा कि मॉडल से बाहर आ गया है कि अपने मित्रों और खबर को संदर्भित करता है ठीक है, कि जैसे फ़ीड या सामान? लेकिन अगर आप किसी और की नहीं देखना होगा। तुम तो getting-- होगी आप एक प्रश्न प्रस्तुत, आप model-- बहाना के लिए लॉग इन मुझे आप पृष्ठ के लिए लॉग इन। नियंत्रक का उपयोग करता है अपनी प्रवेश जानकारी बनाने के लिए मॉडल के लिए एक अनुरोध बनाने के लिए सुनिश्चित करें कि आप कर रहे हैं कि आप कर रहे हैं जो कहते हैं कि। मॉडल की तरह, हाँ, ठीक है, आप, आप कर रहे हैं जो कहते हैं कि कर रहे हैं इसलिए मुझे आप अपने समाचार फ़ीड देते हैं। मैं तुम्हारे लिए कच्चे डेटा दे दूँगा देखने के लिए अपने समाचार फ़ीड, और फिर यह देखने में आता है सुंदर, एक तरह से यह प्रक्रिया हम प्रदर्शित करने के लिए इस्तेमाल कर रहे हैं कि उपयोगकर्ता के लिए उस जानकारी। है कि कनेक्शन नोटिस इस चित्र पर मौजूदा नहीं। कोई सीधा संबंध नहीं है आप और मॉडल के बीच। इस बफर वहाँ हमेशा इनपुट पक्ष पर नियंत्रक, और का एक बफर वहाँ उत्पादन की ओर देखें। हो सकता है कि आप एक अच्छा कर रहे हैं व्यक्ति है, और इसलिए हो सकता है आप को कोई नुकसान नहीं होता मॉडल है, लेकिन हो सकता है आप नहीं कर रहे हैं। या हो सकता है कि वहां किसी कौन है है एक दुर्भावनापूर्ण उपयोगकर्ता हैं, जो शायद होगा हो सकता है, अपने डेटाबेस को नुकसान करना चाहते हैं अपने डेटाबेस से सब कुछ नष्ट, बहुत महंगा हो सकता है। जाहिर है, होने उपयोगकर्ता डेटा है- उपयोगकर्ता डेटा रखने के लिए मूल्य नहीं है। और हम इस बफर नहीं डाली यदि हां उपयोगकर्ता और database-- के बीच क्षेत्र उपयोगकर्ता और model-- बातें हमारे लिए इतनी अच्छी तरह से नहीं जा सकता। और इसलिए यह महत्वपूर्ण है के लिए इस प्रतिमान जहां है उपयोगकर्ता, डाटाबेस के साथ बातचीत कर सकते हैं यकीन है, लेकिन वे हमें के माध्यम से जाना है इसे करने के लिए। और कहा कि मूल रूप से MVC के साथ विचार है। यह डेटा की सुरक्षा को लागू करने की कोशिश कर रहा है। यह मॉडल की रक्षा करने के लिए कोशिश कर रहा है अनजाने में या जानबूझकर से दुर्भावनापूर्ण उपयोगकर्ताओं। तो क्या होता है जब हम इस प्रतिमान लागू होती है? खैर, हम डेटा को अलग कर रहे हैं हमारे website-- से आवश्यक तर्क से model-- कि हमारी वेबसाइट के लागू करता है नियंत्रक functionality-- और सरल सौंदर्यशास्त्र और पेज से शामिल है कि टेम्पलेट्स हमारे उपयोगकर्ता को देखने experience--। इसका क्या मतलब होता है? खैर, यह आप कर सकते हैं इसका मतलब उपयोगकर्ता को दिखाई विचार। तुम दूर मॉडल छुपा सकते हैं। और उपयोगकर्ता controllers-- शायद सीधे हेरफेर नहीं कर सकते। वे अपने PHP कोड का उपयोग करने की जरूरत नहीं है। वे सिर्फ एक रूप को देखने की जरूरत जहां वे में सामान टाइप कर सकते हैं। इसलिए हो सकता है रूप है एक दृश्य, नियंत्रक फार्म के लिए प्रस्तुत करें कि पीएचपी है, नियंत्रक, मॉडल के लिए एक प्रश्न बना देता है मॉडल और अधिक जानकारी देता है एक अलग दृष्टिकोण है कि आप के लिए जानकारी प्रदर्शित करता है। आपका कार्यक्रमों का उपयोग कर सकते हैं अपने व्यापार के तर्क के सभी, लेकिन अपने उपयोगकर्ताओं को सीधे नहीं कर सकते अपने व्यापार के तर्क का उपयोग। और एक विशेष रूप से, शायद, इस के दृश्य चित्रण आप कभी भी प्राप्त कर लिया है एक 403 निषिद्ध त्रुटि। आप कभी भी एक वेब करने के लिए चले गए हैं पेज और देखा 403 निषिद्ध? यह 404 नहीं मिला की तरह की तरह है। निषिद्ध 403 आप का उपयोग करने की कोशिश की है इसका मतलब आप के लिए पहुँच नहीं है कि एक पेज। शायद यह है कि साइट है MVC जुदाई का उपयोग अपने व्यापार तर्क दूर छिपाने के लिए कि आदेश में सर्वर पर मौजूद करने की जरूरत है पेज काम करते हैं, लेकिन यह नहीं है के लिए आप सीधे इसे उपयोग करना चाहते हैं। तो अगर आप एक 403 निषिद्ध त्रुटि हो सकती है। और यह भी कोई फर्क नहीं होता आप में लॉग इन किया गया है। कोई उपयोगकर्ता इस डॉट पीएचपी फ़ाइल को छू सकता है। वे केवल छू सकता है यह एक है, और इस one-- वे शायद touch-- कर सकते हैं कि एक बंद नीचे की फाइल के साथ बातचीत कर सकते हैं अधिक परोक्ष रूप से उपयोगकर्ता की तुलना में। तो, हम कभी कभी इस अनुमतियाँ देखने त्रुटि, यह 403 निषिद्ध। कैसे हम इतने अनुमतियाँ परिवर्तित करना चीजें या नहीं देखा जा सकता कर सकते हैं? हम ऐसा करते हैं तो आम तौर पर एक का उपयोग करने के लिए है लिनक्स कमांड chmod-- सी-एच-आधुनिक कहा जाता है। ऐसा करने के लिए प्रारूप सुंदर है chmod simple--, अनुमतियाँ, और जो कुछ भी फ़ाइल आप चाहते हैं के लिए कि परिवर्तन लागू करने के लिए। तो, हो सकता है आप कुछ देखना चाहते हैं है- जैसे 600 helpers.php हमें। या हो सकता है आप है- chmod देखना चाहते हैं निर्देशिका में शामिल हैं कि एक से अधिक एक्स। इस हालांकि इसका मतलब यह है था? तो, दो अलग अलग तरीके है अनुमतियों है कि आमतौर chmod का उपयोग कर लागू होता है। पहले कहा जाता है अष्टाधारी संख्या विधि। यह आमतौर पर अनुमतियों लागू होता है तीन अलग अलग श्रेणियों के लिए एक ही समय में उपयोगकर्ताओं की। तो chmod 711 फ़ाइल आप की अनुमति होगी सही पढ़ने, लिखने, और अमल करने के लिए आपकी फ़ाइल, की अनुमति होगी others-- विशेष अपने समूह और world-- केवल फ़ाइल को निष्पादित करने के लिए। यही कारण है कि इस के लिए अनुवाद है। वहाँ पहले नंबर आप क्या कर सकते है, दूसरा नंबर है अपने समूह क्या कर सकते हैं, और तीसरी दुनिया के लिए क्या कर सकते है। आपके आने के है जो किसी को भी पेज, कि दुनिया है। इन नंबरों क्या हैं वास्तव में, हालांकि करने के लिए अनुवाद? तो ये मूल रूप से इस तरह अनुवाद करते हैं। अनुमति है शून्य, कुछ भी हो सकता है। यह एक है, तो आप पर अमल कर सकते हैं कि आपकी अनुमति है अगर file--। यह दो है, तो आप फ़ाइल लिख सकते हैं लेकिन आप कुछ और नहीं कर सकता। यह तीन है, तो आप लिखने और अमल कर सकते हैं। और हां, तो आप देख सकते हैं। और सात आप सब कुछ कर सकते हैं इसका मतलब। तो क्यों इन अष्टाधारी संख्या कहा जाता है? वैसे, अगर आप इसके बारे में सोचते हैं, तो यहां noes और yeses की तरह है, और हम उनके बारे में अगर आपको लगता लाल और हरे रंग के बक्से के रूप में, हो सकता है कि यह एक छोटे से स्पष्ट करता है। लेकिन हम उन लाल बक्से के बारे में अगर आपको लगता लोगों के रूप में शून्य और हरे रंग के बक्से के रूप में, ये वास्तव में सिर्फ सेट कर रहे हैं बाइनरी संख्या की, है ना? 000 0 दशमलव में तब्दील हो; 001, 1 दशमलव; 010 इतने पर दशमलव 2 है, और। और इसलिए हम इन अष्टाधारी फोन नंबर नहीं है क्योंकि आठ अलग अलग संभावनाएं हैं। आठ रहे हैं हम कर रहे हैं, तो अलग अलग अंक तीन के बारे में बात कर रही है information-- के टुकड़े पढ़ें सा, लिखने सा है, और अमल सा। तो अब आप द्विआधारी बात कर सकते हैं, दशमलव, हेक्स, और अष्टाधारी। तो क्या आप के साथ संवाद करने के लिए पता चार अलग-अलग संख्या में कंप्यूटरों सिस्टम, इसलिए कि बहुत अच्छा है। तो, अष्टाधारी इसके अलावा अनुमति योजना नहीं है, यह भी प्रतीकात्मक अनुमति थोड़ा अलग है जो योजना, और आम तौर पर लागू करने के लिए सबसे अच्छा इस्तेमाल किया जाता है या बोर्ड भर में एक अनुमति हटा दें। तो एक से अधिक एक्स फ़ाइल chmod सही जोड़ सकता है सभी तीन को निष्पादित करने के लिए users-- की श्रेणियों अपने आप को, अपने समूह, और दुनिया। यही प्लस जोड़ने हिस्सा है। निष्पादित करने के लिए सही है, कि एक्स है। और सच तो यह है कि यह सब पर लागू होता है कि उपयोगकर्ताओं के तीन समूहों को एक होना होगा। तो एक से अधिक एक्स-शायद जा रहा है है- chmod 711 के रूप में बिल्कुल वैसा ही होना करने के लिए तुम वापस जाओ, क्योंकि अगर फाइल और अष्टाधारी नंबर योजना को देखो, लोगों और सेवन्स हमें दे एक फ़ाइल को निष्पादित करने के लिए सही है। तो यह शायद एक ही है। और अगर आप इस का उपयोग कर सकते हैं के लिए संदर्भ गाइड क्या में विभिन्न चीजों प्रतीकात्मक chmod हैैं संरचना रहे हैं। हरे रंग की वस्तुओं यहाँ होगा जहां सभी हरे रंग का उदाहरण एक दूसरी पहले था। नीला नीला होगा। नारंगी नारंगी होगा। तो आप चीजों को लागू कर सकते हैं अपने समूह, दूसरों के लिए, उपयोगकर्ता के लिए, या हर किसी के लिए। आप उन्हें पढ़ा दे सकते हैं, लिखते हैं, और निष्पादन एक्सेस, और आप जोड़ सकते हैं या हटा सकते हैं या वास्तव में एक सेट आवंटित इस मॉडल का उपयोग अनुमतियों की। हम क्या एक जाँच कैसे करते हैं फ़ाइल अनुमति योजना है? हम इसे बदलने से पहले, यह है वास्तव में पता करने के लिए शायद अच्छा फाइल अनुमति क्या कर रहे हैं। ऐसा करने का एक तरीका रास चलाने के लिए है लेकिन अभी यह थोड़ा tweak। तो अगर मैं प्रकार रास l-- पानी का छींटा हो सकता है कि l-- एक लोअरकेस है मैं कुछ इस तरह देखेंगे। यह एक छोटा सा गुप्त लग रहा है, लेकिन हम वास्तव में के बारे में परवाह है कि हिस्सा वहाँ पर बाईं तरफ के सामान है। यही कारण है कि वास्तव में निर्दिष्ट करता है एक फ़ाइल अनुमति योजना। यह बात है और क्योंकि आप शायद बता सकते हैं आर, डब्ल्यू, और एक्स के interspersed मिला है। उन पहले three-- पहले एक अनदेखी एक दूसरे के लिए जो हम वापस करने के लिए दोगुना कर देंगे। उन पहले तीन के बाद first-- दूसरा ऐसा है, तीसरे और चौथे पात्रों कि 10 चरित्र स्ट्रिंग की आपको लगता है कि अनुमतियों हैं। तो जाहिरा तौर पर मैं पढ़ सकते हैं लिखते हैं, और पीएचपी निष्पादित। मैं पढ़ने, लिखने, और कर सकते हैं , पीएचपी webdev निष्पादित और मैंने पढ़ा है और test.php लिख सकते हैं। मेरे समूह कर सकते हैं। तो जाहिरा तौर पर PHP के साथ और पीएचपी webdev निर्देशिका, अपने समूह को लिख सकते हैं उन्हें लेकिन कुछ नहीं। और दुनिया में कुछ भी नहीं कर सकते। तो इन फ़ाइलों नहीं हैं सार्वजनिक रूप से सुलभ और मैं करने की कोशिश की, तो उन तक पहुँचने और मैं नहीं था अपाचे चल उन्हें सुलभ बनाने के लिए, फिर मैं एक 403 त्रुटि मिल जाएगा। यह एक विफलता है। मैं एक फ़ाइल में प्रवेश करने की कोशिश की लेकिन मैं यह करने के लिए अनुमतियाँ नहीं हैं। और कहा कि पहले चरित्र क्या है? ठीक है, तुम शायद एक्सट्रपलेशन कर सकते हैं यहां डी एस निर्देशिका के संदर्भ कि और पानी का छींटा को संदर्भित करता है "नियमित रूप से फ़ाइलें।" तथाकथित आप है और जब शायद तुम यह देखा है आरएम का उपयोग कर एक फ़ाइल को दूर करने की कोशिश की। आप गुप्त संदेश को देखा है "नियमित रूप से फ़ाइल को हटाने" - इस मामले में, यह test.php होगी। नियमित फाइल अभी कुछ है एक निर्देशिका है कि नहीं है। दूसरों के एक जोड़े हैं यहाँ है, लेकिन आम तौर पर आप कर रहे हैं डी एस निर्देशिका के लिए देखने के लिए जा रहा और पहली तत्व के लिए कुछ भी नहीं है। लेकिन यह है कि वास्तव में सब कुछ है यह करने के लिए है। आप फाइल की जांच कर सकते हैं रास पानी का छींटा एल का प्रयोग अनुमति, आप chmod का उपयोग कर उन्हें बदल सकते हैं। और, ज़ाहिर है, these-- उपयोग अनुमतियाँ बदल यह MVC के प्रतिमान को लागू करने के लिए अपनी वेबसाइट पर डेटा की रक्षा और उपयोगकर्ताओं की अनुमति नहीं सब कुछ का उपयोग करने के लिए, जरूरत है कि वे लेकिन केवल सामान अपने पृष्ठ के लिए आदेश में पहुँचने के लिए आप यह काम करना चाहते हैं जिस तरह से काम करने के लिए। मैं डौग लॉयड हूँ। इस CS50 है।