Возникли трудности с процессом, который создает код HTML-страницы, а затем отображает диалог «Открыть / Сохранить как». Этот код используется на двух разных сайтах и работает корректно на одном сайте (при желании открывается диалоговое окно «Открыть / Сохранить как»), но на другом сайте отображается встроенный HTML-код на вызывающей странице (процесс вызывается кнопкой формы).
Код создает полную HTML-страницу (html / head / body / etc), в приведенном ниже коде содержимое HTML представляет $xoutput
переменную $xoutput
.
$thefile
– это полное имя файла.
Я пробовал много разных комбинаций настроек header()
. Заметим еще раз, что код работает правильно на одном сайте, но тот же самый код показывает встроенный HTML-контент, а не диалог Open / Save As. Нет выхода перед заголовком (), который может привести к ошибке «заголовки уже отправлены» (чего не происходит).
На обоих сайтах работает PHP 5.4.43. Оба сайта имеют одинаковый код. Обратите внимание, что проблема также возникает на другом (клиентском) сайте. Оба сайта работают в одном браузере (последний Firefox). То же самое на обоих сайтах, но разные результаты. Добавлено Оба сайта WP (последний); отключив все другие плагины и используя тему 2015, по-прежнему показывает встроенный HTML-код на проблемном сайте.
Почему код работает правильно на одном сайте, но не на другом? Я думаю, проблема в каком-то месте в header()
, но это все, что я могу понять. Попробовали много кода, предложенного googles. Единственная переменная между двумя сайтами – это два сайта. Все остальное – то же самое.
Ниже приведен код, основанный на моем предыдущем вопросе по тому же вопросу (здесь Force Download сгенерированного HTML )
// $xoutput = full HTML page code // $thefile = full file name like somefile.html $handle = fopen($thefile, "w") ; fwrite($handle, $xoutput) ; fclose($handle) ; $size = filesize($thefile) ; ob_clean(); flush(); ob_start(); header('Content-Description: File Transfer') ; header('Content-Type: application/octet-stream') ; header("Content-Disposition: attachment; filename=\"" . $thefile . "\""); header('Content-Transfer-Encoding: binary') ; header('Connection: Keep-Alive') ; header('Expires: -1') ; header('Cache-Control: must-revalidate, post-check=0, pre-check=0') ; header('Pragma: public') ; header('Vary: User-Agent'); header('Content-Encoding: gzip'); header("Content-Length: \"" . $size . "\""); readfile($thefile) ; ob_end_flush(); exit ;
Спасибо … Рик …