php - 如何防止从 zip 中提取 php 文件

标签 php unzip

我正在使用这段代码解压一个 .zip 文件

$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
   $zip->extractTo('/my/destination/dir/');
   $zip->close();
   echo 'ok';
} else {
   echo 'failed';
}

假设:.zip 中有一个 .php 文件,我不想提取 .php 文件。我怎样才能防止这种情况发生?

最佳答案

您可以为 PHP >= 5.5 尝试这样的操作:

$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {

 for ($i = 0; $i < $zip->numFiles; $i++) {
     if( pathinfo($zip->getNameIndex($i)['extension'] != "php")){
        $zip->extractTo('/my/destination/dir/', $zip->getNameIndex($i));
     }
}
   $zip->close();
}

或者这个 PHP < 5.5 :

$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {

 for ($i = 0; $i < $zip->numFiles; $i++) {
     $path_info = pathinfo($zip->getNameIndex($i));
     $ext = $path_info['extension'];
     if( $ext != "php")){
        $zip->extractTo('/my/destination/dir/', $zip->getNameIndex($i));
     }
}
   $zip->close();
}

两者之间的唯一区别是 pathinfo功能。两者都将循环压缩文件中的所有文件,如果文件扩展名不是 php , 将其提取到 /my/destination/dir/ .

关于php - 如何防止从 zip 中提取 php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37185636/

相关文章:

ios - 快速解压文件

bash - 通过 bash 仅提取具有特定扩展名的文件

php - 将 .zip 文件上传到 FTP 并使用 PHP 解压缩

php - 如何检索 HTML 页面内的 URL?

php - 将 android 连接到队列应用程序的数据库

php - 运行 create table 时不断收到错误消息 1064

node.js - 如何使用nodejs的unzip2获取zip文件的条目列表

javascript - 如何使用输入文件两次

php - 使用过滤器根据类别进行搜索

linux - 解压目录中的所有文件