1

学生が自分のプロジェクトを (.zip ファイルとして) サーバーにアップロードするために使用できる単純な webapp を作成しています。このアプリは .zip を受け取り、それを解凍し、Web プロジェクトへのリンクを表示します。

zipファイルを抽出するために、次のようなphp関数を使用しています。

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 に答える