[Powered by Google Translate] [PHP הפעלות] [טומי MacWilliam, אוניברסיטת הרווארד] [זה CS50.] [CS50.TV] מושבים בPHP יכולים לשמש כדי ליישם פונקציונלי, כמו שמות משתמש, ביישום האינטרנט שלך. הפעלות PHP תאפשר לך לשייך מידע עם כל הגלישה של המשתמש ולא רק עמוד אחד. אז זה אומר שהמשתמש מבקר בדפי PHP שונים המרכיבים את האתר שלך, כל מידע בפגישה יימשך. אז זה אומר שהנתונים המאוחסנים בפגישה על ידי עמוד אחד לאחר מכן ניתן לגשת על ידי דף אחר. אחסון מידע בפגישה הוא קל, ואנו עושים זאת באמצעות סימן הדולר, מדגישים, משתנים SESSION ההון. דולר סימן, תחתון, מושב-בדיוק כמו סימן דולר, תחתון, GET וסימן דולר, תחתון, POST- הוא מערך אסוציאטיבי בהיקף של זוגות ערך מפתח. אז אנחנו יכולים להשתמש בסימן דולר כמו תחביר, תחתון, מושב, סוגר, ציטוט, foo, ציטוט, סוגר, שווה, ציטוט, בר, ציטוט- כדי לאחסן את הערך "בר" במפתח "foo". עם זאת, לפני שנוכל לכתוב או לקרוא ממערך ההפעלה, נצטרך לקרוא לפונקציה מיוחדת פגישה, מדגישה, להתחיל, () - וזה יהיה לאתחל את הפגישה. אז בואו נסתכל על דוגמא. הדף הראשון שלנו, hello.php, משתמש במושב לפלט כמה נתונים למשתמש. זכור, אנחנו נצטרך להשתמש session_start לפני שנוכל לגשת לכל מידע כניסה. עכשיו אנחנו שימוש Isset של PHP כדי לקבוע אם מפתח קיים במערך האסוציאטיבי _SESSION $. אם המפתח שקיים, זה אומר שהמשתמש מחובר למערכת, כך יהיה לנו להציג את שמו של המשתמש. אם המפתח שאינו מוגדר, זה אומר שהמשתמש אינך מחובר עדיין, כך יהיה לנו להציג קישור לlogin.php. אז בואו נסתכל על login.php. כאן למטה, יש לנו טופס HTML בודד עם קלט אחד. תכונת action של הטופס היא $ _SERVER ['PHP_SELF'], וזה פשוט אומר שאנחנו רוצים את הטופס שיוגש לקובץ הנוכחי, אשר, במקרה זה, הוא login.php. אז בואו נחזור לחלק העליון של קובץ זה. אם המשתמש שהגיש את הטופס, ולאחר מכן $ _POST ['שם'] חייב להיות מוגדר. לקבלת מידע נוסף אודות טפסי HTML והודעה, לבדוק את וידאו אינטרנט פיתוח PHP. במקרה שהמשתמש עשה לשלוח את הטופס, היינו רוצה לכתוב את הערך שהם הקלידו לפגישה. עכשיו אנחנו יכולים להפנות את המשתמש לhello.php. כי אנחנו כבר מאוחסנים הקלט של המשתמש לפגישה, hello.php תוכל לגשת לשווי שנקבע בlogin.php. אז בואו לבדוק את זה בדפדפן אינטרנט. ראשית, אנו לנווט לhttp://localhost/hello.php. אנחנו יכולים לראות כאן שיש לנו אינכם מחובר עדיין, אז בואו לחצו על הקישור להתחברות, אשר יפנה אותנו לlogin.php. אוקיי, אני אקליד את השם שלי, שלאחר מכן ניתן יהיה לאחסן בפגישה. גדול! עכשיו אנחנו יכולים לראות הקלט שלי מlogin.php על hello.php באמצעות הפגישה. אז, מה לגבי יציאת המשתמש החוצה? ובכן, על מנת להיכנס במשתמש, אנחנו פשוט מאוחסנים ערך לשם פגישה. אז כדי להתחבר למשתמש החוצה, אנחנו פשוט צריכים להסיר כי שם מפתח ממערך ההפעלה. אז בואו נסתכל על הקובץ אחרון זה, logout.php. שוב, אנחנו צריכים להתקשר session_start () לפני שאנחנו יכולים לעשות כל דבר הקשור מושב. עכשיו אנחנו יכולים פשוט להתקשר session_destroy (), שידאג להיפטר מכל הנתונים בפגישה ולאחר מכן להפנות את המשתמש חזרה לhello.php. אז אם אני לוחץ על הקישור התנתק, אנו יכולים לראות כי השרת שכח מי אני, ואני כבר לא מחובר למערכת אז מה קורה כאן מתחת למכסת המנוע? על מנת לקבל את ההתנהגות רק שראינו, השרת שלנו צריך לעשות 2 דברים. ראשית, השרת צריך לאחסן איכשהו את הנתונים בפגישה. קבצי PHP השונים המרכיבים את אתר מבוצעים כתפילות נפרדות של מתורגמן PHP משתנה כל כך מקומי לא יכול להיות משותף ביניהם. במקום זאת, השרת זקוק לאחסון נתונים הפגישה שלנו באיזשהו מקום קבצי PHP שמרובה. יכולים לגשת. שנית, השרת צריך לשייך את נתוני השיחה רק עם הגלישה שלי. כשאני להתחבר לפייסבוק, יש כנראה מיליוני אנשים אחרים גם מחוברים לפייסבוק באותו הזמן. אבל השרת צריך דרך כלשהי של שיוך הנתונים שלי עם ההפעלה הנוכחית שלי ונתונים של מישהו אחר עם ישיבה אחרת. למזלנו, מחברי PHP חשבו על כל זה בשבילנו, ולכן אנחנו לא צריכים ליישם את כל זה בעצמנו. אבל בואו נסתכל על מה שPHP עושה כברירת מחדל. כשאני מבקר בדף PHP המכיל session_start בפעם הראשונה, PHP יפיק ערך אקראי גדול. עד session_destroy נקרא או אני לא לבקר בכל דפי PHP באתר זה במשך זמן מה, שהערך אקראי וכנראה ייחודי יהיה קשור איתי. בדרך זו יש לו את השרת דרך כלשהי של זיהוי הגלישה שלי בניגוד לשארו של מישהו. אנחנו יכולים להעיף מבט על מזהה ההפעלה הנוכחית שימוש בפונקצית PHP, session_ID. כאן אנחנו פשוט פלט את הערך של זיהוי ההפעלה שלנו. אז אם אנחנו שוב להיכנס ליישום האינטרנט, למשל, ועכשיו לנווט לsessid.php, אנחנו תראו מחרוזת ארוכה של דמויות, וזה מזהה הנוכחי למושב שלי, וככה שרת שמירה על המסלול של מי שאני. אוקיי, אבל יש לנו רק פתרתי חצי מהבעיה. בטח, השרת עכשיו יש איזו דרך לזהות אותי, אבל כאשר אני מבקר בדף אחר, השרת צריך לעשות שימוש חוזר באותו מזהה ולא יצירה אחת חדש. זכור, אם אני מצהיר משתנה מקומי בfoo.php ולאחר מכן בקר bar.php, יש bar.php שום דרך לדעת מה קרה בfoo.php. אז יישום הפעלת php ברירת המחדל דורש שהדפדפן להזכיר לשרת בפגישה אשר מזהה לשימוש. זו מיושמת בצורה של עוגייה. עוגיות בנוסף להיותו חטיף טעים הוא פשוט קובץ טקסט קטן במחשב שלך ששרת יכול לכתוב לבאמצעות דפדפן האינטרנט. אז אחרי PHP יוצר מזהה ההפעלה הייחודית שלי באמצעות session_start, זה הולך לספר את דפדפן האינטרנט כדי לאחסן מזהה כי בקובץ מקומי טקסט, או עוגייה. לאחר מכן דפדפן האינטרנט יכלול מזהה כי בכל בקשה שזה עושה לשרת. אז באמת, שרת האינטרנט הוא לא זוכר מי אני. במקום זאת, דפדפן האינטרנט הוא פשוט לזכור את המזהה הייחודית שנוצר על ידי PHP ואז להזכיר את השרת כל הזמן מה הוא מזהה את זה. בדרך זו, מידע כמו שם המשתמש שלי מאוחסן בשרת לא דפדפן האינטרנט שלי. הדפדפן פשוט מספר את השרת שבו מאוחסן מידע שPHP כך PHP יכול להחזיר אותו. אז זה מעלה את השאלה, שבו הוא בעצם PHP אחסון המידע הזה? כברירת מחדל, PHP יהיה לאחסן את נתוני ההפעלה שלך בקובץ בתוך / tmp, או התיקייה 'הזמנית'. שמו של קובץ שיכלול את מזהה הפעלה כל כך PHP יכול לקבוע איזה קובץ לקרוא ולכתוב מדרך רק מזהה ההפעלה. בסדר. אז בואו לפתוח את כרטיסיית הרשת בהבאגים של הכרום דרך סמל מפתח הברגים בצד ימין למעלה. עכשיו בואו ראש לhello.php שוב. בואו לחצו על בקשת HTTP לhello.php ואז ללחוץ על כותרות. כאן אנו יכולים לראות שכותרת העוגייה מכילה מפתח בשם PHPSESSID, או מושב PHP ID-עם ערך שאותה מחרוזת ארוכה שראינו כשבקרנו sessid.php. זה בדיוק איך הדפדפן מזכיר השרת מה מושב מזהה צריך להיות בשימוש. זה כולל אותו בכותרת HTTP. בסדר. בואו נחזור למסוף. בואו לנווט ל/ tmp, שבו PHP היא אחסון מידע ההפעלה כברירת מחדל. ואכן, בתוך התיקייה הזמנית הזה, הנה קובץ המכיל את אותו מזהה הפעלה מדויקת. אם אנחנו פותחים את הקובץ הזה, אנחנו יכולים לראות איך PHP מייצג את המושב שלי בדיסק. הנה המחרוזת "טומי" הוא להיות מאוחסן למפתח 'שם,' וזה בדיוק מה שהיינו מצפה. וזה סקירה של פגישות ב-PHP. מה שהרגע ראו היה רק ​​את יישום ברירת המחדל של מפגשים. למעשה, אתרי אינטרנט רבים לשנות התנהגות ברירת המחדל כדי לאחסן הפעלות PHP בצורה יעילה יותר בעניין של שיפור ביצועים. שמי הוא טומי, וזה CS50. [CS50.TV]