PHP တွင် Zip ဖိုင်များကိုလည်ပတ်သောအခါ Zip_read () function ကိုမကြာခဏအသုံးပြုလေ့ရှိသည်။ သို့သော် encrypted zip file တစ်ခုနှင့်တွေ့သောအခါ developer များစွာသည် zip_read () ဖတ်ခြင်း () စာဖတ်ခြင်းသည်စာဝှက်ထားသောအကြောင်းအရာများကိုမအောင်မြင်ပါသို့မဟုတ်ရိုးရှင်းစွာမအောင်မြင်ပါ။ ဒီတော့ဘာလို့ဒါ? ဤဆောင်းပါးသည် PHP ၏ Zip extension ယန္တရားအားဤပြ problem နာ၏အကြောင်းရင်းများနှင့်၎င်း၏ဖြေရှင်းချက်များကိုအသေးစိတ်ရှာဖွေရန်ပေါင်းစပ်ပါလိမ့်မည်။
$zip = zip_open('encrypted.zip');
if ($zip) {
while ($entry = zip_read($zip)) {
echo zip_entry_name($entry) . "\n";
if (zip_entry_open($zip, $entry)) {
echo zip_entry_read($entry, zip_entry_filesize($entry));
zip_entry_close($entry);
}
}
zip_close($zip);
}
အထက်ပါကုဒ်သည်ပုံမှန် zip ဖိုင်ကိုဖတ်သည့်အခါပုံမှန်အားဖြင့်အလုပ်လုပ်သည်, သို့သော်စာဝှက်ထားတဲ့ zip ဖိုင်ကိုတွေ့ရင်အောက်ပါပြ problems နာတွေမကြာခဏဖြစ်ပေါ်လေ့ရှိတယ်။
ဖိုင်အကြောင်းအရာများ, zip_entry_read () zip_entry_read () သည် အချည်းနှီးသော string တစ်ခုသို့မဟုတ်အမှားတစ်ခုပြန်ပို့သည်။
၎င်းသည် zip_read () အယူမှား လာသည့်ဖိုင်များကိုတင်ပြသောမည်သည့်ဖိုင်ရေးရာများကိုမဆို ဖြတ်. မရပါ။
Zip_read () သည် PHP ၏ Libzip စာကြည့်တိုက်ဟောင်း (zip files များအပေါ် အခြေခံ. အဆင့်နိမ့်စစ်ဆင်ရေး) နှင့်သက်ဆိုင်ပြီးစာဝှက်ဖြည့်ထားသောဖိုင်များကိုစာဝှက်ဖြည်ခြင်းကိုရှင်းလင်းစွာမပံ့ပိုးပါ။ စာဝှက်ထားတဲ့ zip ဖိုင်များ (များသောအားဖြင့် password-protectect) သည်ဖိုင်ဒေတာများကို encrypting method ကို သုံး. ဒေတာများကိုစာသားအတိုင်းမသိမ်းဆည်းနိုင်ပါ။
zip_read () () file entries တွေကိုသာ zip ဖိုင်များရှိစာဝှက်မထားသည့်ဖိုင်အကြောင်းအရာများကိုသာရယူနိုင်သည်။
အကယ်. zip ဖိုင်ကိုစာဝှက်ထားပါကမှန်ကန်သောစကားဝှက်ကို ပေး. ဖိုင်ကိုမှန်ကန်စွာဖတ်ရှုရန် ZIP extension သည်သက်ဆိုင်ရာ decryption logic ဟုခေါ်ရမည်။
PHP ၏ Zip_read () သည် စကားဝှက် parameters များကိုမထောက်ပံ့ပါ။
အတိုချုပ်ဆိုရလျှင် Zip_read () သည် စာဝှက်ထားသောဖိုင်များကိုဒီဇိုင်းရေးဆွဲခြင်းကိုမထောက်ခံပါ။
ဗားရှင်း 7.2 ဖြင့်စတင်သော PHP မှ Zip extension သည် encrypted files များကိုဖတ်ရန်စကားဝှက်များကိုထောက်ပံ့ပေးသော PHP မှဇစ်တိုးချဲ့မှုကိုပေးသည်။
$zip = new ZipArchive();
$res = $zip->open('encrypted.zip');
if ($res === true) {
// စကားဝှက်ကိုသတ်မှတ်ပါ
$zip->setPassword('your_password');
for ($i = 0; $i < $zip->numFiles; $i++) {
$stat = $zip->statIndex($i);
echo "File: " . $stat['name'] . "\n";
$stream = $zip->getStream($stat['name']);
if (!$stream) {
echo "Failed to open stream for {$stat['name']}\n";
continue;
}
$contents = stream_get_contents($stream);
fclose($stream);
echo $contents;
}
$zip->close();
} else {
echo "Failed to open zip file\n";
}
အဓိကမှတ်စုများ
အဆိုပါ setbopassword () နည်းလမ်းကိုစာဝှက်ဖြည်ရန်လိုအပ်သောစကားဝှက်ကိုပေးရန်အသုံးပြုသည်။
စကားဝှက်မှန်ကန်ကြောင်း encrypted file ၏အကြောင်းအရာများကို 0 ယ်ယူရန် GetStream () ကိုသုံးပါ။
ဤနည်းလမ်းသည်ပုံမှန်အားဖြင့် encrypted zip file contents များကိုပုံမှန်ဖတ်နိုင်သည်။
Zip_read () သည်အစောပိုင်းကာလများတွင် PHP တွင် Zip operty interface ဖြစ်ပြီးစာဝှက်ထားသည့်ဖိုင်များကိုမလုပ်ဆောင်နိုင်ပါ။
encrypted zip ဖိုင်များသည် Ziparchive ကဲ့သို့သော password decryption ကိုထောက်ပံ့သော interfaces များကိုအသုံးပြုရမည်။
Ziparchive :: SetPassword () နှင့် PHP သည် encrypted files များကိုအောင်မြင်စွာဖွင့ ်. ဖတ်နိုင်သည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် acrypted zip_read ကိုအသုံးပြုခြင်းကိုရှောင်ရှားရန် encrypted zip ဖိုင်များကိုကြုံတွေ့ရသောအခါ Ziparchive class ကိုအသုံးပြုရန်အကြံပြုသည်။