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 အချက်အလက်အသစ်များကိုပြုပြင်မွမ်းမံခြင်းသို့မဟုတ်ပေးပို့ခြင်းမပြုနိုင်ပါ။
HTTP Header Information သည် HTTP တောင်းဆိုမှုများနှင့်တုန့်ပြန်မှုများတွင်အရေးကြီးသော metadata ကိုအတည်ပြုသည်။ ဥပမာအားဖြင့်, ကွတ်ကီးများသိုလှောင်ခြင်း, အခြားစာမျက်နှာများသို့ခုန်ချခြင်းသို့မဟုတ်စာမျက်နှာများကို cache control setting ကိုသတ်မှတ်ခြင်းသို့မဟုတ်စာမျက်နှာများကို cache control setting ကိုသတ်မှတ်ခြင်းသည်။
PHP သည် HTTP header သတင်းအချက်အလက်များကိုပြုပြင်ရန်သို့မဟုတ်ထည့်ရန် header () function ကိုထောက်ပံ့ပေးသည်။ သို့သော်ဤလုပ်ဆောင်မှုကိုခေါ်ဆိုမှုကိုမည်သည့် output use မှမဆိုမှကွပ်မျက်ခံရရမည်။
ob_clean () function သည် PHP output buffering function ၏အစိတ်အပိုင်းဖြစ်သည်။ ၎င်းသည် output buffer ၏ contents ကိုရှင်းလင်းရန်အသုံးပြုသည်။ များသောအားဖြင့်ဤချဉ်းကပ်မှုသည် output data အမြောက်အများကိုထုတ်လုပ်သည့်အခါနောက်ဆက်တွဲခေါင်းစီးချိန်ညှိချက်များအပေါ်မည်သည့် output ကိုမဆိုပေးပို့ခြင်းမှရှောင်ရှားနိုင်သည်။
သို့သော် ob_clean ကို ခေါ်ပြီးနောက်၎င်းသည် browser သို့ပို့လိုက်သောအကြောင်းအရာများကိုမထိခိုက်ပါ။ ob_clean ကို မခေါ်မီ output ကိုပေးပို့ပါက header အချက်အလက်များကိုပြုပြင်မွမ်းမံနိုင်ပါ။
များသောအားဖြင့် HTTP Header Send "အမှားအတွက်အကြောင်းပြချက်များစွာရှိသည်။
PHP outputs contents (ဥပမာ - HTML tags များ, နေရာများ, အမှားအယွင်းများ,
ECHO သို့မဟုတ် PRINT function ကိုကြိုတင်ပြင်ဆင်ထားရန်အသုံးပြုသည်။
PHP script မတိုင်မီနှင့်အပြီးတွင်နှင့်အပြီးအပို Whitespace သို့မဟုတ်လိုင်းချိုးဖောက်မှုများရှိသည်။
၎င်းသည် HTML output ကိုသို့မဟုတ်စာသား output အမျိုးအစားများဖြစ်စေ, PHP သည် HTTP HEWERS ကိုအလိုအလျောက်ပေးပို့ရန်ဖြစ်စေ,
header () function ကိုမခေါ်မီ output ကိုမလိုအပ်စေရန်သင်၏ PHP scripts များကိုစစ်ဆေးပါ။ ထုတ်လုပ်မှုတွင် -
HTML tags များ
ပဲ့တင်သံ သို့မဟုတ် ပုံနှိပ် လုပ်ဆောင်ချက်ပါအကြောင်းအရာများ
unprocessed အမှားမက်ဆေ့ခ်ျကို
script (ဖိုင်သို့မဟုတ်ပိတ်ထားသော tag) မတိုင်မီ (ထိုကဲ့သို့သောနေရာများကဲ့သို့နေရာများကဲ့သို့) whitespace ဇာတ်ကောင်သို့မဟုတ်လိုင်းချိုး
output buffering ၏ပြ issue နာကိုရှောင်ရှားရန်သင် script အစတွင် ob_start () ကို ခေါ်နိုင်သည်။ ဤသို့ပြုလုပ်ခြင်းသည် php buffers များအားလုံး output address များအားလုံးကိုတစ်ချိန်တည်းတွင် http header ကိုပေးပို့ခြင်းအားဖြင့် HTTP header ကိုရှောင်ရှားရန်တစ်ကြိမ်တွင် output ကိုပေးပို့သည်။
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
Ob_clean () , Ob_end_clean) နှင့်ဆင်တူသည်။ ၎င်းသည် Buffer ၏အကြောင်းအရာကို client သို့ပို့ခြင်းမှကာကွယ်ပေးသည်, နောက်ဆက်တွဲ HTTP Header Settings ကိုမထိခိုက်ပါ။
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
အကယ်. အမှားသည်ဆက်ရှိနေပါကပြ the နာကိုအချက်အလက်အားလုံးကိုရှာဖွေခြင်းအားဖြင့်သင်ရှာဖွေနိုင်သည်။ header () function ကိုမခေါ်မီ script သည်မမျှော်လင့်သောထွက်ရှိမှုမရှိကြောင်းသေချာစေပါ။ Debugging Mode, သစ်ထုတ်လုပ်ခြင်းနှင့်အခြားနည်းလမ်းများကို debugging mode,
ob_clean () output buffer ကိုရှင်းလင်းသည့်အခါ "Header Send" အမှားများကိုကာကွယ်ရန်အလွန်ထိရောက်သောကြောင့်အလွန်ထိရောက်သောဖြစ်သည်။ သို့သော်၎င်းသည် browser သို့မပို့သောအကြောင်းအရာများအတွက်သာအလုပ်လုပ်သည်။ အကယ်. PHP သည် Header ကို ခေါ်ဆိုခြင်းမပြုမီ output ကိုပေးပို့ပါကအမှားကိုဆက်လက်ဖြစ်ပေါ်နေဆဲဖြစ်သည်။ ဤပြ problems နာများကို ob_start () သည် ob_start () ကိုခေါ်ယူခြင်းသည် obfering ၏အစတွင် obfering ၏အစတွင် script ကိုခေါ်ယူခြင်းနှင့်ကြိုတင်ပြင်ဆင်ခြင်းမပြုရန်ပြင်ဆင်ခြင်းမရှိပါ။
PHP ၏ output buffering ယန္တရားကို အသုံးပြု. နားလည်မှုနှင့်မှန်ကန်စွာဖြင့် HTTP ခေါင်းစီးများနှင့် output content ကိုပိုမိုကောင်းမွန်စွာစီမံခန့်ခွဲနိုင်အောင်ကူညီပေးလိမ့်မည်။