1

我正在创建一个简单的 web 应用程序,我的学生可以使用它来将他们的项目(作为 .zip 文件)上传到我的服务器。此应用程序采用 .zip > 解压缩 > 显示指向其网络项目的链接。

我正在使用这样的 php 函数来提取 zip 文件:

function openZip($file_to_open) {  
    global $target;  

    $zip = new ZipArchive();  
    $x = $zip->open($file_to_open);  
    if($x === true) {  
        $zip->extractTo($target);  
        $zip->close();  

        unlink($file_to_open);  
    } else {  
         die("There was a problem. Please try again!"); 
    } 
}

是否可以检查要提取的文件的类型并只允许解压缩特定的文件类型?并不是说我不信任我的学生……只是想确保没有恶意软件进入我的服务器。

我的学生将上传简单的 Web 项目,所以我只想允许提取 .html、.css 和 .js(以及图像文件类型和目录)。

4

2 回答 2

1

查看ZipArchive::getFromName以按文件名从 Zip 中提取 1 个文件。您可能还想看看ZipArchive::getFromIndex

$zip = new ZipArchive;
if ($zip->open('test1.zip') === TRUE)
{
    echo $zip->getFromName('testfromfile.php');
    $zip->close();
}
else
{
    echo 'failed';
}
于 2012-09-17T21:27:42.100 回答
0

你总是可以像这样尝试finfo_file()

$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, "yourfile.zip");
finfo_close($finfo);
于 2012-09-17T21:58:57.543 回答