လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Hash_update_Stream function ကိုအသုံးပြုပြီးတင်ထားသောဖိုင်များကိုလုံခြုံစွာမည်သို့စစ်ဆေးရမည်နည်း။

Hash_update_Stream function ကိုအသုံးပြုပြီးတင်ထားသောဖိုင်များကိုလုံခြုံစွာမည်သို့စစ်ဆေးရမည်နည်း။

M66 2025-06-23

ဖိုင်များကိုတင်သည့်အခါဖိုင်များ၏သမာဓိနှင့်လုံခြုံရေးကိုသေချာစေရန်အလွန်အရေးကြီးသောခြေလှမ်းတစ်ခုဖြစ်သည်။ ဖိုင်ကိုတင်စဉ်အတွင်းဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေခြင်းရှိမရှိစစ်ဆေးရန် Hash Verification ကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ PHP သည်ကြီးမားသောဖိုင်များကိုထိရောက်စွာစစ်ဆေးနိုင်သည့် hash_update_stream function ကိုထောက်ပံ့ပေးသည်။

ဤဆောင်းပါးသည် Hash_update_Stream function ကို အသုံးပြု. ဖိုင်များ၏လုံခြုံမှုကိုပြုလုပ်ရန်နှင့်ဖိုင်များ၏လုံခြုံရေးကိုသေချာစေရန်မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။

1 ။ hash_update_stream function ကဘာလဲ?

hash_update_stream သည် PHP တွင် built-in hash function ဖြစ်သည်။ ၎င်းသည်တကယ့်အချိန်နှင့် hash တွင်ထိုကဲ့သို့သော (ထိုကဲ့သို့သောဖိုင်စီးကဲ့သို့) stream process နိုင်ပါတယ်။ ဖိုင်တစ်ခုလုံးကို hash scressification အတွက်တစ်ကြိမ်တွင် hash_update_stream function ကိုချိန်ညှိခြင်းနှင့်နှိုင်းယှဉ်လျှင် Hash_update_Stream function သည် memory restications များကိုသိမ်းဆည်းနိုင်ပြီးကြီးမားသောဖိုင်များကိုစစ်ဆေးရန်သင့်တော်သည်။

function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 bool hash_update_stream ( resource $context , resource $file )
  • Hash_init function မှဖန်တီးထားသော Hash Context အရင်းအမြစ်။

  • $ file : file ုပ်ရွံရှာခြင်း, များသောအားဖြင့် fopen function မှဖွင့်လှစ်ထားသောဖိုင်စီးတစ်ခုံး။

2 ။ upload ဖိုင်များအပေါ် hash စိစစ်အတည်ပြုရန် Hash_update_stream ကို အသုံးပြုပါ

2.1 ဖိုင်များကိုတင်ခြင်း၏အခြေခံအားဖြင့်လုပ်ဆောင်ခြင်း

ဖိုင်များကိုတင်သည့်အခါဖိုင်အချက်အလက်ရရန် $ _files hyperglobal array ကိုအသုံးပြုလေ့ရှိသည်။ Hash Verification မလုပ်ဆောင်မီကျွန်ုပ်တို့သည်ဖိုင်သည်တရားဝင်နှင့်လုပ်ဆောင်မှုရှိမရှိစစ်ဆေးရန်လိုအပ်သည်။

ဖိုင်တစ်ခုတင်ခြင်း၏အခြေခံဥပမာတစ်ခုဖြစ်သည်။

 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
    $file = $_FILES['file'];
    
    // ဖိုင်ကိုအောင်မြင်စွာတင်ခြင်းရှိမရှိစစ်ဆေးပါ
    if ($file['error'] === UPLOAD_ERR_OK) {
        $filePath = $file['tmp_name']; // ယာယီဖိုင်လမ်းကြောင်း
        $fileName = $file['name'];
        
        // Hash စိစစ်အတည်ပြုလုပ်ဆောင်ပါ
        if (checkFileHash($filePath)) {
            echo "ဖိုင်အလုံအလောက် Verification ကိုအောင်မြင်စွာစစ်ဆေးပါ,ဖိုင်လုံခြုံရေး。";
        } else {
            echo "ဖိုင် hash စိပ်အသိစစ်ရေးပျက်ကွက်,ဖိုင်ကိုအနှောင့်အယှက်ပေးခဲ့ကြပေမည်。";
        }
    } else {
        echo "ဖိုင်တင်ခြင်းမအောင်မြင်ပါ,အမှားကုဒ်:" . $file['error'];
    }
}

