Web Development တွင်ဖိုင်တင်ခြင်းသည်အလွန်အသုံးများသော်လည်း၎င်းနှင့်အတူဖိုင်သမာဓိနှင့်လုံခြုံရေးကိုအတည်ပြုခြင်း။ တင်ပို့သောဖိုင်ကိုအဂတိလိုက်စားမှုသို့မဟုတ်အကျင့်ပျက်ခြစားမှုများကိုအနှောင့်အယှက်မပေးနိုင်စေရန် PHP သည် MD5_File () function ကိုထောက်ပံ့ပေးနိုင်သည်။
ဤဆောင်းပါးသည် MD5_File () function ကို uploaded ဖိုင်များ၏ဆာဗာဘက်သမာဓိကိုစစ်ဆေးရန်နှင့်အမှန်တကယ် PHP ကုဒ်သင်္ကေတများနှင့်ပေါင်းစပ်ပြီး၎င်း၏ application method ကိုအသေးစိတ်ရှင်းပြရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
MD5_File () သည် PHP တွင်သတ်မှတ်ထားသောဖိုင်၏ MD5 hash တန်ဖိုးကိုတွက်ချက်သော PHP တွင် built-in function တစ်ခုဖြစ်သည်။ MD5 သည်ကျယ်ပြန့်စွာအသုံးပြုသောဆေးထည့်သော Hashing algorithm ဖြစ်ပြီးအရှည် 32-bit string တစ်ခုထဲသို့မည်သည့်အရှည်ရှိသည့်အချက်အလက်များကိုမြေပုံများပို့ပေးကြောင်းကျယ်ပြန့်စွာအသုံးပြုသောဆေးထည့်သော algorithm ဖြစ်သည်။ တင်ခြင်းမပြုမီနှင့်မစပြီးဖိုင်များ၏ MD5 တန်ဖိုးများကိုနှိုင်းယှဉ်ခြင်းရှိမရှိနှင့်နှိုင်းယှဉ်ခြင်းအားဖြင့်ဖိုင်များပြောင်းလဲခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။
function ရှေ့ပြေးပုံစံ:
string md5_file ( string $filename [, bool $raw_output = false ] )
$ filename : MD5 တန်ဖိုးများအတွက်တွက်ချက်ရန်လိုအပ်သည့်ဖိုင်လမ်းကြောင်း။
$ RAW_OUTPATE - အကယ်. မှန်ကန် ရန်သတ်မှတ်ထားပါက MD5 Digest ကိုမူလ binary format ဖြင့်ပြန်ပို့ပါ။ ပုံမှန်အားဖြင့် မှားယွင်းသောအယူမှားသည် 32-bit hexadecimal string ကိုပြန်ပို့သည်။
အသုံးပြုသူသည်ဖိုင်ကို server သို့ပုံစံဖြင့်တင်သည်။
ဆာဗာသည်တင်ထားသောဖိုင်ကိုခေတ္တသိမ်းဆည်းသည်။
ဖိုင်၏ MD5 တန်ဖိုးကိုတွက်ချက်ရန်ဆာဗာသည် MD5_File () ကို ခေါ်ဆိုသည်။
MD5 တန်ဖိုးကို 0 န်ဆောင်မှုခံယူသူသို့မဟုတ်ဒေတာဘေ့စ်တွင်မျှော်မှန်းထားသည့် MD5 တန်ဖိုးနှင့်နှိုင်းယှဉ်ပါ။
ဖိုင်ပြီးပြည့်စုံမှုရှိမရှိဆုံးဖြတ်ပါ။
ဤတွင်ဖိုင်ပြီးပြည့်စုံသောဖိုင်တင်ခြင်းနှင့်သမာဓိစစ်ဆေးမှုဥပမာဖြစ်သည်။
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
// ဖိုင်များကို upload လုပ်ရန်ယာယီလမ်းကြောင်း
$tmpFilePath = $_FILES['uploaded_file']['tmp_name'];
// ပစ်မှတ်လမ်းကြောင်းကိုကယ်တင်ပါ(လိုအပ်ချက်များအရသိရသည်ပြုပြင်နိုင်ပါသည်)
$destination = __DIR__ . '/uploads/' . basename($_FILES['uploaded_file']['name']);
// မိုဘိုင်းတင်ခြင်းဖိုင်များကိုပစ်မှတ်လမ်းညွှန်သို့ပို့ပါ
if (move_uploaded_file($tmpFilePath, $destination)) {
// တင်ထားသောဖိုင်ကိုတွက်ချက်ပါMD5အဘိုး
$md5Hash = md5_file($destination);
// ရှေ့မျက်နှာပြင်သို့မဟုတ်ဒေတာဘေ့စ်ကိုကြိုတင်သိထားသည်ဟုယူဆသည်MD5အဘိုး(这里举例为固定အဘိုး)
$expectedMd5 = 'd41d8cd98f00b204e9800998ecf8427e'; // နမူနာMD5
// ဖိုင်သမာဓိကိုစစ်ဆေးပါ
if ($md5Hash === $expectedMd5) {
echo "အောင်မြင်စွာဖိုင်တင်ပါ,နှင့်ဖိုင်သမာဓိစစ်ဆေးအတည်ပြုအတည်ပြုသည်!";
} else {
echo "အောင်မြင်စွာဖိုင်တင်ပါ,သို့သော်ဖိုင်သည်သမာဓိစစ်ဆေးမှုအတည်ပြုမှုမအောင်မြင်ပါ!";
}
} else {
echo "ဖိုင်ချွေတာမှုမအောင်မြင်ပါ!";
}
} else {
echo "ဖိုင်များကို upload လုပ်ခြင်းသို့မဟုတ်အမှားများကိုတင်ခြင်းမရှိပါ!";
}
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">File Upload ကိုရွေးချယ်ပါ:</label>
<input type="file" name="uploaded_file" id="file" />
<button type="submit">တင်ပါ</button>
</form>
Security - ဖိုင်များကိုတင်သည့်အခါ, မတင်သောဖိုင်များကိုမတင်ရန်တားဆီးရန်အမျိုးအစားနှင့်အရွယ်အစားကိုတင်းကြပ်စွာထိန်းချုပ်ရမည်။
MD5 Collision : MD5 algorithm တွင်တိုက်မှုအန္တရာယ်ရှိသည်။ အကယ်. လုံခြုံရေးလိုအပ်ချက်များသည်အလွန်မြင့်မားပါက SHA256_File () ကဲ့သို့သောပိုမိုလုံခြုံသော hash function ကိုအသုံးပြုရန်စဉ်းစားပါ။
File Path Permissions : upload လမ်းညွှန်သည်ခွင့်ပြုချက်ကိုရေးပါ။
client md5 တန်ဖိုး - 0 န်ဆောင်မှုခံယူသူသည် MD5 တန်ဖိုးကိုပေးထားပါက,
MD5_File () function ကိုအသုံးပြုခြင်းသည်တင်ထားသောဖိုင်များ၏သမာဓိကိုမှန်ကန်စွာစစ်ဆေးရန်အတွက်ဖိုင်သည်ဖိုင်ကိုအလျင်အမြန်သို့မဟုတ်မမှန်မကန်ကိုမမှန်မကန်ခြင်းရှိမရှိကိုလျင်မြန်စွာဆုံးဖြတ်ရန်လွယ်ကူပြီးထိရောက်သောနည်းလမ်းဖြစ်သည်။ upload လုပ်ထုံးလုပ်နည်းတွင်အခြားလုံခြုံရေးအစီအမံများနှင့်ပေါင်းစပ်ပြီး၎င်းသည်ဖိုင်အမျိုးအစား၏ယုံကြည်စိတ်ချရမှုနှင့်လုံခြုံရေးကိုတိုးတက်စေနိုင်သည်။