လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ob_clean () ကြားခံရှင်းလင်းပြီးနောက် HTTP Header ကိုပို့လိုက်သည်။ ငါဒီအခြေအနေကိုကြုံတွေ့ရရင်ဘာလုပ်ရမလဲ။

ob_clean () ကြားခံရှင်းလင်းပြီးနောက် HTTP Header ကိုပို့လိုက်သည်။ ငါဒီအခြေအနေကိုကြုံတွေ့ရရင်ဘာလုပ်ရမလဲ။

M66 2025-07-04

PHP Development တွင် Ob_clean () function ကို အသုံးပြု. output buffer အကြောင်းအရာကိုရှင်းလင်းရန်အသုံးပြုသည်။ သို့သော်အချို့သောကိစ္စရပ်များတွင်ကျွန်ုပ်တို့သည်အောက်ပါအမှားအယွင်းများကိုကြုံတွေ့ရသည်။

 <span><span><span class="hljs-built_in">Warning</span></span><span>: Cannot modify </span><span><span class="hljs-keyword">header</span></span><span> information - headers already sent </span><span><span class="hljs-keyword">by</span></span><span> (output started at /</span><span><span class="hljs-type">path</span></span><span>/</span><span><span class="hljs-keyword">to</span></span><span>/script.php:xx) </span><span><span class="hljs-keyword">in</span></span><span> /</span><span><span class="hljs-type">path</span></span><span>/</span><span><span class="hljs-keyword">to</span></span><span>/script.php </span><span><span class="hljs-keyword">on</span></span><span> </span><span><span class="hljs-type">line</span></span><span> xx
</span></span>

