
הטקסט המלא של הדקות הראשונות בהרצאה «Cookies» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו הולכים לראות בג'אווה סקריפט זה שמירה וקריאה של משהו שנקרא קוקיז, כלומר עוגיות. קוקי זה בעצם נתון שאנחנו יכולים לשמור במחשב של הלקוח בעזרת הדפדפן באיזושהי תיקייה מסוימת שהדפדפן מכיר.
אנחנו לא בדיוק שולטים, לא יכולים בכלל לשלוט על איפה זה נשמר ואיזו תיקייה זאת וזה גם לא משנה לנו, אבל אנחנו יכולים לקחת נתון ולשמור אותו בקובץ בצד של הלקוח, ככה שבפעם הבאה שהלקוח נכנס לדף שלנו אנחנו יכולים לקרוא את הנתון הזה ולהשתמש בו.
אוקיי, בואו נבדוק איך אנחנו יכולים לעשות את זה. אז ראשית ניקח לחצן לצורך שמירת הנתון, יש לנו כאן input type שווה button, value שווה save cookie ויש לנו onclick נקרא לפונקציה save cookie.
נבנה פה את הפונקציה הזאת ובתוך הפונקציה מה שאנחנו רוצים לעשות זה לשמור את הנתון הזה בצד של הלקוח. אז בשביל לשמור קוקי אנחנו ניגשים לדוקיומנט נקודה קוקיז או יותר נכון קוקי.
זה בעצם אוסף של כל הנתונים האלה שאנחנו שומרים. עכשיו איך אנחנו בדיוק שומרים את הנתון? אז קוקי זה סטרינג, זה מחרוזת שמכילה שני חלקים.
חלק ראשון זה איזשהו קי מפתח ויש לנו שווה לאחר מכן, והחלק השני זה ה-value וככה אנחנו יכולים לשמור את החלקים השונים. עכשיו למרות שזה נקרא קוקי וקוקי בגדול זה נתון 1 לדוגמה ערך 1 שנשמר עבור מפתח 1 אנחנו יכולים בקוקי לשמור כמה ערכים שונים מה שיקרה בפועל זה כל ערך יופרד על ידי נקודה פסיק זאת אומרת שאנחנו יכולים לשמור k1 שווה
לvalue1 k2 שווה value 2, key 3 שווה value 3 וכולי וכולי, כאשר כל פעם אנחנו צריכים לשמור רק key וvalue 1 והמערכת לבד תשמור אותם בפורמט הזה.
אז בואו לדוגמה נשמור first name שווה מוישה וזה הדבר היחידי שאנחנו שומרים. אז בואו נבצע פונקציה שנקרא לה readCookie ומה שהפונקציה הזאת תעשה היא תציג את document.cookie ונקרא לה מלחצן readcookie.
אוקיי, בואו נבדוק. אז ראשית, קודם כל נבצע read, רק בכדי לראות מה יש בדוקימנט.cookie לפני שאנחנו בכלל רושמים משהו.
זה ינוחץ על readcookie, ואני רואה שזה ריק. ועכשיו אני הולך ל-savecookie, ואז readcookie, ובעצם זה מה ששמרתי, ונראה כאילו ששמרתי מחרוזת אחת רגילה לגמרי.
אוקיי, בואו נשמור יותר מ-cookie אחד. בואו נשכפל את זה ונגדיר דוקיומנט נקודה קוקי שווה עכשיו לעוד משהו לדוגמה last name שווה אופניק ואפילו h שווה 12. זאת אומרת שאני עכשיו שמרתי שלושה פריטים שונים ונראה כאילו אני דורס כל פעם את אותו הקוקי נראה כאילו שהדבר האחרון שישמר h שווה 12 זה הדבר היחידי שיהיה
כאן ב-read קוקי אבל בואו נראה את זה. מה שנעשה זה נסגור את הדפדפן או יותר נכון לפני שנסגור אותו בואו נלך לאינטרנט אופשנס ונמחוק את כל מה שהיה בהיסטוריה כולל את הקוקיז אנחנו רואים כאן שיש לנו את הסימון הזה שאומר שהוא מוחק קוקיז ישנים בכדי לראות תמיד באופן חדש מה בעצם קורה בדפדפן עצמו אז אחרי שמחקנו את
זה בואו נריץ שוב נבצע ריד בכדי לראות שזה ריק נבצע סייב ונבצע read ונראה שהמערכת שמרה בדיוק בפורמט שמקודם דיברנו עליו first name שווה מוישה נקודה פסיק רווח קטנצ'יק שיש פה last name שווה אופניק נקודה פסיק עוד רווח קטנצ'יק h שווה 12 למרות שכשאנחנו שמרנו אותם אנחנו כאילו דרסנו כל פעם את הקוקי הקודם כי יש פה רק שווה
ולא פלוס שווה עדיין ברגע שאנחנו עושים את הדבר הזה אז האובייקט דוקיומנט לוקח את המחרוזת שלנו ומכניס אותה כמחרוזת נוספת בתוך הקובץ הקטנצ'יק הזה.
אבל בואו נראה עוד משהו מעניין. זה היה הדף, אם אני מבצע read cookie כמובן אני רואה את הפרטים האלה, ועכשיו אני סוגר את הדפדפן, אני לא מנקה את הקוקיז, אני רק סוגר את הדפדפן, ואני מריץ שוב פעם את הדף.
ואז אני בא ואני עושה read cookie, ופתאום אני רואה שהקוקי לא באמת נשמר במחשב של המשתמש. אז מה שבעצם קרה כאן זה שאנחנו יצרנו פונקציה ששומרת קוקי, אבל הקוקי לא נמצא בתוך קובץ במחשב של המשתמש, במחשב של הלקוח, אלא רק בזיכרון של הדפדפן,
והקוקי הזה נקרא Non Persistent Cookie. Non Persistent Cookie זה בעצם קוקי שנשמר רק בזיכרון של הדפדפן, ולא בתוך קובץ. והסיבה היא מפני שאין לנו תאריך תפוגה.
אם אנחנו רוצים שהקוקי יישמר בקובץ, אנחנו חייבים לספק לו תאריך תפוגה, כלומר, לומר לקוקי עד מתי אנחנו רוצים שאתה תישמר. זה יכול להיות בעוד יום, זה יכול להיות בעוד חודש, בעוד שנה או בעוד עשר שנים, זה לא משנה.
העיקר שניתן איזשהו תאריך בכדי שהקוקי יישמר בו. אז בואו נקרא לפונקציה הזאתי saveNonePersistentCookie והפונקציה הזאת, דייב קוקי כן תהיה כזאת שתשמור לנו קובץ וקוקי כזה נקרא PersistentCookie בשביל שזה יהיה PersistentCookie בואו ניצור var וניצור משתנה
שנקרא expire נגדיר אותו כnewDate עכשיו אנחנו רוצים שהקוקי הזה התאריך תפוגה ויהיה איפשהו תאריך עתידי אז נלך ל-expire ונגדיר לו חודש על ידי הפונקציה setMonth ואנחנו רוצים להגדיר לו חודש אחד קדימה מהיום זאת אומרת שבואו נשמור את הקוקי הזה כחודש אחד קדימה.
אז יש לנו פה expire.getMonth, כלומר אנחנו לוקחים את החודש הנוכחי, מוסיפים לו אחד, וכעת המשתנה expire בעצם, נקרא לו expires, בעצם מתאר לנו בדיוק את התאריך של חודש אחד מהיום.
וזה לא משנה אם היום גם נניח חודש דצמבר, עדיין חודש אחד מהיום יהיה ינואר של שנה הבאה. אוקיי אחרי שיש לנו את התאריך הזה מה אנחנו בעצם עושים איתו?
אז כאשר אנחנו שומרים כל אחד מהקוקיז אנחנו חייבים ללכת ולעשות נקודה פסיק בסוף ה-Name או ה-Key שווה value ולבצע אקספיירס שווה ולשרשר את זה עם התאריך אקספיירס נהפוך אותו to Universal Time Coordinate String ואנחנו נעשה את זה עבור כל אחד מהם.
זאת אומרת שעבור כל קוקי ששמרנו אנחנו נתנו גם תאריך תפוגה לאותו קוקי. בואו נקרא לה הפונקציה הזאתי save persistent cookie ונקרא לה מהלחצן. כעת ב-save persistent cookie אנחנו פשוט נותנים