Этот код работает, но может быть улучшен.
Процесс состоит из двух этапов:
используйте zip_open, чтобы открыть файл, возвращая ресурс,Ресурса нет, zip не может быть открыт, поэтому он может иметь пароль
использовать zip_read для чтения файлов внутри zip. В случае неудачи пароль может быть передан
В любом из этих двух случаев верните true, указывая вероятный пароль в zip-файле.
// try to open a zip file; if it fails, probably password-protected
function check_zip_password($zip_file = '') {
/*
open/read a zip file
return true if passworded
*/
if (!$zip_file) { // file not specified
return false;
}
$zip = zip_open($zip_file); // open the file
if (is_resource($zip)) { // file opened OK
$zipfile = zip_read($zip); // try read of zip file contents
if (!$zipfile) { // couldn't read inside, so passworded
return true;
}
else
{ // file opened and read, so not passworded
return false;
}
} else { // couldn't open the file, might be passworded
return true;
}
return false; // file exists, but not password protected
}
Обратите внимание, что кодтолько определяет, что файлы внутри почтового индекса не могут быть доступны, поэтому они, вероятно, защищены паролем. Код не пытается выполнять какую-либо обработку файлов внутри почтового индекса.