18-01-2006, 15:06
|
|
|
חבר מתאריך: 25.08.03
הודעות: 9,114
|
|
נראה שפשוט לא הבנת את הבעיה.
"כותר" (header) הינו מידע שהשרת שולח לדפדפן לפני המידע המכיל את תוכן הדף.
מידע זה מכיל בד"כ הוראות איך להתנהג עם התוכן שישלח אחריו (ניתן לשלוח כמות לא מוגבלת של כותרים שונים).
לעיתים הכותר אומר לדפדפן שיציג את הטקסט בקידוד מסויים, לעיתים הוא אומר שמדובר ב-HTML, תמונה, קובץ קול, קובץ להורדה ועוד.
היות והכותר אומר לדפדפן מה לעשות עם תוכן הדף, הוא חייב להשלח לפני כל תו אחר. אם יש לך בקוד שורת רווח שלא כלולה בין תגי ה-PHP, כבר נשלח מידע לדפדפן ולא תוכל לשלוח כותר - לכן בדיוק מופיעה אצלך השגיאה, כי אתה שולח למשתמש מידע ולאחמ"כ שולח כותר (עוגיות גם נשלחות בכותר).
ישנה דרך, באמצעות הפונקציה yytg הפנה אותך אליה, לעצור את שליחת הפלט לדפדפן, כך שלמרות שריצת הקוד שלך יוצרת פלט הוא יאגר בחוצץ (buffer) ולא ישלח ללקוח/לדפדפן עד שתתן הוראה מתאימה.
לכן בצורה כזאת תוכל לשלוח כותרים גם באמצע ניתוח הקוד, כיון שלמרות שנוצר פלט הוא עדיין לא נשלח לדפדפן.
אז תבחר את אחד מהאפשרויות הבאים:
1. לשנות את הקוד כך ששליחת הכותרים יופיעו לפני התוכן.
2. להשתמש בחוצץ לאגירת התוכן - תקדיש לפחות זמן קצר ללימוד הפונקציות בקישור שקיבלת.
3. לשמור את כל התוכן ידנית בתוך משתנה ולעשות בו שימוש מתאים... בד"כ פשוט להדפיס את המשתנה בסיום הפעולה. זאת אומרת במקום לכתוב echo, לכתוב " $echo .=" ובסיום הדף להדפיס לדפדפן את התוכן של המשתנה echo.
|