עוגיות
כאשר אומר "עוגייה", הכוונה היא למחרוזות טקסט שאפשר לאחסן על מחשב הלקוח, השימוש ב-PHP עם עוגיות יכול לקרוא את העוגיות, לשתול מידע ועוד.
איך מתחילים לעבוד?
מבנה של הגדרת עוגייה הולך כך:
קוד PHP:
setcookie(CookieName, CookieValue, CookieExpire, CookiePath, CookieDomain, CookieSecure);
פירוש הפרמטרים של הפונקציה:
- CookieName - שם העוגייה, עם ערך זה ניגש לעוגייה, נשנה ערך וכ'ו.
- CookieValue - ערך העוגייה, ערך זה מאוחסן במחשב הלקוח. בגלל שללקוח יש גישה לראות את העוגיות שהושתלו, עדיף לא לשים מידע חשוב בעוגייה.
- CookieExpire - הזמן בו תפוג העוגייה. הזמן הולך לפי מספר השניות שחלף מאז ה-1 בינואר, 1970. בד"כ היא בעזרת הפונקציה time() שעליה נרחיב בהמשך.
- CookiePath - הנתיב בשרת שבו העוגייה תיהיה זמינה.
- CookieDomain - התחום שבו תיהיה העוגייה זמינה.
- CookieSecure - עם ערך זה יוגדר כ-1 אז העוגייה תיווצר רק עם הפרוטוקול יהיה HTTPS. ברירת המחדל היא 0.
שים לב, כאשר אנו משתלים עוגייה בצד הלקוח אנחנו צריכים לעשות את זה לפני כל התגים. כלומר לפני תג ה-<html>.
דוגמה טובה להשתלת עוגייה, רק נשתיל עוגייה לא נעשה איתה כלום בינתיים:
קוד PHP:
<?php
setcookie("MyFirstCookie", "There is my first cookie!");
?>
<html>
<head>
.
.
.
</head>
<body>
.
.
.
</body>
</html>
לפי התבנית יצרנו עוגייה בשם "MyFirstCookie" ונתנו לה ערך שהוא "There is my first cookie!".
כפי ששמתם לב לא הגדרנו את כל הפרמטרים, זה לא חובה. אך אם אתם רוצים אפשר להגדיר את זה לפי הפרטים שמילאנו למעלה.
אם נצא מהדפדפן נראה שהעוגייה נמחקה. דבר היוצר אי נוחות.
איך אפשר לעשות שזה יימחק רק אחרי X זמן ולא איך שיוצאים מהדפדפן?
בשביל זה יש את השדה CookieExpire, שאם לא נגדיר אותו אז יגיד לעוגייה להמחק איך שאנו יוצאים מהדפדפן.
אם אנחנו רוצים לעשות שהעוגייה תמחק 5000 שניות לאחר שסגרנו את הדפדפן.
בשביל זה בשדה CookieExpire נרשום time() + 5000 שזה אומר שזה ימחק 5000 שניות מהזמן הנוכחי.
נגדיר את זה כך:
קוד PHP:
<?php
setcookie("MyFirstCookie", "There is my first cookie!", time() + 5000);
?>
קבלת עוגיות
עד עכשיו רק הגדרנו עוגיות, אך אם נרצה לקרוא להם? מה נעשה?
בשביל זה יש את המשתנה הגלובאלי $_COOKIE[].
הוא מוגדר כך:
קוד PHP:
$_COOKIE[cookieName];
לדוגמה, נבנה תוכנית אשר רושמת את העוגייה שלנו.
קוד PHP:
<?php
setcookie("MyFirstCookie", "There is my first cookie!", time() + 5000);
?>
<html>
<head>
.
.
.
</head>
<body>
<h1>My first cookie in PHP!</h1>
<?php echo($_COOKIE['MyFirstCookie']); ?>
</body>
</html>
<?php echo($_COOKIE['MyFirstCookie']); ?>
כלומר נקבל את העוגייה אם נכתוב את שמה בסוגריים המרובעים.
בדיקה אם עוגייה קיימת
כבר שתלנו כמה עוגיות על צד הלקוח, אבל מה קרה אם עוגייה אחת נמחקה מסיבה כזאת או אחרת?
בשביל זה יש את הפונקציה isset() שמשמשת אותנו לזה:
קוד PHP:
<?php
if(isset($_COOKIE['MyFirstCookie'])){
echo($_COOKIE['MyFirstCookie']);
}
else{
echo("You dont have cookie!");
}
?>
פשוט לא?
מחיקת cookies
אתה רוצה למחוק עוגייה, למשל המשתמש התנתק מהחשבון והוא צריך שלא יהיו עוגיות.
בשביל זה צריך למחוק עוגיות לא?
לזה יש מספר שיטות:
- הגדרת זמן שכבר עבר.
- להגדיר לזה ערך ריק.
- להשתמש בפונקציה unset().
1) פשוט מאוד, להגדיר עוד פעם את אותה עוגייה ובערך של פקיעת העוגייה לתת ערך עבר, לדוגמה:
קוד PHP:
setcookie("MyFirstCookie", "There is my first cookie!", time() - 5000);
2) דיי דומה ל-1, אך במקום זמן נשים ערך ריק:
קוד PHP:
setcookie("MyFirstCookie", "");
3) פונקציה מותאמת, בלי יותר מידי התחכמויות:
קוד PHP:
unset($_COOKIE['MyFirstCookie']);
וזהו!
אם יש לכם שאלות, בקשות או כל דבר אחר אתם מוזמנים להכנס לפורום שפות צד שרת.



הודעת מערכת