လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Zip compressed package ၏အတွင်းပိုင်းဖွဲ့စည်းပုံကိုလေ့လာရန် PHP_READ () function ကိုမည်သို့အသုံးပြုရမည်နည်း။

Zip compressed package ၏အတွင်းပိုင်းဖွဲ့စည်းပုံကိုလေ့လာရန် PHP_READ () function ကိုမည်သို့အသုံးပြုရမည်နည်း။

M66 2025-06-23

compressed files များကို processing လုပ်သည့်အခါ PHP သည် .zip ဖိုင်များ၏စာဖတ်ခြင်းနှင့်လည်ပတ်မှုကိုအထောက်အကူပြုရန်ပိုမိုကြီးမားသော zip extension များကိုထောက်ပံ့ပေးသည်။ ဤဆောင်းပါးသည် zip_read () function ကို အသုံးပြု. အသေးစိတ်အချက်အလက်များနှင့် zip file ထဲရှိ entry တစ်ခုစီကို ဖြတ်. အကြောင်းအရာသို့မဟုတ်အချက်အလက်များကိုထုတ်ယူရမည်ကိုသရုပ်ပြရန်အခြားဆက်စပ်လုပ်ဆောင်ချက်များနှင့်ပူးပေါင်းဆောင်ရွက်ပါလိမ့်မည်။

1 ။ လိုအပ်ချက်

Zip_read () မသုံးမီသင်၏ PHP ပတ်ဝန်းကျင်တွင် zip extension ကိုသေချာအောင်လုပ်ပါ။ အကယ်. သင်မသေချာပါကတိုးချဲ့ခြင်းကိုဖွင့်ထားသလားဆိုတာကြည့်ဖို့အောက်ပါကုဒ်ကိုသုံးနိုင်တယ်။

 <?php
if (class_exists('ZipArchive')) {
    echo "Zip extension ကို enabled";
} else {
    echo "Zip extension ကိုဖွင့်မရပါ";
}
?>

ပြန်လည်ရရှိနိုင်ခြင်းသည် "zip extension ကိုမဖွင့်ပါ" ဆိုပါက PHPP.ini ဖိုင်တွင်သက်ဆိုင်ရာ extension ကို enable လုပ်ရန်သို့မဟုတ် PHP ကို ​​install လုပ်သည့်အခါ - zip option ကို add လုပ်ရန်လိုအပ်သည်။

2 ။ zip_read ၏အခြေခံအသုံးပြုမှု ()

Zip_read () ကို Zip_open () နှင့် zip_entry_ * စီးရီးလုပ်ဆောင်ချက်များနှင့် တွဲဖက်. အသုံးပြုသည်။ ၎င်း၏ရည်ရွယ်ချက်မှာပွင့်လင်းသော .zip ဖိုင်တွင် entry တစ်ခုကိုဖတ်ရန်ဖြစ်သည်။ ခေါ်ဆိုမှုတစ်ခုစီသည် မမှန်မကန်အယူမှား မရှိတော့သည့်အရင်းအမြစ်လက်ကိုင်ကိုပြန်လည်ရောက်ရှိစေသည်။

3 ။ နမူနာကုဒ်: item မှ zip ဖိုင်အတွက် entries တွေကိုဖတ်ပါ

ဤတွင် .zip ဖိုင်ကိုမည်သို့ဖွင့်ရမည်ကိုပြသသောပြည့်စုံသောဥပမာတစ်ခုမှာ 4 င်း၏ entries များအားလုံးကိုမည်သို့ဖွင့်ရမည်, entry တစ်ခုစီ၏အမည်နှင့်အကြောင်းအရာကိုဖတ်ပါ။

 <?php
$zipFile = '/path/to/example.zip'; // သင့်ရဲ့ဒေသခံတ ဦး တည်းနှင့်အတူအစားထိုးလိုက်ပါ zip ဖိုင်လမ်းကြောင်း
$zip = zip_open($zipFile);

if (is_resource($zip)) {
    while ($zip_entry = zip_read($zip)) {
        echo "<strong>ဖိုင်နာမည်:</strong> " . zip_entry_name($zip_entry) . "<br>";

        if (zip_entry_open($zip, $zip_entry, "r")) {
            $contents = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            echo "<strong>အကြောင်းအရာ preview:</strong><br><pre>" . htmlentities(substr($contents, 0, 500)) . "</pre><hr>";
            zip_entry_close($zip_entry);
        }
    }
    zip_close($zip);
} else {
    echo "compressed ဖိုင်ကိုဖွင့ ်. မရပါ。";
}
?>

