View Single Post
ישן 06-02-07, 19:21   # 3
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

יפה מאוד, שמעת לי
ונתחיל בשאלה שלשמה התכנסנו:

PHP
ש: כתבתי session_start, והופיעה לי שגיאה. מה לעשות?
ת: קודם כל אני מדבר על השגיאה בפורמט הבא:
Warning: session_start(): Cannot send session cache limiter - headers already sent
דבר שני, יכול להיות שבשרת מבוטל הerror_reporting, ולא תופיע שגיאה, הסשן פשוט לא יעבוד.
תבדקו בכל מקרה.

האפשרות הראשונה היא שכתבתם משהו לפני הsession_start. מספיק אנטר לפני סימן הפתיחה (לדוגמא ה<?php), והשגיאה תופיע. (מדובר לא רק על אנטרים! כל טקסט פלט..)
דבר שני שנקרא פלט הוא echo, print וכדומה - פונקציות הדפסה "שולחות" את ההיידרים לפני הפלט.

במקרה כזה יש אפשרות להוסיף את הsession_start() לפני הפלט, או פשוט להוסיף את הפונקצייה ob_start() לפני הפלט (ובסופו מומלץ ob_end_flush()).

האפשרות השניה מדברת על האנשים שמשתמשים בקידוד UTF-8.
אם אתה עובד עם הקידוד, ואתה משתמש בנוטפד של WINDOWS או כל עורך תמלילים אחר שמוסיף BOM בהתחלה, תהיה לך את הבעיה.
BOM הוא פלט שמתווסף בשמירה בקידוד UTF-8 לראש הטקסט, ובגלל זה ההיידרים נשלחים לפני הטקסט.
האפשרויות במקרה הזה הן או לשמור בתור ANSI ולא בתור UTF-8 (אפשר עדיין להשתמש בהיידר לקביעת סוג התוכן, אבל זה מסתבך קצת) או לעבוד עם עורך תמלילים אחר.
העורכים שמסוגלים לעשות משהו כזה הם Notepad2 (חיפוש בפורום), Notepad++ ו-Zend Studio. האחרון שציינתי עולה כסף, האחרים חינמים.
יש עוד עורכים כמו PHPEdit שיוכלו לעזור.. הבאתי רק רשימה חלקית מאוד.

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

תודה לטל (WebProject) על ההערה
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter

Last edited by BlueNosE; 06-02-07 at 20:39..
  Reply With Quote