[Powered by Google Translate] [שבוע 9] [דוד י מלאן - אוניברסיטת הרווארד] [זה CS50. - CS50.TV] בסדר. ברוך שובך. זה CS50, וזהו תחילתו של שבוע 9. היום אנחנו מתמקדים בייחוד בתכנון, כבר לא בהקשר של ג אבל בהקשר של PHP וקצת SQL וקצת JavaScript, בייחוד לקראת סוף הוא 7 pset וגם פרויקט הגמר שלך. למעשה, אם אתה נמצא בשלב זה בפרויקט הגמר שלך שם כנראה החל משעה בערך לפני שהתחלת לפחות לתת קצת מחשבה לפרויקט הגמר שלך ואתה חושב שאתה רוצה לשתף פעולה עם חבריו לכיתה 1 או 2, אם אתה נתקלת בבעיות בהתחברות עם חברים לכיתה אמרה, תרגיש חופשי למלא את הטופס בcs50.net/partners/form. זה פשוט שואל אותך מי אתה, איזה סוג של פרויקט אתה חושב על, איפה אתה גר רק מסיבות לוגיסטיות. ואז, אם אתה רוצה לשמור על עין על בשבוע הבא או כך את כתובת אתר הגיליון האלקטרוני לשם, אז אתה יכול לראות גרסה לקריאה בלבד של Google Doc שבה אנו אוספים את המידע הזה. אז אם אתה רוצה לעבוד עם מישהו, בכל האמצעים יהססו להושיט יד לאנשים באמצעות מנגנון זה. אבל רוב האנשים מבצעים את הסולו עבודה. זה בסדר גמור. אז אל תרגיש שזה בכל דרך מחייבת. ביום שישי זה היה רק ​​אני ועוד כמה מצוות בפה, תיאטרון ריק ברובו. 3 תיירים יש יושבים שם למעלה, וזה היה קצת מביך. מה שדברנו עליו היה מסדי נתונים ודברנו על 7 קצת pset. ואם אתה לא במקרה העכבר שבוידאו עדיין, זה בסדר. אני אנסה להגדיר את כל תנאים שאנחנו אחרת היו לוקחים כמובן מאליו המבוסס על הרצאתו של יום שישי. אבל היום אנחנו הולכים לנסות להשיג אותך לנקודה של לא רק להיות מסוגל לעשות משהו כמו 7 pset אבל באמת להבין מה קורה מתחת למכסת המנוע, במיוחד כמה מההפשטות שאנחנו מכניסים למקום בקובץ functions.php כדי להפוך את חייך קצת יותר קלים, אלא כדי שסופו של הדבר מבין כך שכאשר את גלגלי העזר יורדים בכמה שבועות אתה עדיין יכול לשרוד בעולם האמיתי ולעשות את הדברים האלה בלי שום CS50 מסגרת מתחתיך. זה _SESSION $, לאלה מכם שאינם מכירים או שכבר תפס את הסרטון ביום שישי, מה SESSION נותן לנו לעשות ביישום אינטרנט PHP מבוסס? זה משתנה superglobal, מה שאומר שזה דומה ברוח ולGET POST ועוד כמה אחר, אבל מה זה דבר הזה שימושי ל? מה הוא משמש למושב? כן. [תלמיד] להיכנס פנימה סליחה? [תלמיד] להיכנס פנימה התחברות פנימה ואכן. ב7 pset אנו משתמשים superglobal מושב זה כדי להקל על כניסה פנימה ומה שיפה superglobal זה הוא שזה מערך אסוציאטיבי. מערך אסוציאטיבי, כזכור, הוא רק מערך אבל מדדים שכבר לא צריך להיות מספרים כמו 012. הם יכולים להיות מספרים או שהם יכולים להיות אפילו מייתרים. ולכן אם כבר צללת לתוך 7 pset עדיין, אם אתה זוכר שאנחנו מאחסנים זיהוי שם מפתח בתוך מערך אסוציאטיבי זה ששוויו הוא משהו כמו 123 - כל מה שמחובר כעת בזהותו של המשתמש הוא. המוטיבציה לכך היא שגם לאחר שהמשתמש בקר localhost או באתר האינטרנט שלי באופן כללי יותר, ואז הם כבר מחובר, גם אם הם לא לוחצים על קישור או לחזור לאתר שלי במשך 5 דקות או אפילו שעות או אפילו יום, אבל הם עוזבים את חלון הדפדפן שלהם פתוחים, דרך superglobal זה אני יכול לזכור שהם מחוברים פנימה במילים אחרות, זה מאפשר לי לאחסן כל דבר לטווח ארוך במקצת אני רוצה על משתמש. ואתה יכול לחשוב על זה באמת כהתגלמות של עגלת קניות. מקומות כמו אמזון ברור לך לשים דברים לתוך עגלת קניות, אבל HTTP, הפרוטוקול כי סמכויות האינטרנט, הוא חסר מדינה במובן זה שכאשר אתה מבקר באתר אינטרנט, על פי רוב אין לך קשר כלשהו לרשת קבוע בין הדפדפן שלך לבין השרת. ברגע שהורדת את ה-HTML ואת התמונות JPEG וקבצי GIF וכל זה, החיבור נעלם ואתה רק צריך עותק של HTML ומה לא מהשרת. אבל אם השרת רוצה לזכור משהו עליך, הניטל הוא על השרת ממש להקליט את המידע הזה. ואז אתה מתכנת שיש להם שליטה על השרת יכול לשים את כל מה שאתה רוצה בתוך המערך האסוציאטיבי superglobal זה וזה יהיה שם בפעם הבאה שהמשתמש חוזר, אם זה דקות או אפילו כעבור ימים, אלא אם כן הם יסגרו את חלון הדפדפן שלהם, במושב שהנקודה נעלם. אז זה אחסון ארעי, זה שאינו מתמשך, וזה אמור להיעלם ברגע שהמשתמש סוגר את הדפדפן שלהם - לא רק שהכרטיסייה, לעתים קרובות כל הדפדפן, כך למעשה להתנתק המשתמש. אז איך הדבר הזה למעשה מיושם? בואו נעיף מבט מהיר בדוגמה פשוטה הסתכלנו ביום שישי. עבור אלה שלא הכיר, זה היה פשוט כמו זה. זהו דף אינטרנט שכל מטרתם בחיים הוא להגיד לי כמה פעמים בקרו בדף זה. זוהי הפעם הראשונה כאן ביום שני שבו בקר אותו, כך שזה אומר 0 פעמים. אבל אם אני מתחיל מחדש דף זה, זה אומר שהגיע זמן 1, 2, 3, 4, 5, וזה יהיה סופו של דבר רק לשמור על ספירה מעלה, מעלה, מעלה, מעלה, מעלה עבור כל פעם שאני לוחץ בפועל טענתי על זה. אז איך זה עובד? תן לי ללכת בתוך הקובץ הזה שנקרא counter.php. החלק העליון שלו הוא כל ההערות הכחולות, אבל חלק המעניין הוא כאן. בקו 13 שאנו מכנים session_start פונקציה זו, וזה ממש כל מה שאתה צריך לעשות אם אתה רוצה לקבל גישה לsuperglobal המיוחד הזה שנקרא $ _SESSION. זה הופך את זה לאפשרי, ואנו רואים ברגע איך זה בכלל אפשרי. בהודעת הקו 16 מה אני עושה. אם המפתח, הנקרא להתמודד - במילים אחרות, ערך המדד - "נגד" קיים בתוך המערך הזה שנקרא מושב, אז מה אני עושה עם זה בשורה מתחת? מהו קו 18 עושים? [תגובת תלמיד לא נשמעה] מה זה? [תלמיד] אחסון הערך. טוב. זה אחסון הערך זה במושב עכשיו במשתנה זמנית מקומית חדשה, דלפק $ בכל האותיות קטנות. שים לב שPHP כבר להיות קצת עצלן כאן. שים לב שאין לנו כל אזכור של int או float או מחרוזת או משהו כזה כי PHP היא הקלדה חלושה, שבה אתה לא צריך לציין את הסוג משתנה, ובמקרה הזה כאן אני אפילו לא הכרזתי עליו עדיין. אני מצהיר על זה בתוך הסוגריים המסולסלים האלה ושלא כמו C, זה דווקא בסדר. לא משנה כמה מקונן הכרזה של משתנה עמוקה הוא ב-PHP - בתוך סד מתולתל, בתוך סד מתולתל וכמו - זה יהיה באותו הרגע בזמן קיים לשארית התכנית, לטוב או לרע. אז זה מייד הופך גלובלי ברגע שאתה מגדיר את זה כמו שאנחנו עושים כאן. אחרת, אם אני לא מוצא שיש משהו בsuperglobal המושב, אני כנראה אני מאתחל נגדי משתנה זה 0, וכך רק בהנחה שהמשתמש מעולם לא היה כאן בעבר. ואז זה כמובן הוא להגדיל כל זמן את המונה איך? אני מעדכן את הערך שיש בפנים של מערך אסוציאטיבי זה על ידי הגדרתה שווה לכל דלפק הוא כרגע + 1. אם אני כאן כדי לגלול מטה ה-HTML של הדף, זה בעצם די פשוט. כל מה שיש בגופו של דף זה, "יש לך בקר באתר זה פעמים כה וכה." וזו היא מבנה של PHP. אם אתה עושה