လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> (ဖိုင်မကူးမီကြားခံကိုသန့်ရှင်းရေးလုပ်ရန် OB_ENT_CLEAN function ကိုအဘယ်ကြောင့်အသုံးပြုသင့်သနည်း။ စစ်ဆင်ရေးခြေလှမ်းများ၏အသေးစိတ်ရှင်းပြချက်

(ဖိုင်မကူးမီကြားခံကိုသန့်ရှင်းရေးလုပ်ရန် OB_ENT_CLEAN function ကိုအဘယ်ကြောင့်အသုံးပြုသင့်သနည်း။ စစ်ဆင်ရေးခြေလှမ်းများ၏အသေးစိတ်ရှင်းပြချက်

gitbox 2025-08-22

ဖိုင်ကိုဒေါင်းလုတ်လုပ်ခြင်းမပြုမီ buffer ကိုသန့်ရှင်းရေးလုပ်ရန် OB_ENT_CLEAN function ကိုအဘယ်ကြောင့်အသုံးပြုပါ။ စစ်ဆင်ရေးခြေလှမ်းများ၏အသေးစိတ်ရှင်းပြချက်

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည် file download function ကို script များဖြင့်ဖြည့်ဆည်းပေးရန်လိုအပ်သည့်အခါကျွန်ုပ်တို့သည်အချို့သောကြားခံနှင့်သက်ဆိုင်သောပြ problems နာအချို့ကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ အထူးသဖြင့်ဖိုင်အမျိုးအစားအကြောင်းအရာများကိုမဖော်ပြမီကြိုတင်မမြင်နိုင်သောအဖြူရောင်စာလုံးများသို့မဟုတ် output usparment ပေါ်လာနိုင်သည်။ ဤအချိန်တွင်သင်သည် output buffer ကို အသုံးပြု. အသုံးပြုသူအားမှန်ကန်စွာလွှဲပြောင်းပေးနိုင်ရန် ob_clean function ကိုအသုံးပြုရန် OB_END_CLEAN function ကိုသုံးရန်လိုအပ်သည်။

output buffer ဆိုတာဘာလဲ။

output buffering ဆိုသည်မှာ PHP သည် scripts scripts များကို excapes သည် scripts များကို execute လုပ်သည့်အခါ (ဥပမာ HTML code, text encages စသည်) ကို browser သို့ချက်ချင်းပို့ပေးလိမ့်မည်မဟုတ်ပါ။ PHP သည်ဇာတ်ညွှန်းကိုကွပ်မျက်ခံရသည်အထိသို့မဟုတ်သတ်သတ်မှတ်မှတ် output function ကိုဟုခေါ်သည်အထိ Brofrer ကို browser သို့မပို့ပါ။

ဤယန္တရားသည် output ကိုထိထိရောက်ရောက်ထိန်းချုပ်နိုင်ပြီး scrientution တွင်မလိုအပ်သောအချက်အလက်များကိုမပို့ပါနှင့်။ မလိုအပ်သောကွန်ယက်ဝန်ထုပ်ဝန်ပိုးကိုလျှော့ချရန်နှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်ခြင်းကိုရှောင်ရှားနိုင်သည်။

အဘယ်ကြောင့် ob_clean ကို အဘယ်ကြောင့်အသုံးပြု?

အချို့သောကိစ္စရပ်များတွင်အထူးသဖြင့်ဖိုင်ကူးယူခြင်းလုပ်ဆောင်နိုင်စွမ်းကိုပေးသည့်အခါ PHP scripts သည် browsers မှခွဲထုတ်မည့်ဖိုင်အကြောင်းအရာကိုမပို့မီ PHP scripts သည် file contents သို့မဟုတ် whitespace ဇာတ်ကောင်များကို output လုပ်နိုင်သည်။ ဤအရာကိုရှောင်ရှားရန် developer များသည်ဖိုင်ကိုအကြောင်းအရာများကိုမထုတ်ပြန်မီကြားခံကိုသန့်ရှင်းရေးလုပ်ရန်လိုအပ်သည်, မလိုအပ်သော output data မရှိပါ။

ဥပမာအားဖြင့်, သင့်တွင်ဒေတာဘေ့စ်မှဖိုင်တစ်ခု၏ contents များကိုဖတ်ရှုပြီး download လုပ်ပေးသည့် PHP script တစ်ခုရှိသည်ဆိုပါစို့။ အကယ်. script သည်မည်သည့်ဆီလျှော်သောအကြောင်းအရာကိုမဆိုထုတ်ဖော်ပြောဆိုပါက browser သည်အကြောင်းအရာကို ဦး စွာလက်ခံရရှိလိမ့်မည်။

ယခုအချိန်တွင် ob_clean function သည်အသုံးဝင်သည်။ ၎င်းသည်လက်ရှိကြားခံ၏ contents ကိုသန့်ရှင်းစေပြီး output ကိုစီးဆင်းမှုကိုပိတ်ထားလိမ့်မည်။

ob_clean function ကိုအသုံးပြုရန်ခြေလှမ်းများ

  1. output output buffer ကိုဖွင့်ပါ။

    PHP တွင် output buffer သည်များသောအားဖြင့်အလိုအလျောက်ဖွင့်ထားသော်လည်း output buffer ကိုဖွင့်ရန် Ob_start () ကိုအတိအလင်းခေါ်ဆိုနိုင်သည်။ ၎င်းသည်ဖိုင်များကို download လုပ်သည့် scripts တွင်အလွန်အရေးကြီးသည်, အဘယ်ကြောင့်ဆိုသော်၎င်းသည်သင် browser ကိုမည်သည့်အချိန်တွင်ထုတ်မည်ကိုဆုံးဖြတ်ရန်မဆုံးဖြတ်မီ output ကို cache လုပ်ရန်ခွင့်ပြုသည်။

     <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();  </span><span><span class="hljs-comment">// output ကြားခံစတင်ပါ</span></span><span>
    </span></span>
  2. ဖိုင်ကူးယူခြင်းမပြုမီယုတ္တိဗေဒလုပ်ဆောင်ခြင်း -

    File download မလုပ်ခင်သုံးစွဲသူခွင့်ပြုချက်ကိုအတည်ပြုခြင်း,

     <span><span><span class="hljs-comment">// ဖိုင်ပြုပြင်ခြင်းယုတ္တိဗေဒ Simulate Simulate</span></span><span>
    </span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'path/to/your/file.txt'</span></span><span>;  </span><span><span class="hljs-comment">// ဖိုင်လမ်းကြောင်း</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
        </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'File not found'</span></span><span>);
    }
    
    </span><span><span class="hljs-comment">// download header သတင်းအချက်အလက် set up</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: application/octet-stream'</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Disposition: attachment; filename="'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>) . </span><span><span class="hljs-string">'"'</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Length: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">filesize</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>));
    </span></span>
  3. ကြားခံသန့်ရှင်းရေး:

    ဖိုင်ကိုမပို့မီ OB_END_CLEAN ကိုရှင်းလင်းရန် OB_END_CLEAN () သည် ယခင် output content ကိုသန့်ရှင်းရေးလုပ်ရန်သေချာစေရန်ကြားခံကိုရှင်းလင်းရန်။ ဤအချိန်တွင် PHP သည်မည်သည့်ဖြစ်နိုင်ချေရှိသော 0 င်ရောက်စွက်ဖက်မှုကိုရှောင်ရှားရန် PHP ကို ​​browser သို့မပို့ပါ။

     <span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// output buffer အကြောင်းအရာကိုရှင်းလင်းပါ</span></span><span>
    </span></span>
  4. output ဖိုင်အကြောင်းအရာ:

    ထို့နောက်ဖိုင်ကိုလုံခြုံစွာထုတ်ပေးနိုင်သည်။ ဥပမာအားဖြင့်, ဖိုင်၏ contents ကို browser သို့ထုတ်လွှင့်ရန်နှင့်ဖိုင်ဒေါင်းလုပ်ကိုစတင်ရန် Readfile () function ကိုသုံးပါ။

     <span><span><span class="hljs-title function_ invoke__">readfile</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>);  </span><span><span class="hljs-comment">// output ဖိုင်အကြောင်းအရာ</span></span><span>
    </span><span><span class="hljs-keyword">exit</span></span><span>;  </span><span><span class="hljs-comment">// End Script ကွပ်မျက်,အခြားမည်သည့်အကြောင်းအရာမှ output ကိုသေချာအောင်လုပ်ပါ</span></span><span>
    </span></span>

