PHP zip函数生成zip,但下载

PHP zip函数生成zip,但下载,php,download,makefile,zip,Php,Download,Makefile,Zip,我有一个名为zip的函数,可以从文件夹中生成一个zip文件。它工作得很好,只不过它会在完成压缩后下载。我希望用户能够按需下载和备份。但它们也是在制作时下载的。这是我的PHP代码: function zip($source, $destination){ if (extension_loaded('zip') === true){ if (file_exists($source) === true){ $zip = new ZipArchiv

我有一个名为
zip
的函数,可以从文件夹中生成一个zip文件。它工作得很好,只不过它会在完成压缩后下载。我希望用户能够按需下载和备份。但它们也是在制作时下载的。这是我的PHP代码:

    function zip($source, $destination){
    if (extension_loaded('zip') === true){
        if (file_exists($source) === true){
            $zip = new ZipArchive();
            if ($zip->open($destination, ZIPARCHIVE::CREATE) === true ){
                $source = realpath($source);
                if (is_dir($source) === true){
                    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
                    foreach ($files as $file){
                        $file = realpath($file);
                        if (is_dir($file) === true){
                            $zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
                        }
                        else if (is_file($file) === true){
                            $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
                        }
                    }
                }
                else if (is_file($source) === true) {
                    $zip->addFromString(basename($source), file_get_contents($source));
                    }
            }
            return $zip->close();
        }
    }
    return false;
}
zip("../data", "backup.zip");
有人知道如何解决我的问题吗?提前谢谢

注:
纯文本版本是:

我有一个类似的问题,但我将zip文件制作得不同,所以我不知道这是否适用。我的问题是使用Internet Explorer,当用户单击链接时,我会创建zip文件,在IE中,当链接完成时,它会自动下载,但其他浏览器可以正常工作


我会在我的链接中检查$_服务器[“HTTP\u USER\u AGENT”],我必须在其中添加“target=\u blank”以阻止IE自动下载。

什么时候会发生这种情况?我在你展示的代码中没有看到任何东西会导致zip文件被传递到我不知道的浏览器。我甚至在调用
zip
后添加了一个位置头。发送该位置头后,您会做什么?因为如果没有
退出
,那么脚本的其余部分仍将被执行。是的,在位置头之后有一个
退出
。location标题刚好出现在我正在开发的工具的主页面上。这不是问题,我修复了真实的标题,但我认为我至少应该给出accept。你是唯一一个回答的人。=}