လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Real Time အတွက် uploaded ပုံရိပ်တွေ၏ hash စိv

Real Time အတွက် uploaded ပုံရိပ်တွေ၏ hash စိv

M66 2025-05-18

ဝက်ဘ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဖိုင်များ၏သမာဓိကိုစစ်ဆေးရန်နှင့်ဖိုင်ကိုကာကွယ်ရန်အတွက်အလွန်အရေးကြီးသည်။ PHP သည်တင်ထားသောဖိုင်များ၏လုံခြုံရေးနှင့်သမာဓိရှိစေရန်အသုံးပြုနိုင်သည့်အစွမ်းထက်သောဖိုင်အချို့လုပ်ဆောင်ချက်အချို့ကိုပေးသည်။ hash_update_stream function သည် hash တန်ဖိုးများကိုအချိန်နှင့်တပြေးညီ update အတွက်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ ဖိုင်တစ်ခုလုံးကို memory ထဲသို့မတင်ဘဲဖိုင်များ (ဥပမာ) ဖိုင်များ (ဥပမာရုပ်ပုံများ) ဖိုင်များ (ဥပမာ) ဖိုင်များပြုပြင်ခြင်းအတွက် hash တန်ဖိုးကိုတွက်ချက်ရန်သင့်တော်သည်။

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

1 ။ အခြေခံသဘောတရားများ

ဖိုင်တင်ခြင်းလုပ်ငန်းစဉ်အတွင်းဖိုင်ကိုအနှောင့်အယှက်မပေးနိုင်ရန်အတွက်ဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်ရန် SHA-256 သို့မဟုတ် MD5 သို့မဟုတ် MD5 သို့မဟုတ် MD5 သို့မဟုတ် MD5 ကဲ့သို့သော Hash algorithm ကိုသုံးနိုင်သည်။ Hash တန်ဖိုးကို Hash တန်ဖိုးကိုမျှော်လင့်ထားသည့် hash value နှင့်ချိတ်ဆက်ထားသော Hash တန်ဖိုးကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်ဖိုင်ကိုဂီယာဖြစ်စဉ်ကာလအတွင်းဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။

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

2 ။ hash_update_stream function ကိုအသုံးပြုနည်း

2.1 ဖိုင်တင်ခြင်းနှင့် hash တွက်ချက်မှု

အသုံးပြုသူများကိုရုပ်ပုံများကိုတင်ရန်ခွင့်ပြုသည့် HTML ပုံစံရှိသည်ဆိုပါစို့။ ဖိုင်များကို တင်. Hash ကိုတွက်ချက်ရန် PHP ကိုအသုံးပြုပါမည်။ ဖိုင်၏အကြောင်းအရာများကိုလွှင့်ပစ်မည်ဖြစ်ပြီးတင်ပါ။

တင်ထားသောပုံရိပ်များကိုအချိန်မှန် hash စိမ့် 0 င်မှုကိုလုပ်ဆောင်ရန် hash_update_stream function ကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည့်ရိုးရှင်းသော PHP Code နမူနာတစ်ခုရှိသည်။

 <?php
// upload လမ်းညွှန်ထားပါ
$uploadDir = 'uploads/';

// ဖိုင်များတင်ခြင်းရှိမရှိစစ်ဆေးပါ
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['image'])) {
    $file = $_FILES['image'];
    
    // တင်ထားသောဖိုင်သည်ပုံတစ်ပုံကိုသေချာအောင်လုပ်ပါ
    $allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
    if (in_array($file['type'], $allowedMimeTypes)) {
        
        // ဖိုင်ကိုယာယီလမ်းကြောင်းရယူပါ
        $tempFile = $file['tmp_name'];
        
        // ဖိုင်စီးကိုဖွင့်ပါ
        $fileHandle = fopen($tempFile, 'rb');
        
        // Hashing algorithm ကိုရွေးချယ်ပါ
        $hashContext = hash_init('sha256');
        
        // အသုံးပြုhash_update_streamဖိုင်များမှ stream hash update ကို
        while ($chunk = fread($fileHandle, 8192)) {
            hash_update_stream($hashContext, $chunk);
        }

        // နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
        $fileHash = hash_final($hashContext);
        
        // တင်ထားသောဖိုင်၏ hash တန်ဖိုးကိုပုံနှိပ်ပါ
        echo "Uploaded file hash: " . $fileHash . "<br>";

        // ဖိုင်စီးကိုပိတ်ပါ
        fclose($fileHandle);
        
        // ဖိုင်ကိုပစ်မှတ်လမ်းညွှန်သို့သိမ်းဆည်းပါ
        move_uploaded_file($tempFile, $uploadDir . $file['name']);
        
        // ကျနော်တို့ဖိုင်၏ hash တန်ဖိုးကို precalulate ဆိုပါစို့
        $expectedHash = 'ကြိုတင်တွက်ချက်မှု hash တန်ဖိုး';
        
        // Hash တန်ဖိုးများကိုနှိုင်းယှဉ်
        if ($fileHash === $expectedHash) {
            echo "ဖိုင်အလုံအလောက် Verification ကိုအောင်မြင်စွာစစ်ဆေးပါ!";
        } else {
            echo "ဖိုင် hash စိပ်အသိစစ်ရေးပျက်ကွက်!";
        }
    } else {
        echo "ပုံရိပ်ဖိုင်တင်ခြင်းကိုသာထောက်ပံ့သည်!";
    }
}
?>

