PHP ועוגיות רשת COOKIE_$
עוגיית רשת או במינוח מקצועי cookie, הוא כלי לאחסון מידע ששולח האתר אל הדפדפן של הגולש, והוא מיועד לאחסן בתוכו מידע על הגולש. מידע זה משמש לצורך העלאה מהירה של מידע אודות הגולש. לדוגמה, ניתן להשתמש בעוגיות רשת לצורך אחסון פרטי משתמש רשום באתר, לשמירת פרטים שמולאו בטפסים באתר, לזכירת העדפות המשתמש, דוגמת שפה או מוצרים שרכש, ועוד.
עוגיות רשת הם חלק מהמידע ששולח השרת לדפדפן של הגולש מיד בתחילת ההתקשרות עם הדפדפן. העוגייה שנמצאת על הדפדפן אוגרת מידע, ומידע זה מוחזר לאתר בפעם הבאה שהגולש נכנס אליו.
ה-cookie מתפקד ב-PHP כסופר גלובל בדומה ל-$_GET ול-$_POST, וכמותם הוא בנוי ממערך אסוציאטיבי הכולל מפתחות וערכים.
מחזור חייה של עוגיית רשת כולל שלושה שלבים: הגדרה – שימוש – הריסה.
1. הגדרת העוגייה באמצעות setcookie
את העוגייה מגדירים תמיד לפני תג ה-html מפני שהיא חלק של המידע ששולח השרת ב-header, אותו חלק שנשלח לדפדפן בתחילת ההתקשרות בין האתר ובין הדפדפן, לפני כל מידע אחר.
את העוגייה נגדיר באמצעות setcookie(). לדוגמה:
$name = "CookieName";
$value = "כאן נמצא כל המידע שהעוגייה צריכה להכיל";
$time = time()+60*60*24*7;
setcookie($name, $value, $time);
הפרמטרים:
• $name מגדיר את שם העוגייה. בדוגמה נתנו את השם CookieName .
• $value הוא המידע שאנחנו רוצים שהעוגייה תכיל. בדרך כלל זה מידע על המשתמש.
• $time הוא זמן הפקיעה בשניות. ובמקרה זה 7 ימים ממועד הגדרת העוגייה.
2. קריאת המידע מעוגייה אינו מסובך יותר משימוש במערך.
אנחנו יכולים לגשת לכלל העוגיות שקיימות, במידה ונרצה לדבג אותן, באופן הבא:
echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
וכדי להדפיס את ערכה של עוגייה אחת ששמה "CookieName", נשתמש במבנה הבא:
if(isset($_COOKIE["CookieName"])) echo $_COOKIE["CookieName"];
במידה ונרצה להשתמש במידע שמקורו בעוגייה לשאילתה מול מסד הנתונים, עלינו לאבטח את המידע. אפשרות אחת היא באמצעות htmlentities, שמסיר תווים מסוכנים:
$name = $_COOKIE["name"];
htmlentities($name, ENT_QUOTES, "UTF-8");
השימוש ב- mysqli_real_escape_string נועד להתמודד עם סכנות ה-sql injection.
3. השמדת העוגייה.
יתכנו מצבים שבהם נרצה להשמיד עוגייה, לדוגמה, כשמשתמש עשה logout מהאתר. כדי להשמיד עוגייה נגדיר את ערכה ל-NULL, ונגדיר את מועד פקיעתה למועד בעבר . לשם כך, נגדיר את התאריך בערכים שליליים במקום חיוביים. גם במקרה זה נשתמש ב-setcookie.
$name = "CookieName";
$value = NULL;
$time = time()- 60*60*24*7;
setcookie($name, $value, $time);
כמפתחים שמשתמשים בעוגיות עלינו לזכור שהעוגייה חשופה לגולש, ולכן לא נאחסן בעוגייה מידע מסווג אלא אם הצפנו אותו לפני כן. העובדה שהמידע חשוף לגולש גם עלולה לסכן את האתר שלנו באמצעות sql injection, ולכן נקפיד על שימוש ב-mysqli_real_escape_string, בקריאת המידע המוחזר מהגולשים.
במדריך הבא תקבלו הסבר על דרך נוספת לשמירת מידע אודות המשתמשים באמצעות סופר-גלובאל $_SESSION , שמאפשר לשמור מידע לזמן קצר בהרבה מ-$_COOKIE, ובאופן מאובטח הרבה יותר.
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.