လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Header function ကို "ခေါင်းစီးများကိုပို့ပြီးပြီ" Ob_start နှင့်လက်တွေ့ကျသောအမှုများကိုဖြေရှင်းရန်ကြိုးစားပါ။

Header function ကို "ခေါင်းစီးများကိုပို့ပြီးပြီ" Ob_start နှင့်လက်တွေ့ကျသောအမှုများကိုဖြေရှင်းရန်ကြိုးစားပါ။

M66 2025-06-15

PHP ပရိုဂရမ်တွင် Http Hearters ကို 0 န် ဆောင်မှု ခံယူသူအား 0 န်ဆောင်မှုခံယူသူသို့ပို့ဆောင်ရန်အသုံးပြုသည်။ ၎င်းသည်များသောအားဖြင့်ပုံမှန်အားဖြင့်သာမန်အားဖြင့်သာမန်အမှားများကိုပြုလုပ်နိုင်သည်။ output ကိုသင်ပို့ပြီးနောက် header () function ကိုအသုံးပြုရန်ကြိုးစားသောအခါဤအမှားသည်များသောအားဖြင့်ဖြစ်သည်။

ယနေ့ကျွန်ုပ်တို့သည်ဤအမှား၏အကြောင်းရင်းကိုတူးဖော်ပြီး ob_start ကိုအသုံးပြုပြီးမည်သို့ဖြေရှင်းရမည်ကိုပြသရန်လက်တွေ့အမှုကိုအသုံးပြုပါမည်။

1 ။ ခေါင်းစီးများကအမှားကိုမည်သို့ပို့ပြီး သနည်း။

