דאג LLOYD: לפעמים כאשר אנחנו תכנות אנחנו עושים דברים כל כך נפוצים, כל כך לעתים קרובות, וכל כך הרבה אנשים לעשות את אותו הדבר idea-- או אותו דבר, שיש לו שם. MVC הוא בדיוק אחד כזה דבר. זה נקרא הפרדיגמה תכנות. זה קצת כמו שיטות עבודה מומלצת כי כבר מזוקק למטה על ידי אנשים שמנסים לעשות משהו. במקרה זה, ליישם מערכת של דפים שמשתמש יפעיל באתר אינטרנט מורכב יותר. וזה נעשה כל כך נפוץ ש זה מומלץ כסטנדרטי שאנשים אחרים אולי תרצו לעקוב, ויש קבוצה ספציפית מאוד של דרכים שאפשר לעקוב אחרי פרדיגמה זו. אז, MVC הוא הפרדיגמה, והסיבה אנחנו משתמשים בו הוא לפרטים מופשטים משם מהמשתמש. יש דברים המשתמשים לא ממש צריך לראות. הם רק רוצים להיות חוויית משתמש טובה, ואנחנו לא צריכים אותם לגשת כל קובץ ש קיים בשרת האינטרנט שלנו, אולי. אולי יש כמה קבצים שהם רק משמש כדי לחזק את חוויית המשתמש, וכך אנחנו יכולים מופשטים אלה משם. אנחנו סוג של יכולות להסתיר אותם כל כך המשתמש לא יכול לעבוד איתם, אבל pages-- pages-- יודע איך להתמודד איתם וקורא להם או אולי דורש, רוצה אותם, או משהו כזה. המניע העיקרי לMVC היא אבטחת מידע, כי MVC בדרך כלל מגיע ב הקשר של עבודה עם מסדי נתונים. ובנו בפרט רוצה למנוע ממשתמשים ממאגרי מידע ישירות משפיעים. אנחנו רק רוצים לעשות את זה באופן עקיף, באמצעות הסינון שלנו. או כדי לוודא שהכול בסדר ב שלנו עושים קצת בדיקת שגיאות או הגהה בטיחות לפני ש לשלוח אותו למסד הנתונים, שבו דברים יכולים להשתבש, אולי באמת לא בסדר, אם אנחנו לא זהירים. אז MVC עומד לדגם תצוגת בקר. מה כל אחד מאלה מתכוון? בעיקרון, מודל הוא מסד הנתונים שלך. זה שבו כל נתונים חשובים לאתר שלך שמות משתמש lives--, שמות משתמש, סיסמאות. ואתה יכול לעדכן אותו, להתייחס אליו, פחות או יותר כל דבר כמו ש. היית שאילתת מסד נתונים, היית שואל מידע ממאגר המידע. זה model-- כל נתונים שבו האתר שלך חי. הנוף הוא כמו סוג של חוויית המשתמש. זה הדפים שהם רואים לאחר הם ביקשו מידע. אז אולי הם יגישו information-- ההתחברות שלהם שהם יעשו בבקר, שנדברנו על בשני. הם אולי להגישם פרטי כניסה, ומסד נתוני שאילתא. ושמה מבוקש מידע משך מבסיס הנתונים. ואז ברגע שהמשתמש של מחובר ב, הם רואים דף הבית שלהם. זה נוף, בסדר? ולאחר מכן בקר הוא מה נקרא לוגיקה העסקית של האתר שלך. והיגיון העסקי הוא אחד מהמונחים אלה ש הוא סוג של רכרוכי-washy-- אוהבים, מה היגיון עסקי זה אומר? בעיקרון העסק שלך היגיון הוא PHP שלך. המשתמש שלך לא צריך לראות PHP שלך ישירות, אבל PHP שלך הוא כנראה מה שקורה לקבלת בקשות למסד הנתונים. אז קלט המשתמש מידע בנוף, אשר ישלב בקר. כמו, הם מקלידים בצורה. איך שתהליכי הטופס מידע הוא בקר. זה PHP זה בעצם מה שהופך את הבקשה למודל. ואז המודל נותן מידע לתצוגה, אשר נותן אותה למשתמש, אולי הכי טוב דמיין כדלקמן. אז הנה אנחנו. הנה לנו בצד השמאל, והמודל שלנו הסדר הפרדיגמה צפה בבקר. איך זה עובד? Us-- user-- עושה לבקש בקר. אנו להגיש מידע כגון על ידי טופס HTTP. בהתבסס על כך, בקר של עבודה היא לוודא כי מה שהמשתמש נתן הוא לא משהו שיפגע במודל. וכך בקר הולך לוודא שהכול בסדר. זה הולך להסתכל בזהירות רבה. אם יש שגיאות, זה יפסיק דברים כך שהמשתמש לא יכול להגיע למודל. אבל הכל בהנחה אישור וזה שאילתא תקפה, הבקר שאילתת model-- זה ישאל אותו לספק מידע. המודל יספק ש מידע לדף זה נוף, זה יהיה להעביר אותו ש הדרך, ולאחר מכן צפה ב יהיה לאכלס את המידע ביקש מהמודל. כך, למשל, אם אנחנו מדברים על כניסה לדף שלך בפייסבוק, לדוגמה. התצוגה תהיה נתונים שיצא מהמודל ש מתייחס לחברים שלך ואת החדשות להאכיל או דברים כאלה, נכון? אבל אתה לא רואה אחר של מישהו. אתה רוצה להיות כל כך getting-- אתה שולח שאילתא, אתה מתחבר לתירוץ model-- שלי, שתתחבר לדף. שימושי בקר פרטי כניסה שלך כדי להפוך את בקשה למודל לעשות בטוח שאתה מי שאתה אומר שאתה. כמו של המודל, אישור, כן, אתה מי שאתה אומר שאתה, אז תן לי לתת לך להאכיל את החדשות שלך. אני אתן לך את הנתונים הגולמיים ל הזנת החדשות שלך לתצוגה, ולאחר מכן את הנוף עושה את זה די, מעבד אותו בדרך כי אנחנו רגילים, בו מוצגות כי מידע למשתמש. שים לב לחיבור זה לא קיים בתרשים זה. אין קשר ישיר בינך לבין המודל. תמיד יש חיץ זה של בקר בצד הקלט, ויש חיץ של להציג בצד הפלט. אולי אתה טוב אדם, ואז אולי אתה לא הייתי עושה שום נזק ל מודל, אבל אולי אתה לא. או אולי יש מישהו ש משתמש זדוני שאולי היית רוצה לפגוע באתר שלך, אולי למחוק הכל מבסיס הנתונים שלך, אשר יכול להיות מאוד יקר. ברור, הוא-- נתוני משתמש ש יש ערך לכך שנתוני משתמש. ולכן אם אנחנו לא לשים חיץ זה אזור בין המשתמש וdatabase-- המשתמש והדברים model-- אולי לא הולך כל כך טוב עבורנו. ולכן חשוב ל יש לי הפרדיגמה שבי זה המשתמש יכול לתקשר עם מסד הנתונים, בטוח, אבל הם צריכים ללכת דרכנו לעשות זאת. וזה בעצם הרעיון עם MVC. היא מנסה ליישם אבטחת מידע. היא מנסה להגן על המודל מבשוגג או במזיד משתמשים זדוניים. אז מה קורה כאשר אנחנו מיישמים את הפרדיגמה הזו? ובכן, אנחנו מפרידים את הנתונים נדרש מwebsite-- model-- מההיגיון שמיישם באתר שלנו functionality-- controller-- ו מהאסתטיקה והדף פשוט תבניות המרכיבות משתמשים experience-- התצוגה. מה זה אומר? ובכן, זה אומר שאתה יכול לעשות רואה גלוי למשתמש. אתה יכול להסתיר את המודל משם. וcontrollers-- המשתמש לא יכול אולי ישירות לתפעל. הם לא צריכים לגשת לקוד PHP שלך. הם רק צריכים לראות צורה שבו הם יכולים להקליד דברים ב. אז אולי הצורה היא נוף, בקר הוא PHP שהטופס מגיש ל, בקר עושה שאילתא למודל, המודל נותן מידע נוסף לתצוגה אחרת ש מציג מידע אליך. התוכניות שלך יכולות לגשת ל כל ההיגיון העסקי שלך, אבל המשתמשים שלך לא יכולים ישירות לגשת לוגיקה העסקית שלך. ואחד במיוחד, אולי, איור גלוי של זה הוא אי פעם קיבל שגיאה אסורה 403. האם אי פעם הלכו לאינטרנט דף וראה 403 אסור? זה כמו סוג של 404 לא נמצאו. 403 אסורים אומר שאתה ניסית לגשת דף שאין לך גישה ל. אולי אתר שהוא באמצעות הפרדת MVC להסתיר מן ההיגיון העסקי שלה ש צריך להתקיים בשרת כדי לדף לעבוד, אבל לא רוצה שלגשת אליו ישירות. אז אתה עלול לקבל שגיאה אסורה 403. וזה אפילו לא משנה אם היית מחובר ב. אין משתמש יכול לגעת קובץ PHP נקודה זו. הם יכולים רק לגעת זה אחד, וזה one-- אחד שהם יכולים touch-- אולי יכול לקיים אינטראקציה עם הקובץ הנעול יותר מ בעקיפין המשתמש. אז, לפעמים אנחנו רואים את זה הרשאות שגיאה, 403 זה אסור. איך אנחנו יכולים לשנות את ההרשאות כך שדברים יכולים או לא יכולים לראות? כאשר אנו עושים זאת בדרך כלל היא להשתמש הפקודה לינוקס בשם C-H-mod chmod--. כדי לעשות זאת, הפורמט הוא די פשוט-- chmod, הרשאות, וכל מה שאתה רוצה קובץ כדי להחיל את השינוי ב. אז, אולי היית רואה משהו כמו זה-- chmod 600 helpers.php. או שאולי היית רואה זה-- chmod x בתוספת שכולל ספרייה. היה זה אומר אף? אז, יש שתי דרכים שונות שהרשאות הן בדרך כלל מיושם באמצעות chmod. הראשון נקרא שיטת מספרי אוקטלי. בדרך כלל זה חל הרשאות לשלוש קטגוריות שונות של משתמשים באותו הזמן. קובץ 711 אז chmod יאפשר לך הזכות לקרוא, לכתוב, ולבצע הקובץ שלך, תאפשר במיוחד נוספות-- הקבוצה שלך וworld-- לבצע רק את הקובץ. זה מה שזה מתרגם ל. המספר הראשון שם זה מה שאתה יכול לעשות, המספר השני הוא מה הקבוצה שלך יכולה לעשות, והשלישי הוא מה שהעולם יכול לעשות. כל מי שמבקר דף, זה העולם. מה הם מספרים אלה למרות שלמעשה לתרגם? אז אלה בעצם לתרגם כמו זה. אם הרשות היא אפס, שום דבר לא יכול לקרות. אם זה אחד, אתה יכול לבצע file-- אם זה רשותך. אם זה שניים, אתה יכול לכתוב את הקובץ אבל אתה לא יכול לעשות שום דבר אחר. אם זה שלושה, יכול לכתוב ולבצע. וכן הלאה, כפי שאתה יכול לראות. ושבעה אומר שאתה יכול לעשות הכל. אז למה נקראים אלה מספרי אוקטלי? ובכן, אם אתה חושב על זה, כאן כמו הלאווים ו"כן", ואם אנחנו חושבים עליהם כקופסות אדומות וירוקות, אולי זה עושה את זה קצת יותר ברור. אבל אם אנחנו חושבים על קופסות אדומות אלה כאפסים והתיבות הירוקות כמו אלה, אלה למעשה הם רק סטים של מספרי בינאריים, נכון? 000 מתרגמים עשרוני 0; 001, עשרוני 1; 010 הוא 2 עשרוניים, וכן הלאה. וכך אנו קוראים אוקטלי אלה מספרים, כי יש שמונה אפשרויות שונות. יש שמונה ספרות שונה אם אנחנו מדבר על שלוש פיסות information-- קצת קריאה, הכתיבה קצת, ולבצע קצת. אז עכשיו אתה יכול לדבר בינארי, עשרוני, hex, ואוקטלי. אז אתה יודע איך לתקשר עם מחשבים בארבעה מספר שונה מערכות, כך שזה די מגניב. אז, מלבד אוקטלי ערכת רשות, יש גם הרשות הסמלית תכנית, שהיא שונה במקצת ובדרך כלל משמש הטוב ביותר ליישם או להסיר את רשות על פני הלוח. אז chmod קובץ x בתוספת אולי להוסיף תקין לביצוע לכל שלוש קטגוריות של users-- את עצמך, הקבוצה שלך, והעולם. תוספת שהיא חלק הוספה. הזכות לבצע, זה x. והעובדה שהוא חל על כל שלוש קבוצות של משתמשים יהיו. אז זה-- x-- בתוספת כנראה הולך להיות בדיוק כמו chmod 711 להגיש, כי אם אתה חוזר ו מסתכל על תכנית מספר אוקטלי, אלה ושביעיים לתת לנו זכות להפעיל קובץ. אז זה כנראה אותו הדבר. ואתה יכול להשתמש בזה מדריך עזר למה הדברים השונים ב מבנה chmod-ing סמלי הם. הפריטים הירוקים כאן יהיו שבו כל הדוגמא בצבע הירוקה היה לפני שנייה. הכחול יהיה כחול. הכתום יהיה כתום. אז אתה יכול ליישם את הדברים שלך ב קבוצה, לאחרים, למשתמש, או לכולם. אתה יכול לתת להם לקרוא, לכתוב, ולבצע גישה, ואתה יכול להוסיף או להסיר או להקצות בדיוק סט הרשאות שימוש במודל זה. איך לבדוק מה ערכת רשות קובץ? לפני שנשנה את זה, זה כנראה טוב לדעת באמת מה הן את הרשאות הקובץ. דרך אחת לעשות זאת היא להפעיל ls אבל רק לצבוט אותו קצת. אז אם אני מקליד LS מקף l-- זה קטנה l-- אולי אני אראה משהו כזה. זה נראה קצת סתום, אבל החלק שבאמת אכפת לי הוא החומר על השמאל שם. שמציין למעשה ערכת רשות קובץ. וכנראה שאתה יכול לספר לי כי זה יש לי r של, w של, וx של ביניהם. אלה לוש-- הראשון ההתעלמות הראשונה לרגע, ש אנחנו להכפיל בחזרה ל. אלה שלושה ראשונים לאחר first-- כך השני, שלישי, ודמויות רביעי של שמחרוזת 10 אופי הן ההרשאות שיש לך. אז כנראה שאני יכול לקרוא, לכתוב, ולבצע PHP. אני יכול לקרוא, לכתוב, ו לבצע PHP WebDev, ואני יכול לקרוא ולכתוב test.php. הקבוצה שלי יכולה לעשות את זה. אז כנראה עם PHP וספריות PHP WebDev, הקבוצה שלי יכולה לכתוב ל שלהם אבל לא שום דבר אחר. והעולם לא יכול לעשות כלום. אז קבצים אלה אינם נגיש לציבור ואם ניסיתי לגשת אליהם ואני לא היה פועל Apache כדי להפוך אותם נגישים, אז הייתי מקבל שגיאה 403. זה כישלון. ניסיתי לגשת לקובץ אבל אני אין לי הרשאות לעשות את זה. ומה הוא שהתו הראשון? ובכן, כנראה שאתה יכול להסיק כאן שד 's מתייחס לספריות והמקף מתייחס ל מה שנקרא "קבצים רגילים". ואולי ראית את זה כאשר יש לך ניסיתי להסיר קובץ באמצעות RM. ראית את המסר הנסתר "להסיר את הקובץ רגיל" - במקרה זה, זה יהיה test.php. קובץ רגיל הוא פשוט משהו זה לא ספרייה. ישנם כמה של אחרים כאן, אבל בדרך כלל אתה הולך לראות d'של לספריות ושום דבר לאלמנט הראשון. אבל זה באמת כל מה שיש בו. אתה יכול לבדוק את קובץ הרשאות שימוש l מקף LS, אתה יכול לשנות אותם באמצעות chmod. וגם, כמובן, להשתמש בthese-- שינוי ההרשאות לאכוף הפרדיגמה MVC זה ל להגן על הנתונים באתר שלך ולא לאפשר למשתמשים כדי לגשת לכל דבר, אבל רק הדברים שהם צריכים לגשת על מנת שהדף שלך לעבוד בדרך שאתה רוצה שזה יעבוד. אני דאג לויד. זה CS50.