可变PHP下载 - 头文件名?

时间:2012-02-12 06:21:39

标签: php html header save

这是什么正确的语法?

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 个答案:

答案 0 :(得分:8)

这里的问题是您尝试使用单引号。单引号不会在PHP中插入变量。

您也无法正确终止字符串,可能是因为在其中添加了更多单引号。尝试:

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

Kolink points out您应该使用Content-Type: text/plain来提供纯文本非HTML文件。

答案 1 :(得分:1)

你很亲密。使用单引号,您可以执行以下操作:

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

答案 2 :(得分:1)

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

为了将来参考,使用适当的代码编辑器(如Notepad ++)会向您显示您的报价严重不匹配。