ဖိုင်တင်ခြင်းသည် 0 က်ဘ်ဆိုက်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အလွန်အသုံးများသောအင်္ဂါရပ်တစ်ခုဖြစ်သည်။ သို့သော်တင်ထားသောဖိုင်များ၏သမာဓိနှင့်လုံခြုံမှုကိုမည်သို့သေချာစေနိုင်သနည်း။ လွှဲပြောင်းချိန်၌ဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေနိုင်သည်။ သို့မဟုတ်အန္တရာယ်ရှိသောဖိုင်ကိုတင်ထားသည်။ PHP သည် MD5_File () ကိုထောက်ပံ့ပေးသော MD5_File () ကိုထောက်ပံ့ပေးနိုင်သည်။
MD5_File () သည် PHP built-in function တစ်ခုဖြစ်သည်။ ၎င်းသည်သတ်မှတ်ထားသောဖိုင်၏ MD5 hash တန်ဖိုးကိုတိုက်ရိုက်တွက်ချက်ပြီး 32-bit string ကိုပြန်ပို့သည်။ MD5 hash တန်ဖိုးကိုဖိုင်အကြောင်းအရာသည်တသမတ်တည်းရှိမရှိရှာဖွေရန်အသုံးပြုနိုင်သည်။ အကယ်. ဖိုင်အကြောင်းအရာကိုပြောင်းလဲမှုများရှိပါကသက်ဆိုင်ရာ MD5 တန်ဖိုးသည်ကွဲပြားလိမ့်မည်။
function ရှေ့ပြေးပုံစံ:
string md5_file ( string $filename [, bool $raw_output = false ] )
$ filename : ဖိုင်လမ်းကြောင်း။
$ Raw_output : မူလ binary format ကိုပြန်ပို့ဖို့လား, default မှ false default မှ 32-bit hexadecimal string ကိုပြန်ပို့သည်။
တင်ထားသောဖိုင်များ၏သမာဓိကိုစစ်ဆေးပါ အသုံးပြုသူသည်ဖိုင်ကို upload လုပ်သည့်အခါဆာဗာသည်တင်ထားသောဖိုင်၏ MD5 တန်ဖိုးကိုတွက်ချက်ပြီးဖိုင်ကိုအနှောင့်အယှက်မပေးနိုင်မီ 0 န်ဆောင်မှုခံယူသည့် MD5 တန်ဖိုးကိုတွက်ချက်သည်။
ထပ်တူ uploads များကိုတားဆီးပါ မလိုအပ်သောသိုလှောင်မှုကိုရှောင်ရှားရန်ဆာဗာတွင်တူညီသောအကြောင်းအရာများရှိပြီးသားဖိုင်များရှိ, မရှိဆုံးဖြတ်ရန် MD5 တန်ဖိုးကိုသုံးပါ။
ဘေးကင်းလုံခြုံရေးစမ်းသပ်ခြင်း <br> <br> အန္တရာယ်ရှိသောဖိုင်များကို filter လုပ်ရန် MD5 တန်ဖိုးစာကြည့်တိုက်နှင့်ဖိုင်တစ်ခု၏ MD5 တန်ဖိုးကို MD5 တန်ဖိုးစာကြည့်တိုက်နှင့်နှိုင်းယှဉ်နိုင်သည်။
အောက်တွင်ဖော်ပြထားသည်မှာ File Delectricity ကိုအတည်ပြုရန် MD5_File () ကို အသုံးပြု. ရိုးရိုးရှင်းရှင်းဖိုင်တင်ခြင်းဥပမာတစ်ခုဖြစ်သည်။
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload_file'])) {
$uploadDir = '/var/www/uploads/';
$uploadedFile = $_FILES['upload_file']['tmp_name'];
$originalName = $_FILES['upload_file']['name'];
// တင်ထားသောဖိုင်ကိုတွက်ချက်ပါ md5 အဘိုး
$md5Hash = md5_file($uploadedFile);
// ဤတွင်သင် client ကိုမှပေးပို့နိုင်ပါတယ်md5အဘိုး比对,client ကိုလာမယ့်ဆိုပါစို့md5အဘိုး
$clientMd5 = $_POST['client_md5'] ?? '';
if ($clientMd5 && $md5Hash !== $clientMd5) {
echo "တင်ထားသောဖိုင်၏သမာဓိစစ်ဆေးခြင်းမအောင်မြင်ပါ,ဖိုင်ကိုအနှောင့်အယှက်ပေးခဲ့ကြပေမည်。";
exit;
}
// ထပ်ခါတလဲလဲ uploads တားဆီး(ဥပမာအားဖြင့်ရိုးရှင်းသောအသုံးပြုမှုmd5ဖိုင်အမည်အဖြစ်)
$destination = $uploadDir . $md5Hash;
if (file_exists($destination)) {
echo "ဖိုင်ပြီးသားရှိပြီးသား,ထပ်ခါတလဲလဲ upload လုပ်ဖို့မလိုအပ်ပါ。";
} else {
if (move_uploaded_file($uploadedFile, $destination)) {
echo "အောင်မြင်စွာဖိုင်တင်ပါ,MD5အဘိုး为:$md5Hash";
} else {
echo "ဖိုင်တင်ခြင်းမအောင်မြင်ပါ。";
}
}
} else {
?>
<form method="post" enctype="multipart/form-data" action="http://m66.net/upload.php">
ကျေးဇူးပြု. ဖိုင်တစ်ခုရွေးပါ:<input type="file" name="upload_file" required><br>
စာချုပ်စာတမ်းMD5အတည်ပြုရန်ကုတ်(မလုပ်မနေရမဟုတ်သော):<input type="text" name="client_md5"><br>
<button type="submit">တင်ပါ</button>
</form>
<?php
}
?>
Front-end အသုံးပြုသူများသည်ဖိုင်၏ MD5 ကိုတွက်ချက်ရန်ကိရိယာများကို ဦး စွာ အသုံးပြု. client_md5 ကွက်လပ်ကိုဖြည့်ဆည်းပေးနိုင်သည်။ ဆာဗာဘေးထွက်သည်တင်ထားသောဖိုင်၏ MD5 ကိုဤတန်ဖိုးနှင့်နှိုင်းယှဉ်ပါလိမ့်မည်။
ဆာဗာသည်ဖိုင်၏ MD5 တန်ဖိုးကိုဖိုင်များထပ်ခါတလဲလဲတင်ခြင်းကိုကာကွယ်ရန်အတွက်သိမ်းဆည်းထားသောအမည်ကိုအသုံးပြုသည်။
Move_UPLOADED_File () function ကို function သည်ဖိုင်များကိုယာယီလမ်းညွှန်များမှပစ်မှတ်ထားလမ်းညွှန်များသို့ပြောင်းရွှေ့ရန်သေချာသည်။
ဖိုင်အမျိုးအစားများကိုကန့်သတ်ထားသည် ။
ဖိုင်အရွယ်အစားကိုကန့်သတ်ပါ ။ အလွန်အကျွံဖိုင်များကိုတင်ခြင်းမှဆာဗာဖိအားကိုတားဆီးပါ။
HTTPS ကိုသုံးပါ ။ ဖိုင်လွှဲပြောင်းခြင်းလုပ်ငန်းစဉ်ကိုလူ -In-in-the-the-the- အလယ်ကမတိုက်ခိုက်ပါနှင့်။
အန္တရာယ်ရှိသောဖိုင်စာကြည့်တိုက်ကိုပုံမှန်မွမ်းမံပါ - အန္တရာယ်ရှိသောဖိုင်များကို filter လုပ်ရန်လူသိများသောဗိုင်းရပ်စ်ဒေတာဘေ့စ်များနှင့်နှိုင်းယှဉ်ကြည့်ရှုရန် MD5 ကိုသုံးပါ။
Upload လမ်းညွှန်ကိုတိုက်ရိုက်လက်လှမ်းမီမှုကိုရှောင်ပါ ။ လုံခြုံသောသိုလှောင်မှုလမ်းကြောင်းများနှင့်ခွင့်ပြုချက်ထိန်းချုပ်မှုများကိုသုံးပါ။