compressed files များကို processing လုပ်သည့်အခါ PHP သည် .zip ဖိုင်များ၏စာဖတ်ခြင်းနှင့်လည်ပတ်မှုကိုအထောက်အကူပြုရန်ပိုမိုကြီးမားသော zip extension များကိုထောက်ပံ့ပေးသည်။ ဤဆောင်းပါးသည် zip_read () function ကို အသုံးပြု. အသေးစိတ်အချက်အလက်များနှင့် zip file ထဲရှိ entry တစ်ခုစီကို ဖြတ်. အကြောင်းအရာသို့မဟုတ်အချက်အလက်များကိုထုတ်ယူရမည်ကိုသရုပ်ပြရန်အခြားဆက်စပ်လုပ်ဆောင်ချက်များနှင့်ပူးပေါင်းဆောင်ရွက်ပါလိမ့်မည်။
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 လုပ်ရန်လိုအပ်သည်။
Zip_read () ကို Zip_open () နှင့် zip_entry_ * စီးရီးလုပ်ဆောင်ချက်များနှင့် တွဲဖက်. အသုံးပြုသည်။ ၎င်း၏ရည်ရွယ်ချက်မှာပွင့်လင်းသော .zip ဖိုင်တွင် entry တစ်ခုကိုဖတ်ရန်ဖြစ်သည်။ ခေါ်ဆိုမှုတစ်ခုစီသည် မမှန်မကန်အယူမှား မရှိတော့သည့်အရင်းအမြစ်လက်ကိုင်ကိုပြန်လည်ရောက်ရှိစေသည်။
ဤတွင် .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 ဖိုင်ကိုဖွင့ ်. မရပါ。";
}
?>
ဤတွင် 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 ဖိုင်အရင်းအမြစ်ကိုပိတ်ပါ။
အသုံးပြုသူများသည် .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 "未သံသယတွေ့ရှိစာချုပ်စာတမ်း。";
}
?>
zip_read () နှင့် zip_entry_ * စီးရီးလုပ်ဆောင်ချက်များသည်အစောပိုင်းကာလများတွင် PHP မှပေးသောနည်းလမ်းများဖြစ်သည်။ အကယ်. သင်သည်ကြွယ်ဝသောအင်္ဂါရပ်များပိုမိုလိုအပ်ပါက (ဥပမာ Zip ဖိုင်များဖန်တီးခြင်း, မှတ်ချက်များစသဖြင့်) များများထည့်သွင်းခြင်းစသည်တို့ကို) ပြုလုပ်နိုင်သည် ။
zip_read () ကိုအသုံးပြုခြင်း () encrypted zip package ရှိအကြောင်းအရာများကိုတိုက်ရိုက် ဝင်ရောက်. မရပါ။
Zip ဖိုင်သည်ကြီးမားသည်ဆိုပါကမှတ်ဉာဏ်ပြည့်လျှံမှုကိုကာကွယ်ရန်အကြောင်းအရာအားလုံးကိုတစ်ပြိုင်နက်တည်းဖတ်ရှုခြင်းကိုရှောင်ကြဉ်သင့်သည်။