4 ။ core function ကိုရှင်းပြချက်

ဤတွင် zip_read () နှင့်အတူအသုံးပြုသောသော့ချက်လုပ်ဆောင်ချက်များကိုဒီမှာ:

  • Zip_open (string $ fileName) - zip file ကိုဖွင့်ပြီးအရင်းအမြစ်လက်ကိုင်ကိုပြန်ပို့ပါ။

  • zip_read (အရင်းအမြစ် $ zip) - Zip file about zip ၏နောက်စာရင်းကိုဖတ်ပါ။

  • Zip_entry_name (အရင်းအမြစ် $ entry) : လက်ရှိ entry ကို၏ဖိုင်အမည်ကိုရရှိသည်။

  • zip_entry_open (အရင်းအမြစ် $ zip, အရင်းအမြစ် $ entry order string string string ကို) - 0 င်ခွင့်ကိုဖွင့်ပြီးအကြောင်းအရာကိုဖတ်ရန်ပြင်ဆင်ပါ။

  • zip_entry_read (ဒေါ်လာ room entry ကို ent entry ကို entry +) - လက်ရှိဖွင့်ထားသော 0 င်ရောက်မှုအကြောင်းအရာများကိုဖတ်သည်။

  • zip_entry_close (အရင်းအမြစ် $ entry) : ပွင့်လင်း entry ကိုပိတ်ပါ။

  • zip_close (အရင်းအမြစ် $ zip) : Zip ဖိုင်အရင်းအမြစ်ကိုပိတ်ပါ။

5 ။ လက်တွေ့ကျသောလျှောက်လွှာ - တင်ထားသော zip file contents များကို scan လုပ်ပါ

အသုံးပြုသူများသည် .zip ဖိုင်များကို upload လုပ်နိုင်သည့်စနစ်တစ်ခုကိုသင်တည်ဆောက်သည့်အခါတရားမ 0 င်ဖိုင်အမည်များ,

ဥပမာအားဖြင့်:

 <?php
function scanZipForPhp($zipPath) {
    $zip = zip_open($zipPath);
    if (!is_resource($zip)) {
        return false;
    }

    $suspicious = [];

    while ($entry = zip_read($zip)) {
        $name = zip_entry_name($entry);
        if (preg_match('/\.php$/i', $name)) {
            $suspicious[] = $name;
        }
    }

    zip_close($zip);
    return $suspicious;
}

$flaggedFiles = scanZipForPhp('/tmp/uploaded.zip');
if (!empty($flaggedFiles)) {
    echo "သံသယတွေ့ရှိ PHP စာချုပ်စာတမ်း:<br>";
    echo implode('<br>', $flaggedFiles);
} else {
    echo "未သံသယတွေ့ရှိစာချုပ်စာတမ်း。";
}
?>

6 ။ မှတ်စုဖို့အရာ

  1. zip_read () နှင့် zip_entry_ * စီးရီးလုပ်ဆောင်ချက်များသည်အစောပိုင်းကာလများတွင် PHP မှပေးသောနည်းလမ်းများဖြစ်သည်။ အကယ်. သင်သည်ကြွယ်ဝသောအင်္ဂါရပ်များပိုမိုလိုအပ်ပါက (ဥပမာ Zip ဖိုင်များဖန်တီးခြင်း, မှတ်ချက်များစသဖြင့်) များများထည့်သွင်းခြင်းစသည်တို့ကို) ပြုလုပ်နိုင်သည်

  2. zip_read () ကိုအသုံးပြုခြင်း () encrypted zip package ရှိအကြောင်းအရာများကိုတိုက်ရိုက် ဝင်ရောက်. မရပါ။

  3. Zip ဖိုင်သည်ကြီးမားသည်ဆိုပါကမှတ်ဉာဏ်ပြည့်လျှံမှုကိုကာကွယ်ရန်အကြောင်းအရာအားလုံးကိုတစ်ပြိုင်နက်တည်းဖတ်ရှုခြင်းကိုရှောင်ကြဉ်သင့်သည်။

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