လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP file upload အမှားကိုင်တွယ်ခြင်းလမ်းညွှန် - ပြည့်စုံသောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်အမှားအယွင်းများ

PHP file upload အမှားကိုင်တွယ်ခြင်းလမ်းညွှန် - ပြည့်စုံသောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်အမှားအယွင်းများ

M66 2025-07-23

PHP file upload တွင်အမှားအယွင်းများကိုကိုင်တွယ်ရန်ဘုံအခြေအနေများ

0 က်ဘ်အပလီကေးရှင်းများကိုတီထွင်သောအခါဖိုင်တင်ခြင်းသည်ဘုံလိုအပ်ချက်တစ်ခုဖြစ်သည်။ သို့သော်ဤလုပ်ငန်းစဉ်ကို upload အရွယ်အစားကန့်သတ်ချက်များ, ရှေ့နောက်မညီမဟုတ်သောပုံစံများ, အသုံးပြုသူအတွေ့အကြုံနှင့်ပရိုဂရမ်တည်ငြိမ်မှုတိုးတက်စေရန် developer များသည်ဤအမှားအယွင်းများကိုစနစ်တကျကိုင်တွယ်ရန်နှင့်တိကျသောအချက်ပြများဖြင့်အသုံးပြုသူများကိုတိကျသောအချက်ပေးမှုများပေးရန်လိုအပ်သည်။

File Uploads ကိုထောက်ပံ့ရန် PHP configuration ကိုချိန်ညှိပါ

ပထမ ဦး စွာတင်စကားကို upload တောင်းဆိုမှုများကိုငြင်းပယ်ခြင်းအားဖြင့်ဆာဗာကိုတိုက်ရိုက်ငြင်းပယ်ရန် PHPP.ini တွင် upload နှင့်သက်ဆိုင်သည့်သတ်မှတ်ချက်များကို PHPP.ini တွင်ပြုပြင်သင့်သည်။

 upload_max_filesize = 2M   ; တင်ထားသောဖိုင်၏အမြင့်ဆုံးအရွယ်အစား,ပုံမှန်ဖြစ်ပါတယ်2M
post_max_size = 8M         ; POSTတောင်းဆိုမှုကိုအားဖြင့်သယ်ဆောင်နိုင်သည့်ဒေတာစုစုပေါင်းပမာဏ,ပုံမှန်ဖြစ်ပါတယ်8M

ဤ parameters တွေကိုပြုပြင်ပြီးနောက်ဝက်ဘ်ဝန်ဆောင်မှုကိုပြန်လည်စတင်ရန်မမေ့ပါနှင့်။

upload အမှားများကိုကိုင်တွယ်ရန် PHP ကိုသုံးပါ

ဤတွင် PHP Code Signer ကို upload အမှားအယွင်းများကိုကိုင်တွယ်သော PHP Code Signs သည်အမှားအယွင်းအပေါ် အခြေခံ. ရှင်းလင်းပြတ်သားစွာအချက်ပေးသတင်းအချက်အလက်များကိုပြန်လည်ရရှိစေသည်။

 <?php
// ဖိုင်တင်ခြင်းသည်အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
    // အမှားကိုင်တွယ်ပုံကိုတင်ပါ
    switch ($_FILES['file']['error']) {
        case UPLOAD_ERR_INI_SIZE:
        case UPLOAD_ERR_FORM_SIZE:
            $errMsg = 'ဖိုင်အရွယ်အစားကန့်သတ်ထက်ကျော်လွန်!';
            break;
        case UPLOAD_ERR_PARTIAL:
            $errMsg = 'တစ်စိတ်တစ်ပိုင်းဖိုင်များသာတင်ထားသည်!';
            break;
        case UPLOAD_ERR_NO_FILE:
            $errMsg = 'ဖိုင်များမတင်ထားပါ!';
            break;
        case UPLOAD_ERR_NO_TMP_DIR:
            $errMsg = 'ယာယီဖိုင်တွဲမရှိပါ!';
            break;
        case UPLOAD_ERR_CANT_WRITE:
            $errMsg = 'ဖိုင်အရေးအသားမအောင်မြင်ပါ!';
            break;
        case UPLOAD_ERR_EXTENSION:
            $errMsg = 'ဖိုင်တင်ခြင်းကိုတိုးချဲ့ခြင်းဖြင့်ပိတ်ဆို့ထားသည်!';
            break;
        default:
            $errMsg = 'အမည်မသိအမှား!';
            break;
    }
    echo $errMsg;
    exit;
}