Buffer ကိုရှင်းလင်းရန်သင် Ob_clean ဟုခေါ်ရန် Ob_clean () ကို သင်ခေါ်ဆိုသော်လည်း PHP သည် HTTP header အချက်အလက်များကိုမပြုပြင်နိုင်သေးဟုဤအမှားကဤအမှားကဖော်ပြသည်။ ဘာဖြစ်လို့လဲဆိုတော့ PHP (HTML, နေရာတွေ, ဒါမှမဟုတ်အမှားမက်ဆေ့ခ်ျများစသည်တို့အပါအ 0 င် - HTMP header အချက်အလက်များကိုအလိုအလျောက်ပေးပို့လိမ့်မည်။ HTTP Header သတင်းအချက်အလက်များကို output content မတိုင်မီပေးပို့ရမည့်အချက်အလက်များကိုထုတ်လွှင့်ရန် PHP သည် header အချက်အလက်အသစ်များကိုပြုပြင်မွမ်းမံခြင်းသို့မဟုတ်ပေးပို့ခြင်းမပြုနိုင်ပါ။

1 ။ HTTP header ဆိုတာဘာလဲ။

HTTP Header Information သည် HTTP တောင်းဆိုမှုများနှင့်တုန့်ပြန်မှုများတွင်အရေးကြီးသော metadata ကိုအတည်ပြုသည်။ ဥပမာအားဖြင့်, ကွတ်ကီးများသိုလှောင်ခြင်း, အခြားစာမျက်နှာများသို့ခုန်ချခြင်းသို့မဟုတ်စာမျက်နှာများကို cache control setting ကိုသတ်မှတ်ခြင်းသို့မဟုတ်စာမျက်နှာများကို cache control setting ကိုသတ်မှတ်ခြင်းသည်။

PHP သည် HTTP header သတင်းအချက်အလက်များကိုပြုပြင်ရန်သို့မဟုတ်ထည့်ရန် header () function ကိုထောက်ပံ့ပေးသည်။ သို့သော်ဤလုပ်ဆောင်မှုကိုခေါ်ဆိုမှုကိုမည်သည့် output use မှမဆိုမှကွပ်မျက်ခံရရမည်။

2 ။ ob_clean () function ကို၏အခန်းကဏ်။

ob_clean () function သည် PHP output buffering function ၏အစိတ်အပိုင်းဖြစ်သည်။ ၎င်းသည် output buffer ၏ contents ကိုရှင်းလင်းရန်အသုံးပြုသည်။ များသောအားဖြင့်ဤချဉ်းကပ်မှုသည် output data အမြောက်အများကိုထုတ်လုပ်သည့်အခါနောက်ဆက်တွဲခေါင်းစီးချိန်ညှိချက်များအပေါ်မည်သည့် output ကိုမဆိုပေးပို့ခြင်းမှရှောင်ရှားနိုင်သည်။

သို့သော် ob_clean ကို ခေါ်ပြီးနောက်၎င်းသည် browser သို့ပို့လိုက်သောအကြောင်းအရာများကိုမထိခိုက်ပါ။ ob_clean ကို မခေါ်မီ output ကိုပေးပို့ပါက header အချက်အလက်များကိုပြုပြင်မွမ်းမံနိုင်ပါ။

3 ။ "ခေါင်းကိုပို့" အမှားအယွင်းကိုအဘယ်ကြောင့်ပေါ်လာသနည်း။

များသောအားဖြင့် HTTP Header Send "အမှားအတွက်အကြောင်းပြချက်များစွာရှိသည်။

  • PHP outputs contents (ဥပမာ - HTML tags များ, နေရာများ, အမှားအယွင်းများ,

  • ECHO သို့မဟုတ် PRINT function ကိုကြိုတင်ပြင်ဆင်ထားရန်အသုံးပြုသည်။

  • PHP script မတိုင်မီနှင့်အပြီးတွင်နှင့်အပြီးအပို Whitespace သို့မဟုတ်လိုင်းချိုးဖောက်မှုများရှိသည်။

၎င်းသည် HTML output ကိုသို့မဟုတ်စာသား output အမျိုးအစားများဖြစ်စေ, PHP သည် HTTP HEWERS ကိုအလိုအလျောက်ပေးပို့ရန်ဖြစ်စေ,

4 ။ ဖြေရှင်းနည်း

4.1 ကြိုတင်ပြင်ဆင်မှုမရှိကြောင်းသေချာပါစေ

header () function ကိုမခေါ်မီ output ကိုမလိုအပ်စေရန်သင်၏ PHP scripts များကိုစစ်ဆေးပါ။ ထုတ်လုပ်မှုတွင် -

  • HTML tags များ

  • ပဲ့တင်သံ သို့မဟုတ် ပုံနှိပ် လုပ်ဆောင်ချက်ပါအကြောင်းအရာများ

  • unprocessed အမှားမက်ဆေ့ခ်ျကို

  • script (ဖိုင်သို့မဟုတ်ပိတ်ထားသော tag) မတိုင်မီ (ထိုကဲ့သို့သောနေရာများကဲ့သို့နေရာများကဲ့သို့) whitespace ဇာတ်ကောင်သို့မဟုတ်လိုင်းချိုး

4.2 ob_start () function ကိုခေါ်ဆိုခြင်း

output buffering ၏ပြ issue နာကိုရှောင်ရှားရန်သင် script အစတွင် ob_start () ကို ခေါ်နိုင်သည်။ ဤသို့ပြုလုပ်ခြင်းသည် php buffers များအားလုံး output address များအားလုံးကိုတစ်ချိန်တည်းတွင် http header ကိုပေးပို့ခြင်းအားဖြင့် HTTP header ကိုရှောင်ရှားရန်တစ်ကြိမ်တွင် output ကိုပေးပို့သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: https://www.example.com'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>();
</span><span><span class="hljs-comment">// သင်၏ကုဒ် Logic</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// output ကြားခံ၏ contents</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4.3 ကြားခံရှင်းလင်းရန် OB_END_CLEAN () ကို သုံးပါ

Ob_clean () , Ob_end_clean) နှင့်ဆင်တူသည်။ ၎င်းသည် Buffer ၏အကြောင်းအရာကို client သို့ပို့ခြင်းမှကာကွယ်ပေးသည်, နောက်ဆက်တွဲ HTTP Header Settings ကိုမထိခိုက်ပါ။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: text/html; charset=UTF-8'</span></span><span>);
</span><span><span class="hljs-comment">// ကြားခံရှင်းလင်းနှင့်ပိတ်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span><span><span class="hljs-comment">// ဇာတ်ညွှန်းကိုဆက်လက်လုပ်ဆောင်ပါ</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4.4 output အမှားများကိုဖြေရှင်းခြင်း

အကယ်. အမှားသည်ဆက်ရှိနေပါကပြ the နာကိုအချက်အလက်အားလုံးကိုရှာဖွေခြင်းအားဖြင့်သင်ရှာဖွေနိုင်သည်။ header () function ကိုမခေါ်မီ script သည်မမျှော်လင့်သောထွက်ရှိမှုမရှိကြောင်းသေချာစေပါ။ Debugging Mode, သစ်ထုတ်လုပ်ခြင်းနှင့်အခြားနည်းလမ်းများကို debugging mode,

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

ob_clean () output buffer ကိုရှင်းလင်းသည့်အခါ "Header Send" အမှားများကိုကာကွယ်ရန်အလွန်ထိရောက်သောကြောင့်အလွန်ထိရောက်သောဖြစ်သည်။ သို့သော်၎င်းသည် browser သို့မပို့သောအကြောင်းအရာများအတွက်သာအလုပ်လုပ်သည်။ အကယ်. PHP သည် Header ကို ခေါ်ဆိုခြင်းမပြုမီ output ကိုပေးပို့ပါကအမှားကိုဆက်လက်ဖြစ်ပေါ်နေဆဲဖြစ်သည်။ ဤပြ problems နာများကို ob_start () သည် ob_start () ကိုခေါ်ယူခြင်းသည် obfering ၏အစတွင် obfering ၏အစတွင် script ကိုခေါ်ယူခြင်းနှင့်ကြိုတင်ပြင်ဆင်ခြင်းမပြုရန်ပြင်ဆင်ခြင်းမရှိပါ။

PHP ၏ output buffering ယန္တရားကို အသုံးပြု. နားလည်မှုနှင့်မှန်ကန်စွာဖြင့် HTTP ခေါင်းစီးများနှင့် output content ကိုပိုမိုကောင်းမွန်စွာစီမံခန့်ခွဲနိုင်အောင်ကူညီပေးလိမ့်မည်။