【发布时间】:2011-07-31 07:11:26
【问题描述】:
我知道这个问题以前被问过很多次,但我找不到适合我需要的答案。
我需要找到一种方法来强制下载文件,然后在下载开始后重定向到“感谢下载”页面。
到目前为止我有:
<?php
ob_start();
$token = $_POST['validationCode'];
if(isset($token)){
$connect = mysql_connect('localhost', 'root', 'root');
$db = mysql_select_db('mydb');
if (!$connect || !$db){
die('Connect Error (' . mysql_connect_errno() . ') '
. mysql_connect_error());
}
$sql = mysql_query("SELECT * FROM emailaddresses WHERE token='$token'");
$result = mysql_fetch_array($sql);
if($result){
header('Location: complete.php');
header('Content-type: application/mp3');
header('Content-Disposition: attachment; filename=track.mp3');
$f = file_get_contents('downloads/track.mp3');
print $f;
$sql = "UPDATE emailaddresses SET download=1 WHERE token='$token'";
$result = mysql_query($sql);
}
else{
echo "There was a problem downloading the file" . mysql_error();
}
}
ob_end_flush();
?>
隐藏下载文件的位置很重要,否则我会创建一个指向该文件的 HTML 链接。
我显然不能将重定向标头放在其他标头下方,因为它不起作用。除了在弹出窗口中打开它并将主窗口指向“谢谢”页面之外,我真的看不出从这里去哪里——但这是最后的手段。
谁能给点建议?
干杯,
丰富
【问题讨论】:
标签: php redirect header download hide