خطای Warning: Cannot modify header information - headers already sent
#1
Note 
مربوط به تاپیک
خطایابی کدهای php - مشکلات رایج برنامه نویسان
(در Tab جدید باز میشود)


سلام
مدیر بخش برنامه نویسی( Daniel ) تاپیک بسیار مفیدی رو ایجاد کردن و من هم تصمیم گرفتم در کامل کردن تاپیک کمک کنم.
در این پست میخوایم درمورد یکی از خطاهایی که بسیار زیاد اتفاق افتاده و شاید یکی از رایجترین سوالاتی هست که تو سایتها کاربران میپرسن
"خطای Warning: Cannot modify header information - headers already sent"

این خطا زمانی رخ میده که شما بخواید بعد از ارسال شدن Header های HTTP دوباره اون رو با توابعی که برای ارسال Header ها استفاده میشن، ارسال کنید.
پس راه حل اینه که از این توابع باید قبل از اینکه هیچ هیدری(Header) ارسال بشه استفاده کنید.

توابعی که برای کار با Header ها وجود دارن:
   header / header_remove
   session_start / session_regenerate_id
   setcookie / setrawcookie

مثال:
کد php:
<html>
 
   <?php session_start(); ?>
    <head><title>My Page</title>
</html> 
همونطور که در مثال بالا میبینید تابع ()session_start بعد از کدهای HTML قرار گرفته و هیدرها در این زمان ارسال شدن پس دوباره نمیتونن ارسال بشن و این میشه که خطای Warning: Cannot modify header information - headers already sent در خروجی نمایش داده میشه.
برای رفع خطا باید تابع ()session_start رو قبل از HTML و در بالای همه کدها قرار بدید.

استفاده از توابع بافرینگ PHP
با استفاده از توابعی که برای بافر کردن خروجی ها وجود داره میشه تا حد زیادی این نوع خطاها رو رفع کرد.
دو تابعی که ما در اینجا نیاز داریم ()ob_start و ()ob_end_flush هستن.

مثال استفاده از این توابع:
کد php:
<?php ob_start(); ?>
<html>
    <?php session_start(); ?>
    <head><title>My Page</title>
</html>
<?php ob_end_flush(); ?>

استفاده از این توابع باعث میشه تا خروجی ها بعد از اینکه همه کارها تموم شد ارسال بشن و دیگه خطایی بوجود نیاد.

موفق باشید.

ایجاد موضوع جدید     موضوع بسته شده است 

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note خطای Warning: [function]: failed to open stream Daniel 0 322 31-07-2014 ساعت 18:50
آخرین ارسال: Daniel
Note خطای Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given Daniel 0 320 06-07-2014 ساعت 21:38
آخرین ارسال: Daniel
Note Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given mahbobe.prog 14 1,547 07-06-2014 ساعت 23:11
آخرین ارسال: mahbobe.prog
Note Warning: mysql_connect(): Access denied Daneshjoo 1 435 15-08-2013 ساعت 14:48
آخرین ارسال: PHP.sec

کاربرانِ درحال بازدید از این موضوع:   1 مهمان