ဖြည့်စွက်ဖိုင်ကိုနမူနာကုဒ်ကိုကူးယူပါ

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// output ကြားခံစတင်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();

</span><span><span class="hljs-comment">// ဖိုင်လမ်းကြောင်း</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'path/to/your/file.txt'</span></span><span>;  </span><span><span class="hljs-comment">// 请替换为实际ဖိုင်လမ်းကြောင်း</span></span><span>

</span><span><span class="hljs-comment">// ဖိုင်တည်ရှိရှိမရှိစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'File not found'</span></span><span>);
}

</span><span><span class="hljs-comment">// download header သတင်းအချက်အလက် set up</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: application/octet-stream'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Disposition: attachment; filename="'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>) . </span><span><span class="hljs-string">'"'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Length: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">filesize</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>));

</span><span><span class="hljs-comment">// output ကြားခံသန့်ရှင်းရေး</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();

</span><span><span class="hljs-comment">// output ဖိုင်အကြောင်းအရာ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">readfile</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>);

</span><span><span class="hljs-comment">// End Script ကွပ်မျက်</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အကျဉ်းချုပ်

ဖိုင်မဖွင့်မီ ob_crem_clean () function ကို အသုံးပြု. output buffer ကိုသန့်ရှင်းရေးလုပ်ခြင်းဖြင့် PHP script တွင်မသက်ဆိုင်သောအကြောင်းအရာများထုတ်လုပ်မှုကိုရှောင်ရှားနိုင်ပြီးအသုံးပြုသူကိုအသုံးပြုသူကိုချောချောမွေ့မွေ့ပြုလုပ်နိုင်သည်ကိုကျွန်ုပ်တို့ရှောင်ရှားနိုင်သည်။ ဤနည်းလမ်းသည် File downloads များကိုကိုင်တွယ်သောအခါအလွန်ထိရောက်သောကြောင့်မမျှော်လင့်သောရလဒ်ကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုကာကွယ်နိုင်သည်။ output buffer နှင့် ob_clean () function ကိုဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည် file download functions file functions ၏တည်ငြိမ်မှုနှင့်အသုံးပြုသူအတွေ့အကြုံကိုတိုးတက်စေရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။