1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [שבוע 8, המשך] 2 00:00:02,000 --> 00:00:04,000 [הדוד י מלאן] [אוניברסיטת הרווארד] 3 00:00:04,000 --> 00:00:08,000 [זה CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> זה CS50, אז זה סוף השבוע 8 כאן. 5 00:00:13,000 --> 00:00:16,000 אנחנו כמובן היו קצת הוריקן בתחילת השבוע, 6 00:00:16,000 --> 00:00:19,000 אז עכשיו זה באמת רק אתה ואני באולם הרצאות זה, 7 00:00:19,000 --> 00:00:22,000 אבל היום אנחנו ממשיכים את השיחה שלנו על PHP 8 00:00:22,000 --> 00:00:25,000 ועל תכנות האינטרנט באופן כללי יותר, ויש לנו גם להציג את הרעיון 9 00:00:25,000 --> 00:00:29,000 של מסדי נתונים, במיוחד אחד בשם MySQL, שהוא די פופולרי בימים אלה, 10 00:00:29,000 --> 00:00:34,000 בחלק גדול הודות ליכולת ההרחבה שלו, כמו גם בגלל היותו חופשי והקוד פתוח. 11 00:00:34,000 --> 00:00:37,000 >> אבל תחילה, יסתכל בו הפסקנו בפעם אחרונה. 12 00:00:37,000 --> 00:00:40,000 תזכיר כי אנחנו מסתכלים על כמה דוגמאות פרוש IMS, 13 00:00:40,000 --> 00:00:44,000 וזה היה בצורה הזוועתית שאני בא עם כ 15 + שנים לפני 14 00:00:44,000 --> 00:00:49,000 כדי שתהיה לי סטודנטים בקמפוס הרשמה לשנת א 'ספורט ביצוע עצמי 15 00:00:49,000 --> 00:00:52,000 מבלי למעשה לטרק יותר מעבר לחצר לWigglesworth 16 00:00:52,000 --> 00:00:56,000 להחליק פיסה פיזית של נייר מתחת לדלת כלשהי של משגיח. 17 00:00:56,000 --> 00:00:59,000 במקום עברנו הכל באינטרנט, אבל כדי לעשות את זה אנחנו צריכים לעשות שימוש 18 00:00:59,000 --> 00:01:03,000 של כמה טכנולוגיות, ולכן אחד, אנחנו צריכים HTML, שפת סימון היפרטקסט, 19 00:01:03,000 --> 00:01:07,000 ששוב הוא שפת סימון זה שבחר לביצוע דפי אינטרנט מבני. 20 00:01:07,000 --> 00:01:10,000 >> שימוש קצת של CSS בימים אלה, גיליונות סגנון מדורג, 21 00:01:10,000 --> 00:01:16,000 לפיו אנו משתמשים stylizations של דף האינטרנט באמצעות תחביר שונה מעט, 22 00:01:16,000 --> 00:01:19,000 ואילו את ה-HTML היה כל העניין במבנה ממנו. 23 00:01:19,000 --> 00:01:21,000 גם אנחנו צריכים להציג את שפת תכנות אינטרנט. 24 00:01:21,000 --> 00:01:25,000 במקרה זה, ישתמש PHP, וPHP הולך לאפשר לנו 25 00:01:25,000 --> 00:01:28,000 תפוקה לתוכן באופן דינמי כמו גם לעשות דברים כמו תכנות 26 00:01:28,000 --> 00:01:33,000 שליחת מיילים, כפי שהיה במקרה על הפתק שהשארנו בשבוע שעבר. 27 00:01:33,000 --> 00:01:35,000 >> יזכיר כי הקוד לכך היה ב 2 חלקים. 28 00:01:35,000 --> 00:01:38,000 אחד, שהיינו לנו froshims3.php, 29 00:01:38,000 --> 00:01:42,000 וזה היה במידה רבה עם סימון טופס HTML בתוכו, 30 00:01:42,000 --> 00:01:45,000 טיפה של CSS כאן בתכונות הסגנון 31 00:01:45,000 --> 00:01:48,000 כך שהטופס עצמו היה מרוכז בדף, אבל מעבר לזה 32 00:01:48,000 --> 00:01:51,000 היו לנו כמה תשומות יציגות טופס, שדה טקסט, תיבת סימון, 33 00:01:51,000 --> 00:01:55,000 כמה כפתורי רדיו, בחר תפריט, וכפתור שליחה. 34 00:01:55,000 --> 00:02:01,000 ובאמצעות טופס זה, הגשנו לקובץ שנקרא כנראה register3.php, 35 00:02:01,000 --> 00:02:04,000 שנראה הוא עצם משהו קטן כזה. 36 00:02:04,000 --> 00:02:08,000 עכשיו, את רוב הקוד בregister3.php, כזכור, היה כל עניין בדוא"ל. 37 00:02:08,000 --> 00:02:11,000 זה עשה קצת אימות של הטופס שהוגש כדי לוודא 38 00:02:11,000 --> 00:02:14,000 שהשדות בפועל ובלבד שהיו צפויים. 39 00:02:14,000 --> 00:02:18,000 אז קראו לכמה פונקציות PHP באמצעות תחביר חדש במקצת, 40 00:02:18,000 --> 00:02:20,000 למרות שזה שאול מג 41 00:02:20,000 --> 00:02:24,000 >> מפעיל חץ זה מאפשר לנו לעשות שימוש במשהו שנקרא תכנות מונחה עצמים. 42 00:02:24,000 --> 00:02:27,000 אנחנו לא נכנסנו לזה בכל פרט כאן, אבל יודעים לעת עתה 43 00:02:27,000 --> 00:02:31,000 זה דרכו של בעל פונקציות הקשורות לאובייקטים, 44 00:02:31,000 --> 00:02:34,000 שהם סוג מיוחד של מבנה, כפי שראינו ב C. 45 00:02:34,000 --> 00:02:37,000 אבל לעת עתה, רק לקחת על אמונה שזה התחביר הנכון להשתמש 46 00:02:37,000 --> 00:02:41,000 בעת שימוש בספרייה כספריית PHPMailer זה. 47 00:02:41,000 --> 00:02:44,000 ואז בסוף הקובץ זה אנחנו שנוצרנו באופן דינמי דוא"ל 48 00:02:44,000 --> 00:02:47,000 שקבל בדואר לחשבון jharvard@cs50.net 49 00:02:47,000 --> 00:02:50,000 מחשבון jharvard@cs50.net, 50 00:02:50,000 --> 00:02:54,000 ואנחנו הודענו למשתמש בהתאם כי הם היו רשומים לספורט הזה. 51 00:02:54,000 --> 00:02:57,000 זה פחות או יותר מה שאתר IMs הפרוש עשה לפני השנים רבות כל 52 00:02:57,000 --> 00:03:00,000 כשיישמתי אותו, מובן מאליו, בשפה אחרת, 53 00:03:00,000 --> 00:03:02,000 אבל זה מראה לך אולי את הכח שיש לך 54 00:03:02,000 --> 00:03:05,000 עכשיו שאתה יכול לבטא את עצמך, לא רק תכנותי 55 00:03:05,000 --> 00:03:08,000 ברמה נמוכה בשפה כמו C, אבל ברמה הרבה יותר גבוהה 56 00:03:08,000 --> 00:03:11,000 עם יישומים אלה מאוד בעולם אמיתיים כמו דואר האלקטרוני למעשה לפתרון 57 00:03:11,000 --> 00:03:13,000 כמה בעיות בעולם אמיתית. 58 00:03:13,000 --> 00:03:16,000 >> עכשיו, כמובן, למרות שאני משתמש בסקריפט זה כדי לייצר כמה 59 00:03:16,000 --> 00:03:20,000 מיילים באופן דינמי מjharvard@cs50.net, שהוא אכן חשבון 60 00:03:20,000 --> 00:03:23,000 שיש לי גישה אליו, אין די זהיר כדי לשלוח 61 00:03:23,000 --> 00:03:26,000 לשלוח רק מחשבונות שהם למעשה שלך, 62 00:03:26,000 --> 00:03:30,000 שמא דברים מקבלים אותך בקצת מים חמים בחיים. 63 00:03:30,000 --> 00:03:35,000 עם זאת אמרה, בואו עכשיו מעבר לפתרון בעיה אחרת לגמרי, 64 00:03:35,000 --> 00:03:37,000 זה של מדינות תומכות. 65 00:03:37,000 --> 00:03:39,000 עכשיו, מה זה בעצם אומר? 66 00:03:39,000 --> 00:03:42,000 HTTP, פרוטוקול העברת היפרטקסט זה, 67 00:03:42,000 --> 00:03:45,000 הוא למעשה פרוטוקול חסר מדינה, ומה שזה אומר זה ש 68 00:03:45,000 --> 00:03:48,000 כאשר אתה מושך משהו כמו Google.com ואז הקש על Enter 69 00:03:48,000 --> 00:03:51,000 בדרך כלל הדפדפן שלך יש איזשהו סמל שמסתובב אז 70 00:03:51,000 --> 00:03:54,000 תוצאות בדף אינטרנט כלשהו שהורידו, 71 00:03:54,000 --> 00:03:57,000 ואז שהסמל הקטן מפסיק להסתובב, וזה אכן מצביע על 72 00:03:57,000 --> 00:04:02,000 HTTP שהשלים איזשהו חיבור לשרת וזהו. 73 00:04:02,000 --> 00:04:05,000 HTTP הוא חסר מדינה במובן זה שהיא אינו מקיימת 74 00:04:05,000 --> 00:04:08,000 חיבור מתמיד לשרת באותה הדרך סקייפ עושה 75 00:04:08,000 --> 00:04:11,000 או Gchat עושה כי עם HTTP 76 00:04:11,000 --> 00:04:15,000 ההנחה היא שברגע שהביא בדף אינטרנט שזהו זה. 77 00:04:15,000 --> 00:04:18,000 >> עכשיו, במציאות בימים אלה באתרים כמו פייסבוק וגוגל מפות 78 00:04:18,000 --> 00:04:21,000 וטוויטר וכמו שיש הרבה יותר דינמי לפי 79 00:04:21,000 --> 00:04:25,000 גם לאחר שהסמל מפסיק להסתובב אתה יכול למעשה לקבל יותר עדכונים 80 00:04:25,000 --> 00:04:29,000 מהשרת, יותר ציוצים, עדכוני סטטוס בפייסבוק וכדומה. 81 00:04:29,000 --> 00:04:33,000 אבל אפילו שהוא משתמש בטכניקה שנדברנו עליו בשבוע או שבועות 82 00:04:33,000 --> 00:04:36,000 מכונה אייאקס באמצעות שפת JavaScript נקראת, 83 00:04:36,000 --> 00:04:38,000 אבל בסופו של היום, HTTP הוא עדיין חסר מדינה. 84 00:04:38,000 --> 00:04:42,000 ובכל זאת, אם אתה רוצה איכשהו לזכור דברים על משתמש 85 00:04:42,000 --> 00:04:44,000 גם לאחר שנותקו מהשרת שלך 86 00:04:44,000 --> 00:04:47,000 PHP עושה להרשות לך אמצעים לעשות את זה 87 00:04:47,000 --> 00:04:52,000 כי, כפי שראינו בפעם שעברה, PHP יש מספר superglobals, 88 00:04:52,000 --> 00:04:55,000 וsuperglobal הוא, שוב, משתנה גלובלי מיוחד 89 00:04:55,000 --> 00:04:59,000 זה נתן לך על ידי שרת האינטרנט ועל ידי PHP עצמו. 90 00:04:59,000 --> 00:05:02,000 >> אתה לא צריך לעשות שום דבר כדי לשים ערכים בו, 91 00:05:02,000 --> 00:05:05,000 ובין superglobals שראינו עד כה הם מקבלים ולפרסם, 92 00:05:05,000 --> 00:05:08,000 מקום שבו שדות בטופס מועברים באופן אוטומטי עבורך, 93 00:05:08,000 --> 00:05:11,000 כמו גם כמה אחרים שלא ראו עדיין. 94 00:05:11,000 --> 00:05:17,000 בתוך $ _SERVER כמה משתנים מיוחדים הקשורים לשרת עצמו. 95 00:05:17,000 --> 00:05:22,000 מה כתובת ה-IP, מה הפרוטוקול, HTTP או HTTPS השתמש אתה, 96 00:05:22,000 --> 00:05:25,000 מה שיטת בקשה האם השתמש וכדומה, ולכן יש קצת מעניין, 97 00:05:25,000 --> 00:05:29,000 פרטים עסיסיים על השרת, ולמעשה, המשתמש בגם שם. 98 00:05:29,000 --> 00:05:33,000 יש _cookie דולרים, שהמקום שבו הדברים האלה נקראים עוגיות נשמרות. 99 00:05:33,000 --> 00:05:36,000 אנחנו לא לבזבז זמן על עוגיות עצמם היום, 100 00:05:36,000 --> 00:05:40,000 אך אני יודע עכשיו שעוגייה היא רק פיסה קטנה של מידע 101 00:05:40,000 --> 00:05:43,000 ששרת אינטרנט יכול לשתול בדפדפן אינטרנט 102 00:05:43,000 --> 00:05:46,000 וזכרון RAM בתורו או בכונן הקשיח של המחשב שלו 103 00:05:46,000 --> 00:05:49,000 כדי לאחסן מידע אודות משתמש, לדוגמה, שם המשתמש שלהם 104 00:05:49,000 --> 00:05:52,000 כדי שהם לא יצטרכו להקליד אותה בכל פעם שהם נכנסים או איזה 105 00:05:52,000 --> 00:05:55,000 מספר או מזהים שלמשתמש ייחודי 106 00:05:55,000 --> 00:05:58,000 כך שאתה לא צריך להציק להם עם אותם מיני שאלות על 107 00:05:58,000 --> 00:06:00,000 העדפות בעתיד, אבל רוב העניין 108 00:06:00,000 --> 00:06:02,000 עכשיו הוא _session $. 109 00:06:02,000 --> 00:06:07,000 >> superglobal זו, אשר, כמו האחרים, הוא נתן לך באופן אוטומטי על ידי PHP 110 00:06:07,000 --> 00:06:10,000 כשאתה כותב אתרים מבוססי PHP 111 00:06:10,000 --> 00:06:13,000 ניתן לאחסן כל דבר שאתה רוצה, מחרוזות, מספרים שלמים, 112 00:06:13,000 --> 00:06:16,000 נקודות צפות, ערכים, מערכים, אובייקטים, 113 00:06:16,000 --> 00:06:20,000 באמת כל מה שאתה רוצה, וזה מאפשרים לך לאחסן אותו בצורה כזאת 114 00:06:20,000 --> 00:06:23,000 שגם אם המשתמש מבקר אותך עכשיו ולאחר מכן 115 00:06:23,000 --> 00:06:26,000 חוזרת דקות הליכה מעכשיו או 5 דקות מעתה כי 116 00:06:26,000 --> 00:06:28,000 הם לוקחים את הזמן שלהם לפני הלחיצה על קישור כלשהו אחר 117 00:06:28,000 --> 00:06:32,000 PHP יבטיח כי כל מה שהנחית שsuperglobal המושב 118 00:06:32,000 --> 00:06:37,000 לפני דקה או 5 דקות עדיין יהיה שם כשחוזר למשתמש. 119 00:06:37,000 --> 00:06:40,000 ומתחת למכסת מנוע superglobal זה מיושם בדרך של 120 00:06:40,000 --> 00:06:44,000 הדברים האלה נקראים עוגיות, אך לעת עתה, זה רק הפשטה 121 00:06:44,000 --> 00:06:47,000 לפי זה סוג של המקבילה התכנותית של עגלת קניות. 122 00:06:47,000 --> 00:06:50,000 לא משנה מה אתה, המתכנת, תרשום ש 123 00:06:50,000 --> 00:06:53,000 המערך אסוציאטיבי superglobal יהיה שם איזה מספר דקות מאוחר יותר 124 00:06:53,000 --> 00:06:59,000 עד שתמחק אותו או עד שהמשתמש עוזב או שלה דפדפן לגמרי. 125 00:06:59,000 --> 00:07:02,000 >> בואו נסתכל על דוגמה של איך הדבר הזה מיושם בפועל. 126 00:07:02,000 --> 00:07:07,000 בcounter.php בין החתיכות של היום של קוד 127 00:07:07,000 --> 00:07:09,000 יש לנו את השורה הבאה. 128 00:07:09,000 --> 00:07:13,000 בתחילת קובץ זה יש לנו חבורה של הערות כחולות, אשר חסרות עניין לעת עתה. 129 00:07:13,000 --> 00:07:15,000 אבל בקו 13 שיש לנו בשורה חדשה, 130 00:07:15,000 --> 00:07:18,000 session_start, ושבעצם עושה בדיוק מה זה אומר. 131 00:07:18,000 --> 00:07:20,000 זה מתחיל מפגשים. 132 00:07:20,000 --> 00:07:25,000 זה מאפשר לך להשתמש שב_session הגדול superglobal $, וזה פשוט כמו זה. 133 00:07:25,000 --> 00:07:30,000 עכשיו, אם אנו ממשיכים להסתכל על קו 16, בואו ננסה להבין מה דף אינטרנט זה הוא הולך לעשות. 134 00:07:30,000 --> 00:07:35,000 אם (isset (_SESSION ["נגדי"] $) אז קדימה 135 00:07:35,000 --> 00:07:39,000 וחנות במשתנת הדלפק, דלפק קטן, 136 00:07:39,000 --> 00:07:42,000 _SESSION $ ["נגדי"]. 137 00:07:42,000 --> 00:07:45,000 זה נראה שהכרזה על משתנה מקומי נקראים נגדי 138 00:07:45,000 --> 00:07:48,000 אשר לתוך זה לשים עותק של כל מה שבתוך superglobal 139 00:07:48,000 --> 00:07:52,000 כינה את המושב במיקום "הנגדי". 140 00:07:52,000 --> 00:07:56,000 אחר, ככל הנראה, נגד משתנה המקומי הקטן הזה, הוא מאותחל ל 0. 141 00:07:56,000 --> 00:08:01,000 >> אבל אז, כמה שורות מאוחר יותר ב26 הודעה שהעותק של החיבור של דלפק, 142 00:08:01,000 --> 00:08:06,000 המפתח שלה, יש לו הוקצה ערך חדש שהוא ערך הפלוס 1 נוכחי. 143 00:08:06,000 --> 00:08:09,000 בקיצור, קובץ זה נראה שעדכון 144 00:08:09,000 --> 00:08:13,000 דלפק שהוא מאוחסן בתוך superglobal המושב 145 00:08:13,000 --> 00:08:16,000 ידי הגדלתו על ידי 1, אבל היא שומרת עותק של הערך הקודם 1 146 00:08:16,000 --> 00:08:20,000 ידי אחסונו במשתנה מקומית נקרא $ דלפק, 147 00:08:20,000 --> 00:08:22,000 ולאחר מכן כאן בואו לראות מה נשאר. 148 00:08:22,000 --> 00:08:24,000 מתברר שזה די הרבה רק HTML. 149 00:08:24,000 --> 00:08:29,000 בתחתית דף זה אנו רואים בקו 37 שאני מבקר באתר זה 150 00:08:29,000 --> 00:08:33,000 מספר נגדי של פעמים, כך שיש כמה תכונות מעניינות כאן. 151 00:08:33,000 --> 00:08:36,000 אחד, ברור שזה משתנה, אבל זה לא יספיק רק כדי לשים 152 00:08:36,000 --> 00:08:39,000 דלפק $ בגוף של HTML שלך, כי כמובן 153 00:08:39,000 --> 00:08:43,000 אם זה רק שם בין PHP HTML שלך הולך להניח שזה רק ה-HTML. 154 00:08:43,000 --> 00:08:48,000 אתה ממש רוצה $ נגדיים שיודפסו על המסך. 155 00:08:48,000 --> 00:08:51,000 >> אבל במקום על ידי הטלה למצב PHP 156 00:08:51,000 --> 00:08:55,000 בקטע הזה של תחביר אנחנו דינמיים יכולים להוסיף ערך כאן 157 00:08:55,000 --> 00:08:58,000 דומה מאוד בהרוח למה שעשינו בפעם שעברה עם 158 00:08:58,000 --> 00:09:00,000 החדרת ערכים למחרוזות. 159 00:09:00,000 --> 00:09:04,000 למעשה, זה רק סימון מקוצר לאומר משהו כמו זה, פשוטו כמשמעו, 160 00:09:04,000 --> 00:09:12,000 הדפסה ($ נגדיים) או אפילו משהו כמו printf (% s, דלפק), 161 00:09:12,000 --> 00:09:14,000 או אפילו, כפי שאתה יכול לראות באינטרנט או בספרי לימוד, 162 00:09:14,000 --> 00:09:17,000 יש פונקציה ב-PHP נקראת הד 163 00:09:17,000 --> 00:09:20,000 שעושה את אותו הדבר, ואת כל אלה הם דרכים גהקו כבר 164 00:09:20,000 --> 00:09:25,000 לומר 00:09:28,000 במקרה אחד זה שאתה לא צריך לשים 166 00:09:28,000 --> 00:09:30,000 המילה PHP אחרי סימן השאלה. 167 00:09:30,000 --> 00:09:34,000 זה סימון מקוצר עבור, שוב, מה שראינו כרגע לפני רגע 168 00:09:34,000 --> 00:09:37,000 המהדהד ערך כלשהו. 169 00:09:37,000 --> 00:09:39,000 >> בואו לראות מה התוצאה הסופית של זה בעצם היא. 170 00:09:39,000 --> 00:09:43,000 בואו תעברו עליי לתוך קובץ counter.php, 171 00:09:43,000 --> 00:09:47,000 ונראה שהדוד פשוט עשה טעות על ידי משחק עם הקוד שם. 172 00:09:47,000 --> 00:09:50,000 בואו נלך לתקן כל מה שהוא פשל, 173 00:09:50,000 --> 00:09:54,000 ונראה שיש שגיאה שם, נעלמה, בקו 37. 174 00:09:54,000 --> 00:09:59,000 לדברי ראש הדף זה אני מבקר באתר זה 0 פעמים. 175 00:09:59,000 --> 00:10:02,000 ובכן, בואו נלך קדימה עכשיו, ובחלק העליון של הדפדפן לחץ על 176 00:10:02,000 --> 00:10:05,000 לטעון מחדש סמל, ואני לוחץ על לטעון מחדש, 177 00:10:05,000 --> 00:10:12,000 ועכשיו אני כבר בקרתי באתר הזמן 1, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 ואכן, אם נסתכל על המקור של הדף, קוד המקור הממשי משתנה, 179 00:10:16,000 --> 00:10:19,000 ושים לב להעדר המוחלט של PHP, וזה בגלל 180 00:10:19,000 --> 00:10:23,000 קוד PHP מוערך או מתפרש בצד שרת, 181 00:10:23,000 --> 00:10:27,000 ואז זה אומר שהפלט של סקריפט PHP הוא מה שסופו של הדבר נשלח לדפדפן, 182 00:10:27,000 --> 00:10:31,000 אשר במקרה זה הוא קצת HTML גלם וחלק הטקסט גולמי. 183 00:10:31,000 --> 00:10:33,000 מה קורה פה? 184 00:10:33,000 --> 00:10:37,000 >> ובכן, עם מספר קטנות יחסית של שורות קוד שאני יכול לאחסן 185 00:10:37,000 --> 00:10:40,000 בהתמדה במשך כמה שניות, או אם תחכה מספיק זמן, 186 00:10:40,000 --> 00:10:44,000 דקות, שעות, אפילו קצת ערך באופן שגורם HTTP 187 00:10:44,000 --> 00:10:47,000 נראה stateful כאילו אנחנו שמרנו בזיכרון 188 00:10:47,000 --> 00:10:51,000 חיבור זה לשרת, וזה פשוט זכר את מה שאמרתי לו בפעם האחרונה, 189 00:10:51,000 --> 00:10:55,000 אבל במציאות יש חבורה שלמה של מורכבות קורית מתחת למכסת המנוע 190 00:10:55,000 --> 00:10:59,000 מעורב עוגיות המאפשרות PHP כדי לתת לי את האשליה הזאת 191 00:10:59,000 --> 00:11:02,000 של קניות זה עגלה כמו תכונה. 192 00:11:02,000 --> 00:11:05,000 לעת עתה, דוגמא טריוויאלית בו אנחנו רק אחסון מספר שלם, 193 00:11:05,000 --> 00:11:08,000 אבל התכונה שתחזור להיות בעל ערך רב 194 00:11:08,000 --> 00:11:10,000 כאשר אנחנו מתחילים לדבר על פרויקטים יותר מורכבים, 195 00:11:10,000 --> 00:11:12,000 ביניהם בעיה להגדיר 7. 196 00:11:12,000 --> 00:11:16,000 זו הבעיה האחרונה שלך להגדיר בCS50. 197 00:11:16,000 --> 00:11:19,000 אני יודע, זה כל כך עצוב, אבל מה שתמצא הוא שאנחנו הולכים להגיע למסקנה 198 00:11:19,000 --> 00:11:22,000 חלק זה של הסמסטר על ידי מעבר למעשה 199 00:11:22,000 --> 00:11:25,000 מההקשר של C בוודאי בהקשר של PHP 200 00:11:25,000 --> 00:11:27,000 אך תוך שימוש בחלק מאותם יסודות 201 00:11:27,000 --> 00:11:29,000 שדברנו עליו במשך זמן מה. 202 00:11:29,000 --> 00:11:33,000 >> אובייקטיבי עם 7 pset הוא ליישם CS50 אוצר, 203 00:11:33,000 --> 00:11:37,000 שהוא הגרסה של Yahoo או Google אוצר אוצר שלך 204 00:11:37,000 --> 00:11:40,000 או אפילו Etrade.com לפיה יש לך את היכולת 205 00:11:40,000 --> 00:11:43,000 נראה את מחירי המניות לסמלים שניתנו, אבל אפילו יותר מזה 206 00:11:43,000 --> 00:11:48,000 יש לך את היכולת "לקנות" ו" למכור "מניות 207 00:11:48,000 --> 00:11:51,000 הנסחרים בבורסות שונות, כי זה כדף הבית 208 00:11:51,000 --> 00:11:55,000 כאן עולה, שהוא באמת המידה שבה אנו התחלנו 209 00:11:55,000 --> 00:11:59,000 סט הבעיה בשבילך, יש לך טופס התחברות שמבקש שם משתמש וסיסמא. 210 00:11:59,000 --> 00:12:03,000 יש לו כפתור שליחה, אבל לאחר מכן, כפי שסופו של דבר יראה, 211 00:12:03,000 --> 00:12:06,000 שום דבר לא קיים באמת קורה מתחת למכסת המנוע עדיין משום שהיא 212 00:12:06,000 --> 00:12:09,000 נותר לך ליישם את היכולת לרשום משתמשים חדשים, 213 00:12:09,000 --> 00:12:12,000 היכולת לקנות מניות, למכור את המניות, 214 00:12:12,000 --> 00:12:14,000 בעצם לחפש מחירי המניות נוכחיות. 215 00:12:14,000 --> 00:12:17,000 >> ואכן, זה יהיה כמו בעולם אמיתי ככל האפשר בגלל שעשינו 216 00:12:17,000 --> 00:12:20,000 כולל קצת קוד שיאפשר לך עם פונקציה אחת 217 00:12:20,000 --> 00:12:25,000 לשאילתא יאהו אוצר, שהופך את הנתונים להפליא פנויים 218 00:12:25,000 --> 00:12:31,000 מסתכל למעלה למחירי המניות המבוססים על הסמל של המניה או סמל טיקר, 219 00:12:31,000 --> 00:12:34,000 ואתה מקבל בחזרה את מחיר המנייה הנוכחית של היום. 220 00:12:34,000 --> 00:12:37,000 הנתונים שאתה בעצם רואה בpset המסוים הזה יהיו 221 00:12:37,000 --> 00:12:40,000 בערך כמו עולם אמיתי כפי שהוא יכול לקבל כל כך שאתה בעצם התממשקות 222 00:12:40,000 --> 00:12:43,000 עם מניות בעולם אמיתיות, בעולם אמיתי, מחירים 223 00:12:43,000 --> 00:12:47,000 ונראים כמה כסף אתה יכול לעשות אולי 224 00:12:47,000 --> 00:12:51,000 במשך הימים הבאים של משחק עם קבוצת הבעיה שלך. 225 00:12:51,000 --> 00:12:55,000 >> אבל בואו נגדיר את השלב ראשון לכיצד לעצב משהו שבהחלט יותר מסובך 226 00:12:55,000 --> 00:12:59,000 מcounter.php, זה יותר מסובך מכל דוגמאות פרוש IMs עד כה, 227 00:12:59,000 --> 00:13:02,000 ובואו ננסה להציג כמה פרדיגמות כאן שתאפשרו לנו 228 00:13:02,000 --> 00:13:06,000 הן עבור 7 pset ואולי לפרויקט הגמר שלך, אם אתה עושה משהו מבוסס אינטרנט 229 00:13:06,000 --> 00:13:11,000 כדי לשמור על הקוד שלך מאורגן היטב, כדי לשמור על עצמך שפוי, 230 00:13:11,000 --> 00:13:15,000 ולקחת צעד לקראת שיתוף פעולה, בין אם בפרויקט הגמר של CS50 231 00:13:15,000 --> 00:13:18,000 או מעבר אם תמשיך לתכנת משהו בעתיד. 232 00:13:18,000 --> 00:13:21,000 יש פרדיגמה עיצוב כללית זו 233 00:13:21,000 --> 00:13:24,000 במדעי מחשב ובפיתוח תוכנה באופן כללי יותר 234 00:13:24,000 --> 00:13:27,000 מכונה MVC, בקר נוף במודל, 235 00:13:27,000 --> 00:13:30,000 וזה ראשי תיבות מטופשים שמתארים רעיון נחמד מאוד, 236 00:13:30,000 --> 00:13:34,000 אשר היא ההפרדה של היבטים שונים של תכנית, 237 00:13:34,000 --> 00:13:39,000 במיוחד שמירה הנפרד היגיון או הלוגיקה העסקית של אתר 238 00:13:39,000 --> 00:13:42,000 כך שכל דבר שכרוך בדברים כמו 239 00:13:42,000 --> 00:13:45,000 קורא פונקציות ותשאול מסדי נתונים וכמו 240 00:13:45,000 --> 00:13:48,000 קורה לא בין HTML שלך 241 00:13:48,000 --> 00:13:51,000 אלא בקבצים נפרדים, ואכן, יש קובץ אחד זה 242 00:13:51,000 --> 00:13:54,000 בדרך כלל שיש לך בשם הבקר 243 00:13:54,000 --> 00:13:56,000 זה באמת המוח מאחורי המבצע, ואנו רואים דוגמה 244 00:13:56,000 --> 00:13:58,000 מזה ברגע. 245 00:13:58,000 --> 00:14:01,000 >> יש דגם שתכנות קוד 246 00:14:01,000 --> 00:14:05,000 שעושה את הדיבורים למסדי הנתונים שלך, שמדבר אל יאהו אוצר וכדומה, 247 00:14:05,000 --> 00:14:08,000 ואז יש את V בMVC, את הדעות, 248 00:14:08,000 --> 00:14:11,000 כל הדברים שקשור לאסתטיקה, את הקבצים שבעצם מכילים 249 00:14:11,000 --> 00:14:14,000 HTML שלך, אולי CSS שלך וכדומה. 250 00:14:14,000 --> 00:14:17,000 הרעיון כאן, כמו בתמונה זו מרמזת, הוא שהבקר 251 00:14:17,000 --> 00:14:21,000 הוא הקובץ, כפי שמייד תראו וכמו שאתה תראה במיוחד ב7 pset, 252 00:14:21,000 --> 00:14:24,000 שהעולם מדבר אל דרך דפדפני האינטרנט שלהם. 253 00:14:24,000 --> 00:14:27,000 זה הקובץ שמקבל בקר על רשת האינטרנט הציבורי, 254 00:14:27,000 --> 00:14:30,000 אבל הבקר מדבר אל פוטנציאלי מודל, 255 00:14:30,000 --> 00:14:34,000 אשר הוא קבצים אחרים אחד או יותר המכילים קוד הקשורות לנתונים, 256 00:14:34,000 --> 00:14:37,000 קוד הקשורים למסדי נתונים וכדומה, ולאחר מכן הוא מדבר אל 257 00:14:37,000 --> 00:14:40,000 בקר אחד או יותר קבצים אחרים הידועים בהשקפות, 258 00:14:40,000 --> 00:14:43,000 אשר האסתטיקה של דף אינטרנט, תבניות של מיני, 259 00:14:43,000 --> 00:14:47,000 שעשוי לקחת כמה נתונים כקלט, אבל בסופו של היום 260 00:14:47,000 --> 00:14:50,000 ההיגיון רק בתוך נוף צריך להיות העיבוד של נתונים, 261 00:14:50,000 --> 00:14:53,000 iterating מעל לולאה ובעצם לירוק חלק 262 00:14:53,000 --> 00:14:56,000 בצוע מבוסס HTML משהו ממנו או אפילו כמו PDF. 263 00:14:56,000 --> 00:14:59,000 >> מה שיפה בMVC הוא שאתה יכול יש דעות שונות 264 00:14:59,000 --> 00:15:02,000 בהתבסס על סוג ההתקן, המבוסס על הסוג של תבנית קובץ שאתה בעצם 265 00:15:02,000 --> 00:15:04,000 רוצה להראות למשתמש. 266 00:15:04,000 --> 00:15:10,000 בואו נסתכל על כמה דוגמאות בהדרגה יותר מורכבות והמתוכננות היטב 267 00:15:10,000 --> 00:15:13,000 על ידי ההפעלה הראשונה עם גרסה 0 כאן. 268 00:15:13,000 --> 00:15:16,000 תן לי ללכת קדימה ולפתוח בספרייה שלנו היום MVC 269 00:15:16,000 --> 00:15:21,000 קובץ בשם index.php בספרייה 0. 270 00:15:21,000 --> 00:15:26,000 שים לב זה אתר סופר פשוט ומאוד underwhelming 271 00:15:26,000 --> 00:15:29,000 זה סוג של גרסה 0 מתוך דף בית לCS50, 272 00:15:29,000 --> 00:15:32,000 ושים לב כמה יש לנו קישור להרצאות, יש לנו קישור לסילבוס, 273 00:15:32,000 --> 00:15:35,000 ואם תמשיך עם הקישור להודעת הרצאות שהכתובת 274 00:15:35,000 --> 00:15:39,000 למעלה הולך להשתנות לlectures.php. 275 00:15:39,000 --> 00:15:44,000 אם לאחר מכן בצעתי את הקישור להודעת 1 שבוע כי שינויי URL לweek1.php. 276 00:15:44,000 --> 00:15:46,000 נראה שיש מבנה היררכי פשוט למדי כאן. 277 00:15:46,000 --> 00:15:49,000 >> בואו נעיף מבט מהיר מתחת למכסת המנוע בכיצד זה הניח, 278 00:15:49,000 --> 00:15:53,000 ואכן, אם אני מסתכל על index.php זה די פשוט. 279 00:15:53,000 --> 00:15:57,000 למעשה, למרות שאני קראתי לזה קובץ PHP אין קוד תכנות עצמו. 280 00:15:57,000 --> 00:16:01,000 יש הערה שכתבתי כאן ב-PHP רק כדי שהמשתמש לא יראה בסופו את זה. 281 00:16:01,000 --> 00:16:05,000 כמובן, כמו בעבר, כל דבר שהוא בין תגי PHP 282 00:16:05,000 --> 00:16:08,000 מקבל פרש, גם אם זה תגובה, ולפרש את תגובה 283 00:16:08,000 --> 00:16:11,000 משמעות דבר הוא פשוט לזרוק אותו בסופו של היום ולא ממש 284 00:16:11,000 --> 00:16:15,000 לשלוח אותו לדפדפן, כך שהכל כאן הוא רק אסתטיקה. 285 00:16:15,000 --> 00:16:20,000 אם אני פותח באופן דומה lectures.php גם זה רק קובץ מקודד קשה. 286 00:16:20,000 --> 00:16:23,000 זה קורה שייקרא לי. PHP, 287 00:16:23,000 --> 00:16:27,000 אבל זה באמת פשוט. html, וweek1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 דומה הם רק סימון, כך שיש חבורה של חסרונות של העיצוב הזה. 289 00:16:31,000 --> 00:16:33,000 אחד, זה סכום עצום של העתק / דבק. 290 00:16:33,000 --> 00:16:37,000 למרות שדבר היחיד שמשתנה בין קבצים אלה הוא הרשימה לא מסודרת, 291 00:16:37,000 --> 00:16:41,000 את התגים לי, בכל זאת יש לי סוג doc, HTML, בראש, 292 00:16:41,000 --> 00:16:44,000 כותרת, גוף קרוב, קרוב HTML ועוד 293 00:16:44,000 --> 00:16:47,000 בכל קובץ יחיד, מה שאומר שאם אי פעם ארצה לבנות מחדש 294 00:16:47,000 --> 00:16:50,000 דף זה אינטרנט או restylize זה אני צריך ללכת ולשנות 295 00:16:50,000 --> 00:16:54,000 כל הקבצים הללו באופן ידני או עם כמה מסיבי חיפוש והחלפה. 296 00:16:54,000 --> 00:17:01,000 >> בואו ניקח צעד לקראת עיצוב חכם יותר, כבר חשב בגרסה 1 כאן 297 00:17:01,000 --> 00:17:04,000 לפי לפי לקרוא לי שיש לנו כלל, כך שתוכל לשחק יחד עם 298 00:17:04,000 --> 00:17:07,000 אלה נינוחים יותר בהתראת הבית שיש לנו כאן 299 00:17:07,000 --> 00:17:10,000 סיכום של קבצים בגרסה 1 של האתר הזה, 300 00:17:10,000 --> 00:17:13,000 ונראה שאני כבר לקחתי על עצמי את הגורם 301 00:17:13,000 --> 00:17:17,000 קצת קוד משותף, header.php וfooter.php. 302 00:17:17,000 --> 00:17:20,000 ובכן, בואו נסתכל על מה שבפנים וכמה כאלה. 303 00:17:20,000 --> 00:17:23,000 Header.php נראה מוכר, 304 00:17:23,000 --> 00:17:26,000 שלא להבחין בו זה יתנתק? 305 00:17:26,000 --> 00:17:30,000 מייד אחרי הקו 19, אז זה כל מה שהיה מקובל 306 00:17:30,000 --> 00:17:33,000 מindex.php הקבצים, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 וweek2.php מהדוגמא הקודמת. 308 00:17:36,000 --> 00:17:40,000 מה שעשיתי היה להעתיק וכל חתך שהיה משותף לכל הקבצים האלה, 309 00:17:40,000 --> 00:17:44,000 לשים אותו בקובץ כותרת נפרדת, וכך גם בfooter.php 310 00:17:44,000 --> 00:17:48,000 אני לא להחיל את אותו עיקרון לפיו קווים המעניינים רק 311 00:17:48,000 --> 00:17:52,000 בfooter.php הוא שני אלה גוף, קרוב והקרוב HTML. 312 00:17:52,000 --> 00:17:55,000 >> אבל מה זה אומר שעכשיו הוא בגרסה החדשה 313 00:17:55,000 --> 00:17:59,000 מהודעת index.php כמה פשוט זה יכול להגיע. 314 00:17:59,000 --> 00:18:02,000 אמנם, קצת סתום יותר מחפשים, קצת פחות אינטואיטיבית 315 00:18:02,000 --> 00:18:06,000 לעקוב עליון לתחתונים, אבל אלוהים שלי, כל זה יתירות שכבר אינו. 316 00:18:06,000 --> 00:18:10,000 אנו דורשים שימוש בפונקצית PHP שנקראה ממש דורשים למעלה, 317 00:18:10,000 --> 00:18:15,000 שמזכיר מאוד, כזכור, של C # כולל מנגנון של. 318 00:18:15,000 --> 00:18:17,000 אנו דורשים header.php בחלק העליון. 319 00:18:17,000 --> 00:18:20,000 אנו דורשים footer.php בתחתית, והדבר היחיד שהוא שונה 320 00:18:20,000 --> 00:18:25,000 או מיוחד בקובץ זה הוא התוכן שנועד להיות ייחודיים לה. 321 00:18:25,000 --> 00:18:29,000 אם אז אני הולך אליו, אומר, lectures.php, אותו העיקרון חל עליה. 322 00:18:29,000 --> 00:18:32,000 שוב, כמה הערות למעלה, אבל אז אני דורש, דורשות כותרת תחתונות, 323 00:18:32,000 --> 00:18:35,000 ובין בזה רק את התוכן שהשתנה למעשה. 324 00:18:35,000 --> 00:18:38,000 ואם נתבונן בשבוע 1 ושבוע 2 היינו רואה 325 00:18:38,000 --> 00:18:42,000 כי אותו העיקרון שיושם שם. 326 00:18:42,000 --> 00:18:44,000 ובכן, אנחנו לא עשינו די לשם. 327 00:18:44,000 --> 00:18:48,000 >> בואו נסתכל על הגרסה 2, שבו יש מבנה דומה, 328 00:18:48,000 --> 00:18:50,000 אבל שם לב עכשיו אני כבר הצגתי משהו אחר. 329 00:18:50,000 --> 00:18:53,000 בקו 10 שהצגתי helpers.php, 330 00:18:53,000 --> 00:18:55,000 כנראה שמכיל פונקציות עזר. 331 00:18:55,000 --> 00:18:58,000 פונקצית עזר היא בדרך כלל פונקציה קצרה יחסית 332 00:18:58,000 --> 00:19:01,000 שאתה כותב כדי לעזור לך במקומות שונים, 333 00:19:01,000 --> 00:19:04,000 ובואו נראים מה יש בפנים של helpers.php. 334 00:19:04,000 --> 00:19:07,000 במקרה זה, זה נראה כאילו יש לו 2 פונקציות. 335 00:19:07,000 --> 00:19:10,000 זוכר מהיום השני עם דוגמא הקובייה שלנו 336 00:19:10,000 --> 00:19:13,000 באפשרותך להגדיר פונקציות משלך ב-PHP, ומה שעשיתי לי כרגע היא 337 00:19:13,000 --> 00:19:17,000 פונקציות שהוגדרה נקראות לדקלם תחתון ו לדקלם כותרת, 338 00:19:17,000 --> 00:19:21,000 הראשון שלוקח פרמטר בשם נתונים, 339 00:19:21,000 --> 00:19:25,000 ערך ברירת מחדל שלו הוא מערך ריק, כפי שהוצע שם, 340 00:19:25,000 --> 00:19:29,000 ואנחנו באמת יכולים לכתוב את זה עוד יותר בתמציתיות בגרסה האחרונה של PHP 341 00:19:29,000 --> 00:19:32,000 באומרו סוגר מרובע פתוח, סגור סוגריים מרובעים. 342 00:19:32,000 --> 00:19:35,000 כלומר, מערך ריק בגודל 0 אבל בכל זאת מערך. 343 00:19:35,000 --> 00:19:38,000 >> פונקצית תמצית זו היא קטן ומיוחדת שב 344 00:19:38,000 --> 00:19:41,000 מה שהיא עושה הוא שלוקח כטענתו מערך אסוציאטיבי 345 00:19:41,000 --> 00:19:45,000 שיש 0 או יותר זוגות ערך מפתח, ואם יש לך מפתח של foo 346 00:19:45,000 --> 00:19:48,000 וערך של בר פונקצית התמצית 347 00:19:48,000 --> 00:19:51,000 יוצר מצב שבו עכשיו, כמו בשורת 11, 348 00:19:51,000 --> 00:19:57,000 יש לך משתנה מקומי בשם foo $ שהערך שלו הוא בר. 349 00:19:57,000 --> 00:19:59,000 ואם היה לך יותר מפתחות וערכים במערך הנתונים, 350 00:19:59,000 --> 00:20:03,000 דומה היינו שהם יחולצו בהיקף המקומי 351 00:20:03,000 --> 00:20:06,000 או שם חלל כך שfooter.php ו 352 00:20:06,000 --> 00:20:09,000 אותו הרעיון כאן למטה, כך שheader.php 353 00:20:09,000 --> 00:20:12,000 יש גישה למשתנים אלו. 354 00:20:12,000 --> 00:20:15,000 למעשה, תן לי לפתוח שוב header.php 355 00:20:15,000 --> 00:20:18,000 ולמשוך תשומת לב לעכשיו מה שזה נראה בגרסה זו. 356 00:20:18,000 --> 00:20:22,000 >> במקום קשה קידוד CS50 ככותרת לכל דף בודד 357 00:20:22,000 --> 00:20:24,000 שם לב שהדינאמיות אפשרית עכשיו. 358 00:20:24,000 --> 00:20:29,000 בשורת 5 אני מהדהד משתנה כותרת, 359 00:20:29,000 --> 00:20:34,000 אבל קודם אני מעביר שמשתנה הכותרת לפונקציה שנקראת htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 שם מטופשים לפונקציה, כל עוד זה לא יהיה, אבל זה באמת מה שהיא אומרת. 361 00:20:38,000 --> 00:20:41,000 זה מבטיח כי כל תווים מיוחדים 362 00:20:41,000 --> 00:20:46,000 במחרוזת שכבר עברה בנמלטו כראוי HTML. 363 00:20:46,000 --> 00:20:49,000 זו בעצם דרך של הימנעות ממשהו שנקראת תקיפת Script בין אתרים 364 00:20:49,000 --> 00:20:52,000 לפי מישהו יכול בזדון או בטעות 365 00:20:52,000 --> 00:20:55,000 להזריק HTML משלהם לאתר שלך 366 00:20:55,000 --> 00:20:59,000 על ידי הדבקה בצורה כלשהי, למשל, 367 00:20:59,000 --> 00:21:02,000 משהו שאתה לא ממש מצפה, במיוחד קוד JavaScript, 368 00:21:02,000 --> 00:21:05,000 כפי שאנו נדבר על בשבוע או פעם בשבועות. 369 00:21:05,000 --> 00:21:08,000 >> זה header.php עכשיו, זה נוף 370 00:21:08,000 --> 00:21:12,000 במובן זה שהיא מאפשרת לך להציג את התוכן של חלק ערכת נתונים מבחינה אסתטית. 371 00:21:12,000 --> 00:21:14,000 אבל באופן ספציפי יותר, זה תבנית. 372 00:21:14,000 --> 00:21:19,000 זה סוג של תכנית עכשיו של מה שאנחנו רוצים הכותרת של כל דף להיראות כמו, 373 00:21:19,000 --> 00:21:23,000 אבל יש בו דינמיות בכי אנחנו רוצים את התואר כדי להיות מוכנסים באופן דינמי 374 00:21:23,000 --> 00:21:26,000 בהתבסס על משתנה הכותרת 375 00:21:26,000 --> 00:21:30,000 שהוצא כאשר אנו נקראים, שוב, 376 00:21:30,000 --> 00:21:33,000 פונקצית הכותרת לדקלם. 377 00:21:33,000 --> 00:21:36,000 עכשיו, אם הסתכלנו תחתון לדקלם, יש בעצם לא הרבה להשתמש בזה כרגע 378 00:21:36,000 --> 00:21:40,000 כי בfooter.php אין הדינמיות שהיא. 379 00:21:40,000 --> 00:21:43,000 יכול להיות שיש, אבל ברגע זה רשימה מקודדת קשה של 2 תגים, 380 00:21:43,000 --> 00:21:46,000 אך אותו הרעיון חל, כך שלמעשה מסביר מדוע 381 00:21:46,000 --> 00:21:49,000 לא תבזבז את הזמן שלנו שכותרת לדקלם ולדקלם פונקציה תחתונה? 382 00:21:49,000 --> 00:21:52,000 תן לי ללכת במקום עכשיו לגרסה 3, 383 00:21:52,000 --> 00:21:56,000 ובגרסת 3 בעוזרים החלטתי לפשט את זה עוד יותר. 384 00:21:56,000 --> 00:21:58,000 >> תן לי להבהיר פונקציה אחת. 385 00:21:58,000 --> 00:22:02,000 תן לי אותו לקחת את טיעון נוסף, הפעם בשם תבנית, 386 00:22:02,000 --> 00:22:05,000 שאמור להיות השם של תבנית, 387 00:22:05,000 --> 00:22:11,000 ואז אני יהיה לשרשר בתעוזה. php לערכו של משתנה, 388 00:22:11,000 --> 00:22:17,000 ולאחר מכן, אם הוא קיים, bar.php foo.php או header.php וfooter.php, 389 00:22:17,000 --> 00:22:20,000 אז אני הולך קדימה ולחלץ את המידע משתנה 390 00:22:20,000 --> 00:22:23,000 ולאחר מכן דורש באותו נתיב. 391 00:22:23,000 --> 00:22:29,000 במילים אחרות, כדי להשתמש בזה עכשיו, אם אני פותח את index.php 392 00:22:29,000 --> 00:22:32,000 שם לב שאני לא קורא כותרת לדקלם יותר. 393 00:22:32,000 --> 00:22:36,000 אני פשוט קורא לדקלם, אבל אני עובר בשווי מצוטט של הכותרת 394 00:22:36,000 --> 00:22:39,000 כדי להבהיר באיזו תבנית אני בעצם רוצה לטעון. 395 00:22:39,000 --> 00:22:41,000 >> אז כאן שם לב למה שאני עושה. 396 00:22:41,000 --> 00:22:44,000 אני מעביר באופן דינמי מפתח בכותרת, 397 00:22:44,000 --> 00:22:47,000 ערך של CS50, וגם זה, כפי שראינו קודם, 398 00:22:47,000 --> 00:22:51,000 יכול להתבצע יותר תמציתי בגרסה האחרונה של PHP 399 00:22:51,000 --> 00:22:54,000 איפה אני יכול להחליף את פונקצית המערך עם סוגריים מרובעים, 400 00:22:54,000 --> 00:22:57,000 אני מציע שהוא אפילו יותר קריא ובוודאי 401 00:22:57,000 --> 00:22:59,000 קצת יותר קל להקלדה. 402 00:22:59,000 --> 00:23:02,000 וכמובן, עם קריאת הכותרת התחתונה לדקלם בתחתית, 403 00:23:02,000 --> 00:23:05,000 אנו לא טורחים עוברים בטיעון שני בכלל, שום מערך אסוציאטיבי, 404 00:23:05,000 --> 00:23:07,000 כי יש בתוך דינמיקה של דבר כי תחתון. 405 00:23:07,000 --> 00:23:10,000 זה סתם כמה תגים HTML לקרובים. 406 00:23:10,000 --> 00:23:14,000 טובים, אנחנו נוקטים בצעדים לכיוון באמת לנקות את הדברים כאן, 407 00:23:14,000 --> 00:23:17,000 אבל בואו תפתחו לי 2 דוגמאות אחרונות. 408 00:23:17,000 --> 00:23:21,000 זה אחד, מספר 4, הודעה בכך שעשיתי החלטה מודעת עכשיו 409 00:23:21,000 --> 00:23:26,000 כדי לשפר את הדוגמא הקודמת בסופו של דבר להשתמש בחלק ההיררכיה לקבצים שלי. 410 00:23:26,000 --> 00:23:29,000 >> שימו לב שבסיכום הזה, בזה קורא לי, אני כבר הצגתי 411 00:23:29,000 --> 00:23:32,000 כולל ספרייה וספריית תבניות 412 00:23:32,000 --> 00:23:35,000 תוכן שהולך להיות הדברים שאני רוצה לכלול 413 00:23:35,000 --> 00:23:38,000 ואת התבניות שברצוני להבהיר, בהתאמה. 414 00:23:38,000 --> 00:23:42,000 זה באמת להיות אנאלי ומנסה לשמור על ההסדר, 415 00:23:42,000 --> 00:23:45,000 לשמור קבצים הקשורים יחד, אבל התוצאה הסופית 416 00:23:45,000 --> 00:23:48,000 הוא שעכשיו יש לנו הגדרה מעט מסודרת יותר, אבל אנחנו צריכים לזכור עכשיו 417 00:23:48,000 --> 00:23:51,000 ב, למשל, index.php 418 00:23:51,000 --> 00:23:55,000 כאשר אנו דורשים helpers.php הקובץ 419 00:23:55,000 --> 00:24:01,000 יש לנו עכשיו לחייב אותה דרך כולל / helpers.php 420 00:24:01,000 --> 00:24:06,000 ולא סתם אומר helpers.php כי עכשיו זה ממש בתת ספרייה. 421 00:24:06,000 --> 00:24:09,000 עכשיו, כמו בצד, תוכל לראות בדוגמות הללו ולכמה אחרים 422 00:24:09,000 --> 00:24:11,000 פונקציות כמו דורש, דורשות פעם אחת. 423 00:24:11,000 --> 00:24:15,000 יש למעשה פונקציה עוצמה נקראת כוללת, וכולם יש התנהגות מעט שונה. 424 00:24:15,000 --> 00:24:18,000 הנה אני אומר דורש פעם אחת כדי להפוך סופר ברור שאני רוצה רק את אלה 425 00:24:18,000 --> 00:24:20,000 עוזרים נכללו בפרויקט שלי פעם אחת. 426 00:24:20,000 --> 00:24:24,000 אבל אם אני נזהר ואם למעשה אני חושב בהיגיון שלי כראוי 427 00:24:24,000 --> 00:24:27,000 זה צריך להספיק מדי לומר פשוט דורש למעלה 428 00:24:27,000 --> 00:24:31,000 כל עוד אני בעצמי לא דורש בטעות באותו קובץ במקום אחר. 429 00:24:31,000 --> 00:24:34,000 למעשה, זו דרך מעט יותר יעיל מלעשות דברים ולאחר מכן באמצעות 430 00:24:34,000 --> 00:24:38,000 דורש פעם אחת, ולכן אני גוזר אותו רק כדי לדרוש. 431 00:24:38,000 --> 00:24:40,000 >> בואו ניקח צעד אחד קדימה. 432 00:24:40,000 --> 00:24:46,000 הדוגמא אחרונה זה עכשיו, גרסה 5, יש היררכית תיקייה אפילו נקיה יותר. 433 00:24:46,000 --> 00:24:50,000 שים לב מה שעשיתי כאן לקריאתי בגרסה סופית זה 434 00:24:50,000 --> 00:24:54,000 עכשיו יש לי ספריית ה-HTML שלי, שהיה לי כל הזמן הזה, 435 00:24:54,000 --> 00:24:58,000 אבל בפנים משם כרגע הוא רק, lectures.php index.php, 436 00:24:58,000 --> 00:25:01,000 week1.php וweek2.php. 437 00:25:01,000 --> 00:25:05,000 ספרייה כוללת כרגע מתגוררת לצדה של ספריית ה-HTML, 438 00:25:05,000 --> 00:25:08,000 כך באותה הרמה כמו אח, כמו שאומרים. 439 00:25:08,000 --> 00:25:10,000 אז עושה את תיקיית התבניות. 440 00:25:10,000 --> 00:25:14,000 Takeaway המפתח כאן הוא שהצגתי קצת יותר מבנה, 441 00:25:14,000 --> 00:25:17,000 אבל המאפיין העיקרי כרגע הוא שרק את הקבצים 442 00:25:17,000 --> 00:25:21,000 שצריך להיות אינטרנט נגיש, בפומבי מיעון 443 00:25:21,000 --> 00:25:25,000 על ידי כתובת אתר ברשת האינטרנט הציבורי הם בספריית ה-HTML שלי. 444 00:25:25,000 --> 00:25:28,000 >> קבצים בינתיים, אחרים, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, שניתן לטעון שאולי יותר רגישים, 446 00:25:32,000 --> 00:25:35,000 אולי עוזרים למעשה יש כמה שמות משתמש וסיסמות או חלק רוחניים 447 00:25:35,000 --> 00:25:39,000 הרכוש שלי, מתפקד אני באמת לא רוצה שהעולם ראה, גם אם בטעות. 448 00:25:39,000 --> 00:25:45,000 זה תרגול טוב להישאר מחוץ לספרייה הציבורית HTML 449 00:25:45,000 --> 00:25:48,000 כל קבצים שאינם זקוקים לעצמם להיות ציבוריים. 450 00:25:48,000 --> 00:25:51,000 כל מה שצריך לעשות במקרה זה כאשר מסתכל, למשל, 451 00:25:51,000 --> 00:25:55,000 קובץ index.php של ספריית ה-HTML, 452 00:25:55,000 --> 00:25:58,000 שם לב אנחנו רק צריכים להיות קצת יותר זהירים בעת צורך 453 00:25:58,000 --> 00:26:00,000 או לדרוש את הקובץ הזה פעם אחת. 454 00:26:00,000 --> 00:26:03,000 אני צריך לעשות קודם .. ללכת לספריית האב, 455 00:26:03,000 --> 00:26:06,000 אז / אל כולל / helpers.php 456 00:26:06,000 --> 00:26:12,000 לצלול בחזרה למטה כדי לקבל את הקובץ שאכפת לי. 457 00:26:12,000 --> 00:26:16,000 >> כל שאלות אז על MVC 458 00:26:16,000 --> 00:26:20,000 או גלגול פשוט יחסית זה מזה? 459 00:26:20,000 --> 00:26:23,000 ותנו לי לעשות ברור שהתמקדנו לא מעט על 460 00:26:23,000 --> 00:26:27,000 V כאן, בדעות ובפקטורינג מתוך התבניות הללו. 461 00:26:27,000 --> 00:26:30,000 אנחנו לא באמת כבר נבדלנו מM C עדיין. 462 00:26:30,000 --> 00:26:33,000 למעשה, אין באמת שום M כאן, ואפילו C שלנו, 463 00:26:33,000 --> 00:26:36,000 הבקר, לא ממש עושה כל כך הרבה, אבל אתה תקבל הרבה יותר 464 00:26:36,000 --> 00:26:39,000 מכיר את שניהם 2 מכתבים ההם MVC, 465 00:26:39,000 --> 00:26:43,000 או לייתר דיוק, אתה תקבל הרבה יותר מוכר עם C 466 00:26:43,000 --> 00:26:49,000 בMVC לקבוצת הבעיה 7, כך שיש עוד הרבה מזה באופק. 467 00:26:49,000 --> 00:26:51,000 שאלות? 468 00:26:51,000 --> 00:26:53,000 בפועל יש כאן אף אחד. 469 00:26:53,000 --> 00:26:57,000 >> אוקיי, בואו נעבור עתה לנושא השני והאחרון להיום. 470 00:26:57,000 --> 00:27:00,000 זה הוא המבוא של מסד נתונים. 471 00:27:00,000 --> 00:27:03,000 עד לנקודה זו שהיינו לנו כמה דרכים לאחסון נתונים. 472 00:27:03,000 --> 00:27:05,000 אנחנו השתמשנו במשתנים. 473 00:27:05,000 --> 00:27:08,000 חזור בקובץ C שלנו, קלט / פלט דיון התחלנו שימוש בקובצי טקסט 474 00:27:08,000 --> 00:27:11,000 ושימוש בקבצים כמו fprintf, ואז גם התחילו 475 00:27:11,000 --> 00:27:14,000 מדבר על CSV קבצים קצת, ערכים מופרדים בפסיקים, 476 00:27:14,000 --> 00:27:17,000 אז כל אלה אפשרו לנו לקבל נתונים מאוחסנים 477 00:27:17,000 --> 00:27:19,000 או שאינם עקבי או עקבי. 478 00:27:19,000 --> 00:27:23,000 אבל אפילו קובצי CSV הם לא ממש תורמים לחיפוש 479 00:27:23,000 --> 00:27:25,000 והוספה והמחיקה. 480 00:27:25,000 --> 00:27:28,000 זה באמת רק קובץ טקסט מטופש מופרד על ידי פסיקים 481 00:27:28,000 --> 00:27:30,000 שורה אחרת שורה אחרת שורה אחרת שורה, כך שאם אתה רוצה 482 00:27:30,000 --> 00:27:32,000 לחפש קובץ שהכי הטוב שאתה יכול לעשות הוא באמת חיפוש ליניארי. 483 00:27:32,000 --> 00:27:34,000 אתה צריך להתחיל בחלק העליון של הקובץ, לקרוא את כל העניין ב, 484 00:27:34,000 --> 00:27:36,000 ולהסתכל על הערך של חלק מעניין. 485 00:27:36,000 --> 00:27:39,000 אם ברצונך להוסיף לזה שאתה צריך לעשות את אותו דבר, 486 00:27:39,000 --> 00:27:41,000 iterating מעליו ומכניס במקום מסוים, 487 00:27:41,000 --> 00:27:45,000 ולמעשה, מה שאתה צריך לעשות את כל ההיגיון לחפש את עצמך. 488 00:27:45,000 --> 00:27:49,000 >> אתה לא יכול לעשות דפוס חכם התואמים בקובץ CSV אלא אם אתה בעצמך לכתוב את הקוד. 489 00:27:49,000 --> 00:27:51,000 אתה לא יכול לעשות סינון של קובץ CSV 490 00:27:51,000 --> 00:27:53,000 אלא אם כן אתה בעצמך לכתוב את הקוד. 491 00:27:53,000 --> 00:27:56,000 האם לא יהיה זה נחמד אם מישהו אחר לשים את כל המאמץ 492 00:27:56,000 --> 00:27:59,000 למעשה להפוך את החיפוש לקל והחדרה קלה 493 00:27:59,000 --> 00:28:01,000 ומחיקה ועדכון וכן הלאה? 494 00:28:01,000 --> 00:28:04,000 זה בדיוק מה שמסד נתונים הוא. 495 00:28:04,000 --> 00:28:07,000 SQL, שפת שאילתות מובנית, הוא עדיין שפה אחרת 496 00:28:07,000 --> 00:28:10,000 שאנו מציגים כאן היום, אבל גם זה די נגיש, 497 00:28:10,000 --> 00:28:13,000 ומה שאנחנו באמת הולכים לעשות היא פשוט לתלוש מזה חלק הבולט ביותר 498 00:28:13,000 --> 00:28:16,000 מאפיינים כך שעבור 7 pset, ואם אתה עושה משהו מבוסס אינטרנט, 499 00:28:16,000 --> 00:28:19,000 פרויקט הגמר שלך, יש לך את היכולת להביע את עצמך 500 00:28:19,000 --> 00:28:22,000 במונחים של שאילתות בנתונים. 501 00:28:22,000 --> 00:28:25,000 יש לך את היכולת לאחסן מעט או הרבה נתונים 502 00:28:25,000 --> 00:28:28,000 בהרבה יותר מובנה דרך שתוביל, בסופו של היום 503 00:28:28,000 --> 00:28:32,000 להקל על חייך, כי עם SQL אתה יכול להביע את עצמך 504 00:28:32,000 --> 00:28:35,000 הרבה יותר נכון, הרבה יותר באופן שיטתי על מנת 505 00:28:35,000 --> 00:28:40,000 תקבל בחזרה חלק קבוצת המשנה של נתונים מקורפוס גדול יותר של נתונים. 506 00:28:40,000 --> 00:28:45,000 >> אתה יכול לחשוב על מסד נתונים, במקרה זה, מסד נתוני SQL, ממש כמו Excel 507 00:28:45,000 --> 00:28:48,000 או במדבר שבו זה גיליון אלקטרוני, 508 00:28:48,000 --> 00:28:50,000 או אולי גיליונות אלקטרוניים מרובים, וגיליון אלקטרוני, כמובן, 509 00:28:50,000 --> 00:28:53,000 יש שורות ועמודות, וזה בגלל 510 00:28:53,000 --> 00:28:56,000 מסדי נתונים של SQL הם יחסיים, יחסיים, במובן 511 00:28:56,000 --> 00:28:59,000 שהם מאחסנים נתונים במונחים של טבלאות אלה, 512 00:28:59,000 --> 00:29:01,000 שורות ועמודות. 513 00:29:01,000 --> 00:29:03,000 הם גבוהים יותר ביצועים מאשר משהו כמו גיליון אלקטרוני, 514 00:29:03,000 --> 00:29:05,000 וגיליון אלקטרוני נועד לשימושו של אדם. 515 00:29:05,000 --> 00:29:08,000 אתר נועד לשימוש על ידי מתכנת 516 00:29:08,000 --> 00:29:12,000 כתיבת קוד נגד זה, אז הגלגול של מסד נתונים 517 00:29:12,000 --> 00:29:14,000 הולך להיות שורת פקודה. 518 00:29:14,000 --> 00:29:18,000 >> האחד מסדי הנתונים היחסיים הפופולריים ביותר שם הוא, שוב, MySQL, 519 00:29:18,000 --> 00:29:22,000 אשר להפליא חופשי, ביצועים גבוהים מאוד, וזה מה 520 00:29:22,000 --> 00:29:24,000 פייסבוק משמש בשלב מוקדם מאוד ובמידה מסוימת גם היום 521 00:29:24,000 --> 00:29:27,000 כדי לאחסן כמות גדולה של נתוניה, ואנו רואים ברגע 522 00:29:27,000 --> 00:29:30,000 ששימוש בפקודות פשוטות יחסית 523 00:29:30,000 --> 00:29:33,000 אנחנו יכולים לבחור נתונים, נתונים להוסיף, לעדכן נתונים, 524 00:29:33,000 --> 00:29:37,000 למחוק נתונים וכדומה, אבל לשמחתי, יש ממשק ידידותי יותר למשתמש 525 00:29:37,000 --> 00:29:39,000 מסתם להקליד בשורה שחורה ולבן כאן. 526 00:29:39,000 --> 00:29:43,000 אנו נשתמש ל7 pset ומעבר כלי חינמי בשם phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 השם הוא מקרי בהחלט. 528 00:29:45,000 --> 00:29:47,000 הכלי קורה שייושם ב-PHP, 529 00:29:47,000 --> 00:29:49,000 אבל זה יסודו לא רלוונטי. 530 00:29:49,000 --> 00:29:53,000 מה שימושי על phpMyAdmin הוא שזה שירות מבוסס אינטרנט. 531 00:29:53,000 --> 00:29:55,000 אנחנו כבר מותקנים מראש במכשיר זה בשבילך, 532 00:29:55,000 --> 00:29:58,000 ועם זה אתה יכול ליצור טבלאות במסד נתונים, 533 00:29:58,000 --> 00:30:01,000 באפשרותך להכניס נתונים, מחיקת נתונים, ובאופן כללי רואה 534 00:30:01,000 --> 00:30:04,000 הנתונים שלך בסביבה די ידידותית למשתמש. 535 00:30:04,000 --> 00:30:07,000 המשתמשים שלך לא הולכים להשתמש phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> זה באמת רק כלי ניהולי או של יזם 537 00:30:09,000 --> 00:30:12,000 עם שכדי לראות ולרחרח קצת את הנתונים שלך ולהבין איך לבנות אותו, 538 00:30:12,000 --> 00:30:15,000 ממש כמו שאתה עצמך יכול להשתמש ב-Excel, או במדבר, 539 00:30:15,000 --> 00:30:19,000 אבל זה הולך להיות דרך מצוינת להמחיש מה קורה מתחת למכסת המנוע 540 00:30:19,000 --> 00:30:22,000 כך שתוכל להתמקד בבעיה המעניינת פתרון ולא כל כך הרבה 541 00:30:22,000 --> 00:30:25,000 על הפקודות המסתוריות. 542 00:30:25,000 --> 00:30:28,000 בואו נסתכל על דוגמה של נתונים שעשויים להיות מאוחסנים tabularly 543 00:30:28,000 --> 00:30:30,000 במסדי נתונים יחסיים. 544 00:30:30,000 --> 00:30:32,000 הנה דוגמה אחת כזו. 545 00:30:32,000 --> 00:30:35,000 עכשיו, למרבה הצער, phpMyAdmin גם טעה בצד הדרך לזרוק מילים רבות 546 00:30:35,000 --> 00:30:38,000 וגרפיקה עליך, אבל אם אתה לחדד רק על 547 00:30:38,000 --> 00:30:42,000 עמודה מזהה, שם משתמש העמודה, ועמודת החשיש, 548 00:30:42,000 --> 00:30:45,000 זה הוא למעשה גיליון אלקטרוני, אבל זה קורה להיות קטע 549 00:30:45,000 --> 00:30:49,000 בבתוך טבלה של המכשיר 550 00:30:49,000 --> 00:30:53,000 שימוש בקובץ שאנו מספקים לך בסט הבעיה 7. 551 00:30:53,000 --> 00:30:57,000 >> בפרט, אנחנו נותנים לך קובץ שמייצג 552 00:30:57,000 --> 00:31:01,000 השולחן של משתמש, כך שגיליון אלקטרוני המכיל משתמשים עם 3 עמודות, 553 00:31:01,000 --> 00:31:05,000 אחד מהם הוא זיהוי ייחודי החל משעת 1 ומוגדל שלאחר מכן. 554 00:31:05,000 --> 00:31:08,000 העמודה השנייה היא שם משתמש, ואלו מכם שעשו האקר, 555 00:31:08,000 --> 00:31:12,000 מהדורת ההאקר לpset 2, שתזהה כמה מן שמות משתמש אלה לפחות. 556 00:31:12,000 --> 00:31:16,000 בצד ימין הן סיסמות, אבל הם לא בסיסמות מילוליות. 557 00:31:16,000 --> 00:31:19,000 הם מן hashes, כך מתברר 558 00:31:19,000 --> 00:31:22,000 שאחסון סיסמות במסד נתונים הוא רעיון ממש רע. 559 00:31:22,000 --> 00:31:25,000 כולכם בוודאי קראו בשלב מסוים של אתר אינטרנט כלשהו 560 00:31:25,000 --> 00:31:28,000 או מסד נתונים מסוימים של חברה שנפגע, ואז אתה צריך 561 00:31:28,000 --> 00:31:31,000 לשנות את הסיסמה שלך, אתה צריך לקבל החזרים על דברים 562 00:31:31,000 --> 00:31:34,000 בגלל איזה בחור רע ממש פרץ לחשבון שלך כתוצאה מכך. 563 00:31:34,000 --> 00:31:38,000 >> אחסון סיסמות בטקסט רגיל, לא מוצפן במסד נתונים 564 00:31:38,000 --> 00:31:41,000 הוא לגמרי טיפש, ובכל זאת זה מאוד משעשע 565 00:31:41,000 --> 00:31:44,000 אז לקרוא על כמה חברות ידועות מאוד 566 00:31:44,000 --> 00:31:47,000 לפעמים בעיתונות מסדי נתונים שנמצאים בסכנה, 567 00:31:47,000 --> 00:31:50,000 וחלק שאינו מצחיק, אלא העובדה שמאגרי המידע מכילים לא מוצפנת 568 00:31:50,000 --> 00:31:53,000 סיסמות הן מגוחכות, כי פשוטו כמשמעו, עם שורה אחת של קוד 569 00:31:53,000 --> 00:31:57,000 אתה יכול להגן מפני איום מסוים, וזה מה שעשינו כאן. 570 00:31:57,000 --> 00:32:00,000 אפילו לגרסתנו לזייף קצת CS50 האוצר 571 00:32:00,000 --> 00:32:03,000 אנחנו מצפינים את סיסמות רק למען סדר טוב, והעובדה ש 572 00:32:03,000 --> 00:32:07,000 את כל הסיסמות האלה להתחיל עם 1 $ הם רק מוסכמה. 573 00:32:07,000 --> 00:32:10,000 זה רק אומר שהם באמת מוצפנים או מרוסקים, 574 00:32:10,000 --> 00:32:13,000 שזה כמו פונקצית הצפנה לכיוון אחד 575 00:32:13,000 --> 00:32:17,000 לפיו אתה לא יכול להפוך את השפעותיו עם משהו שנקרא MD5. 576 00:32:17,000 --> 00:32:21,000 >> העובדה כי 50 הן אחרי זה אומרת שערך מלח 577 00:32:21,000 --> 00:32:24,000 של 50 שמשו לליבון כל הסיסמות האלה, פרט לאחד. 578 00:32:24,000 --> 00:32:27,000 שלי, כמובן, כפי שאתה יכול לראות שם, חה, 579 00:32:27,000 --> 00:32:30,000 היה משתמש במלח שונה, אז אלו מכם שקבלו מעד מעט 580 00:32:30,000 --> 00:32:33,000 אולי בהאקר 2, שעשוי היה להיות התוצאה שלנו נתקל בשימוש 581 00:32:33,000 --> 00:32:36,000 חשיש שונה מהאחרים, כי הסיסמה שלי היא בעצם אותה 582 00:32:36,000 --> 00:32:38,000 כמשתמש אחר שם למעלה. 583 00:32:38,000 --> 00:32:41,000 למעשה, אם אתה כבר מחכה כל השבועות האלה כדי לגלות 584 00:32:41,000 --> 00:32:44,000 מה הסיסמות האלה היו כאן היו את הסיסמות שהותקפו 585 00:32:44,000 --> 00:32:48,000 לפצח במהדורת ההאקר של קבוצת הבעיה 2, כך שאף אחד יותר מדי מסובכת. 586 00:32:48,000 --> 00:32:50,000 למעשה, Malan של הייתה זהה jharvard, 587 00:32:50,000 --> 00:32:54,000 אבל אם אחזור הן נראה אחר. 588 00:32:54,000 --> 00:32:58,000 >> התמקד בjharvard בהארגמן כי הם היו מומלחים בצורה שונה. 589 00:32:58,000 --> 00:33:01,000 האלגוריתם היה מוטרד באופן ש 590 00:33:01,000 --> 00:33:05,000 חשיש ערך, הערך המוצפן נראה קצת שונה 591 00:33:05,000 --> 00:33:08,000 מכיוון שהתשומות היו קצת שונות, אבל הסיסמה מתחת למכסת המנוע 592 00:33:08,000 --> 00:33:10,000 היה עדיין בסופו בצבע ארגמן. 593 00:33:10,000 --> 00:33:12,000 עכשיו, למי אכפת על זה? 594 00:33:12,000 --> 00:33:15,000 ובכן, אנו מספקים לך את המשתמשים לדוגמא, את שמות המשתמש לדוגמא 595 00:33:15,000 --> 00:33:18,000 וhashes של הסיסמות שלהם, כך שלמעשה יש לכם חלק 596 00:33:18,000 --> 00:33:23,000 לקוחות לCS50 אוצר כאשר אתה ראשון לקבל את הקרקע עם הקוד שלך. 597 00:33:23,000 --> 00:33:27,000 תצטרך ליישם יותר שולחנות בפנים של MySQL, בתוך מסד הנתונים. 598 00:33:27,000 --> 00:33:30,000 תצטרך ליצור יותר גיליונות אלקטרוניים, ביעילות, אבל החליטו לתת לך את זה 599 00:33:30,000 --> 00:33:33,000 כדי להתחיל, ותראה שמפרט סט הבעיה 600 00:33:33,000 --> 00:33:37,000 הולך אותך בתהליך של יבוא טבלה זו 601 00:33:37,000 --> 00:33:39,000 וגם מסביר מה שחלק ממאפייניו, 602 00:33:39,000 --> 00:33:41,000 ואתה גם תראה שאנו מספקים לך את הקוד 603 00:33:41,000 --> 00:33:44,000 כדי להתמודד עם הגיבוב או ההצפנה של סיסמות אלה, 604 00:33:44,000 --> 00:33:49,000 אז אתה לא צריך לדאוג יותר מדי על מה MD5 או כמו בעצם כל העניין. 605 00:33:49,000 --> 00:33:53,000 >> אז, SQL, שפת שאילתות מובנית. 606 00:33:53,000 --> 00:33:56,000 זה, בפשטות, בשפה שאנחנו עומדים להתחיל להשתמש ב7 pset 607 00:33:56,000 --> 00:34:01,000 ואולי מעבר ללבקש נתונים ממסדים נתונים מסוימים. 608 00:34:01,000 --> 00:34:06,000 הנתונים, שוב, מאוחסן tabularly בטבלאות אלה יחסיים, עמודות ושורות, 609 00:34:06,000 --> 00:34:09,000 אבל בעזרת כמה תחביר פשוט יחסית כמו מחיקה, 610 00:34:09,000 --> 00:34:12,000 להוסיף, לעדכן ובחר באפשרותנו לעשות בדיוק את זה. 611 00:34:12,000 --> 00:34:15,000 אנחנו יכולים למחוק ממאגר המידע, להוסיף, 612 00:34:15,000 --> 00:34:19,000 עדכון נתונים, כמו גם נבחר, שהוא, לאחזר נתונים מבסיס הנתונים. 613 00:34:19,000 --> 00:34:21,000 איך ללכת על עושה את זה? 614 00:34:21,000 --> 00:34:23,000 תן לי ללכת קדימה אל המכשיר. 615 00:34:23,000 --> 00:34:28,000 תן לי להכין את http://localhost, 616 00:34:28,000 --> 00:34:30,000 ששוב, הוא המכשיר המקומי עצם. 617 00:34:30,000 --> 00:34:32,000 זה כינוי ברירת המחדל שלו. 618 00:34:32,000 --> 00:34:35,000 ותן לי ללכת ל/ phpmyadmin. 619 00:34:35,000 --> 00:34:39,000 זה קורה להיות כתובת אתר מיוחדת שהמכשיר מוגדר מראש כדי להבין 620 00:34:39,000 --> 00:34:42,000 שדוחק בי באופן מיידי לשם משתמש וסיסמא. 621 00:34:42,000 --> 00:34:46,000 >> כרגיל, אני הולך הקלד jharvard וארגמן, 622 00:34:46,000 --> 00:34:48,000 אבל מבין שזה חשבון המנהל במחשב. 623 00:34:48,000 --> 00:34:53,000 זה רק צירוף מקרים שיש גם jharvard נרשם לCS50 אוצר. 624 00:34:53,000 --> 00:34:56,000 Jharvard, ארגמן, זן נותן לי את ממשק המשתמש שראו 625 00:34:56,000 --> 00:34:59,000 צצה לפני הרגע, וזה קצת מוחץ בהתחלה, 626 00:34:59,000 --> 00:35:02,000 אבל היה סמוך ובטוח, שאתה אף פעם לא הולך צריך ללחוץ רוב הקישורים בכלי זה. 627 00:35:02,000 --> 00:35:05,000 אתה תקבל בסופו של דבר באמצעות קבוצה קטנה שהן סופר מועילים, 628 00:35:05,000 --> 00:35:08,000 הראשון שבם הוא מאגרי מידע כאן. 629 00:35:08,000 --> 00:35:11,000 אם אני עולה למאגרי מידע, שם לב שאני אתבקש ליצור מסד נתונים. 630 00:35:11,000 --> 00:35:14,000 זה כמו יצירת קובץ Excel חדש, בצורה יעילה. 631 00:35:14,000 --> 00:35:18,000 אני הולך קדימה, קורא להרצאה זו, ואני רק הולך להתעלם מהשדה שם, האיסוף. 632 00:35:18,000 --> 00:35:20,000 זה קשור לייצוג נתונים בו, 633 00:35:20,000 --> 00:35:24,000 ואני הולך ליצור לחץ על, ועכשיו שמתי לב שאני מרפה מליצור 634 00:35:24,000 --> 00:35:27,000 בצד השמאלי שבו אומר שאין לי מסדי נתונים 635 00:35:27,000 --> 00:35:30,000 אני צריך לראות את הנתונים בקרוב הרצאה. 636 00:35:30,000 --> 00:35:32,000 >> אם אני עכשיו לוחץ בצד השמאל, באתר ההרצאה, 637 00:35:32,000 --> 00:35:34,000 מבחין את הכרטיסיות שלי לשנות קצת. 638 00:35:34,000 --> 00:35:38,000 יש לי מבנה, SQL, יצוא, יבוא ועוד כמה דברים אחרים. 639 00:35:38,000 --> 00:35:40,000 מבנה הוא די ריק. 640 00:35:40,000 --> 00:35:43,000 אין שולחנות נמצאים במסד נתונים, כפי שהוא אומר כאן, 641 00:35:43,000 --> 00:35:47,000 אז בואו ליצור טבלה, ובואו נלך קדימה וליצור טבלה 642 00:35:47,000 --> 00:35:53,000 כמו סטודנטים, וכמה טורינו רוצים? 643 00:35:53,000 --> 00:35:55,000 בואו בואו נשמור את זה פשוט, ושיא לכל תלמיד 644 00:35:55,000 --> 00:35:58,000 מספר תעודת זהות, שם, וכתובת דואר אלקטרוני. 645 00:35:58,000 --> 00:36:02,000 >> אנחנו נשמור אותו פשוט כמו זה, אז 3 עמודות, ללכת. 646 00:36:02,000 --> 00:36:05,000 הצורה שאתה רואה כאן היא עכשיו קצת מבולגנת ומבלבל, 647 00:36:05,000 --> 00:36:08,000 אבל אנחנו פשוט צריכים לעבור את זה שורה אחרת שורה, אז בוא באמת מהירות של לתת 648 00:36:08,000 --> 00:36:14,000 הטור הראשון במאגר זה שם זיהוי לזיהוי הייחודי. 649 00:36:14,000 --> 00:36:17,000 זה יהיה מספר שלם. אני בעצם יכול להתעלם מאורך וערכים. 650 00:36:17,000 --> 00:36:21,000 Int הולך להיות 32 ביטים לא משנים מה אתה מקליד שם, אז בוא תשאירו את זה ריק. 651 00:36:21,000 --> 00:36:24,000 ערך ברירת מחדל, אני יכול לעשות את זה ריק, כהגדרתו. 652 00:36:24,000 --> 00:36:27,000 אני הולך לעזוב את זה לבד. בואו לא ידאג לערכי ברירת מחדל. 653 00:36:27,000 --> 00:36:29,000 בואו לכאן כדי לגלול, את התכונות הנכונות. 654 00:36:29,000 --> 00:36:31,000 זה מעניין. 655 00:36:31,000 --> 00:36:33,000 בואו נלך קדימה ושרירותי למדי לומר כי תעודות חייבות להיות חתומות. 656 00:36:33,000 --> 00:36:35,000 בואו לא תבזבזו את כל מספרים שליליים. 657 00:36:35,000 --> 00:36:37,000 >> בואו נלך 0-4000000000, פחות או יותר, 658 00:36:37,000 --> 00:36:40,000 ואז בואו לא לגעת באף אחד מהתחומים הללו עדיין שם, 659 00:36:40,000 --> 00:36:43,000 אבל אז תן לי להקליד בשם כאן למטה, 660 00:36:43,000 --> 00:36:46,000 ולאחר מכן השני היה דואר אלקטרוני, ולכן המלכוד הוא דוא"ל 661 00:36:46,000 --> 00:36:50,000 ושם, כמובן לא שלם, אז בואו לשנות תנאים אלו לשדה אחר. 662 00:36:50,000 --> 00:36:53,000 מתברר varchar, משתנה האורך char, 663 00:36:53,000 --> 00:36:56,000 כמו מייתר במסד נתוני SQL 664 00:36:56,000 --> 00:36:59,000 אבל אורך משתנה, ואתה באמת צריכים להגיד את זה מראש 665 00:36:59,000 --> 00:37:02,000 אורך מקסימאלי של המחרוזת, ולכן אני הולך באופן שרירותי למדי 666 00:37:02,000 --> 00:37:05,000 לפי סוג הכנס 255 תווים. 667 00:37:05,000 --> 00:37:08,000 אני לגמרי יכול להגיד 32. אני יכול לומר 1000. 668 00:37:08,000 --> 00:37:11,000 סוג של צורך להחליט בעצמך על סמך מאפיינים הדמוגרפיים שלך מה הוא 669 00:37:11,000 --> 00:37:14,000 שמו של הסטודנט הארוך וללכת עם זה מספר או קצת יותר גדול, 670 00:37:14,000 --> 00:37:17,000 אבל מה שיפה הוא varchar זה לא הולך לבזבז 671 00:37:17,000 --> 00:37:19,000 255 בתים על שמו של כל תלמיד. 672 00:37:19,000 --> 00:37:23,000 אם זה דוד זה לא הולך להשתמש ב255 בתים שלמים, 673 00:37:23,000 --> 00:37:26,000 אבל זה גבול העליון, אז אני אלך עם 255 רק למוסכמות, 674 00:37:26,000 --> 00:37:30,000 אבל אנחנו יכולים להתווכח שזה יהיה קצת ערך נמוך יותר, ועל כתובת הדוא"ל 675 00:37:30,000 --> 00:37:34,000 רק כדי להיות עקבי 255, אבל שוב, אנחנו יכולים לקבל את אותו דיון. 676 00:37:34,000 --> 00:37:36,000 אבל אני הולך לעשות דבר אחד אחר כאן בצד הימני. 677 00:37:36,000 --> 00:37:40,000 >> מה חזק על מסד נתונים הוא שהוא יכול לעשות הרבה הרמה כבדה 678 00:37:40,000 --> 00:37:42,000 או עבודה מורכבת בשבילך. 679 00:37:42,000 --> 00:37:46,000 בפרט, אני באמת לא אכפת לי מה מספרי תעודות הזהות של התלמיד שלי הם. 680 00:37:46,000 --> 00:37:49,000 זה פשוט נועד להיות מזהה ייחודי באתר 681 00:37:49,000 --> 00:37:52,000 אז יש לי ייצוג תמציתי 32-bit של אותו הסטודנט 682 00:37:52,000 --> 00:37:55,000 כך שיש לי איזו דרך לזהות אותם באופן ייחודי 683 00:37:55,000 --> 00:37:58,000 פן יהיה 2 דווידס, למשל, בכיתה. 684 00:37:58,000 --> 00:38:01,000 למעשה, אני הולך לבדוק את התיבה הזו AI, תוספת אוטומטית, 685 00:38:01,000 --> 00:38:04,000 כך שמסד הנתונים, MySQL, דמוי 686 00:38:04,000 --> 00:38:08,000 מה זהותו של כל תלמיד חדש שנוסף הוא הולך להיות. 687 00:38:08,000 --> 00:38:11,000 אני אפילו לא צריך לדאוג לזה בקוד שלי, 688 00:38:11,000 --> 00:38:13,000 ואני גם הולך לבחור משהו בתפריט המדד. 689 00:38:13,000 --> 00:38:17,000 המדד נפתח כאן עיקרי, ייחודי, 690 00:38:17,000 --> 00:38:19,000 מדד וטקסט מלא. 691 00:38:19,000 --> 00:38:21,000 אתה אולי יכול לנחש מה כמה הדברים האלה הם, 692 00:38:21,000 --> 00:38:24,000 אבל מסתבר במסדי נתונים יחסיים 693 00:38:24,000 --> 00:38:28,000 אתה מתכנת או מנהל מסד הנתונים להגיע למנע 694 00:38:28,000 --> 00:38:32,000 לתת רמזים למסד הנתונים על מה שדות 695 00:38:32,000 --> 00:38:34,000 בטבלה הם מיוחד קטנה. 696 00:38:34,000 --> 00:38:37,000 >> לדוגמה, במקרה הזה אני מתכוון לומר שמזהה 697 00:38:37,000 --> 00:38:42,000 הולך להיות מדד עיקרי, הידוע כמפתח ראשי. 698 00:38:42,000 --> 00:38:44,000 מה זה אומר על פי הגדרה הוא מזהה שמעתה 699 00:38:44,000 --> 00:38:48,000 יהיה לזהות באופן ייחודי לתלמידים בלוח זה. 700 00:38:48,000 --> 00:38:53,000 אף תלמיד לא יהיה את אותו תעודת זהות, כי אני הטלת מגבלה זו או מדד זה. 701 00:38:53,000 --> 00:38:55,000 יתר על כן, מה זה הולך לעשות בשבילי הוא שזה הולך לספר 702 00:38:55,000 --> 00:38:58,000 שמזהה MySQL הוא מיוחד. 703 00:38:58,000 --> 00:39:03,000 אכפת לי בעיקר על זהות, אז קדימה, לעשות קסמיו של מבנה הנתונים המפואר שלך, 704 00:39:03,000 --> 00:39:05,000 לבנות איזה סוג של עץ. 705 00:39:05,000 --> 00:39:08,000 בדרך כלל זה משהו שנקרא B-העץ, שאנו לא מסתכלים לפני שבועות, 706 00:39:08,000 --> 00:39:11,000 אבל זה עוד מבנה נתונים כזה דומה ברוח אל העצים בינאריים 707 00:39:11,000 --> 00:39:15,000 ומנסה שאנו מתבוננים בו, אבל זה הולך לומר 708 00:39:15,000 --> 00:39:18,000 למסד נתוני תחום זה הוא כה חשוב, שאני כנראה 709 00:39:18,000 --> 00:39:22,000 רוצה להיות מסוגל לחפש עליו, קדימה ולבנות איזה מפואר 710 00:39:22,000 --> 00:39:25,000 מבנה נתונים בזיכרון כדי לזרז את החיפושים, כך שאופן אידיאלי 711 00:39:25,000 --> 00:39:28,000 הם זמן קבוע או לפחות הכי קרוב לזה ככל האפשר 712 00:39:28,000 --> 00:39:32,000 כך שזה לא יתפתח לחיפוש ליניארי, שהוא לא הולך להיות 713 00:39:32,000 --> 00:39:34,000 ביצוע הגבוה ביותר גישה. 714 00:39:34,000 --> 00:39:37,000 בניגוד לכך, כתובת דואר אלקטרוני יכולה להיות מפתח ראשי. 715 00:39:37,000 --> 00:39:41,000 >> בתאוריה, את כתובת הדוא"ל של כל אחד היא ייחודית, אלא אם אתה משתף קצת חשבון, 716 00:39:41,000 --> 00:39:45,000 אבל זה בדרך כלל לא טוב להשתמש במשהו כמו מחרוזת 717 00:39:45,000 --> 00:39:49,000 כמפתח ראשי, כי אם מטרתו בחיים היא כדי לזהות 718 00:39:49,000 --> 00:39:55,000 שורות בטבלה שלך אין שום סיבה להשתמש ב255 בתים מקסימאליים 719 00:39:55,000 --> 00:39:58,000 כדי לזהות מישהו אם אתה יכול לברוח עם רק 4 בתים 720 00:39:58,000 --> 00:40:00,000 או int 32-bit. 721 00:40:00,000 --> 00:40:03,000 באופן כללי, מפתח ראשי צריך להיות קצר ותמציתי 722 00:40:03,000 --> 00:40:07,000 באופן אידיאלי, ומשהו כמו שלם או int גדול, אשר קורה להיות 64 סיביות. 723 00:40:07,000 --> 00:40:11,000 אבל כתובת הדוא"ל צריכה להיות ייחודית, והאחת התכונות של מסד נתונים מדי 724 00:40:11,000 --> 00:40:14,000 הוא לאכוף ייחוד בשבילי. 725 00:40:14,000 --> 00:40:18,000 על ידי בחירה ייחודית כאן לצד כתובת הדוא"ל, למרות שההודעה עצם 726 00:40:18,000 --> 00:40:21,000 הוא גלל את המסך, אני אומר למסד הנתונים 727 00:40:21,000 --> 00:40:23,000 לא סומך עליי. 728 00:40:23,000 --> 00:40:26,000 אל תנתנו לי להכניס לתוך מסד הנתונים 729 00:40:26,000 --> 00:40:29,000 אותה כתובת דוא"ל פעמים, גם אם אני אידיוט ואני לא 730 00:40:29,000 --> 00:40:32,000 טוב מאוד עם IFS וIFS אחר וקוד PHP בפועל 731 00:40:32,000 --> 00:40:37,000 ואני נתתי בטעות למשתמש להירשם בכתובת הדוא"ל קיימת 732 00:40:37,000 --> 00:40:40,000 מסד הנתונים הוא רמה נוספת של הגנה לתקינות 733 00:40:40,000 --> 00:40:44,000 כדי לוודא שכתובת הדוא"ל שכפולה לא מסתיימת בטבלה. 734 00:40:44,000 --> 00:40:49,000 >> עכשיו, לעומת זאת, לשם אתה כנראה לא רוצה שזה ייחודי 735 00:40:49,000 --> 00:40:51,000 כי אז לעולם לא יהיה 2 דווידס או 2 Smiths מייק, למשל, 736 00:40:51,000 --> 00:40:55,000 במסד הנתונים שלך, כך שאף אחד פשוט יעזבו לבד. 737 00:40:55,000 --> 00:40:58,000 אני הולך קדימה, ולחץ על שמירה למטה מימין, 738 00:40:58,000 --> 00:41:02,000 והכל נראה טוב, אבל שם לב עד כאן 739 00:41:02,000 --> 00:41:04,000 זה חלק שלעכשיו אנחנו לא מבלים יותר מדי זמן על 740 00:41:04,000 --> 00:41:07,000 כי התחביר הוא קומפלקס קטן, ואנחנו לא צריכים ליצור טבלאות 741 00:41:07,000 --> 00:41:10,000 כל כך קרובות, אבל SQL עצמו הוא שפה, 742 00:41:10,000 --> 00:41:13,000 התחביר שהוא כאן, כי אני כבר מסומן. 743 00:41:13,000 --> 00:41:18,000 מה phpMyAdmin באמת עושה זה יוצר GUI מבוסס אינטרנט עבורך 744 00:41:18,000 --> 00:41:23,000 עם שבו אתה יכול לחסוך זמן ולא צורך להקליד ידני את 745 00:41:23,000 --> 00:41:26,000 שאילתא SQL די ארוכה כזה. 746 00:41:26,000 --> 00:41:29,000 >> במילים אחרות, אם אתה רוצה ליצור באופן ידני בטבלה זו, 747 00:41:29,000 --> 00:41:32,000 גם בשחור ולבן שפקודה או אפילו בphpMyAdmin 748 00:41:32,000 --> 00:41:35,000 באמצעות כרטיסייה אחרת זה, כרטיסיית SQL הזה שבו אתה יכול להקליד כל שאילתא SQL 749 00:41:35,000 --> 00:41:38,000 אתה רוצה, בכנות, זה היה לוקח לי דקה 750 00:41:38,000 --> 00:41:41,000 למעשה לזכור כל התחביר, וגם אז אני כנראה אצטרך 751 00:41:41,000 --> 00:41:45,000 עשה כמה שגיאות הקלדה, לכן כלי זה שימושי לדברים כאלה, וזה גם מאלף. 752 00:41:45,000 --> 00:41:49,000 אתה יכול להתחיל להסיק מה הוא התחביר 753 00:41:49,000 --> 00:41:52,000 רק על ידי הצבע היפה קידוד phpMyAdmin שהוא מוסיף 754 00:41:52,000 --> 00:41:54,000 לנוחיות החזותית שלנו. 755 00:41:54,000 --> 00:41:56,000 אבל עכשיו בואו נעשה את זה במקום. 756 00:41:56,000 --> 00:42:00,000 תן לי ללכת ללשונית Insert בעליון, ונתנו לי ללכת קדימה ולהכניס לדוגמה 757 00:42:00,000 --> 00:42:04,000 זיהוי של, יניח, ממש לא אכפת לי. 758 00:42:04,000 --> 00:42:07,000 זה הולך לתוספת אוטומטית. אני מתכוון לתת לעסקת מסד הנתונים עם זה. 759 00:42:07,000 --> 00:42:11,000 אבל אני אהיה בדוד, והדוא"ל שלי צריך להיות malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> בואו נמשיך כאן ולשים מייק סמית כאחד אחרת. 761 00:42:16,000 --> 00:42:18,000 אני אתן לעצמי את שם משפחה, כמו גם, 762 00:42:18,000 --> 00:42:22,000 ונדאג שהוא יהיה smith@example.com, 763 00:42:22,000 --> 00:42:24,000 ואז מה אני עושה עכשיו? 764 00:42:24,000 --> 00:42:27,000 ובכן, זה נראה כמו ללכת הכפתור ללחוץ, וזהו. 765 00:42:27,000 --> 00:42:30,000 שימו לב ב2 השורות העליונות שהוכנסו. 766 00:42:30,000 --> 00:42:32,000 זה שאילתא SQL בפועל. 767 00:42:32,000 --> 00:42:36,000 זה כלי phpMyAdmin להורג בשבילי, 768 00:42:36,000 --> 00:42:40,000 אבל תוצאה הסופית, הודעה, אם אני עכשיו הולך לכרטיסיית העיון, 769 00:42:40,000 --> 00:42:43,000 היא לראות 2 שורות בטבלה זו, מזכירה מאוד מבחינה אסתטית 770 00:42:43,000 --> 00:42:46,000 בטבלה שראינו קודם לכן עבור המשתמשים שלנו מ 7 pset, 771 00:42:46,000 --> 00:42:51,000 אחד מהם הוא הדוד מלאן, שאחד מהם כרגע הוא מייק סמית. 772 00:42:51,000 --> 00:42:54,000 אבל רק שיהיה ברור, אני לא צריך להשתמש phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 ואכן, אתה הולך בקרוב לכתוב קוד עבור 7 pset 774 00:42:56,000 --> 00:43:01,000 הממכן את התהליך של הוספת שורות, מחיקת שורות, עדכון שורות וכדומה, 775 00:43:01,000 --> 00:43:04,000 אז תן לי במקום ללכת ללשונית SQL כאן 776 00:43:04,000 --> 00:43:14,000 וסוג ב* בחר מסטודנטים בי 777 00:43:14,000 --> 00:43:18,000 דוא"ל = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> במילים אחרות יניח עכשיו שיש לך 779 00:43:21,000 --> 00:43:26,000 איזה טופס HTML, והמשתמש מקליד את כתובת הדוא"ל שלהם, בין שדות אחרים, 780 00:43:26,000 --> 00:43:29,000 והמטרה עכשיו היא ב-PHP בקוד העורפי 781 00:43:29,000 --> 00:43:31,000 למעשה לבדוק פרטים האחרים של אותו המשתמש. 782 00:43:31,000 --> 00:43:34,000 מהו שמך המלא? מהו מספר תעודת הזהות שלך? 783 00:43:34,000 --> 00:43:37,000 אתה יכול לכתוב שאילתא SQL כך, בחר * מתלמידים 784 00:43:37,000 --> 00:43:40,000 שם דוא"ל = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 ואם לאחר מכן לחץ על ללכת, שם לב שאני צריך, ואכן אני, אחזור רק לשורה אחת. 786 00:43:46,000 --> 00:43:50,000 מייק מושמט מסט תוצאה זו, כאוסף של שורות 787 00:43:50,000 --> 00:43:53,000 נקרא בדרך כלל, בגלל שאין לו את אותה כתובת דואר אלקטרונית כמוני. 788 00:43:53,000 --> 00:43:57,000 >> עכשיו, שוב, כאן ל7 pset תוכל להשתמש phpMyAdmin ככלי ניהולי 789 00:43:57,000 --> 00:44:00,000 וכלי פדגוגי ללמוד בדרך שלך 790 00:44:00,000 --> 00:44:03,000 בעולם של SQL, אבל בסופו של היום 791 00:44:03,000 --> 00:44:08,000 אתה הולך להיות כתיבת שאילתות אלו בתוך קוד PHP בפועל, 792 00:44:08,000 --> 00:44:11,000 ואז השארו עמנו בהדרכתו של Zamyla בפרט 793 00:44:11,000 --> 00:44:14,000 שם תוכל לקבל סיור של קוד החלוקה לקבוצת בעיה זו 794 00:44:14,000 --> 00:44:18,000 שם הענקנו לך לא רק את האסתטיקה לדף הכניסה 795 00:44:18,000 --> 00:44:21,000 והלוגו הנחמד הסקסי שאומר CS50 אוצר, אבל אנחנו גם נתנו לכם 796 00:44:21,000 --> 00:44:24,000 חבורה של פונקציות שתהפוכנה את החיים שלך קצת יותר קלים. 797 00:44:24,000 --> 00:44:27,000 אנחנו גם כתבנו חלק מpset בשבילך, 798 00:44:27,000 --> 00:44:32,000 חלק הכניסה שלו בפרט, כדי לתת לך תחושה של עיצוב נציג 799 00:44:32,000 --> 00:44:36,000 כי בעצם משתמש בבקר, למשל, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php וכדומה, ואז תראה pset יש גם ספריית תבניות 801 00:44:40,000 --> 00:44:43,000 כי יש את כל הדעות שלך, את כל האסתטיקה. 802 00:44:43,000 --> 00:44:46,000 וכך זרימת העבודה הכוללת ב7 pset הולכת להיות ש 803 00:44:46,000 --> 00:44:49,000 המשתמשים שלך לבקר בקר באמצעות כתובת URL בדפדפן. 804 00:44:49,000 --> 00:44:53,000 שהבקר מכיל קוד PHP שאתה כתבת, ובתוך קוד ה-PHP 805 00:44:53,000 --> 00:44:57,000 ייתכן שיש כמה שורות של SQL מקוננים בין מרכאות כפולות 806 00:44:57,000 --> 00:45:00,000 והעברתי לפונקציה שכתבנו שאילתא בשם 807 00:45:00,000 --> 00:45:03,000 שיעזרו לך לדבר עם מסד הנתונים ללא שימוש במשהו כמו 808 00:45:03,000 --> 00:45:05,000 כלי ניהולי כמו phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> תוכל לכתוב משפטי SQL בקוד PHP 810 00:45:08,000 --> 00:45:11,000 ותחזור מערך PHP של ערכת התוצאות, 811 00:45:11,000 --> 00:45:14,000 השורות שממש מתאימות לשאילתא ש. 812 00:45:14,000 --> 00:45:18,000 ובאופן דומה תהיה לך להיות מסוגל לעשות מוסיף או מוחק 813 00:45:18,000 --> 00:45:22,000 או עדכונים או כדומה, תחביר שהוא די דומה, 814 00:45:22,000 --> 00:45:25,000 ותראה מכמה הפניות באינטרנט, מקוד ההפצה 815 00:45:25,000 --> 00:45:29,000 ומpset לארוז את עצמו בדיוק איך ללכת על עושה את זה. 816 00:45:29,000 --> 00:45:33,000 סופו של דבר אנחנו מבינים באמת רק מגרדים את פני השטח של SQL 817 00:45:33,000 --> 00:45:36,000 ושל MySQL, אבל הכח שלו באמת הוא שזה משחרר אותך 818 00:45:36,000 --> 00:45:40,000 להתמקד בבעיות שרוצים לפתור, את מקרי שימוש אתה רוצה ליישם 819 00:45:40,000 --> 00:45:43,000 מבלי לדאוג באותה תכיפות, לפחות בשלב מוקדם, 820 00:45:43,000 --> 00:45:47,000 על איפה וכיצד לאחסן ולחפש מסד הנתונים שלך, 821 00:45:47,000 --> 00:45:50,000 וזה ממש ממש שבו פייסבוק עצמו יש להתחיל שלה 822 00:45:50,000 --> 00:45:53,000 באמצעות MySQL ולאחר מכן באמצעות יותר שרתי MySQL ואז עוד שרתי MySQL 823 00:45:53,000 --> 00:45:57,000 לא עבר זמן רב עד שהם אז היו באמת קשים להתחיל לחשוב על אופן 824 00:45:57,000 --> 00:46:00,000 נתונים בחנות, איך לאחסן את הדברים עוד יותר ביעילות, 825 00:46:00,000 --> 00:46:04,000 כך שגם אם אנחנו לוקחים כמובן מאליו את העובדה שמדדים ואילוצים ייחודיים 826 00:46:04,000 --> 00:46:08,000 וכן הלאה רק עבודה שיש שיחה מאוד מעניינת 827 00:46:08,000 --> 00:46:12,000 כי זה יכול להוביל לכל, ולכן מבין שאנחנו רק מגרדים את פני השטח 828 00:46:12,000 --> 00:46:17,000 בסופו של דבר מה שיכל בשבילך או בפרויקטים שלך להיות לא מעט נתונים גדולים. 829 00:46:17,000 --> 00:46:22,000 >> עם זאת אמרה, בואו נפסיק כאן, ואנחנו נראה אותך בשבוע הבא. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]