用if语句选择标题

时间:2010-12-03 07:27:59

标签: php forms header download

我试图制作这样的下载页面:

<?php
$filetype = $_POST['filetype'];

echo "$filetype";

if( $filetype == '256mp3'){
    header('Content-disposition: attachment; filename=mp3.html');
    header('Content-type: text/html');
    readfile('mp3.html');
}
if($filetype == 'apple lossless' ){
    header('Content-disposition: attachment; filename=applelossless.html');
    header('Content-type: text/html');
    readfile('applelossless.html');
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
</body>
</html>

我使用表单发布变量$ filetype,然后选择我想要下载的文件。

我收到此错误

Warning: Cannot modify header information - headers already sent by (output started at /home/thetempers/www/presskit/download.php:5) in /home/thetempers/www/presskit/download.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at /home/thetempers/www/presskit/download.php:5) in /home/thetempers/www/presskit/download.php on line 14

为什么这不起作用标签之前没有空格

4 个答案:

答案 0 :(得分:2)

因为您在标题声明之前有echo $filetype。如果要设置标题,则无法输出任何内容。如果你真的必须,那么试着看ob_start

另外,我没有得到你想要达到的目标,早些时候你已经使用readfile()输出了html,但是后来你输出了另一个<html>,是不是有意?

答案 1 :(得分:1)

删除此

echo“$ filetype”;

答案 2 :(得分:0)

我在您的代码中看到了两个潜在问题:

  • echo "$filetype";将数据写入客户端,导致发送标头,然后对header()的后续调用失败。

  • 在每次致电exit;后,您可能需要致电readfile()(假设readfile()不以exit;结尾),以防止<{1}}条件下的html被发送到浏览器。

答案 3 :(得分:0)

哦,男人,我感觉很朦胧,哈哈。

这是有效的。

谢谢你们!     

if( $filetype == '256mp3'){
    header('Content-disposition: attachment; filename=mp3.html');
    header('Content-type: text/html');
    readfile('mp3.html');
}
if($filetype == 'apple lossless' ){
    header('Content-disposition: attachment; filename=applelossless.html');
    header('Content-type: text/html');
    readfile('applelossless.html');
}
?>