не скачивается архив

423
29 июня 2017, 04:27

Не скачивается архив, пишет ошибку:

Warning: Cannot modify header information - headers already sent by
(output started at public_html/crm/html/menu.php:57) in 
public_html/crm/drive/drive.php on line 152
Warning: Cannot modify header information - headers already sent by 
(output started at public_html/crm/html/menu.php:57) in 
public_html/crm/drive/drive.php on line 153

На этих строках:

header('Content-type: application/zip', 'charset=utf-8');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');

так выглядит код целиком

$path1 = 'адрес сайта/public_html';
$path = $path1.$address;
echo "<hr/><br/><br/><div class='gallery'>
//суть такая показать все файлы в каталоге
    <form name='zips' method='post'>";
if ($open = scandir($path)) {
    foreach ($open as $k => $v) {
        if ($v != "." && $v != "..") {
            if (strpos($v, '.jpg'))
            {
            echo '<div class="gallery-box"><div class="gallery-box__image" style="background-image:url('.$v.')"><a class="btn btn-danger" href="delete.php?del='.$v.'&address='.$address.'"><i class="fa fa-times" aria-hidden="true"></i></a></div></div><input type="checkbox" name="upload[]" value="'.$v.'" />';
            }
            if (strpos($v, '.png'))
            {
             echo '<div class="gallery-box"><div class="gallery-box__image" style="background-image:url('.$v.')"></div></div><input type="checkbox" name="upload[]" value="'.$v.'" />';
            }
            if (strpos($v, '.jpeg'))
            {
             echo '<div class="gallery-box"><div class="gallery-box__image" style="background-image:url('.$v.')"></div></div><input type="checkbox" name="upload[]" value="'.$v.'" />';
            }
            if (strpos($v, '.txt'))
            {
            echo "<a href='".$v."'><p>".$v."</p></a><input type='checkbox' name='upload[]' value='".$v."'/>";
            }
            if (strpos($v, '.rtf'))
            {
            echo "<a href='".$v."'><p>".$v."</p></a><input type='checkbox' name='upload[]' value='".$v."' />";
            }
            if (strpos($v, '.pdf'))
            {
            echo "<a href='".$v."'><p>".$v."</p></a><input type='checkbox' name='upload[]' value='".$v."' />";
            }
            if (strpos($v, '.doc'))
            {
            echo "<a href='".$v."'><p>".$v."</p></a><input type='checkbox' name='upload[]' value='".$v."' />";
            }
            if (strpos($v, '.xlsx'))
            {
            echo '<a href="'.$v.'""><p>'.$v.'</p></a><input type="checkbox" name="upload[]" value="'.$v.'" />';
            }
        }
    }
}
echo "
<input type='submit' name='createpdf' value='Download as ZIP' /> 
<input type='reset' name='reset'  value='Reset' />
</form>";
$error = "";
if(isset($_POST['createpdf']))
{
$post = $_POST;
$file_folder = ""; // папка с файлами так как находимся в этой же директории
if(extension_loaded('zip'))
{
if(isset($post['upload']) and count($post['upload']) > 0)
{
// проверяем выбранные файлы
$zip = new ZipArchive(); // подгружаем библиотеку zip
$zip_name = time().".zip"; // имя файла
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)
{
$error .= "* Sorry ZIP creation failed at this time";
}
foreach($post['upload'] as $file)
{
$zip->addFile($file_folder.$file); // добавляем файлы в zip архив
}
$zip->close();
if(file_exists($zip_name))
{// отдаём файл на скачивание
header('Content-type: application/zip', 'charset=utf-8');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
// удаляем zip файл если он существует
unlink($zip_name);
}
}
else
$error .= "* Please select file to zip ";
}
else
$error .= "* You dont have ZIP extension";
}
Answer 1
if (isset($_POST['createpdf'])) {
    // содаём архив
    if (file_exists($zip_name)) {
        // отдаём файл на скачивание
        header('Content-type: application/zip', 'charset=utf-8');
        header('Content-Disposition: attachment; filename="'.$zip_name.'"');
        readfile($zip_name); // этой строки не было
        unlink($zip_name);
    }
} else {
    echo "<hr/><br/><br/><div class='gallery'>
    <form name='zips' method='post'>";
    if ($open = scandir($path)) {
        foreach ($open as $k => $v) {
            // как есть
        }
    }
    echo "<input type='submit' name='createpdf' value='Download as ZIP' />
    <input type='reset' name='reset'  value='Reset' />
    </form>";
}
READ ALSO
Красивые комментарии [требует правки]

Красивые комментарии [требует правки]

Какие комментарии вы ставите в своих скриптах?

241
Правильный путь до папок в Yii2

Правильный путь до папок в Yii2

В yii2 решил создать папку public_html и перенести туда файлы web из fronted и также создать в public_html папку admin с файлами из web backend те

393
Как сделать так чтобы авторизация и регистрация срабатывала на всех страницах?

Как сделать так чтобы авторизация и регистрация срабатывала на всех страницах?

Помогите разобраться с такой темой ,на сайт в шапку добавил модальное окно для авторизации и регистрации, но авторизация срабатывает только...

350