הנך נמצא: מדריך מתקדם / שיעור 2 / דף 10
 


המדריך של תאו ל- JavaScript
 


דפים בשיעור זה:
1: המדריך המתקדם
2: טיפול מיוחד במחרוזות
3: substring
4: מתודת split
5: מערכים אסוציאטיבים
6: דוג' למערך אסוציאטיבי
7: cookies – היכרות
8: עוד אודות cookies
9: קריאת cookies - א'
10: קריאת cookies - ב'
11: קריאה וכתיבה
12: עוד אודות cookies
13: cookie - path/domain
14: סיכום שיעור 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

שיעור 2

דף 10: קריאת cookies מסובכות.

אם תרצה שה- cookie שלך תשמור יותר מפריט מידע אחד, תוכל להאריך את ה- cookie ככל שתרצה (עד לנפח של 4KB). נאמר, שברצונך לשמור את שמו של מישהו, גילו ומספר הטלפון שלו. עליך לרשום משהו שיראה כך:

var the_cookie = "username:thau/age:older than the hills/phone:411";
document.cookie="my_happy_cookie=" + escape(the_cookie);

אני עושה שימוש בלוכסן על מנת להפריד בין מאפיינים שונים ובנקודותיים על מנת להפריד בין שם המאפיין וערכו. הלוכסן והנקודותיים, הן בחירות שרירותיות שלי – הן יכולות להיות כל דבר שתרצה. למשל:

var the_cookie = "username=thau&age=older than the hills&phone=411";
document.cookie="my_happy_cookie=" + escape(the_cookie);

התווים המפרידים יכולים להיות כל תו שתבחר, אולם חשוב שתזכור אותם על מנת שתוכל לפענח את ה- cookie ששמרת מאוחר יותר.

כמו בדוגמא הפשוטה קודם, החלק הקל הוא הבאת ה- cookie, אולם, הוצאת המידע הנדרש מתוך ה- cookie הוא החלק הסבוך. אני מציע להשתמש במערכים אסוציאטיבים על מנת לשמור את המידע. בוא נניח, למשל, ששמרת את ה- cookie הזו בדיסק הקשיח של מישהו:

my_happy_cookie=username:thau/age:older than the hills/phone:411

תוכל לשמור את המידע במערך אסוציאטיבי כך:

function readTheCookie(the_info)
{

  // load the cookie into a variable and unescape it
  var the_cookie = document.cookie;
  var the_cookie = unescape(the_cookie);

  // separate the values from the cookie name
  var broken_cookie = the_cookie.split("=");
  var the_values = broken_cookie[1];

  // break each name:value pair into an array
  var separated_values = the_values.split("/");

  // loop through the list of name:values and load
  // up the associate array
  var property_value = "";

  for (loop = 0; loop < separated_values.length; loop++)
  {
    property_value = separated_values[loop];
    var broken_info = property_value.split(":");
    var the_property = broken_info[0];
    var the_value = broken_info[1];
    the_info[the_property] = the_value;
  }
}

אם הפונקציה הזו הייתה קיימת בקוד ה- JavaScript שלך, יכולת לקרוא לה כך:

var cookie_information = new Array();
readTheCookie(cookie_information);

וכמובן שאז, ע"י הפניות: ["cookie_information["username"], cookie_information["age ו- ["cookie_information["phone היית מקבל את המידע המבוקש.

זה נראה אולי מוזר, ולכן הראתי את השיטה הזו כשיטה נוספת, למרות למעשה, היא לא ממש קשה. הנה ניתוח של הקוד שורה אחר שורה:

var the_cookie = document.cookie;

זה החלק הקל. פשוט שומרים את ה- cookie בתור משתנה.

var the_cookie = unescape(the_cookie);

ביטול פעולת ה- ()escape.

var broken_cookie = the_cookie.split("=");
var the_values = broken_cookie[1];

שתי שורות אלו קובעות את ערכו של המשתנה the_values להיות: " username:thau/age:older than the hills/phone:411".

var separated_values = the_values.split("/");

שורה זו יוצרת מערך בשם seperated_values בעל שלושה אלמנטים:

separated_values[0] = "username:thau", separated_values[1] = "age:older than the hills", separated_values[2] = "phone:411".
for (loop = 0; loop < separated_values.length; loop++)

שורה זו למעשה, דואגת לעבור בלולאה על שלושה אלמנטים במערך.

property_value = separated_values[loop];

כאן אנו מחלצים את הזוגות name:value (ערך:שם), כאשר הזוג הראשון הוא: username:thau.

var broken_info = property_value.split(":");

בשורה זו אנו מפרידים את הזוגות לתוך מערך העונה לשם: broken_info, כאשר: broken_info[0] = "username", broken_info[1] = "thau".

var the_property = broken_info[0];

במעבר הלולאה הראשונה, the_property יהיה: "username".

var the_value = broken_info[1];

במעבר הראשון על הלולאה, the_value יהיה: "thau".

the_info[the_property] = the_value;

כאן לראשונה, אנו רואים את היתרון שבשימוש במערכים מקושרים. the_info["username"] יקבל את הערך "thau". כך שכאשר תרצה את שם המשתמש מה- cookie, תוכל פשוט לרשום את השורה הבאה:the_name = the_info["username"];.

וכך הלאה וכך הלאה ...

כך, בכל פעם שתכנס לתוך הלולאה, אלמנט חדש יתווסף אל the_info. בסוף הלולאה נקבל כי:

the_info["username"] = "thau"
the_info["age"] = "old as the hills"
the_info["phone"] = 411

זה אולי נראה מעט מסורבל, אבל זו הדרך שבה אני מעדיף להשתמש על מנת לשמור מידע רב ב- cookies או לחלצו מהן. ישנן דרכים רבות לעשות זאת, ואם מצאת דרך נוחה יותר לעשות זו, הכל תלוי בך.

טוב, הדבר האחרון שנותר לך עוד לדעת, הוא אופן הטיפול במספר רב של cookies במקביל.

חזור לתחילת הדף

לדף הבא «--

 
       
       
   
 
 

עמוד ראשי
מדריך בסיסי
מדריך מתקדם
החלפת תמונות
גניבת קוד
מפת האתר