PHP တွင် header () function ကိုစာမျက်နှာမှထုတ်လုပ်ခြင်းမပြုမီခေါ်ရမည်။ အကယ် . header () ကိုဘာမှရလဒ်များကိုအပြီး (ဥပမာ HTML tags များ, နေရာများ, PHP သည် HTTP Header ကို browser သို့ပို့ရန်ကြိုးစားလိမ့်မည်ဖြစ်သော်လည်းထွက်ရှိသော output ကိုပါဝင်ပြီးဖြစ်သောကြောင့်၎င်းသည် HTTP header ကိုပြုပြင်မွမ်းမံခြင်းမရှိတော့ပါ။

2 ။ ဘုံအကြောင်းပြချက်

  • မမျှော်လင့်သောနေရာများသို့မဟုတ်အသစ်များ - အသုံးအများဆုံးအကြောင်းပြချက်မှာဖိုင်တစ်ခု၏အစသို့မဟုတ်အဆုံးတွင်နေရာများသို့မဟုတ်အသစ်များရှိသည်။ PHP ဖိုင်၏အစအ ဦး အနေဖြင့် PHP ဖိုင်၏အစတွင်သို့မဟုတ်အဆုံးအပြီးတွင် output တွင် output ရှိနေသည်။

  • HTML (သို့ ) အခြား output ပါဝင်မှု - PHP ဇာတ်ညွှန်းသည် HTML, ECHO ထုတ်ပြန်ချက်များသို့မဟုတ်အခြား PHP output ကိုခေါ်ဆိုခြင်း မပြု မီ,

3 ။ ဒီပြ problem နာကိုဘယ်လိုဖြေရှင်းရမလဲ။

Contring header () မခေါ်မီအကြောင်းအရာကိုရှောင်ရှားရန် PHP ၏ output buffer function ob_start () ကို အသုံးပြုခြင်းသည် PHP ၏ output buffer function ob_start () ကိုအသုံးပြုခြင်းဖြစ်သည်။

လက်တွေ့အမှု - Ob_start () ကို သုံးပါ

ကျွန်ုပ်တို့တွင်အခြားစာမျက်နှာတစ်ခုသို့ပြန်ဝင်ရန်ကြိုးစားသောရိုးရှင်းသော PHP script တစ်ခုရှိသည်ဆိုပါစို့

ပြနာကုဒ်:

 <?php
// ဖိုင်၏အစတွင်မမျှော်လင့်သောနေရာသို့မဟုတ်လိုင်းချိုးဖောက်မှုရှိသည်ဟုယူဆပါ
echo "This is some content before the header.";

// redirecting ကြိုးစားပါ
header("Location: http://m66.net/anotherpage.php");
exit();
?>

အကယ်. သင်သည်ဤကုဒ်ကိုဖွင့်ပါက Browser သည်အောက်ပါအမှားအယွင်းကိုပြသနိုင်သည်။

 Warning: Cannot modify header information - headers already sent by (output started at /path/to/script.php:2) in /path/to/script.php on line 6

ပြ problem နာအတွက်အကြောင်းပြချက်မှာ ECHO သည်အကြောင်းအရာကိုထုတ်ပေးကြောင်း HTTP Header ကိုပို့ရန်ဖြစ်သည်။ ထို့ကြောင့် header () function ကိုဟုခေါ်သောအခါခေါင်းပေါ်တွင်မပြုပြင်နိုင်ပါ။

ဖြေရှင်းချက် - Ob_start ကိုသုံးပါ။

ဤပြ problem နာကိုဖြေရှင်းရန် PHP ၏ output buffer function ကိုသုံးနိုင်သည်။ ob_start () function သည် output buffer သည် output buffer ကိုဖွင့်ထားနိုင်အောင် PHP သည် Execute သို့မဟုတ် ob_end_flush () ကိုခေါ်သည့်တိုင်အောင် PHP သည် buffer ထဲမှအကြောင်းအရာများကိုပထမဆုံးအကြိမ်သိမ်းပိုက်လိမ့်မည်။

resolved code:

 <?php
// output buffer ကိုဖွင့်ပါ
ob_start();

// ဖိုင်၏အစတွင်မမျှော်လင့်သောနေရာသို့မဟုတ်လိုင်းချိုးဖောက်မှုရှိသည်ဟုယူဆပါ
echo "This is some content before the header.";

// redirecting ကြိုးစားပါ
header("Location: http://m66.net/anotherpage.php");
exit();

// output ကြားခံအဆုံးသတ်နှင့်အရာအားလုံးပေးပို့ပါ
ob_end_flush();
?>

ဤပြုပြင်ထားသောကုဒ်တွင် ob_start () ob_start () output buffer ကိုဖွင့်ပေးသည်။ ECHO မှ ထုတ်လွှင့်မှုများမှထုတ်လွှင့်မှုများကိုထုတ်ဖော်ပြောဆိုလျှင်ပင်အကြောင်းအရာကို browser သို့ချက်ချင်းမပို့ပါ, header () function ကိုခေါ်သည့်အခါ PHP သည် HTTP Header ကိုပြုပြင်ပြောင်းလဲရန် HTTP Header ကို ပြုပြင်နိုင်သည်။

4 ။ အကျဉ်းချုပ်

Ob_start () နှင့် output buffer ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် header () function ကိုခေါ်သည့်အခါ "ခေါင်းစီးများကိုပို့ပြီးပြီ" အမှားကိုရှောင်ရှားနိုင်သည်။ ဤချဉ်းကပ်မှုသည်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်အလွန်အသုံးဝင်သည်။ အထူးသဖြင့်အခြားရလဒ်များ (တင်သွင်းသောဖိုင်များသို့မဟုတ်တတိယပါတီစာကြည့်တိုက်များ) ကိုသင်မထိန်းချုပ်နိုင်ပါ။

အကယ်. သင်သည် ဤသို့သော အမှားမျိုးကိုသင်ကြုံတွေ့ရပါက, ၎င်းသည်ရိုးရိုးရှင်းရှင်းနှင့်ထိရောက်သောဖြေရှင်းချက်တစ်ခုဖြစ်သည်။