လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> headers_sent () header ကိုသတ်မှတ်နိုင်မလားစစ်ဆေးပါ

headers_sent () header ကိုသတ်မှတ်နိုင်မလားစစ်ဆေးပါ

M66 2025-05-17

PHP တွင် header () function သည် redirecting လုပ်ခြင်း, cookies များ, ပြင်ဆင်ခြင်း, ဘာဖြစ်လို့လဲဆိုတော့ output ကိုစတင်ပြီးသည်နှင့် PHP သည် HTTP Header ကိုအလိုအလျောက်ပေးပို့လိမ့်မည်။

header ကိုခေါ်ဆိုသည့်အခါအမှားအယွင်းများကိုရှောင်ရှားရန် () , ခေါင်းစီးကိုပေးပို့ခြင်းရှိမရှိရှာဖွေရန် headers_sent () function ကိုသုံးနိုင်သည်။

headers_sent () ?

Http Header သတင်းအချက်အလက်များကို browser သို့ပို့ခြင်းရှိမရှိစစ်ဆေးရန် Headers_sent () PHP မှပေးသော built-in function ကိုဖြစ်သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 if (!headers_sent()) {
    header('Location: https://m66.net/some-page');
    exit;
}

ခေါင်းစီးကိုမပို့သေးပါက ခေါင်းစီးများ () သည် မှားယွင်းသော ပြန်လာပြီး header () ကို လုံခြုံစွာခေါ်နိုင်ကြောင်း, အကယ်. မှန်ကန်သော လျှင်၎င်းသည်ခေါင်းစီးကိုပို့ပြီးပါပြီဟုခေါ်ဆိုခြင်းနှင့် ခေါင်းစဉ်ခေါ်ခြင်း () ဟုခေါ်သည့်အခါအမှားတစ်ခုထုတ်ပြန်လိမ့်မည်။

တိကျသောပေးပို့ခြင်းတည်နေရာကိုစစ်ဆေးပါ

headers_sent () သည် header output ၏နေရာ (ဖိုင်နှင့်လိုင်းနံပါတ်) ကိုရရှိရန် parameters နှစ်ခုကိုလည်းလက်ခံနိုင်သည်။

 if (headers_sent($file, $line)) {
    echo "HTTP ဦး ခေါင်းရှိတယ် $file စာရွက်စာတမ်း၏ပထမ ဦး ဆုံး $line လိုင်းပို့ပါ。";
} else {
    header('Location: https://m66.net/some-other-page');
    exit;
}

ဤနည်းလမ်းသည်အထူးသဖြင့် debugging လုပ်ရန်အတွက်သင့်လျော်သည်။

ဘုံမြင်ကွင်းများ

1 ?? စာမျက်နှာပြန်ညွှန်း

redirect မလုပ်မီ, သင်သည် output မရှိကြောင်းသေချာအောင်လုပ်သင့်သည်။

 if (!headers_sent()) {
    header('Location: https://m66.net/login');
    exit;
} else {
    echo "redirect မရပါ,အဘယ်ကြောင့်ဆိုအပ်၏。";
}

2 ?? ကွတ်ကီးများကိုသတ်မှတ်ပါ

အလားတူပင် Setcookie () HTTP ခေါင်းစီးများပေါ်တွင်မှီခိုနေရသည်,

 if (!headers_sent()) {
    setcookie('user', 'JohnDoe', time() + 3600, '/');
} else {
    echo "သတ်မှတ်. မရပါ cookie,header ကိုစေလွှတ်လျက်ရှိသည်。";
}

သိကောင်းစရာများ - output buffering ကိုဖွင့်ပါ

header အမှားများကိုပို့ခြင်းအမှားများကိုသင်မကြာခဏကြုံတွေ့ရပါကဇာတ်ညွှန်း၏အစတွင် output ကြားကြားမှုကိုဖွင့်ရန်စဉ်းစားပါ -

 ob_start();

ဤနည်းအားဖြင့် output သည် browser သို့ script ုပ်လပ်ချိန်သို့မဟုတ် ob_end_flush () ကို ခေါ်ခြင်းထက် browser သို့ချက်ချင်းပို့ခြင်းထက်ကြားခံရိုက်ထည့်ပါလိမ့်မည်။