// ဖိုင်အရွယ်အစားကိုစစ်ဆေးပါ
if ($_FILES['file']['size'] > 2 * 1024 * 1024) {
    echo 'ဖိုင်အရွယ်အစားကန့်သတ်ထက်ကျော်လွန်!';
    exit;
}

// ဖိုင်အမျိုးအစားကိုစစ်ဆေးပါ
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($_FILES['file']['type'], $allowedTypes)) {
    echo 'ဖိုင်အမျိုးအစားကိုခွင့်မပြုပါ!';
    exit;
}

// အောင်မြင်စွာဖိုင်တင်ပါ,နောက်ဆက်တွဲစစ်ဆင်ရေးလုပ်ဆောင်ပါ
// ...
?>

ကုဒ်ဖော်ပြချက်နှင့်အသုံးပြုသူချက်ချင်းမဟာဗျူဟာ

အထက်ဖော်ပြပါဥပမာတွင်ဖိုင်ကိုတင်သောအခါရှင်းလင်းပြတ်သားသောအမှားသတင်းစကားကိုချက်ချင်းပြန်ပို့ပေးမည့်ခြွင်းချက်များပေါ်ပေါက်လာသည်။ ၎င်းသည်သုံးစွဲသူအတွေ့အကြုံကိုတိုးတက်စေရန်အထူးအရေးကြီးသည်။ သုံးစွဲသူများစိတ်ရှုပ်ထွေးမှုများကိုရှောင်ရှားရန်တရားဝင်စီမံကိန်းများရှိရှေ့တန်းအပြန်အလှန်ဆက်သွယ်မှု၏ယုတ္တိဗေဒကိုအပြည်ပြည်ဆိုင်ရာအမှားများကိုလှုံ့ဆော်ရန်သို့မဟုတ်စည်းလုံးညီညွတ်စေရန်အကြံပြုသည်။

Directory ခွင့်ပြုချက်ကိုတင်ခြင်း၏အရေးပါမှု

တရားဝင်ဖြန့်ကျက်ခြင်းမပြုမီဖိုင်တင်ထားသောပစ်မှတ်ထားသည့်နေရာသည်သင့်လျော်သောစာရေးခွင့်ခွင့်ပြုထားကြောင်းသေချာစေရန်လိုအပ်သည်။ ဒီလိုမှမဟုတ်ရင် code ကိုယုတ္တိရှိရင်တောင်မှဒီဖိုင်ကိုသိမ်းဆည်းထားမှာမဟုတ်ဘူး။

အကျဉ်းချုပ်

PHP parameters များကိုပြင်ဆင်ခြင်းနှင့်တိကျသောအမှားအယွင်းများကိုပေါင်းစပ်ခြင်းအားဖြင့် upload လုပ်ငန်းစဉ်အတွင်းမမျှော်လင့်သောအခြေအနေများဖြစ်သောမမျှော်လင့်သောအခြေအနေများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ ရှင်းလင်းသောနှင့်ဖော်ရွေသောအမှားများကိုသတင်းပို့ခြင်းသတင်းအချက်အလက်များကိုအသုံးပြုသူများအားအသုံးပြုသူစိတ်ကျေနပ်မှုကိုတိုးတက်စေရုံသာမက developer များသည်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေတွေ့ရှိရန်ကူညီသည်။