Переменная PHP имя файла заголовка загрузки? - PullRequest
6 голосов
/ 12 февраля 2012

Каков правильный синтаксис для этого?

header('Content-Disposition: attachment; filename="{$_SESSION['name']} . '.txt');

Этот файл работает, хотя и только правильно, когда «просмотр источника» (HTML не отформатирован, но содержит правильные разрывы строк).

<?php
header("Content-type: text/html");
session_start();
    if(file_exists("chat") && filesize("chat") > 0){
        $handle = fopen("chat", "r");
        $contents = fread($handle, filesize("chat"));
        fclose($handle);
        ob_start();
$download = strip_tags($contents, '<br>');
$processed = preg_replace('#<br\s*/?>#i', "\n", $download);
echo $processed;
$var = ob_get_clean();
echo $var;
    }
?>

Переменная $_SESSION['name'] похожа на guest_158512, и если вы просматриваете источник страницы, которую я пытаюсь сохранить, она содержит все разрывы строк.Как сохранить текущую страницу как guest_158512.txt с правильным синтаксисом?

Ответы [ 3 ]

9 голосов
/ 12 февраля 2012

Ваша проблема в том, что вы пытались использовать одинарные кавычки.Одиночные кавычки не интерполируют переменные в PHP.

Вам также не удалось правильно завершить строку, возможно, из-за того, что внутри нее помещено больше одинарных кавычек.Попробуйте:

header('Content-Disposition: attachment; filename="'.$_SESSION['name'].'.txt"');

Колинк также указывает , что вам следует использовать Content-Type: text/plain для обслуживания текстовых файлов, отличных от HTML.

2 голосов
/ 12 февраля 2012
header("Content-Disposition: attachment; filename=\"".$_SESSION['name'].".txt\"");
header("Content-Type: text/plain");

Для дальнейшего использования правильный редактор кода, такой как Notepad ++, покажет, что ваши кавычки сильно не соответствуют.

1 голос
/ 12 февраля 2012

Ты рядом.С одинарными кавычками вы можете делать следующее:

header('Content-Disposition: attachment; filename="' . $_SESSION['name'] . '.txt"');
...