我目前正在尝试实现一个PHP页面,该页面将在用户单击按钮时生成代码。代码将动态生成,然后PHP页面将触发下载文件,提示用户将文本文件保存在他们的机器上。
在阅读了大量帖子后,我使用的这段代码简洁明了,完全符合我的要求:
{
$result = "Your code is: " . $_POST['req_code'];
header('Content-disposition: attachment; filename=code.lic');
header('Content-type: text/plain');
echo $result . "\n";
}
但是,下载的文件不仅包含代码,还包含当前页面中的所有HTML。以下只是文件中包含的内容的一小部分:
<!DOCTYPE html>
<html lang="en-CA">
<head>
<meta charset="UTF-8" />
<title>My Account | ...
我尝试过使用&#34; exit();&#34;函数终止流但它仍然输出所有HTML。
有谁知道我在这里做错了什么?该文件应仅包含$ result的内容。
提前谢谢。
答案 0 :(得分:2)
虽然这是一个旧线程,但搜索结果仍然指向此处。因此,通过给出一个有效的简单独立示例来回答原始问题(某种程度),这里是: 创建两个文件,&#39; index.php&#39;和&#39; redirect.php&#39;
的index.php:
<?php
$head = <<<EOHEAD
<head>
<title>Download document test</title>
<meta http-equiv="Content-Type" content="txt/html; charset=utf-8" />
</head>
EOHEAD;
$body = <<<EOBODY
<body>
<form action="redirect.php" method="post" id="mainform">
<input type="submit" name="download" value="Download"/>
<input type="submit" name="cancel" value="Cancel"/>
</form>
</body>
EOBODY;
echo $head.$body;
?>
redirect.php:
<?php
if (isset($_POST['download'])) {
header('Content-disposition: attachment; filename=test.txt');
header('Content-type: text/plain');
echo "Hello World\n";
}
else {
header("location:index.php");
}
?>
答案 1 :(得分:0)
您需要a)创建一个新页面来下载文件(不包含任何 HTML)或b)从当前页面删除所有 HTML。此外,在致电header()
之前,您不应发送任何内容:
请记住,在任何实际输出之前必须调用header() 通过普通HTML标记,文件中的空行或PHP
发送
答案 2 :(得分:0)
您不必从下载站点删除所有HTML代码,但在下载文件之前,不能有任何HTML代码。将您的代码广告放在页面顶部,它应该没问题