2.2 File Hash Verification အတွက် hash_update_stream ကို သုံးပါ

နောက်တစ်ခုက SHOP_UPDAKE_STREAM function ကို Hash_update_stream function ကို supploaded file to hash_update_stream function ကိုငါတို့ရေးတယ်။

 function checkFileHash($filePath) {
    // aSHA256Hash အခြေအနေ
    $hashContext = hash_init('sha256');

    // ဖိုင်စီးကိုဖွင့်ပါ
    $fileStream = fopen($filePath, 'rb');
    if ($fileStream === false) {
        return false; // 无法ဖိုင်စီးကိုဖွင့်ပါ
    }

    // အသုံးပြု hash_update_stream file stream ကိုဆေးကြော
    if (hash_update_stream($hashContext, $fileStream)) {
        // နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
        $fileHash = hash_final($hashContext);
        fclose($fileStream);

        // သငျသညျ hash တန်ဖိုးကိုမျှော်လင့်ထားသည့်တန်ဖိုးနှင့်နှိုင်းယှဉ်နိုင်ပါတယ်,ဖိုင်နှင့်အတူ famered မထားဘူးသေချာပါစေ
        // ဤနေရာတွင်ဥပမာတန်ဖိုးများ `မျှော်လင့်ထား hash တန်ဖိုး` ဥပမာတစ်ခုအနေဖြင့်,သင်အမှန်တကယ်မှန်ကန်သော hash တန်ဖိုးနှင့်အတူအစားထိုးရန်လိုအပ်သည်
        $expectedHash = 'မျှော်လင့်ထား hash တန်ဖိုး';
        return $fileHash === $expectedHash;
    }

    fclose($fileStream);
    return false; // Hash တွက်ချက်မှုပျက်ကွက်
}

2.3 Hash_update_stream ကိုဘာဖြစ်လို့လဲ။

hash_update_stream function ၏အဓိကအားသာချက်မှာဖိုင်တစ်ခုလုံးကိုဖိုင်တစ်ခုလုံးကိုမတင်ဘဲကိုင်တွယ်နိုင်သည်။ ကြီးမားသောဖိုင်များအတွက် hash_update_stream ကို အသုံးပြုခြင်းသည်ဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းတင်ခြင်းထက်ပိုမိုထိရောက်စေသည်။ အထူးသဖြင့်မှတ်ဉာဏ်အရင်းအမြစ်များနှင့်အကန့်အသတ်ရှိသောပတ်ဝန်းကျင်တွင်ရှိသည်။

3 ။ အကျဉ်းချုပ်

Hash_update_Stream function ကိုတင်ထားသောဖိုင်များကိုတင်ထားသောဖိုင်များကိုစစ်ဆေးခြင်းအားဖြင့်တင်ထားသောဖိုင်များကိုဖြည့်ဆည်းပေးစဉ်အတွင်းဖိုင်များကိုထိထိရောက်ရောက်ကာကွယ်တားဆီးနိုင်သည်။ မျှော်လင့်ထားသည့်တန်ဖိုးနှင့်ဖိုင်၏ hash တန်ဖိုးကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဖိုင်၏သမာဓိကိုစစ်ဆေးပြီးစနစ်၏လုံခြုံမှုကိုတိုးတက်စေနိုင်သည်။

လက်တွေ့ကျသောအပလီကေးရှင်းများတွင်သင်လိုအပ်သောအရကွဲပြားခြားနားသော hashing algorithms ( sha256 , MD5 စသည်တို့) ကိုရွေးချယ်နိုင်သည်။