المحتوى

06‏/11‏/2011

مشكلة وحل في PHP وهو ظهور رسالة خطأ Warning: Cannot modify header information - headers already sent

بعد استخدامي للملفات بالترميز utf-8 لاحظت ظهور سالة خطأ:
Warning: Cannot modify header information - headers already sent
وبعد الفحص والتمحيص تبين لي أن دالتين هما سبب المشكلة : cookies و header بينما تختفي المشلكة إذا كنت تستخدم ANSI
الحل يكمن في التالي:
أن لا يكون هناك أي مدخلات html قبل هاتين الدالتين ولكننا غالبا مانحتاج ذلك لذا قم بوضع الدالة التالية قبل أب كود في الصفحة:

session_start();
وهذه الدالة في النهاية ,,,,,
session_end_flush();

كما يجب أن لا يكون هناك فراغ قبل علامة البدء


ظهرت بعد ذلك المسكلة مرة أخرى وكان الحل هو استخدام برنامج محرر نصوص آخر مثل EmEditor وتخزين الملف بصيغة:
utf-8 without BOM وهنا مدونة جيدة لتوضيح ذلك

أو هناك حل آخر وهو حذف الكود الخفي المضاف للملف باستخدام محرر هيكسا XVI32 وهي الرموز الأولى في بداية الملف وتستطيع الاستفادة من مقالة جيدة هنا.

عموما: توجهت للصفحات التي فيها الدالتين: cookies و header وحولت ترميزهما للـ utf-8 without BOM
فنجح الأمر ونظرا لكثرة استخدامي للدالة header فقمت باستبدالها بدالة meta الخاص بـ refrech