выбор заголовка с помощью операторов if - PullRequest
1 голос
/ 03 декабря 2010

Я пытаюсь создать страницу для скачивания примерно так:

<?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 ]

2 голосов
/ 03 декабря 2010

Потому что у вас есть echo $filetype перед вашим оператором заголовка. Вы не можете ничего выводить, если собираетесь установить заголовок. Если вам действительно нужно, попробуйте взглянуть на ob_start .

Кроме того, я не понимаю, чего вы хотите достичь, раньше вы уже выводили html с использованием readfile(), но позже вы выводите еще один <html>, это предназначено?

1 голос
/ 03 декабря 2010

удалить это

echo "$ filetype";

0 голосов
/ 03 декабря 2010

О, чувак, теперь я чувствую себя довольно тускло, хах.

Спасибо, ребята!

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');
}
?>
0 голосов
/ 03 декабря 2010

Я вижу 2 потенциальных проблемы с вашим кодом:

  • строка echo "$filetype"; записывает данные клиенту, вызывая отправку заголовков, а затем последующие вызовы header() завершаются неудачей.

  • вам может потребоваться вызов exit; сразу после каждого вызова readfile() (при условии, что readfile() не заканчивается exit;), чтобы предотвратить использование html ниже условий if() отправляется в браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...