FTP စစ်ဆင်ရေးအတွက် PHP ကိုအသုံးပြုသောအခါကျွန်ုပ်တို့သည်ဆက်သွယ်မှုအချိန်ကုန်များသို့မဟုတ်အချက်အလက်များကိုလွှဲပြောင်း။ မရပါ။ အထူးသဖြင့်အချို့သော Firewall သို့မဟုတ် NAT ကွန်ယက်ပတ် 0 န်းကျင်များတွင်တက်ကြွစွာ mode သည် FTP ဒေတာဆက်သွယ်မှုများကိုကျရှုံးစေနိုင်သည်။ ဤအချိန်တွင် passive mode သည်ပြ the နာကိုဖြေရှင်းရန်သော့ချက်ဖြစ်သည်။ ဤဆောင်းပါးသည်သင်၏တည်ငြိမ်သော FTP ဆက်သွယ်မှုများနှင့်ဒေတာထုတ်လွှင့်ခြင်းများရရှိရန် FTP_Connect နှင့် FTP_PASV ကို မည်သို့အသုံးပြုရမည်ကိုနားလည်ရန်တစ်ဆင့်ချင်းအလိုက်သင်သွားမည်။
Active Mode တွင် client သည် client ကို server နှင့်ချိတ်ဆက်ထားသော Control port ကိုစတင်သည်။ ထို့နောက်ဆာဗာသည်ဒေတာများကိုထုတ်လွှင့်ရန်ကျပန်း port တစ်ခုနှင့်ချိတ်ဆက်ထားသည်။ ၎င်းကိုကွန်ယက်ပတ်ဝန်းကျင်တွင်ကြားဖြတ်နိုင်ပါသည်။
Passive Mode တွင်ဖောက်သည်သည်ဆက်သွယ်မှုများကိုထိန်းချုပ်ရုံသာမက firewall နှင့် NAT ကိုဖြတ်သန်းရန်ပိုမိုလွယ်ကူသည့်ဒေတာဆက်သွယ်မှုများကိုလည်းတက်ကြွစွာစတင်လုပ်ဆောင်သည်။
ထို့ကြောင့် PHP scripts တွင် passive mode ကိုအတိအလင်းပြောင်းလဲခြင်းသည်လိုက်ဖက်တဲ့နှင့်ဂီယာအောင်မြင်မှုနှုန်းကိုတိုးတက်စေရန်အရေးကြီးသောခြေလှမ်းတစ်ခုဖြစ်သည်။
FTP_Connect သည် FTP server တစ်ခုနှင့်ချိတ်ဆက်ရန်အတွက် built-in function တစ်ခုဖြစ်သည်။ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$hostname</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$port</span></span><span> = </span><span><span class="hljs-number">21</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$timeout</span></span><span> = </span><span><span class="hljs-number">90</span></span><span>): FTP\Connection|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
နမူနာကုဒ်:
<span><span><span class="hljs-variable">$ftp_host</span></span><span> = </span><span><span class="hljs-string">'ftp.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_port</span></span><span> = </span><span><span class="hljs-number">21</span></span><span>;
</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_host</span></span><span>, </span><span><span class="hljs-variable">$ftp_port</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ချိတ်ဆက်. မရပါ FTP ဆာဆာ:<span class="hljs-subst">$ftp_host</span></span></span><span>");
}
</span></span>
ဆက်သွယ်မှုကိုထူထောင်ပြီးနောက်ကျွန်ုပ်တို့သည် log in လုပ်ရန် FTP_LOGIN ကို အသုံးပြုရန်လိုအပ်သည်။
<span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">'username'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">'password'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP လော့ဂ်အင်မအောင်မြင်ပါ!"</span></span><span>);
}
</span></span>
ဆက်သွယ်မှုသည်အောင်မြင်ပြီး log in လုပ်ပြီးပါက FTP_PASV ကို သင်ခေါ်ဆိုခြင်းမပြုမီ passive mode ကိုဖွင့်ရန် ( ftp_get , ftp_pput ) ကိုမပြုလုပ်မီ passive mode ကိုဖွင့်ရန်သင်ခေါ်ဆိုရမည်။
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"passive mode ကိုဖွင့်လို့မရပါဘူး!"</span></span><span>);
}
</span></span>
passive mode ကို enable လုပ်ဖို့ သတ်မှတ်ထား ပါ။ Active mode ကိုသုံးရန် false ။
အောက်ပါပြည့်စုံသောဥပမာကိုရရှိရန်အထက်ပါအဆင့်များကိုပေါင်းစည်းပါ။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_host</span></span><span> = </span><span><span class="hljs-string">'ftp.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_port</span></span><span> = </span><span><span class="hljs-number">21</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">'username'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">'password'</span></span><span>;
</span><span><span class="hljs-comment">// 1. ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ပါ</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_host</span></span><span>, </span><span><span class="hljs-variable">$ftp_port</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ချိတ်ဆက်. မရပါ FTP ဆာဆာ!"</span></span><span>);
}
</span><span><span class="hljs-comment">// 2. လော့ဂ်အင်</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP လော့ဂ်အင်မအောင်မြင်ပါ!"</span></span><span>);
}
</span><span><span class="hljs-comment">// 3. passive mode ကို enable</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"passive mode ကိုဖွင့်လို့မရပါဘူး!"</span></span><span>);
}
</span><span><span class="hljs-comment">// 4. နမူနာ:ဖိုင်တစ်ခုကို download လုပ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">'remote/path/file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">'local_copy.txt'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_get</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, FTP_BINARY)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာကူးယူပါ!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်ကူးယူမှုမအောင်မြင်ပါ!"</span></span><span>;
}
</span><span><span class="hljs-comment">// 5. ဆက်သွယ်မှုကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn</span></span><span>);
</span></span>
FTP_PASV ကို FTP_Login အောင်မြင်ပြီးနောက်ဖုန်းဆက်ရမည်။
FTP ဆာဗာအချို့သည် passive mode ကိုပုံမှန်အားဖြင့်မထောက်ပံ့ပါနှင့်ဆာဗာဘက်တွင် configure လုပ်ရန်လိုအပ်သည်။
ဆက်သွယ်မှုပြ problems နာများကြုံတွေ့ရသောအခါပြ problems နာများကိုဖြေရှင်းရန်ဆာဗာတုန့်ပြန်မှုကိုကြည့်ရှုရန် FTP_RAW ကို သုံးပါ။
FTP_Connect , ftp_login နှင့် ftp_psv များကို ပေါင်းစပ်ခြင်းအားဖြင့်ရှုပ်ထွေးသောကွန်ယက်ပတ်ဝန်းကျင်တွင်ဖိုင်များကိုသင့်လျော်စွာလွှဲပြောင်းရန် FTP ကိုသုံးနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဤလုပ်ငန်းစဉ်သည်အထူးအရေးကြီးသည်။ ဤလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းသည်ဤလုပ်ဆောင်မှုကိုအသုံးပြုခြင်းသည်သင့်အား FTP စစ်ဆင်ရေးပြ problems နာများကိုပိုမိုလွယ်ကူစွာကိုင်တွယ်နိုင်သည်။ ဤဆောင်းပါးတွင်ရှင်းပြချက်သည် FTP connection နှင့် passive mode settings များကိုအောင်မြင်စွာနားလည်သဘောပေါက်ရန်ကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။