перенаправить загрузку php-заголовка

Я делаю сайт для обмена файлами для удовольствия. Пытаясь сделать так, чтобы, когда я ударил загрузку, он начинает загрузку. Вместо простой ссылки на /files/$file im, пытающийся перенаправить заголовок:

download.php

 /** * File Download */ $query = mysql_query("SELECT id,name,desc FROM files WHERE id = ".intval($_GET['id'])); $row = mysql_fetch_assoc($query); $file = $row['name']; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?> Filename: <?=$row['name']?> Desc: <?=$row['desc']?> <a href="#">Download this file</a> 

Я застрял здесь, что мне делать дальше?

Спасибо

Solutions Collecting From Web of "перенаправить загрузку php-заголовка"

Вы имеете в виду что-то вроде этого, где на странице будет отображаться информация о файле, а затем, когда пользователь нажал на ссылку, он ее загрузит?

 <?php $query = mysql_query("SELECT id,name,desc FROM files WHERE id = ".intval($_GET['id'])); $row = mysql_fetch_assoc($query); $file = $row['name']; if(!file_exists($file)) { exit('File does not exist'); } if(intval($_GET['download'])===1) { // Generate the server headers if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { header('Content-Type: "application/octet-stream"'); header('Content-Disposition: attachment; filename="'.basename($file).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Transfer-Encoding: binary"); header('Pragma: public'); header("Content-Length: ".filesize($file)); } else { header('Content-Type: "application/octet-stream"'); header('Content-Disposition: attachment; filename="'.basename($file).'"'); header("Content-Transfer-Encoding: binary"); header('Expires: 0'); header('Pragma: no-cache'); header("Content-Length: ".filesize($file)); } $data = readfile($file); exit($data); } else { ?> Filename: <?php echo $row['name']; ?> Desc: <?php echo $row['desc']; ?> <a href="<?php echo $_SERVER['SCRIPT_NAME']; ?>?id=<?php echo $row['id']; ?>&download=1">Download this file</a> <?php } ?> 

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

 header("Location: /path/to/new/page"); 

Если вы хотите, чтобы существующая информация загружалась, похоже, вам нужно нажать на нее с идентификатором в вашем URL-адресе:

 <a href="file.php?id=<?=$file_id ?>"> 

где $file_id имеет идентификатор файла, который вы ищете. Лично я бы поместил это в другой файл со страницы, на которой показана ссылка для публикации и загрузки, но YMMV.

Вы можете сделать перенаправление только до того, как html будет нажат.

В основном после

 Filename: <?=$row['name']?> Desc: <?=$row['desc']?> <a href="#">Download this file</a> 

отправляется в браузер, ваш шанс выполнить перенаправление с php завершен. Может быть, перенаправление Javascript более уместно? Учебник по переадресации Javascript.