הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   קוקיז - דיליי רציני , בעיה לא רצינית. (https://hosts.co.il/forums/showthread.php?t=88277)

morsrh 03-03-11 15:09

קוקיז - דיליי רציני , בעיה לא רצינית.
 
שלום , לאחרונה התעסקתי עם קוקיז ונתקלתי בבעיה כלשהוי,

כדי לסכם את הבעיה הכנתי דוגמא פשוטה,
יש לי את הקוד הזה :

PHP קוד:

setcookie ("test""d"time() + 3600);
if(isset(
$_COOKIE["test"]))
    echo 
'yes'

למה רק בריצה השניה של הדף הוא יציג לי yes?
פשוט מטריף , יכול להיות שהקוקיז מקבל את הפקודה באמצע הדף אבל הוא יוצר אותו רק בסוף טעינת הדף? כלומר כפקודה אחרונה?

חייב פטרון לבעיה הזאת שיזהה לי את הקוקי בריצה הראשונה!
אם למישהו יש פתרון או שיטה אחרת לפעולה אשמח לקבל ..

תודה .

Tomer 03-03-11 16:53

עוגיה שנקבעה לא תוכל להיות בשימוש באותו הדף ללא רענון. לצורך העניין, אפשר לעשות:

PHP קוד:

if (isset($_COOKIE['test'])) {
echo 
"yes";
} else {
$setcookie setcookie("test""text"time() + 3600);
header("Location: ".$_SERVER['PHP_SELF']);


אבל בוא ננסה למצוא לך פתרון אחר, למה אתה צריך שהעוגייה תזוהה באותה הריצה? מה השימוש?

IgalSt 03-03-11 18:44

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

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

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


* זו היא גם הסיבה שאתרים גדולים שצריכים להגיש הרבה תמונות, או סתם רוצים לשפר את מהירות עליית התמונות, JS, CSS וכו' (תוכן סטאטי) עובדים עם "cookie-less domain". זהו דומיין ייעודי שכל התמונות והקבצים החיצוניים נטענים ממנו. בדומיין הזה אף פעם לא שומרים עוגיות (אין סיבה) ולכן גם הן לא נשלחות יחד עם בקשת ה-HTTP.

morsrh 03-03-11 19:32

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


כל הזמנים הם GMT +2. הזמן כעת הוא 12:09.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