<!-- ပုံစံတင်ခြင်း -->
<form method="POST" enctype="multipart/form-data">
    <label for="image">ဓာတ်ပုံများတင်ပါ:</label>
    <input type="file" name="image" id="image">
    <button type="submit">တင်ပါ</button>
</form>

2.2 ကုဒ်ခွဲခြမ်းစိတ်ဖြာ

  1. File Upload ပုံစံ - ပထမ ဦး စွာကျွန်ုပ်တို့သည်အသုံးပြုသူများသည် image files များကို upload လုပ်နိုင်သော HTML ပုံစံကိုဖန်တီးခဲ့သည်။

  2. တင်ထားသောဖိုင်အမျိုးအစားကိုစစ်ဆေးပါ ။ ဖိုင်များပြုပြင်ထုတ်လုပ်သည့်အခါတင်ထားသောဖိုင်အမျိုးအစားသည်ခွင့်ပြုထားသော image file type (ဥပမာ JPEG, PNG, GIF) ဖြစ်သည်။

  3. Open File Flow - ဖိုင်များကို fopen function မှတဆင့် binary mode ဖြင့်တင်ထားသောယာယီဖိုင်ကိုဖွင့်ပါ။

  4. Hash algorithm ကိုအစပြုရန် Hash algorithm: hash algorithm ကိုရွေးပါ။

  5. Real-time update hash တန်ဖိုး - hash_update_stream function မှတဆင့်, ဖိုင် contents တွေကို block လုပ်ပြီး hash value ကိုအချိန်မှန်ကိုအသစ်ပြောင်းပါ။ အဆိုပါ free function ကိုဖိုင်ထဲမှာဒေတာ၏အစိတ်အပိုင်းတစ်ခုဖတ်ပြီး 8kb contents တွေကိုအချိန်တိုင်းဖတ်တယ်။

  6. Hash တန်ဖိုးကိုတွက်ချက်ပါ - ဖိုင်တွဲအားလုံးဖတ်ပြီးနောက်တွင် Hash_Final function ကိုသုံးပါ။

  7. File Save : Hash Verification ကိုအတည်ပြုပါကဖိုင်ကိုသတ်မှတ်ထားသော upload လမ်းညွှန်သို့ရွှေ့ပါ။

  8. Hash Verification - ဖိုင်သည်တွက်ချက်ထားသည့် hash တန်ဖိုးကိုမျှော်လင့်ထားသည့် hash value နှင့်နှိုင်းယှဉ်ခြင်းအားဖြင့်ဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေခြင်းရှိမရှိကိုကျွန်ုပ်တို့အတည်ပြုသည်။

3 ။ အဘယ်ကြောင့် hash_update_stream ကို ရွေးချယ်?

hash_update_stream function သည်ကြီးမားသောဖိုင်များပြုပြင်သည့်အခါမှတ်ဥာဏ်လျှံလျှပ်စစ်ပြ problems နာများကိုရှောင်ရှားနိုင်သည်။ ၎င်းသည်ဖိုင်ကိုစမ်းချောင်းတစ်ခုအဖြစ်ဖတ်ရှုနိုင်ပါသည်, တစ်ချိန်တည်းတွင်ဒေတာသေးသေးလေးတစ်ခု (8KB) ​​ကိုဖတ်ပြီးဒေတာတစ်ခုစီအတွက် hash တန်ဖိုးကိုအသစ်ပြောင်းသည်။ streaming သည်အထူးသဖြင့်ကြီးမားသောဖိုင်များအတွက်အထူးသဖြင့်ကြီးမားသောဖိုင်များအတွက်သိသိသာသာလျှော့ချနိုင်သည်။

4 ။ နိဂုံးချုပ်

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