PHP/Sessions: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Nahum (שיחה | תרומות)
←‏איתחול ה- session: שיחזור קטע שנמחק ע"י אלמוני. אם לא יועיל, לא יזיק.
שורה 10:
= איתחול ה- session =
בשביל לאתחל session יש להשתמש בפונקציה session_start, במקרה וה- session id נשמר בעוגיות, הקריאה לפונקציה חייבת להיות לפני כל פלט ללקוח. זאת מכוון שהעוגיות שעליהם נשמר היישן הן סוג של כותב (header) שנשלח דרך HTTP. לאחר הדפסת תוכן הכותרים כבר נשלחו ולא ניתן לשלוח אותם מחדש. יש לבדוק שאין שורה ריקה או סימן BOM לפני קוד הPHP.
 
בעייה נפוצה היא שהפונקציה באמת נקראת לפני כל פלט, אבל יוצאת הודעת שגיאה בסגנון:<br />
<div style="direction: ltr;">
Warning:
Cannot modify header information -
headers already sent by (output started at /home/******/domains/*****/public_html/conf.php:**)
in /home/*****/domains/*****/public_html/file.php on line **
</div><br />
הסיבה לכך, היא שהקובץ נשמר בקידוד UTF-8 כולל מה שנקרא חתימת BOM האומרת כי הקובץ נשמר ב- UTF-8, ובגלל באג ב- PHP אותה חתימה מזוהה כפלט, ב- PHP 6 ככל הנראה ייצא פיתרון לאותו באג.
 
הפיתרון הוא להשתמש בעורך שיודע לשמור utf-8 בלי אותה חתימה (כמו noteped++) ולשמור את הקובץ בלי חתימה.
 
[[קטגוריה:PHP]]